CISCN 2023 被加密的生产流量

[CISCN 2023 初赛]被加密的生产流量

某安全部门发现某涉密工厂生产人员偷偷通过生产网络传输数据给不明人员,通过技术手段截获出一段通讯流量,但是其中的关键信息被进行了加密,请你根据流量包的内容,找出被加密的信息。 得到的flag使用NSSCTF{}格式提交。

思路

解压拿到pcap文件,通过“分析”–>“会话”,找到了一个发送数据量最大,持续时间最久的一个会话;将起规则应用到过滤器,进行查看,发现了存在很奇怪的大写字母后缀,但终究是敏感度不够,也没想出为什么,因而一筹莫展。

会话详情

应用选中会话到过滤器

随后看了wp,正是modbus协议的每个192.168.3.130向192.168.3.164发送数据的分组中,最后两个大写字母拼起来,再解BASE32即可。

学习了一下使用pyshark解析pcap包的方法,还是很容易理解的,tshark与wireshark可执行文件在同一目录下,将tshark_path改为wireshark的安装路径即可。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pyshark

flag = ''
tmp = 0
cap = pyshark.FileCapture(input_file="modbus.pcap",tshark_path='',display_filter='modbus  && frame.len == 66')


def hex2str(id:str) -> str:
    return str(bytes.fromhex(id)).replace("b","").replace("\'","")


if __name__ == '__main__':
    for p in cap:
        try:
            if len(p.modbus.word_cnt) == 5:
                tmp = p.modbus.word_cnt
                tmp = str(hex(int(p.modbus.word_cnt))).replace("0x", "")
                flag = flag + tmp
        except:
            pass

    flag = hex2str(flag)
    print(flag)

Modbus是一个工业通信协议,最初由施耐德电器发布,旨在实现PLC与其他设备间的通信,这里的word count指示请求中的字数(以16位的字为单位);(上面的word count看得出来大得离谱,远比实际不符,应该有这个敏感性的)。

总结 & Reference

  1. 对于文件名,应该有一定敏感性,例如这里的modbus,可能是某种提示。
  2. 对于不符合字段名称的数据,也应有一定敏感性,例如这里的word count,脱离实际或者并非数字,就很奇怪,应当引起重视。
  3. 可以使用pyshark库,操作pcap文件,提高效率。
使用 Hugo 构建
主题 StackJimmy 设计