OBO 2025 徽章与挂绳挑战赛 | STAR Labs
2025年5月28日 · 14分钟阅读 · Manzel Seet & Sarah Tan
目录
引言
我们带着第二届Off-By-One会议回归——这里是比特与面包板相遇、漏洞被庆祝的地方!🐛⚡
如果你热衷于硬件和物联网安全,有一件事是肯定的:STAR Labs SG的徽章绝非普通的会议纪念品。今年的徽章不仅是收藏品,更是好奇者的游乐场,充满了数月研究和黑客灵感的全新挑战。是的,CTF回来了,带有更多的极客元素。
在深入新内容之前,我们先快速回顾下去年的章鱼徽章。那个小家伙很有个性——字面意思上。两个圆形屏幕作为眼睛,参会者可以给他们的章鱼伙伴赋予各种情绪。有些人甚至发挥创意,黑客进了自定义图形。向那两位加拿大人致敬!
与常见的插入即解谜的USB徽章不同,我们不断尝试为其增加学习价值。我们将徽章变成了硬件黑客的实践入门——想想I2C、SPI和MicroPython的怪癖。哦,还记得迷你电压毛刺挑战吗?没错,都在同一块板上。我们希望它为首次接触硬件的人带来一些“啊哈!”时刻。
快进到2025年:我们把极客🤓刻度调到了最高——注入了一点“回到未来”的能量(顺便一提,这也是今年T恤设计之一)。是的,我们正式全力出击:挂绳现在也成了挑战的一部分。你没听错——挂绳黑客现在是个事儿了。
为了给你内部消息,我们请来了Sarah和Manzel带你深入了解幕后——从设计选择到构建可黑客硬件的愉快混乱。系好安全带。这会是一段有趣的旅程。
挂绳挑战
嗨,我是Sarah,STAR Labs的创意负责人 :)
我负责为今年的Off By One 2025创建一个挂绳挑战,说实话,一开始我不知道该怎么做。是的,我听说过加密和密码,但以前从未真正用它们构建过谜题。
我们想要一个需要多个挂绳匹配并按正确顺序排列才能揭示密钥/标志的谜题。
总共有四种挂绳颜色:参会者、演讲者、工作人员和赞助商。棘手的是?我们每种颜色的数量并不相等!拥有绿色挂绳的赞助商数量最少——而这正是最终谜题隐藏的地方。
只有按正确顺序排列挂绳,正确的代码才会出现。这是我最初构思的一个早期版本,采用了MD5哈希和夜记密码。起初我想把密码切分并分布在挂绳上,让人们必须相应匹配才能得到完整文本。
我向几位同事(包括Jacob)征求了想法,最终决定使用ROT13代替MD5哈希。我们也放弃了将密码切分成碎片的计划。
我们确实在办公室进行了实地测试以确保谜题可解,但工作人员花了一些时间才理解他们看到的是什么;相当多的人认为密码只是设计的一部分。挂绳中 subtly 隐藏了一个低音谱号,以帮助指示正确的顺序。
看到学生们一旦意识到挂绳上的“随机”符号其实有意义时四处奔波的样子,既好笑又令人满意。一旦他们获得了标志/密钥,就可以用它来解锁今年徽章中隐藏的最终密钥短语。
趣闻:
徽章中埋藏了一个线索——《爱丽丝梦游仙境》中白兔子的插图,并配有“跟随白兔子”的文字。这既是一个提示也是一个彩蛋,因为夜记密码正是由Lewis Carroll本人发明的!
徽章设计
现在让我们来讨论并看看我们全新的徽章设计!我们的新设计是一个融合了复古主题用户界面的机器人角色。
在硬件组件方面,我们探索了具有相对高分辨率图形和显示更新率的LCD。有了这个,我们能够包含GIF播放支持,这使我们能够为我们的小机器人朋友带来可爱的动画面部表情。
作为点睛之笔,我们还为演讲者添加了定制名片。
现在让我把时间交给Manzel,这位创造了电路和CTF挑战的电子 wizard。
硬件电路
嗨,我是Manzel,STAR Labs SG的硬件工程师。
构思一个新的硬件电路总是很有趣,因为我们旨在融入我们在研究过程中先前探讨过的新功能。
去年的一个关键反馈是徽章太重,因此我们决定减少到2节AAA电池,有效减轻了25%的重量。然而,由于电池容量减少了,我们换成了更新的ESP32-C3,它比ESP32-S3稍微更省电。它还有一个单核RISC-V核心,这也是学习RISC-V架构的好平台。
内部我们做了3个原型,它们看起来是这样的:
我们的第一个蓝色原型是一个LED点阵。它收到了很好的反馈,因为它很好地捕捉了会议的复古主题。然而,我们后来发现故障率很高,因为小LED很脆弱。
对于塑料LED来说,自己动手修复并不容易。这意味着拆焊修复工作可能会风险损坏/过热周围的LED。
因此我们决定转向LCD显示屏。对于绿色原型,我们考虑了两款不同的显示屏。
虽然较大的矩形显示屏比例更好,但其像素密度和对比度较差,使我们的艺术作品看起来太模糊。
较小的LCD具有更高的像素密度和刷新率。由于会议时间紧迫,我们决定采用较小的LCD,因为我们可以呈现GIF动画,这在其他会议徽章中并不常见。
总体时间线如下:
- 1月23日:蓝色原型制造
- 2月6日:蓝色原型反馈与测试
- 3月5日:绿色原型制造
- 3月17日:绿色原型反馈与测试
- 4月7日:最终徽章批量生产
- 4月25日:CTF挑战编程
- 5月8日:会议日!
通常,每个原型制造需要大约2周,硬件和固件测试需要大约3周。
硬件CTF挑战
对于今年的挑战,我们决定专注于硬件外设,如引导程序和内部寄存器。此外,我们还将简要了解复古无线通信。
1. 欢迎标志(类别:欢迎)
挑战: 欢迎来到硬件黑客世界!这里有一个标志:
第一个标志是一个健全性检查,与会议的复古主题一致。条形码的历史可以追溯到20世纪50年代,后来很快被用于库存跟踪。
注意屏幕的黑色边框在某些手机应用上会干扰扫描。你可以在扫描前拍摄特写照片或裁剪掉屏幕边框。
扫描条形码获取标志。
标志: {WelcomeToObo2025}
2. 复古音乐(类别:通信)
挑战: 我的老板让我创作一些音乐。我改用AI为我生成。
在这个挑战中,播放了一系列音调。仔细听我们识别出2种不同的音调。因此,我们可以立即排除摩尔斯电码,因为摩尔斯电码由不同长度(即长或短哔声)的单一音调组成。
相反,我们推断这2种不同的音调可以表示二进制。这是频移键控(FSK)的一个简单例子。特别是,它是二进制FSK(BFSK),过去仅用两组不同的[音频]频率来表示二进制0和1。
FSK特别用于早期无线电通信,如寻呼机和拨号调制解调器。
我们可以使用音频频谱分析仪来识别它们。如果没有电脑,可以使用手机应用——例如Spectroid。
从频谱图中,我们首先识别幅度最大的2个峰值频率。在这种情况下,我们看到在音乐播放时有2730Hz和3141Hz的脉冲。我们可以放大这个范围并忽略其他频率的噪声。
通过检查,选择低频音调为“0”,高频音调为“1”。从这里,可以将其转换为标志的ASCII表示。
标志: {FSK_On_A_Budget}
活动展位(类别:通信)
挑战: 我找到了一个遥控器,它似乎能做更多事情。我设法用Flipper Zero捕获了信号。
文件类型:IR信号文件
版本:1
|
|
这个挑战涉及一个红外(IR)信号转储。IR通信通常用于遥控器向其他设备(如电视或声霸)发送命令。有许多工具可以用来复制这些IR信号并重放它们。
从文档中,我们了解到Flipper Zero将解调后的信号保存为.ir文件:
Flipper Zero通过其内置IR接收器以38 kHz载波频率捕获和解调IR信号。对于已知协议的遥控器,Flipper Zero会自动解码IR信号。如果遥控器协议未知,Flipper Zero将以RAW格式记录信号。
我们还看到.ir文件格式以微秒为单位呈现原始数据。这是逻辑电平变化的时间,因为它在数字逻辑1和0之间交替。参考Infrared Flipper File Formats。
因此,从提供的数据data: 1040 104 208 ...,逻辑捕获将看起来像这样:
我们可以先将其转换为比特流。
|
|
然而这个比特流还不能直接解释为数据。通信协议可能包含额外的比特,如前导码、校验和或指示帧开始和结束的比特。因此手动解析会很繁琐。
通常,工程师会使用逻辑分析仪程序(如PulseView)来识别和解码未知信号。这是一个开源程序,支持众多不同协议的解码。
导入数据后,我们可以缩小到仅异步协议,因为只提供了1个信号/通道。同样,我们通过取最短脉冲104us来确定波特率,这给我们大约9600 Hz。
最后,我们可以将其导入为.csv文件,然后信号可以被解码为波特率9600的UART。
放大后,还可以观察到起始位和停止位是如何被检测到的。
标志: {UART_Over_Infrared_?!?!}
诊断模式(类别:引导程序)
挑战: 糟糕!工程团队在生产固件中留下了诊断测试模式。可能有一个彩蛋。
诊断模式或内部菜单通常存在于电子设备中,用于检查硬件和软件问题。例如,你可以在开启设备时按住某些键组合以进入智能手机的恢复模式或笔记本电脑的诊断模式。
了解ESP32-C3微控制器的引导程序支持测试模式是很有用的。测试应用可以通过在启动期间按下按钮来触发。参考CONFIG_BOOTLOADER_NUM_PIN_APP_TEST的说明。
如果我们按下向下按钮重启徽章,它会启动进入测试模式。完成诊断程序以在屏幕上看到标志。
标志: {Disable_Unnecessary_Diagnostics_Or_Engineering_Test_Modes_If_Possible}
隐藏分区(类别:引导程序)
挑战: 我不知道物联网微控制器可以有多个分区。
要解决这个问题,我们需要了解引导程序支持分区。存在一个分区表。在ESP32-C3中,分区表默认位于闪存地址0x8000。
我们可以使用esptool和gen_esp32part.py从这个闪存偏移量转储分区表。
|
|
分区表看起来像这样
|
|
这里我们注意到分区名称flag_xorkey位于偏移量0x9000,flag_enc位于偏移量0x3ff000。
以下是使用esptool转储内容的方法
|
|
最后,我们可以将内容进行异或操作以获得标志。
|
|
ESP分区表将闪存划分为多个段,例如引导程序、应用程序、OTA更新和数据存储。我们可以将多个应用程序嵌入到一个闪存中,加密分区并隐藏一些标志{IoT_Device_Bootloader_Partition_Scheme}。
标志: {IoT_Device_Bootloader_Partition_Scheme}
HMAC预言机(类别:引导程序)
挑战: 你找到了某人的硬件令牌。显然它可以生成HMAC,你能找到密钥吗?通过USB串口访问。提示:ESP32-C3上的HMAC外设。
首先,这是一个硬件挑战,而不是密码学挑战。我们应该首先了解HMAC硬件外设是如何工作的。
HMAC(基于哈希的消息认证码)模块使用烧录到eFuse块中的密钥为SHA256-HMAC生成提供硬件加速。HMAC使用预共享密钥工作,并为消息提供真实性和完整性。
有一些对eFuse块的引用。它是一个一次可编程区域,通常用于物联网系统中的永久配置。在这种情况下,它用于存储仅由HMAC外设使用的密钥。
这里的一个配置错误是未启用密钥保护。写入eFuse的HMAC密钥可以使用编程工具espefuse.py读取出来。
|
|