1. 从一份可疑的流量包说起:为什么我们需要Wireshark
最近在复盘一个内部安全演练的案例,手头拿到了一份名为attack.pcapng的流量包文件。对于安全工程师、网络管理员,甚至是开发人员来说,面对一个未知的、可能包含攻击痕迹的流量包,第一反应往往就是打开Wireshark。这几乎成了一种职业本能。但你真的知道该如何系统性地分析它,并从中提取出有价值的“证据”吗?很多人打开Wireshark,看着满屏五颜六色的数据包,可能会感到无从下手,最终只是简单地过滤一下HTTP协议,看看有没有明文密码就草草了事。这无疑会遗漏掉大量隐藏在协议交互、异常行为模式中的关键信息。
attack.pcapng这个文件名本身就充满了故事性。它可能记录了一次渗透测试的过程,一次恶意软件的通信,或者是一次网络攻击的现场快照。我们的目标,就是扮演“数字侦探”的角色,使用Wireshark这把“手术刀”,对这份流量进行解剖,还原攻击者的行为路径、使用的工具、攻击的目标,以及最终是否成功。这个过程,我们称之为网络取证分析。它不仅仅是看数据,更是理解数据背后的意图和故事。今天,我就以处理attack.pcapng这类文件的通用思路为线索,结合常见的攻击场景,带你走一遍从打开文件到形成分析报告的完整流程。无论你是想入门安全分析,还是希望提升自己的排错能力,这套方法都能给你提供一个扎实的起点。
2. 分析前的准备工作:配置你的Wireshark“作战室”
在双击打开attack.pcapng之前,花几分钟做好环境准备,能极大提升后续分析的效率和准确性。这就像侦探到达案发现场,首先要确保自己的勘查工具齐备且设置正确。
2.1 Wireshark的个性化配置
默认安装的Wireshark界面可能并不最适合取证分析。我通常会进行以下几项调整:
首先,进入编辑->首选项->外观。我会将列设置进行大幅修改。默认的列信息有限,我会添加对分析至关重要的几列:
Delta time(时间增量):显示当前包与前一个包的时间间隔。这对于识别扫描行为(如端口扫描时密集的SYN包)、爆破攻击(如登录尝试的固定频率请求)或命令控制(C2)的心跳包至关重要。Time since reference(相对于参考时间):我会设置第一个数据包或某个关键事件(如第一个HTTP请求)为参考时间,这样能更直观地看到所有事件在攻击时间轴上的位置。Src port(源端口)和Dst port(目的端口):虽然信息面板里有,但放在列中一目了然,方便快速识别服务。Length(长度):数据包长度有时能揭示信息,例如,非常小的TCP包可能是探测或保持连接,而特定长度的异常大包可能包含隧道数据。
其次,是着色规则。Wireshark默认的着色规则已经不错,但我们可以强化它。进入视图->着色规则。我习惯添加或高亮一些规则:
- 将
TCP SYN包标记为醒目的颜色(如亮黄色):大量密集的SYN包是扫描的典型标志。 - 将
TCP RST或RST, ACK包标记为另一种颜色(如粉色):这通常表示连接被拒绝或异常关闭,在扫描响应或防火墙拦截时常见。 - 为常见的恶意软件端口通信设置规则:例如,目的端口为4444(Metasploit默认)、5555、6666-6669(IRC,旧式僵尸网络)、8080(可能被用作反向代理)等的流量,用红色背景高亮。你可以根据当前威胁情报动态更新这个列表。
注意:着色规则不要设置得过于花哨,否则会干扰视线。核心是让异常行为“跳”出来。
2.2 关键插件的准备与使用
Wireshark的强大之处在于其可扩展性。对于安全取证,以下几个功能或“类插件”的用法必须掌握:
统计功能:这是你的“宏观望远镜”。打开
统计->对话。这里可以看到所有通信对的流量统计(IPv4、IPv6、TCP、UDP等)。分析attack.pcapng时,我首先会看IPv4或TCP对话,按数据包数量或字节数排序。排名最前的几个对话,很可能就是攻击的核心流量。如果发现某个内部IP与一个外部IP有巨量的、单向的TCP连接,那很可能是数据外泄(Data Exfiltration)。协议分层统计:打开
统计->协议分级。这个视图告诉你整个抓包文件中各种协议的分布比例。如果在一个本该是纯HTTP/HTTPS的办公网络流量中,出现了大量的ICMP、或者不明协议的流量,这本身就是一个巨大的红色警报。导出对象功能:这是提取攻击载荷的“利器”。在
文件->导出对象下,你可以批量导出HTTP、SMB、TFTP等协议传输的文件。假设attack.pcapng中攻击者通过HTTP上传了一个Webshell,或者通过FTP下载了工具,你可以直接在这里找到并导出这些文件,用于进一步的静态分析(如病毒扫描、逆向工程)。IO Graphs(输入输出图形):打开
统计->IO 图表。这个工具可以可视化流量速率。你可以创建多个图表,例如,用过滤器tcp.flags.syn==1 and tcp.flags.ack==0来绘制SYN扫描速率图,用http过滤HTTP请求速率。通过图形,你能清晰看到攻击的阶段:可能是缓慢的侦察阶段,然后是爆发性的漏洞利用阶段,最后是持续的数据传输阶段。
3. 攻击流量分析的通用侦查流程
做好了准备,现在正式打开attack.pcapng。不要急于深入某个具体的数据包,而应该遵循一个从宏观到微观、从异常到具体的侦查流程。
3.1 第一步:整体概览与异常点快速定位
首先,忽略具体内容,关注“形态”。
看时间线:观察数据包的时间戳分布。是密集在几秒内(如漏洞利用),还是均匀分布在很长一段时间(如长期C2通信或数据渗漏)?使用
Delta time列,快速滚动,寻找时间间隔异常规律或异常密集的区域。看对话:如前所述,打开“对话”统计。重点关注:
- 单一IP对大量不同IP的短连接:这是扫描(Scanner)的典型特征。
- 大量IP对单一IP的短连接:这可能表示被扫描的目标,或者是一个正在遭受DDoS攻击的目标。
- 两个IP之间存在极其不对称的流量:例如,A向B发送了大量小包,而B向A返回了少量但巨大的数据包,这可能是在下载数据。
- 出现不常见的端口:在对话列表中,注意那些使用非标准端口的通信(如12345, 31337, 47145等),这些常被后门程序使用。
看协议分级:检查是否有不该出现的协议。比如,在服务器区的流量中出现了NetBIOS或LLMNR协议,可能意味着内网横向移动尝试。
3.2 第二步:针对常见攻击模式的深入过滤分析
根据第一步发现的疑点,我们可以应用一些经典的Wireshark显示过滤器,进行针对性排查。以下是一些“杀手级”过滤器:
扫描探测:
tcp.flags.syn==1 and tcp.flags.ack==0:过滤出所有TCP SYN包(连接请求)。如果来自同一个源IP,目标IP或端口是变化的,这就是TCP SYN扫描。tcp.flags==0x29或tcp.flags.fin==1 and tcp.flags.push==1 and tcp.flags.urg==1:这是Xmas扫描(FIN, PSH, URG标志位全开)的数据包。同样,tcp.flags==0是Null扫描。icmp.type==8:ICMP Echo请求(Ping)。大量来自同一源的Ping包可能是主机发现扫描。
漏洞利用与攻击尝试:
tcp.analysis.flags && !tcp.analysis.window_update:这个过滤器会显示TCP分析器认为有问题(如重传、重复ACK、零窗口)的数据包。在攻击期间,网络拥塞或目标主机异常可能导致大量重传。http.request.uri contains “..”或http.request.uri contains “etc/passwd”:寻找HTTP请求中明显的路径遍历或文件包含攻击特征。tcp contains “|00 00 00 00 00 00 00 01|”:这是一个例子,实际中你需要根据漏洞的已知攻击载荷(如MS17-010 EternalBlue的Shellcode特征)进行搜索。这需要结合威胁情报。
异常行为与数据渗漏:
tcp.len > 0 and (tcp.srcport 80 or tcp.dstport 80):过滤出HTTP协议中携带实际数据的TCP段(Len>0)。然后可以右键 ->追踪流->TCP流,查看完整的HTTP会话内容,寻找POST上传或GET下载大文件的行为。dns.qry.name.len > 50:过滤出查询超长域名的DNS请求。这可能是DNS隧道技术,用于在受限网络中隐蔽传输数据。>