[unictf2026]工厂应急流量分析

shr1mp 发布于 2026-01-31 162 次阅读


下载O.o

PCAP(factory.pcap,约 93KB)

包含 Modbus/TCP(502)、OPC UA(4840)、DNS(53)、HTTP(80)、ICMP、SNMP(161) 等典型工控与管理流量。

工厂的流量包,很多UDP,而html少

任务 1:谁把阀门打开了?

找到 Modbus 打开阀门指令的相关信息。

提交格式:flag{0xtransaction_id_0xfunction_code_0xcoil_address}

知识点:

Modbus是一种广泛应用于工业自动化领域的串行通信协议
支持串口(Modbus RTU/ASCII)和以太网(Modbus TCP)

找modbus里面write single coil的含ff00(表示阀门on)流量

第一个modbus(No15):

Modbus/TCP
    Transaction Identifier: 15437    #端口transaction_id
    Protocol Identifier: 0
    Length: 6
    Unit Identifier: 1
Modbus
    0... .... = Exception: No
    .000 0101 = Function Code: Write Single Coil (5)  #模式function_code
    Reference Number: 21                              #地址coil_address
    Data: ff00                                           #数据
    Padding: 0x00

注意到0x转化为16进制就得到flag

flag{0x3c4d_0x05_0x0015}

T_T小插曲:

最开始我一直在尝试flag{0x3c4d_0x05_0x15},但是标准Modbus是16位地址,所以是0x0015

任务 2:被读取的 NodeId

找到通过 OPC UA 协议读取的 NodeId。

提交格式:flag{ns=X;s=Path/To/Node}

知识点

OPC UA(OPC Unified Architecture,OPC统一架构)​ 是一种工业自动化领域的跨平台、跨厂商的通信协议标准,用于在工业设备、控制系统和企业信息系统之间安全可靠地传输数据。
!!!OPC UA通过采用TCP/IP协议栈

注意到tcp4:

ReadRequest;NodeId=ns=2;s=Valve/Status;MaxAge=0
flag{ns=2;s=Valve/Status}

任务 3:控制站域名解析结果

找出控制站域名 ctrlws.factory.local 的解析 IP。

提交格式:flag{IP地址}

筛选DNS

flag{192.168.1.10}

任务 4:连接建立时间

确定SCADA(源:192.168.1.5)到控制站(目的:192.168.1.10)上首个成功发起的时间点(UTC)。

提交格式:flag{YYYY-MM-DDTHH:MM:SSZ}

找完整的tcp三次握手

ip.src == 192.168.1.5 and ip.dst == 192.168.1.10
SYN     2025-03-15T09:30:01.079999Z
SYN/ACK 2025-03-15T09:30:01.089999Z
ACK     2025-03-15T09:30:01.099999Z

按题意取“成功发起”的起点(SYN)并按秒截断得到:2025-03-15T09:30:01Z。

flag{2025-03-15T09:30:01Z}

任务 5:HTTP 请求痕迹

提取 SCADA 对控制站发起的 HTTP 请求的 Host 与 URI。

提交格式:flag{Host_URI}

在该 HTTP 会话中提取到完整请求行与 Host 头:

GET /api/status HTTP/1.1
Host: ctrlws.factory.local
flag{ctrlws.factory.local_/api/status}

任务 6:ICMP Echo Request 序列号

攻击者(192.168.1.100)对控制站发起了 ICMP Echo Request(ping)。找出该 ICMP 请求的序列号(Sequence Number)。

提交格式:flag{0x序列号}

ip.src==192.168.1.100 && ip.dst==192.168.1.10
ICMP id=0x5678, seq=0x0123
flag{0x0123}

任务 7:SNMP Get 请求的 OID

SCADA 对控制站发起了 SNMP Get 请求。找出该请求查询的 OID(Object Identifier)。

提交格式:flag{OID}

udp && ip.dst==192.168.1.10 && frame contains "GetRequest"

由第四问注意到SCADA的ip是192.168.1.5

SNMPv2c;Community=public;PDU=GetRequest;OID=1.3.6.1.2.1.1.5.0
flag{1.3.6.1.2.1.1.5.0}
这个人很菜,但是在学
最后更新于 2026-01-31