这是一篇赛后复现的文章,做题的时候犯了一些错误,仅作记录警醒自己。
Forensics/PLC I
The MAPNA CERT team has identified an intrusion into the plant’s PLCs, discovering a covert message transferred to the PLC. Can you uncover this secret message?
MAPNA CERT 团队发现了对工厂 PLC 的入侵,发现了传输到 PLC 的秘密消息。你能揭开这个秘密信息吗?
随手翻就能看到一些奇怪的,连续的,可读的字符串。
掏出神奇的string,你会得到:
1 | >>>strings plc.pcap |
善良的出题人还告诉了我们顺序!所以flag是MAPNA{y0U_sHOuLd_4lW4yS__CaR3__PaADd1n9!!}
Forensics/PLC Ⅱ
After extensive investigations, the MAPNA forensics team discovered that the attackers attempted to manipulate the PLC time. Please identify the precise time in the following format: year:month:day:hour:minute:second:millisecond. The flag is MAPNA{sha256(datetime)}.
经过广泛的调查,MACNA取证团队发现攻击者试图操纵PLC时间。请按以下格式标识精确时间:年:月:日:小时:分钟:秒:毫秒。标志为 MAPNA{sha256(datetime)}。
拿到流量包发现全部都是TCP流量,显然应该就提取data数据,然后分析具体是什么协议了。
题目的名字的为PLC,这意味着这是一道工控设备的流量题,通过第29条流量我们甚至可以直接发现设备的型号为:IM151-8 PN/DP CPU,这是西门子旗下的一款设备。
循着这个思路下去就是分析这款设备如何修改时间,这里我走进了一个误区,去翻阅了这款cpu的手册找到了它”使用 PROFINET 进行时间同步”。仔细研究profinet这个协议之后我卡住了,因为它和TCP没有毛关系。
事实上这个是相对底层的东西,不是很重要。(这里我也问了LLM,它也把我往这方面去引导了T^T)我们需要知道的是:
- IM151-8是什么:西门子工业自动化领域的产品系列之一,属于西门子的S7-1500系列。
- 怎么使用它:STEP 7是用于编程、配置和维护SIMATIC S7控制器的软件工具。
- 工控软件的协议是什么:S7 协议是 SIEMENS S7系列产品之间通讯使用的标准协议
因此S7协议才是这里的流量真正归属的协议。
再介绍一下,来自sealldev的智慧,在他们的wp中他们截取了tcp.data起始部分03000016
使用github的code search功能找到了相关的脚本,进而确定了协议
wireshark wiki在S7comm中提到了设置时间的例子
在示例中我们可以找到设置时间(set time)的43号流量,并且关注到表示设置时间的特征数值:4702
(如图所示,4代表请求,7代表时间函数,02代表设置时间的子函数)
因此我们在题目附件plc.pcap的分组字节流中进行十六进制值的搜索即可。
以下是我的搜索结果:
时间戳就是00202309211959599490
,解析结果是2023:09:21:19:59:29:949
,依照题目要求进行sha256即可。
附录
S7 Timestamp
以题目PLCⅡ中的00202309211959599490
为例进行解析
位置 | 含义 | 示例 |
---|---|---|
0x00 | 保留,一般为0x00 | 00 |
0x01 | 年1 | 20 |
0x02 | 年2 | 23 |
0x03 | 月 | 09 |
0x04 | 日 | 21 |
0x05 | 时 | 19 |
0x06 | 分 | 59 |
0x07 | 秒 | 59 |
0x08~0x0a | 毫秒(逆序) | 0949 |
相关阅读
小反思
- 对流量的特征进行搜索,最简单的方式就是截取数据头部
- 别太相信LLM,他们鬼话太多了。
- 匍匐在伟大的github code search之下吧!