工控安全取证—CTF流量分析题详解

admin 2026-03-09 01:53:04 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详解一道工控安全取证CTF题,通过识别伪装成log的pcap文件,利用ICMP包划分扫描轮次,结合MAC地址揭露IP欺骗行为。重点分析第四次扫描中伪造源IP特征,定位特定源IP的ICMP请求包,得出Flag为155989。内容涵盖文件识别、协议分析及溯源,实战价值较高。 综合评分: 90 文章分类: CTF,应急响应,实战经验


cover_image

工控安全取证 — CTF 流量分析题详解

原创

破镜安全 破镜安全

破镜安全

2026年3月8日 08:01 四川

工控安全取证 — CTF 流量分析题详解

题目背景

本题是一道流量分析方向的 CTF 题目,题目名称为”工控安全取证”。附件是一个名为 capture.log 的文件。题目要求分析流量包,找出第四次发起扫描时的关键数据包编号作为 Flag。


第一步:识别文件真实格式

拿到附件后,第一件事是判断文件的真实类型。文件后缀是 .log,但这并不能说明文件的实际格式。

使用 file 命令检查文件头:

$ file capture.log
capture.log: pcap capture file, microsecond ts (little-endian) - version 2.4 (Ethernet, capture length 1514)

结果非常明确:这是一个标准的 pcap 格式网络流量包文件,只是被命名为 .log 后缀。pcap(Packet Capture)是 Wireshark、tcpdump 等工具通用的流量记录格式。

用十六进制查看文件头进一步确认:

$ xxd capture.log | head -2
00000000: d4c3 b2a1 0200 0400 0000 0000 0000 0000  ................

d4 c3 b2 a1 是 pcap 文件的小端序魔数(Magic Number),确认无误。

将文件后缀改为 .pcap 后,即可用 Wireshark 或 tshark 正常打开。


第二步:掌握流量包整体结构

使用 tshark 查看协议分布:

$ tshark -r capture.log -qz io,phs
===================================================================
Protocol Hierarchy Statistics
eth                  frames:163832 bytes:9377108
  ip                 frames:163832 bytes:9377108
    icmp             frames:13     bytes:1656
    tcp              frames:163816 bytes:9374426
    udp              frames:3      bytes:1026
===================================================================

关键信息:

  • 总共 163832 个数据包
  • 时间跨度:2002年8月27日 07:59:50 至 08:27:32,约 27 分钟
  • 绝大多数是 TCP 包(163816 个),ICMP 仅 13 个,UDP 仅 3 个

涉及的 IP 地址:

| IP 地址 | 角色 | | — | — | | 192.168.0.9 | 攻击机(真实 IP) | | 192.168.0.99 | 被扫描目标机 | | 192.168.0.1 / .254 / .199 | 伪造的源 IP |

通过查看数据链路层 MAC 地址可以发现一个重要特征:

$ tshark -r capture.log -T fields -e eth.src -e ip.src | sort -u
00:10:a4:c5:7c:38    192.168.0.1
00:10:a4:c5:7c:38    192.168.0.199
00:10:a4:c5:7c:38    192.168.0.254
00:10:a4:c5:7c:38    192.168.0.9
00:60:08:a8:61:24    192.168.0.99

所有来自不同 IP(192.168.0.1、192.168.0.9、192.168.0.199、192.168.0.254)的数据包,底层 MAC 地址均为 00:10:a4:c5:7c:38(Xircom 品牌网卡)。这是典型的 **IP 欺骗(IP Spoofing)**行为——攻击机在物理上只有一块网卡,却伪造了多个不同的源 IP 地址发包。目标机的 MAC 是 00:60:08:a8:61:24(3Com 品牌网卡)。


第三步:理解扫描行为模式

163832 个数据包几乎全是 TCP 包,如果逐一审查工作量极大。需要找到一个切入点来分割扫描的轮次。

观察流量规律:数量极少的 ICMP 包(仅 13 个)夹杂在大量 TCP 包之间,值得重点关注。

过滤出所有 ICMP Echo Request(Ping 请求包):

$ tshark -r capture.log -Y "icmp.type == 8" -T fields \
  -e frame.number -e ip.src -e ip.dst -e icmp.ident

1         192.168.0.9    192.168.0.99   31465
148007    192.168.0.9    192.168.0.99   7689
150753    192.168.0.9    192.168.0.99   41843
155987    192.168.0.1    192.168.0.99   51067
155988    192.168.0.254  192.168.0.99   51067
155989    192.168.0.199  192.168.0.99   51067
155990    192.168.0.199  192.168.0.99   51067

规律一目了然:每次发起大规模端口扫描之前,攻击机都会先向目标发送一个 ICMP Ping 请求,用于确认目标主机是否在线。 这是端口扫描工具(如 nmap)的标准前置行为,称为”主机发现”(Host Discovery)阶段。

通过 ICMP 包的帧编号,可以将整个流量切分为清晰的四个扫描轮次:

| 扫描轮次 | 起始 ICMP 帧 | 源 IP | ICMP 标识符 | TCP 扫描范围 | | — | — | — | — | — | | 第 1 次 | 帧 1 | 192.168.0.9 | 0x7ae9 (31465) | 帧 3 ~ 148006 | | 第 2 次 | 帧 148007 | 192.168.0.9 | 0x1e09 (7689) | 帧 148009 ~ 150752 | | 第 3 次 | 帧 150753 | 192.168.0.9 | 0xa373 (41843) | 帧 150755 ~ 155986 | | 第 4 次 | 帧 155987+ | 多个伪造 IP | 0xc77b (51067) | 帧 155991 ~ 163832 |


第四步:分析第四次扫描的特殊性

前三次扫描均从单一源 IP 192.168.0.9 发出 Ping 请求,而第四次扫描出现了显著变化

$ tshark -r capture.log -Y "icmp.type == 8 and frame.number >= 155987"

155987  1602.084879  192.168.0.1    -> 192.168.0.99  ICMP 60 Echo (ping) request  id=0xc77b
155988  1602.084912  192.168.0.254  -> 192.168.0.99  ICMP 60 Echo (ping) request  id=0xc77b
155989  1602.084941  192.168.0.199  -> 192.168.0.99  ICMP 60 Echo (ping) request  id=0xc77b
155990  1602.084976  192.168.0.199  -> 192.168.0.99  ICMP 60 Echo (ping) request  id=0xc77b

注意到以下两个关键特征:

特征一:多个 IP 同时发包,但 ICMP 标识符(id)相同

帧 155987、155988、155989、155990 的 icmp.ident 均为 0xc77b(十进制 51067)。ICMP 标识符由操作系统在发起 Ping 时分配,用于匹配请求和响应。相同的标识符说明这四个包来自同一个进程,同一台物理主机。结合 MAC 地址分析,印证了这些不同源 IP 均由攻击机伪造发出。

特征二:新出现了 IP 地址 192.168.0.199

前三次扫描中从未出现过 192.168.0.199 这个 IP。第四次扫描开始时,伪造了 .1.254.199 三个 IP 地址,说明攻击者在第四轮扫描中使用了更强的 IP 欺骗手段。

第四次扫描中 TCP 流量随即在帧 155991 之后展开,从四个伪造 IP 同时向目标发送 TCP 包,每个端口同时由多个源 IP 扫描:

155991  192.168.0.1    -> 192.168.0.99  TCP 35984 -> 80 [ACK]
155992  192.168.0.254  -> 192.168.0.99  TCP 35984 -> 80 [ACK]
155993  192.168.0.9    -> 192.168.0.99  TCP 35984 -> 80 [ACK]
155995  192.168.0.199  -> 192.168.0.99  TCP 35984 -> 80 [ACK]

第五步:定位目标数据包,确认 Flag

题目要求找出第四次发起扫描时的数据包编号。

在第四次扫描的四个 ICMP Ping 包(帧 155987、155988、155989、155990)中,题目重点关注的是源 IP 为 192.168.0.199 的包。

查看帧 155989 的详细信息:

$ tshark -r capture.log -Y "frame.number == 155989" -V

Frame 155989: 60 bytes
  Arrival Time: Aug 27, 2002 08:27:02.334700000 CST
  Frame Number: 155989
Internet Protocol: Src: 192.168.0.199, Dst: 192.168.0.99
Internet Control Message Protocol
  Type: 8 (Echo (ping) request)
  Code: 0
  Identifier (BE): 51067 (0xc77b)
  Sequence Number (BE): 0 (0x0000)

帧 155989 是 192.168.0.199 向目标 192.168.0.99 发出的 ICMP Echo Request,是第四次扫描中出现的新伪造源 IP 的第一个 Ping 包,也是第四次扫描事件中具有标志性意义的帧编号。

Flag:155989


技术扩展:理解本题涉及的核心知识点

一、pcap 文件格式

pcap 是”Packet Capture”的缩写,是网络流量抓包的标准文件格式。文件以 4 字节魔数开头(小端序为 d4 c3 b2 a1,大端序为 a1 b2 c3 d4),后跟全局头(版本、时间精度、链路层类型等),再依次存储每个数据包的时间戳和原始字节。这道题的附件本质上是一个 pcap 文件,只是后缀被改为了 .log,这种情况在 CTF 中很常见,遇到不认识的附件首先用 file 命令或查看文件头来判断真实格式。

二、ICMP 协议与 Ping

ICMP(Internet Control Message Protocol,互联网控制消息协议)是 IP 协议族的一部分,不承载应用数据,主要用于网络诊断和错误报告。Ping 工具使用 ICMP Type 8(Echo Request)发送请求,目标主机用 Type 0(Echo Reply)回复。每个 Ping 包包含一个 16 位标识符(Identifier)和序列号(Sequence Number),用于区分不同的 Ping 会话。标识符相同意味着来自同一个 Ping 进程。

三、TCP SYN 端口扫描

本题中的 TCP 流量绝大多数是端口扫描产生的。典型的 SYN 扫描(半开扫描)过程如下:

  • 扫描方向目标端口发送 SYN 包
  • 若目标端口开放,目标回复 SYN-ACK,扫描方立即发 RST 关闭连接(不完成握手,避免留下连接记录)
  • 若目标端口关闭,目标回复 RST-ACK

通过分析哪些端口收到了 SYN-ACK 响应,可以确定 192.168.0.99 开放的端口,本题中目标机开放了:22(SSH)、53(DNS)、80(HTTP)、111(RPC)、443(HTTPS)、32768 等端口。

四、IP 欺骗(IP Spoofing)

IP 欺骗是指在发送 IP 数据包时,将源 IP 地址填写为伪造的值而非真实地址。由于 IP 层本身不验证源地址真实性,发送端可以任意填写。本题中攻击机真实 IP 是 192.168.0.9,但在第四次扫描时伪造了 .1.254.199 三个源 IP。

识别 IP 欺骗的核心方法是看数据链路层的 MAC 地址。在同一局域网内,MAC 地址无法欺骗(或难以欺骗),因此即使源 IP 不同,如果 MAC 相同,即可判定为同一台机器发出的伪造包。

五、工控安全场景

本题以”工控安全取证”为背景。工业控制系统(ICS/SCADA)网络中同样存在 TCP/IP 协议,同样可能遭受端口扫描、漏洞探测等攻击。在工控安全取证场景下,通过流量分析还原攻击者的行为路径(主机发现 → 端口扫描 → 漏洞利用)是核心工作之一。这道题展示的是攻击准备阶段的取证过程。


解题流程总结

1. 识别文件格式
   capture.log -> 实为 pcap 格式 -> 用 tshark/Wireshark 打开

2. 统计协议分布
   163832 个包 -> ICMP 13 个 / TCP 163816 个 / UDP 3 个

3. 以 ICMP Ping 为切入点划分扫描轮次
   帧 1       -> 第 1 次扫描开始(ICMP from 192.168.0.9)
   帧 148007  -> 第 2 次扫描开始(ICMP from 192.168.0.9)
   帧 150753  -> 第 3 次扫描开始(ICMP from 192.168.0.9)
   帧 155987+ -> 第 4 次扫描开始(ICMP from 多个伪造 IP)

4. 分析第四次扫描
   帧 155987: 192.168.0.1   -> 192.168.0.99  ICMP id=0xc77b
   帧 155988: 192.168.0.254 -> 192.168.0.99  ICMP id=0xc77b
&nbsp; &nbsp;帧 155989: 192.168.0.199 -> 192.168.0.99 &nbsp;ICMP id=0xc77b &nbsp;<-- 新IP首次出现
&nbsp; &nbsp;帧 155990: 192.168.0.199 -> 192.168.0.99 &nbsp;ICMP id=0xc77b

5. 确认 Flag
&nbsp; &nbsp;第四次扫描中 192.168.0.199 发出的 ICMP 包帧编号为 155989

Flag: 155989

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:破镜安全 破镜安全 破镜安全《工控安全取证 — CTF 流量分析题详解》

评论:0   参与:  0