Hacktivity 2018 徽章入门指南:硬件黑客与串口通信实战

本文详细介绍了如何对Hacktivity 2018黑客大会徽章进行硬件破解,包括在不同操作系统下通过USB串口连接徽章的方法、获取root权限的技巧以及射频功能改装指南,适合嵌入式开发初学者学习硬件逆向工程技术。

Jump ESP, jump!: Hacktivity 2018 徽章 - 新手快速入门指南

你可能因为以下原因看到这篇博客:

  • 你是 Hacktivity 的忠实粉丝
  • 你大约一年前购买了这个徽章
  • 你对黑客大会徽章破解感兴趣

或者以上皆是。无论原因如何,本指南将帮助那些从未接触过这类小设备的初学者。

首先,以下是破解徽章所需的工具清单:

  • 带USB端口的电脑(macOS、Linux或Windows系统,本指南涵盖这三种系统)
  • 用于连接徽章和电脑的USB mini线
  • 2018年Hacktivity徽章

默认情况下,你的徽章外观如下:

(图片位置)

开始操作

幸运的是,前几步不需要任何焊接技能。只需将USB mini线连接到徽章左下角的接口,另一端连接电脑,几秒内就能看到徽章上的LED灯开始闪烁。到目前为止一切顺利。

根据你使用的操作系统,选择对应操作步骤:

Linux

查看新连接设备信息的最佳命令是:

1
# dmesg

输出末尾应类似:

1
2
3
4
[267300.206966] usb 2-2.2: new full-speed USB device number 14 using uhci_hcd
[267300.326484] usb 2-2.2: New USB device found, idVendor=0403, idProduct=6001
...
[267300.643235] usb 2-2.2: FTDI USB Serial Device converter now attached to ttyUSB0

dmesg很友好地提示设备已连接到ttyUSB0。

后续连接步骤与macOS部分相同,请查看下方的"Linux用户从此处继续阅读"部分。

macOS

在终端中输入以下命令查看设备信息:

1
# ioreg -p IOUSB -w0 -l

输出应类似:

1
2
3
4
+-o FT232R USB UART@14100000  <class AppleUSBDevice...>
    |   {
    |     "USB Serial Number" = "AC01U4XN"
    |   }

最重要的信息是USB序列号(本例中为AC01U4XN)。

另一种获取信息的方式是:

1
# system_profiler SPUSBDataType

输出类似:

1
2
3
FT232R USB UART:
          Serial Number: AC01U4XN
          ...

要确定设备在/dev目录中的映射位置,可以对比连接前后的设备列表:

1
2
3
ls -lha /dev/tty* > plugged.txt
ls -lha /dev/tty* > np.txt
vimdiff plugged.txt np.txt

结果很明显,新设备在macOS中是/dev/tty.usbserial-AC01U4XN,在Linux中是/dev/ttyUSB0。

Linux用户从此处继续阅读。macOS用户请继续

现在可以使用screen命令或minicom与徽章通信。通常需要三个参数:设备路径(已获得)、波特率和异步配置参数。

常见波特率包括:1200、9600和115200。异步配置默认是8数据位、无校验位、1停止位(8n1)。screen命令默认使用8n1(但表示为cs8)。

输入:

1
# screen /dev/tty.usbserial-AC01U4XN 9600

1
# screen /dev/ttyUSB0 9600

如果几分钟无响应,是因为徽章已尝试通过USB通信但无人监听。重新拔插徽章后快速输入screen命令(约90秒内,因为设备需要1.5分钟启动系统和CTF应用)。

Windows

连接设备后会出现弹窗,点击后查看分配的COM端口号(如COM3)。打开putty.exe,选择Serial,设置COM3和波特率9600即可。

如果无显示,请参考macOS部分的时间提示。

CTF挑战

欢迎来到Hacktivity 2018徽章挑战!此挑战包含多个任务,涉及硬件逆向工程,重在学习而非竞赛。

注意:建议开启终端本地回显!可随时在Hackcenter寻求提示!

选择挑战:

  1. 视觉硬件调试
  2. 逆向工程
  3. 射频黑客
  4. 加密保护

输入数字选择挑战。

现在你可以开始破解了!如果不懂screen命令操作,请参考https://linuxize.com/post/how-to-use-linux-screen/。

我不会在此透露解决方案,需要你自己探索。

但有个技巧:可以获取设备root权限。小心取下Omega屏蔽罩,看到两个跳线帽(默认连接UART1)。将其切换到UART0即可获得root shell!这是硬件层面的权限提升。

重新安装Omega屏蔽罩。注意新接口波特率为115200,需调整screen参数。新接口在/dev下有不同的ID,但你应该能自行解决。

如果在启动时连接,可以看到大量调试信息。启动完成后即获得root提示符!

获得root权限后可以运行:

1
# strings hello | less

现在你可以自由探索徽章了。祝 hacking 愉快!

特别感谢Attila Marosi-Bauer和Hackerspace Budapest开发此徽章和挑战。

PS:如需使用徽章射频功能,需按图示焊接部件。默认可在GPIO19处理低速射频信号。高速传输需将RF模块DATA OUT引脚与RX1空闲引脚连接。

(射频焊接示意图)

发布时间:2019年9月19日星期四上午10:56 标签:badge, hacking, hacktivity, HW hacking

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计