
1. 项目概述当流量包成为“犯罪现场”作为一名在网络安全和运维领域摸爬滚打了十多年的老兵我处理过无数起安全事件。很多时候当警报响起服务器被入侵或者业务出现异常第一手也是最宝贵的证据往往不是日志文件而是一个个看似冰冷、充满十六进制字符的流量包文件比如我们今天要对付的这个attack.pcapng。对于新手来说面对一个几百兆甚至上几个G的pcapng文件可能会感到无从下手密密麻麻的数据包列表就像一片信息的海洋。但对于我们这些“网络侦探”来说这里面藏着的每一条TCP握手、每一个HTTP请求、每一段异常载荷都是黑客留下的“指纹”和“足迹”。这次我就带你化身“数字福尔摩斯”手把手教你如何用Wireshark这把“手术刀”从attack.pcapng这个“网络犯罪现场”中精准地揪出黑客活动的五个关键线索。整个过程我会配上完整的操作截图确保你不仅能看懂更能跟着做出来。2. 环境准备与线索分析框架2.1 工具与思维准备工欲善其事必先利其器。我们的核心工具当然是Wireshark它是开源且功能最强大的网络协议分析器没有之一。我强烈建议你从官网下载最新稳定版以确保拥有最全的协议解析库和最新的功能。除了Wireshark本身我们还需要一个辅助工具NetworkMiner或Xplico。这类工具被称为网络取证框架NFAT它们能自动从流量包中提取文件、图片、证书等对象对于快速浏览和提取证据非常有用可以作为Wireshark深度分析前的“快速扫描仪”。但比工具更重要的是分析思维。面对一个未知的攻击流量包切忌一头扎进细节。我习惯采用“由外而内由宏观到微观”的漏斗式分析流程整体概览先看对话统计、端点统计了解流量中的“主角”哪些IP在大量通信。协议分布看协议分层统计判断攻击主要利用了哪种协议如HTTP、DNS、SMB。时间线分析利用IO图表观察流量在时间轴上的爆发点定位攻击发生的关键时刻。深入追踪基于以上线索对可疑的TCP流或HTTP会话进行深度解码和检视。证据提取还原攻击者上传的工具、窃取的数据或执行的命令。这个流程能帮你避免在数十万个数据包中迷失方向。记住黑客也是人他们的攻击行为在流量上会呈现出明显的“模式”我们的任务就是识别这些异常模式。2.2 初始加载与快速过滤技巧拿到attack.pcapng后别急着逐条看包。首先用Wireshark打开它然后立刻做以下几件事第一步查看“统计”菜单下的“对话”。这里列出了所有通信的端点IP地址和它们之间的流量大小。你的眼睛应该立刻去寻找那些“不对称”的对话。比如一个内部IP如192.168.1.100向外部某个IP发送了海量数据但接收的却很少这可能是数据外泄。或者一个外部IP向你的服务器IP的某个端口如22、3306发起了大量、快速的连接尝试这显然是暴力破解或扫描。在本次的案例中我们可能就会发现一个外部IP172.16.1.110与内部某个IP存在大量交互。第二步应用初步显示过滤器。Wireshark的显示过滤器是你的“望远镜”。一开始可以过滤掉一些“噪音”。例如!arp !dns过滤掉ARP和DNS这类底层、高频的协议让画面更干净。tcp.flags.syn1 and tcp.flags.ack0只看TCP SYN包这是新连接开始的标志有助于快速发现端口扫描行为大量SYN包发往不同端口。http or tls如果怀疑是Web攻击或加密通信可以聚焦HTTP或TLS流量。一个关键技巧Wireshark的着色规则非常有用。默认情况下绿色是TCP流量浅蓝是UDP黑色通常表示有问题的包如乱序、重传。你可以根据分析需要自定义颜色比如将所有到端口22SSH的流量标为红色这样一旦有红色出现就会格外醒目。3. 线索一识别扫描与侦察行为黑客在发动实质性攻击前几乎一定会进行信息搜集也就是扫描。这在流量中会留下非常明显的痕迹。3.1 端口扫描的流量特征在Wireshark中端口扫描通常表现为在极短的时间内从一个源IP向目标IP的多个不同端口发送探测包。最常见的扫描类型是TCP SYN扫描。操作方法在显示过滤器栏输入ip.src [可疑IP] and tcp.flags.syn 1 and tcp.flags.ack 0。这将列出该IP发出的所有SYN包。观察“目标端口”列。如果看到目标端口在21FTP、22SSH、23Telnet、80HTTP、443HTTPS、3306MySQL、3389RDP等常见服务端口上快速、连续地出现并且每个SYN包都没有后续的完整TCP握手即没有看到对应的SYN-ACK和ACK那么这基本就是扫描行为。可以进一步使用“统计” - “端点”选择“TCP”标签页查看该可疑IP与目标IP在不同端口上的数据包计数。扫描行为会使得包计数在多个端口上都是1或2一个SYN可能还有一个RST。实战截图示例在attack.pcapng中我们过滤ip.src 172.16.1.110并查看TCP SYN包可能会发现它向目标IP的21, 22, 23, 80, 3306端口都发送了SYN包且后续没有成功建立连接。这就是典型的端口扫描说明黑客在寻找可用的入口点。3.2 服务指纹识别与漏洞探测比单纯扫描端口更进一步的是服务指纹识别和漏洞探测。黑客会分析目标端口的banner信息或发送特定的探测载荷。如何发现Banner Grabbing当连接到22端口SSH时服务端会返回类似“SSH-2.0-OpenSSH_7.4”的banner。在Wireshark中你可以追踪这条TCP流右键点击包 - 追踪流 - TCP流直接看到明文交换的信息。如果黑客在扫描后对某个端口建立了连接并获取了banner那么在这个TCP流里就能看到。漏洞探测Payload对于Web服务黑客可能会发送包含../../(路径遍历)、 OR 11(SQL注入测试) 等字符串的HTTP请求。你可以在过滤出HTTP流量后 (http)在Packet Bytes面板下方窗口直接搜索这些特征字符串或者使用显示过滤器http.request.uri contains “../”。注意有些扫描工具会使用NULL扫描、FIN扫描等更隐蔽的方式这些扫描不会完成TCP三次握手在流量中表现为只有SYN或只有FIN标志位的数据包需要你对TCP标志位有更深入的理解才能识别。4. 线索二追踪暴力破解攻击端口扫描之后如果发现了开放的服务比如SSH22或MySQL3306黑客下一步很可能就是尝试暴力破解。4.1 识别暴力破解的流量模式暴力破解在流量上的核心特征是针对同一目标IP和端口源IP在短时间内发起大量、高频的、结构相似但内容如密码不同的认证请求。以MySQL暴力破解为例使用过滤器tcp.port 3306聚焦MySQL流量。你会发现大量从172.16.1.110发往目标服务器3306端口的短小TCP流。右键任意一个包选择“追踪流” - “TCP流”。在追踪流的窗口你会看到经典的MySQL登录过程。黑客工具会不断尝试不同的用户名和密码组合。在流内容中你会看到类似COM_QUIT后紧跟一个新的登录尝试每次登录的password字段的哈希值都不同如果协议加密可能看不到明文密码但尝试频率极高。关键数量统计在Wireshark中你可以使用tcp.analysis.flags !tcp.analysis.window_update过滤器结合“统计”-“IO图表”绘制出每秒连接数或数据包数的曲线。暴力破解期间曲线会出现一个明显的尖峰。4.2 提取攻击者使用的字典信息有时攻击者使用的用户名/密码字典会直接体现在流量中尤其是使用简单协议或工具配置不当时。操作方法对于HTTP Basic认证的暴力破解用户名和密码是以Base64编码形式放在Authorization头部的。你可以写一个简单的显示过滤器来提取http.authorization。然后逐个查看数据包在Packet Details面板中展开Hypertext Transfer Protocol-Authorization-Credentials可以看到类似Basic dXNlcjE6cGFzc3dvcmQx的字符串将其复制出来在线或用Wireshark工具解码即可得到明文user1:password1。对于其他协议可能需要更复杂的分析。一个技巧是将疑似包含暴力破解尝试的TCP流内容全部导出在追踪流窗口点击“另存为”保存为一个文本文件。然后用grep或文本编辑器的搜索功能寻找user、pass、login、password等关键词可能就能拼凑出攻击者使用的字典列表。我的心得面对暴力破解在Wireshark里数包不是目的。真正的价值在于确定攻击持续时间、估算尝试次数、提取攻击源IP和可能的字典为后续的封禁、取证和风险评估提供量化依据。例如如果你发现攻击者在5分钟内尝试了上万次密码那么被破解的账户其密码很可能不在常用弱口令字典里暂时是安全的但如果只尝试了几百次就成功了那说明密码强度极差必须立即强制修改。5. 线索三解密与还原攻击载荷扫描和破解可能只是前奏真正的破坏来自于攻击载荷的投递和执行。这部分是分析中最精彩也最考验功力的环节。5.1 HTTP/HTTPS流量的文件提取Web是常见的攻击向量。攻击者可能通过文件上传漏洞投递Webshell或者网站被植入恶意JS进行水坑攻击。从HTTP流量中提取文件使用过滤器http筛选出所有HTTP流量。寻找POST请求特别是上传文件的请求。在Packet Details面板中查看Hypertext Transfer Protocol下的Full request URI和Content-Type。如果Content-Type包含multipart/form-data很可能就是文件上传。要提取这个文件最方便的方法是使用文件 - 导出对象 - HTTP。Wireshark会自动列出所有HTTP传输的文件。你可以在这里看到文件名、内容类型、大小等信息。找到可疑的文件如shell.php、payload.exe将其保存到本地。重要步骤保存后切勿在联网的实体机上直接双击打开应该将其上传到VirusTotal或类似的多引擎扫描平台进行检测或者放在沙箱环境中进行分析。从HTTPS流量中提取文件如果可能 HTTPS是加密的默认情况下Wireshark看不到内容。但如果你拥有服务器的私钥就可以解密流量。在Wireshark中进入编辑 - 首选项 - Protocols - TLS在(Pre)-Master-Secret log filename中指定一个文件并在服务器上配置环境变量SSLKEYLOGFILE指向同一文件这样就能解密并像分析HTTP一样分析HTTPS流量了。在实战取证中这通常需要协调服务器管理员才能实现。5.2 还原攻击者执行的命令以SMB/RDP为例如果攻击者通过漏洞获得了系统权限并建立了SMB文件共享或RDP远程桌面连接那么他后续的操作可能就在这些协议通道里。SMB协议命令追踪过滤smb2或nbss。寻找Tree Connect请求这表明攻击者连接到了一个共享文件夹。随后你会看到Create Request创建/打开文件和Write Request写入文件。通过追踪这些SMB流你可以还原出攻击者在共享目录里上传了哪些文件可能是后门、挖矿程序。更关键的是如果攻击者使用了PsExec或类似工具通过SMB执行命令你会在流量中看到它访问了ADMIN$或C$等管理共享并写入服务二进制文件。通过分析这些写入操作可以还原出被执行的命令。RDP协议活动分析 RDP流量本身是加密的但Wireshark可以解析其通道建立过程。你可以通过以下迹象判断RDP被滥用大量的TCP TPKT协议数据包目标端口为3389。在“统计”-“对话”中看到某个外部IP与内部IP在3389端口有持续、大量的双向流量这很可能就是活跃的RDP会话。虽然无法解密具体操作但结合事件时间线如果发现在非工作时间出现此类连接就是极强的异常信号。6. 线索四分析数据外泄痕迹攻击的最终目的往往是窃取数据。数据外泄在流量上通常表现为内部服务器主动向外部IP发起大量、持续的出站连接并传输大体积数据。6.1 发现异常出站连接回到“对话”视图按字节数排序重点关注“发送字节数”远大于“接收字节数”的对话。这通常意味着数据正在被“拉”出去。使用IO图表绘制整个抓包时间段内从内部IP到某个可疑外部IP的流量图。如果数据外泄发生你会看到一个持续、平稳或脉冲式的出站流量高峰这与用户访问Web产生的突发性流量模式截然不同。协议分析数据外泄可能通过多种协议HTTP/HTTPS POST攻击者将数据打包通过Web请求发送到受控的服务器。过滤http.request.method “POST”并查看那些请求体Entity Body特别大的包。DNS隧道这是一种非常隐蔽的数据外泄方式。攻击者将数据编码到DNS查询的子域名中。特征表现为内部IP向某个不常见的DNS服务器非公司配置的发起大量、高频的DNS查询查询的域名非常长且随机如a1b2c3d4e5f6.attacker.com。你可以过滤dns并观察查询名的长度和规律。FTP / SFTP / SCP直接使用文件传输协议。过滤对应端口21, 22的流量并追踪TCP流查看是否有文件传输的会话。6.2 定位被窃取的数据内容一旦锁定可疑的数据流下一步就是尝试还原数据内容。对于HTTP POST数据在追踪TCP流时你可以看到完整的请求和响应。请求体中可能包含经过Base64编码或压缩的数据库转储文件内容。你可以将请求体部分通常是application/x-www-form-urlencoded或multipart/form-data格式之后的部分复制出来尝试进行Base64解码或者保存为二进制文件后用相应的工具如7z,tar尝试解压。文件还原Wireshark的“文件 - 导出对象”功能同样适用于FTP等协议。你可以尝试导出对象列表看看有没有.sql,.zip,.rar,.xlsx等常见的数据文件格式。字符串搜索如果你知道可能被窃取的数据类型如客户邮箱、身份证号可以在Wireshark中直接搜索字符串。点击编辑 - 查找分组选择“字符串”并在分组详情或分组字节流中搜索。例如搜索example.com可能会直接定位到包含邮箱列表的数据包。警告数据外泄分析往往涉及海量数据包。务必善用显示过滤器和追踪流功能聚焦于可疑的会话避免陷入数据海洋。同时还原出的敏感数据必须按照公司安全规定妥善处理。7. 线索五构建攻击时间线与行为链单点线索的价值有限我们需要将上述所有发现串联起来还原出完整的攻击故事链。这是报告撰写和后续溯源的关键。7.1 使用时间显示格式与过滤联动Wireshark默认的时间显示是相对于抓包开始的时间。为了更直观我建议你调整为绝对时间视图 - 时间显示格式 - 日期和时间。这样每个数据包都会显示具体的发生时刻。构建时间线的技巧创建时间线注释在分析过程中每发现一个关键事件如“扫描开始”、“第一次暴力破解尝试”、“Webshell上传成功”、“第一个数据外泄包”就在对应的数据包上右键点击选择“分组注释”写下简要说明。使用过滤按钮Wireshark的显示过滤器输入框旁边有一个“”按钮点击可以将当前过滤器保存为一个按钮。你可以为“扫描流量”、“MySQL登录尝试”、“HTTP文件上传”等分别创建过滤按钮。分析时通过点击不同按钮可以快速在不同攻击阶段视图间切换并结合时间戳观察其先后顺序。7.2 绘制攻击链与撰写报告要点根据所有线索你可以绘制出类似下面的攻击链T0 - T1侦察攻击者IP172.16.1.110对目标网段进行端口扫描发现开放了22(SSH)、80(HTTP)、3306(MySQL)端口。T2 - T3初始访问攻击者对MySQL服务3306发起暴力破解在尝试了数百次后成功以弱口令root:root123登录。T4执行通过MySQL的INTO OUTFILE功能或漏洞在Web目录写入一句话Webshell (/var/www/html/shell.php)。T5 - T6横向移动/数据窃取通过Webshell攻击者上传了渗透工具包进一步探测内网并最终将数据库备份文件通过HTTP POST方式外泄至http://malicious-server.com/upload。撰写分析报告时每个环节都需要附上证据扫描证据提供显示过滤器ip.src172.16.1.110 and tcp.flags.syn1的截图高亮目标端口列表。暴力破解证据提供MySQL登录失败和成功那次TCP流的追踪截图特别是包含登录尝试和OK响应的部分。Webshell上传证据提供导出HTTP对象中shell.php的截图以及该文件在VirusTotal的检测报告截图。数据外泄证据提供IO图表中出站流量峰的截图以及包含大量数据的HTTP POST请求的追踪流截图。这份由Wireshark流量分析构建出的、带有精确时间戳和完整证据链的报告才是说服安全团队、管理层乃至执法机构采取行动的最有力武器。它不仅仅是指出了问题更是清晰地重现了攻击的全过程。