CTF(Capture The Flag)是一种网络安全竞赛,其中流量分析是一种常见的题型。流量分析就是通过分析网络流量包,提取出有用的信息,如密码、密钥、文件、flag等。流量分析需要掌握一些基本的网络协议知识,以及一些常用的工具和技巧。本文将介绍流量分析的基本概念,常见的题型和解题方法,以及一些实战案例,帮助你从入门到精通流量分析。
流量分析的基本概念
流量包(packet)是网络通信中的最小单位,它包含了发送方和接收方的地址、协议类型、数据内容等信息。流量包按照不同的层次可以分为物理层、数据链路层、网络层、传输层、应用层等,每一层都有相应的协议和格式。流量分析就是通过观察和解析流量包的各个层次的信息,找出其中的规律和异常,从而达到目的。
流量分析的工具有很多,其中最常用的是wireshark,它是一个图形化的网络嗅探器,可以捕获和分析实时或离线的流量包,支持多种协议和过滤器,还有一些高级功能,如数据包还原、数据提取、流量统计等。除了wireshark,还有一些其他的工具,如tcpdump、tshark、foremost、binwalk等,它们各有特点和优势,可以根据不同的场景和需求选择使用。
流量分析的技巧有很多,其中最重要的是过滤和搜索。过滤是指根据一定的条件,筛选出感兴趣的流量包,如协议类型、端口号、IP地址、数据长度等。搜索是指根据一定的关键字,查找出包含该关键字的流量包,如字符串、十六进制、正则表达式等。通过过滤和搜索,可以快速定位到目标流量包,从而节省时间和精力。
流量分析的常见题型和解题方法
流量分析的题型有很多,但大致可以分为以下几类:
- ping报文信息:这类题目是通过分析icmp协议的ping报文,提取出其中隐藏的信息,如flag、文件、命令等。解题方法是观察每个ping报文的数据部分,找出其中的规律和异常,或者用脚本处理。
- 上传/下载文件:这类题目是通过分析http协议或其他协议的上传/下载文件的流量,提取出其中的文件内容,如压缩包、图片、文本等。解题方法是使用wireshark的导出对象功能,或者手动提取数据部分,或者用foremost等工具分离文件。
- sql注入攻击:这类题目是通过分析http协议的sql注入攻击的流量,提取出其中的数据库信息,如表名、字段名、数据内容等。解题方法是观察每个http请求的参数和响应,找出其中的注入语句和结果,或者用sqlmap等工具自动化注入。
- 访问特定的加密解密网站:这类题目是通过分析http协议的访问特定的加密解密网站的流量,提取出其中的加密或解密的内容,如md5、base64、aes等。解题方法是观察每个http请求的参数和响应,找出其中的加密或解密的内容,或者用在线工具或脚本进行加密或解密。
- 后台扫描+弱密码爆破+菜刀:这类题目是通过分析http协议的后台扫描+弱密码爆破+菜刀的流量,提取出其中的后台地址、用户名、密码、文件内容等。解题方法是观察每个http请求的参数和响应,找出其中的扫描工具、爆破工具、菜刀工具的特征和结果,或者用相应的工具进行验证和操作。
- usb流量分析:这类题目是通过分析usb协议的流量,提取出其中的键盘输入、鼠标点击、文件拷贝等信息。解题方法是使用wireshark的usb键盘解码器,或者手动解析usb数据包,或者用脚本处理。
- WiFi无线密码破解:这类题目是通过分析WiFi协议的流量,提取出其中的无线密码,如wep、wpa、wpa2等。解题方法是使用wireshark的无线密码解码器,或者使用aircrack-ng等工具进行破解。
- 根据一组流量包了解黑客的具体行为:这类题目是通过分析一组复杂的流量包,了解黑客的具体行为,如攻击方式、攻击目标、攻击结果等。解题方法是综合运用上述的各种工具和技巧,分析流量包的各个层次和细节,还原黑客的攻击过程和思路。
流量分析的实战案例
下面我们来看几个流量分析的实战案例,分别涉及到不同的题型和方法,帮助你加深理解和掌握流量分析的技能。
案例一:ping报文信息
这是一个来自第八届极客大挑战的题目,题目给出了一个流量包,要求提取出其中的flag。
打开流量包,发现有一大段的icmp协议的包,发现在icmp报文中夹杂着flag:
这里可以依次查看每一个icmp报文数据,然后得到flag:
flag{p1ng_p0ng_p1ng_p0ng}
也可以用脚本处理,如下:
import pyshark
cap = pyshark.FileCapture('ping.pcap')
flag = ''
for packet in cap:
data = packet[packet.highest_layer].data
flag += chr(int(data, 16))
cap.close()
print(flag)
案例二:上传/下载文件
这是一个来自第七季极客大挑战的题目,题目给出了一个流量包,要求提取出其中的文件内容。
打开流量包,发现有一些http协议的包,其中有一个包的数据部分包含了一个rar压缩包:
要提取出这个rar包,有两种方法:
方法一:直接复制数据块,然后复制到winhex中,转存为rar。
复制数据块 as Hex stream > 在winhex中粘贴 为 ASCII HEX > 删除前面的 多余信息 > 保存为 rar
方法二:用foremost分离:
foremost -i http.pcap -o output
在output文件夹中可以看的分离出来的文件。