1. 从一封邮件到全网失守恶意流量的追踪之旅大家好我是老张在安全分析这行摸爬滚打了十几年见过太多企业因为一封不起眼的邮件而“破防”。今天咱们不聊那些高深的理论就从一个真实的、我亲手处理过的案例出发聊聊怎么像侦探一样顺着网络流量的“脚印”从一个钓鱼邮件开始一路追到攻击者老巢——也就是他们控制的C2服务器。这个过程我们称之为“恶意流量溯源”。你可能觉得分析数据包、看Wireshark是天书是高手才能玩的。其实不然只要你掌握了基本的思路和几个关键工具你也能像看故事书一样看懂攻击者留下的“犯罪记录”。想象一下攻击者就像一个小偷他翻墙进了你家发送钓鱼邮件偷走了钥匙诱骗你点击链接或下载文件然后用这把钥匙打开了你的保险柜在你的电脑上运行恶意程序最后还大摇大摆地从你家后门把财物运回自己家连接C2服务器窃取数据或接受指令。我们的任务就是通过监控录像网络流量还原他整个作案过程甚至找到他家的地址C2服务器的位置。这次我们要面对的“玄机”挑战比上一章单纯分析钓鱼邮件获取压缩包要更进一步。上一章我们找到了恶意链接和下载的ZIP包故事就暂停了。但现实中攻击绝不会就此停止。那个ZIP包里的JavaScript文件只是一个“信使”它的真正使命是去更远的地方把真正的“大魔王”——后续的恶意程序给请过来。我们这章就是要追踪这个“信使”的完整旅程看它去了哪里见了谁最终把什么带回了你的电脑。这整个过程都清晰地记录在网络流量数据包里就看你有没有本事把它读出来。2. 战场准备工具与核心思路工欲善其事必先利其器。在开始追踪之前我们得把“武器库”准备好。别担心不需要什么昂贵的神器大部分都是免费且强大的工具。2.1 你的数字显微镜Wireshark如果说数据包是犯罪现场的灰尘和纤维那Wireshark就是你的高倍显微镜。它能把网络上流动的每一个比特都捕获下来让你仔细检视。对于这个案例我们已经有了一份“现场录像”——一个名为hacker1.pacapng的数据包文件.pcapng是Wireshark的标准保存格式。我们的所有分析都将从这个文件开始。打开Wireshark直接把这个文件拖进去你就能看到成千上万个数据包在滚动别慌我们一步步来过滤。2.2 辅助利器文本编辑器与在线工具除了Wireshark你还需要几样小工具一款高级文本编辑器比如VS Code、Sublime Text或者Notepad。用来查看和美化那些被攻击者故意弄得乱七八糟的脚本代码。网络沙箱或在线分析平台比如VirusTotal、Hybrid Analysis。当你发现一个可疑的域名或文件时可以丢上去看看全球其他安全专家有没有标记过它。切记绝对不要在你的主力电脑上直接运行或访问这些恶意样本和链接命令行工具系统自带的就行比如用certutil计算文件哈希值MD5、SHA256这在确认文件唯一身份时非常有用。2.3 核心追踪思路顺藤摸瓜面对海量数据包新手最容易犯的错就是一头扎进去乱看。我的经验是一定要有一条清晰的“主线”。对于从钓鱼邮件到C2的追踪主线通常是这样定位初始感染点找到那封钓鱼邮件触发的第一个异常网络请求。通常是HTTP/HTTPS请求去下载一个恶意文件比如上一章找到的ZIP包。解剖恶意载荷把下载下来的文件ZIP弄出来看看里面到底装了啥。往往是一个脚本JS、VBS、PowerShell或一个可执行程序。解码与反混淆攻击者不会把代码明明白白给你看。脚本通常是经过混淆的看起来像天书。我们需要把它“翻译”成人能看懂的样子找出里面隐藏的关键信息特别是下一步要联系的地址C2域名或IP。追踪二次请求在流量文件中寻找上一步解码出来的域名或IP地址发起的网络连接。这通常就是恶意程序“回家打电话”或者“下载武器”的通信。还原攻击链把以上所有发现按时间顺序串联起来用时间线的方式画出攻击者每一步做了什么目标是什么。记住攻击者很狡猾他们会用各种方法隐藏自己比如使用动态域名DGA、快速更换IP、甚至把C2信息藏在图片、社交媒体帖子等看似正常的地方。但无论怎么藏只要它要通信就必然会在流量中留下痕迹。我们的工作就是找到并解读这些痕迹。3. 实战第一步在流量中定位“信使”的出发地好了理论说再多不如动手干一次。我们打开hacker1.pacapng。扑面而来的数据包可能让你眼花这时候就要用上Wireshark最强大的功能之一显示过滤器。3.1 过滤出关键协议恶意软件在初期下载阶段为了兼容性和简单经常使用HTTP协议而不是HTTPS。所以我们可以在Wireshark顶部的过滤栏输入http。回车后界面会清爽很多只显示HTTP协议的数据包。接下来怎么找到那个下载ZIP包的请求呢有几个技巧看包大小点击Length列进行排序通常下载文件的响应包服务器返回的数据包会比较大因为里面包含了文件数据。找那些长度异常大的HTTP数据包。看状态码在HTTP流里状态码200 OK表示请求成功。一个成功的GET或POST请求后跟着一个大的200 OK响应很可能就是文件下载。追踪流在疑似下载文件的数据包上右键选择追踪流-HTTP流。Wireshark会把这个HTTP会话的所有内容重组并显示在一个窗口里一目了然。在我分析的这个案例里通过上述方法我很快就锁定了一个请求GET /w0ks//?YO1702920835它请求的Host是tsdandassociates.co.sz。服务器返回了一个很大的数据包状态码是200。在流内容里我一眼就看到了文件头PK这是ZIP文件的魔术字十六进制是50 4B。这就确认了恶意程序正是从这个URLtsdandassociates.co.sz/w0ks//?YO1702920835下载了ZIP压缩包。3.2 从流量中提取“证据”找到还不够我们得把这个“证据”——ZIP文件——从流量里完整地提取出来以备后续分析。很多新手会直接在想当然的数据包上右键“另存为”这常常会出错因为保存下来的可能包含了HTTP头部等多余信息。正确的方法是在Wireshark中选中那个包含ZIP文件数据的TCP数据包通常是那个很大的包。右键点击选择文件-导出分组字节流...。在弹出的对话框中务必确认“分组字节流”的范围是正确的通常Wireshark会自动帮你选好从PK开始的数据段。保存时将文件后缀名明确指定为.zip比如malicious.zip。这样我们就得到了一个干净的、可以直接用解压软件打开的ZIP文件。为了后续验证和分享情报我们通常还会计算它的哈希值在命令行里执行certutil -hashfile malicious.zip MD5就能得到它的MD5指纹比如f17dc5b1c30c512137e62993d1df9b2f。这个指纹就像文件的身份证在全球的威胁情报库中可能已经有其他分析师标记过它。4. 深入虎穴解剖ZIP与JavaScript反混淆拿到ZIP包解压我们发现里面有一个JavaScript文件.js。在真实的攻击中这非常常见。攻击者利用系统自带的脚本引擎如Windows的WSH或PowerShell来执行恶意代码可以绕过一些基于可执行文件的检测。4.1 初窥混淆代码用文本编辑器打开这个JS文件你大概率会看到一堆让人头皮发麻的代码。它可能长这样// Lorem ipsum dolor sit amet, consectetur adipiscing elit... var a ; // Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua... a h; a t; // ... 中间是上百行类似的废话注释和字符串拼接 ... console.log(a);这就是典型的字符串拼接混淆。攻击者把真正的关键信息比如一个网址拆分成一个个字符分散在代码里然后用运算符拼接起来。同时他们塞入大量无关的注释比如拉丁文假文章目的是干扰自动化分析工具和增加人工阅读的难度。但对我们来说这种混淆其实比较“低级”因为逻辑是清晰的。4.2 手动反混淆实战对付这种混淆手动分析往往最快。我们的目标是还原出完整的字符串。步骤很简单去除噪音先把所有注释行删掉以//开头的行。在高级编辑器里用查找替换功能很容易做到。梳理逻辑剩下的核心代码就是一系列变量声明和字符串拼接。通常只有一个或几个核心变量在被反复拼接。模拟执行我们不需要真的运行这个可能恶意的JS。我们可以用眼睛“跑”一遍代码或者用一个更安全的方法在浏览器的开发者工具控制台里手动执行清理后的代码。打开浏览器的开发者工具F12切换到Console控制台标签页。将清理后的JS代码粘贴进去确保只留下了var a; ah; ...这样的纯净拼接语句。按回车执行然后输入变量名a再回车浏览器就会打印出这个变量最终的值。在我这个案例里经过反混淆最终得到的字符串是https://shakyastatuestrade.com/A6F/616231603。看一个完整的URL浮出水面了这个域名shakyastatuestrade.com看起来就很可疑无意义单词组合极大概率就是攻击者控制的服务器用于托管下一阶段的恶意程序。4.3 更复杂的混淆与应对当然实战中你会遇到更狡猾的混淆比如使用数组和索引var arr [e,x,a,m,p,l,e]; var url arr[0]arr[1]...;使用字符编码String.fromCharCode(104, 116, 116, 112, 115, ...)来构造字符。多层嵌套和函数调用。应对的思路不变静下心来一步步跟。利用浏览器的控制台进行动态调试或者写一小段Python脚本模拟JS的逻辑都是好办法。核心是理解无论怎么混淆最终它都要拼凑出一个能用于网络请求的字符串域名、IP、路径我们找到那个最终被window.location、XMLHttpRequest或fetch使用的字符串就行。5. 追踪C2在流量中捕捉“回传”信号找到了C2域名shakyastatuestrade.com故事还没完。这只是一个“地址”我们需要在最初的流量文件hacker1.pacapng中找到证据证明恶意脚本确实去访问了这个地址并且可能下载了更危险的东西。5.1 使用域名过滤回到Wireshark在显示过滤器里输入http.host contains shakyastatuestrade.com或者dns.qry.name contains shakyastatuestrade.com。http.host过滤器会直接显示所有HTTP请求中Host头为该域名的数据包。dns.qry.name过滤器会显示所有对该域名进行DNS查询的数据包。恶意程序在发起HTTP请求前通常需要先通过DNS解析域名得到IP地址。如果攻击者使用了HTTPS我们可能无法直接看到请求内容因为加密了但我们依然可以通过tls.handshake.extensions_server_name过滤器来查看TLS握手时客户端发送的SNI服务器名称指示信息这里面往往就包含了域名。5.2 分析C2通信内容在我的案例中过滤后果然发现了新的HTTP请求。恶意脚本向https://shakyastatuestrade.com/A6F/616231603发起了GET请求。服务器返回了什么同样通过“追踪HTTP流”我发现它返回了一段二进制数据。通过检查数据包的头部信息或文件签名我判断这可能是一个可执行文件PE文件Windows程序。这时我们可以用同样的“导出分组字节流”方法把这个疑似可执行文件从流量中提取出来保存为.exe或.bin。然后可以将其上传到VirusTotal等沙箱进行分析。沙箱报告会详细展示这个文件运行后的所有行为创建了哪些文件、修改了哪些注册表、连接了哪些网络地址等等。这能极大地丰富我们对攻击者后续手段的了解。5.3 建立攻击时间线现在我们手头有了所有关键证据T0时刻恶意程序可能由邮件附件触发向tsdandassociates.co.sz发起请求下载malicious.zip。T1时刻ZIP包被解压其中的JS脚本被执行。T2时刻JS脚本经过反混淆构造出C2地址shakyastatuestrade.com。T3时刻JS脚本向该C2地址发起请求下载第二阶段的有效载荷一个可执行文件。T4时刻推测第二阶段载荷被执行可能建立持久化驻留窃取信息或等待进一步指令。我们可以用Wireshark的“时间”列把这些事件发生的具体时间点记录下来绘制成一个清晰的攻击链图。这份图就是给安全团队或管理层最直观的报告说明了“攻击是怎么发生的”、“已经走到了哪一步”。6. 进阶技巧与防御思考掌握了基本流程我们再来聊聊一些能让你分析更高效的进阶技巧以及从防御角度的思考。6.1 流量分析进阶技巧IO Graphs与端点统计Wireshark的统计菜单下功能强大。对话Conversations功能可以快速查看哪些IP地址之间通信最频繁这有助于发现异常的“长连接”可能是C2心跳连接。端点Endpoints功能可以统计每个IP收发了多少数据突然出现的大量外发数据可能意味着数据渗出。Follow TCP Stream/Follow TLS Stream不仅仅是HTTP对于任何TCP或加密的TLS流都可以右键进行“追踪流”。这能帮你还原完整的应用层会话对于分析自定义协议的C2通信特别有用。搜索功能在编辑-查找分组中你可以用字符串或十六进制值在整个数据包中搜索。比如如果你从内存转储中找到了一个可疑的URL片段可以直接在流量里搜它。6.2 从攻击者视角思考防御通过这次溯源我们也能反推出防御的薄弱点邮件网关为什么这封带有恶意链接的钓鱼邮件能进入内网邮件安全网关是否应该加强对陌生域名链接和附件压缩包的检测终端防护为什么JS脚本能在终端上成功执行是否限制了不必要的脚本执行权限应用白名单策略是否启用网络层检测对tsdandassociates.co.sz、shakyastatuestrade.com这类新注册、无业务关联的域名网络防火墙或IPS/IDS系统能否基于威胁情报进行实时拦截DNS监控内部主机对大量陌生域名的DNS解析请求本身就是一个高危告警信号。建立DNS流量基线并监控异常能很早发现威胁。6.3 威胁情报的利用在分析过程中得到的IOC失陷指标如域名tsdandassociates.co.sz,shakyastatuestrade.comIP地址通过DNS解析或直接连接获得文件哈希ZIP包的MD5第二阶段可执行文件的SHA256URL路径/w0ks//?YO1702920835,/A6F/616231603这些都应该立即提交到公司的威胁情报平台并用于更新防火墙、IDS、EDR等安全设备的拦截规则。同时也可以分享到行业内的威胁情报社区帮助其他组织提前防护。安全是一个共同体情报共享能让所有人都变得更安全。追踪恶意流量就像在数字世界里做侦探每一串字符、每一个数据包都是线索。这个过程需要耐心、细心和一点点好奇心。别被一开始的复杂吓倒从最简单的HTTP过滤开始一步步跟着数据流走你总能拨开迷雾看到攻击者留下的痕迹。希望这个从钓鱼邮件到C2服务器的完整追踪实例能给你带来一些实用的启发。下次再看到可疑的数据包不妨用今天的方法试试说不定你就能阻止下一次真正的攻击。
玄机——第七章 恶意流量溯源-从钓鱼邮件到C2服务器的追踪 wp
1. 从一封邮件到全网失守恶意流量的追踪之旅大家好我是老张在安全分析这行摸爬滚打了十几年见过太多企业因为一封不起眼的邮件而“破防”。今天咱们不聊那些高深的理论就从一个真实的、我亲手处理过的案例出发聊聊怎么像侦探一样顺着网络流量的“脚印”从一个钓鱼邮件开始一路追到攻击者老巢——也就是他们控制的C2服务器。这个过程我们称之为“恶意流量溯源”。你可能觉得分析数据包、看Wireshark是天书是高手才能玩的。其实不然只要你掌握了基本的思路和几个关键工具你也能像看故事书一样看懂攻击者留下的“犯罪记录”。想象一下攻击者就像一个小偷他翻墙进了你家发送钓鱼邮件偷走了钥匙诱骗你点击链接或下载文件然后用这把钥匙打开了你的保险柜在你的电脑上运行恶意程序最后还大摇大摆地从你家后门把财物运回自己家连接C2服务器窃取数据或接受指令。我们的任务就是通过监控录像网络流量还原他整个作案过程甚至找到他家的地址C2服务器的位置。这次我们要面对的“玄机”挑战比上一章单纯分析钓鱼邮件获取压缩包要更进一步。上一章我们找到了恶意链接和下载的ZIP包故事就暂停了。但现实中攻击绝不会就此停止。那个ZIP包里的JavaScript文件只是一个“信使”它的真正使命是去更远的地方把真正的“大魔王”——后续的恶意程序给请过来。我们这章就是要追踪这个“信使”的完整旅程看它去了哪里见了谁最终把什么带回了你的电脑。这整个过程都清晰地记录在网络流量数据包里就看你有没有本事把它读出来。2. 战场准备工具与核心思路工欲善其事必先利其器。在开始追踪之前我们得把“武器库”准备好。别担心不需要什么昂贵的神器大部分都是免费且强大的工具。2.1 你的数字显微镜Wireshark如果说数据包是犯罪现场的灰尘和纤维那Wireshark就是你的高倍显微镜。它能把网络上流动的每一个比特都捕获下来让你仔细检视。对于这个案例我们已经有了一份“现场录像”——一个名为hacker1.pacapng的数据包文件.pcapng是Wireshark的标准保存格式。我们的所有分析都将从这个文件开始。打开Wireshark直接把这个文件拖进去你就能看到成千上万个数据包在滚动别慌我们一步步来过滤。2.2 辅助利器文本编辑器与在线工具除了Wireshark你还需要几样小工具一款高级文本编辑器比如VS Code、Sublime Text或者Notepad。用来查看和美化那些被攻击者故意弄得乱七八糟的脚本代码。网络沙箱或在线分析平台比如VirusTotal、Hybrid Analysis。当你发现一个可疑的域名或文件时可以丢上去看看全球其他安全专家有没有标记过它。切记绝对不要在你的主力电脑上直接运行或访问这些恶意样本和链接命令行工具系统自带的就行比如用certutil计算文件哈希值MD5、SHA256这在确认文件唯一身份时非常有用。2.3 核心追踪思路顺藤摸瓜面对海量数据包新手最容易犯的错就是一头扎进去乱看。我的经验是一定要有一条清晰的“主线”。对于从钓鱼邮件到C2的追踪主线通常是这样定位初始感染点找到那封钓鱼邮件触发的第一个异常网络请求。通常是HTTP/HTTPS请求去下载一个恶意文件比如上一章找到的ZIP包。解剖恶意载荷把下载下来的文件ZIP弄出来看看里面到底装了啥。往往是一个脚本JS、VBS、PowerShell或一个可执行程序。解码与反混淆攻击者不会把代码明明白白给你看。脚本通常是经过混淆的看起来像天书。我们需要把它“翻译”成人能看懂的样子找出里面隐藏的关键信息特别是下一步要联系的地址C2域名或IP。追踪二次请求在流量文件中寻找上一步解码出来的域名或IP地址发起的网络连接。这通常就是恶意程序“回家打电话”或者“下载武器”的通信。还原攻击链把以上所有发现按时间顺序串联起来用时间线的方式画出攻击者每一步做了什么目标是什么。记住攻击者很狡猾他们会用各种方法隐藏自己比如使用动态域名DGA、快速更换IP、甚至把C2信息藏在图片、社交媒体帖子等看似正常的地方。但无论怎么藏只要它要通信就必然会在流量中留下痕迹。我们的工作就是找到并解读这些痕迹。3. 实战第一步在流量中定位“信使”的出发地好了理论说再多不如动手干一次。我们打开hacker1.pacapng。扑面而来的数据包可能让你眼花这时候就要用上Wireshark最强大的功能之一显示过滤器。3.1 过滤出关键协议恶意软件在初期下载阶段为了兼容性和简单经常使用HTTP协议而不是HTTPS。所以我们可以在Wireshark顶部的过滤栏输入http。回车后界面会清爽很多只显示HTTP协议的数据包。接下来怎么找到那个下载ZIP包的请求呢有几个技巧看包大小点击Length列进行排序通常下载文件的响应包服务器返回的数据包会比较大因为里面包含了文件数据。找那些长度异常大的HTTP数据包。看状态码在HTTP流里状态码200 OK表示请求成功。一个成功的GET或POST请求后跟着一个大的200 OK响应很可能就是文件下载。追踪流在疑似下载文件的数据包上右键选择追踪流-HTTP流。Wireshark会把这个HTTP会话的所有内容重组并显示在一个窗口里一目了然。在我分析的这个案例里通过上述方法我很快就锁定了一个请求GET /w0ks//?YO1702920835它请求的Host是tsdandassociates.co.sz。服务器返回了一个很大的数据包状态码是200。在流内容里我一眼就看到了文件头PK这是ZIP文件的魔术字十六进制是50 4B。这就确认了恶意程序正是从这个URLtsdandassociates.co.sz/w0ks//?YO1702920835下载了ZIP压缩包。3.2 从流量中提取“证据”找到还不够我们得把这个“证据”——ZIP文件——从流量里完整地提取出来以备后续分析。很多新手会直接在想当然的数据包上右键“另存为”这常常会出错因为保存下来的可能包含了HTTP头部等多余信息。正确的方法是在Wireshark中选中那个包含ZIP文件数据的TCP数据包通常是那个很大的包。右键点击选择文件-导出分组字节流...。在弹出的对话框中务必确认“分组字节流”的范围是正确的通常Wireshark会自动帮你选好从PK开始的数据段。保存时将文件后缀名明确指定为.zip比如malicious.zip。这样我们就得到了一个干净的、可以直接用解压软件打开的ZIP文件。为了后续验证和分享情报我们通常还会计算它的哈希值在命令行里执行certutil -hashfile malicious.zip MD5就能得到它的MD5指纹比如f17dc5b1c30c512137e62993d1df9b2f。这个指纹就像文件的身份证在全球的威胁情报库中可能已经有其他分析师标记过它。4. 深入虎穴解剖ZIP与JavaScript反混淆拿到ZIP包解压我们发现里面有一个JavaScript文件.js。在真实的攻击中这非常常见。攻击者利用系统自带的脚本引擎如Windows的WSH或PowerShell来执行恶意代码可以绕过一些基于可执行文件的检测。4.1 初窥混淆代码用文本编辑器打开这个JS文件你大概率会看到一堆让人头皮发麻的代码。它可能长这样// Lorem ipsum dolor sit amet, consectetur adipiscing elit... var a ; // Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua... a h; a t; // ... 中间是上百行类似的废话注释和字符串拼接 ... console.log(a);这就是典型的字符串拼接混淆。攻击者把真正的关键信息比如一个网址拆分成一个个字符分散在代码里然后用运算符拼接起来。同时他们塞入大量无关的注释比如拉丁文假文章目的是干扰自动化分析工具和增加人工阅读的难度。但对我们来说这种混淆其实比较“低级”因为逻辑是清晰的。4.2 手动反混淆实战对付这种混淆手动分析往往最快。我们的目标是还原出完整的字符串。步骤很简单去除噪音先把所有注释行删掉以//开头的行。在高级编辑器里用查找替换功能很容易做到。梳理逻辑剩下的核心代码就是一系列变量声明和字符串拼接。通常只有一个或几个核心变量在被反复拼接。模拟执行我们不需要真的运行这个可能恶意的JS。我们可以用眼睛“跑”一遍代码或者用一个更安全的方法在浏览器的开发者工具控制台里手动执行清理后的代码。打开浏览器的开发者工具F12切换到Console控制台标签页。将清理后的JS代码粘贴进去确保只留下了var a; ah; ...这样的纯净拼接语句。按回车执行然后输入变量名a再回车浏览器就会打印出这个变量最终的值。在我这个案例里经过反混淆最终得到的字符串是https://shakyastatuestrade.com/A6F/616231603。看一个完整的URL浮出水面了这个域名shakyastatuestrade.com看起来就很可疑无意义单词组合极大概率就是攻击者控制的服务器用于托管下一阶段的恶意程序。4.3 更复杂的混淆与应对当然实战中你会遇到更狡猾的混淆比如使用数组和索引var arr [e,x,a,m,p,l,e]; var url arr[0]arr[1]...;使用字符编码String.fromCharCode(104, 116, 116, 112, 115, ...)来构造字符。多层嵌套和函数调用。应对的思路不变静下心来一步步跟。利用浏览器的控制台进行动态调试或者写一小段Python脚本模拟JS的逻辑都是好办法。核心是理解无论怎么混淆最终它都要拼凑出一个能用于网络请求的字符串域名、IP、路径我们找到那个最终被window.location、XMLHttpRequest或fetch使用的字符串就行。5. 追踪C2在流量中捕捉“回传”信号找到了C2域名shakyastatuestrade.com故事还没完。这只是一个“地址”我们需要在最初的流量文件hacker1.pacapng中找到证据证明恶意脚本确实去访问了这个地址并且可能下载了更危险的东西。5.1 使用域名过滤回到Wireshark在显示过滤器里输入http.host contains shakyastatuestrade.com或者dns.qry.name contains shakyastatuestrade.com。http.host过滤器会直接显示所有HTTP请求中Host头为该域名的数据包。dns.qry.name过滤器会显示所有对该域名进行DNS查询的数据包。恶意程序在发起HTTP请求前通常需要先通过DNS解析域名得到IP地址。如果攻击者使用了HTTPS我们可能无法直接看到请求内容因为加密了但我们依然可以通过tls.handshake.extensions_server_name过滤器来查看TLS握手时客户端发送的SNI服务器名称指示信息这里面往往就包含了域名。5.2 分析C2通信内容在我的案例中过滤后果然发现了新的HTTP请求。恶意脚本向https://shakyastatuestrade.com/A6F/616231603发起了GET请求。服务器返回了什么同样通过“追踪HTTP流”我发现它返回了一段二进制数据。通过检查数据包的头部信息或文件签名我判断这可能是一个可执行文件PE文件Windows程序。这时我们可以用同样的“导出分组字节流”方法把这个疑似可执行文件从流量中提取出来保存为.exe或.bin。然后可以将其上传到VirusTotal等沙箱进行分析。沙箱报告会详细展示这个文件运行后的所有行为创建了哪些文件、修改了哪些注册表、连接了哪些网络地址等等。这能极大地丰富我们对攻击者后续手段的了解。5.3 建立攻击时间线现在我们手头有了所有关键证据T0时刻恶意程序可能由邮件附件触发向tsdandassociates.co.sz发起请求下载malicious.zip。T1时刻ZIP包被解压其中的JS脚本被执行。T2时刻JS脚本经过反混淆构造出C2地址shakyastatuestrade.com。T3时刻JS脚本向该C2地址发起请求下载第二阶段的有效载荷一个可执行文件。T4时刻推测第二阶段载荷被执行可能建立持久化驻留窃取信息或等待进一步指令。我们可以用Wireshark的“时间”列把这些事件发生的具体时间点记录下来绘制成一个清晰的攻击链图。这份图就是给安全团队或管理层最直观的报告说明了“攻击是怎么发生的”、“已经走到了哪一步”。6. 进阶技巧与防御思考掌握了基本流程我们再来聊聊一些能让你分析更高效的进阶技巧以及从防御角度的思考。6.1 流量分析进阶技巧IO Graphs与端点统计Wireshark的统计菜单下功能强大。对话Conversations功能可以快速查看哪些IP地址之间通信最频繁这有助于发现异常的“长连接”可能是C2心跳连接。端点Endpoints功能可以统计每个IP收发了多少数据突然出现的大量外发数据可能意味着数据渗出。Follow TCP Stream/Follow TLS Stream不仅仅是HTTP对于任何TCP或加密的TLS流都可以右键进行“追踪流”。这能帮你还原完整的应用层会话对于分析自定义协议的C2通信特别有用。搜索功能在编辑-查找分组中你可以用字符串或十六进制值在整个数据包中搜索。比如如果你从内存转储中找到了一个可疑的URL片段可以直接在流量里搜它。6.2 从攻击者视角思考防御通过这次溯源我们也能反推出防御的薄弱点邮件网关为什么这封带有恶意链接的钓鱼邮件能进入内网邮件安全网关是否应该加强对陌生域名链接和附件压缩包的检测终端防护为什么JS脚本能在终端上成功执行是否限制了不必要的脚本执行权限应用白名单策略是否启用网络层检测对tsdandassociates.co.sz、shakyastatuestrade.com这类新注册、无业务关联的域名网络防火墙或IPS/IDS系统能否基于威胁情报进行实时拦截DNS监控内部主机对大量陌生域名的DNS解析请求本身就是一个高危告警信号。建立DNS流量基线并监控异常能很早发现威胁。6.3 威胁情报的利用在分析过程中得到的IOC失陷指标如域名tsdandassociates.co.sz,shakyastatuestrade.comIP地址通过DNS解析或直接连接获得文件哈希ZIP包的MD5第二阶段可执行文件的SHA256URL路径/w0ks//?YO1702920835,/A6F/616231603这些都应该立即提交到公司的威胁情报平台并用于更新防火墙、IDS、EDR等安全设备的拦截规则。同时也可以分享到行业内的威胁情报社区帮助其他组织提前防护。安全是一个共同体情报共享能让所有人都变得更安全。追踪恶意流量就像在数字世界里做侦探每一串字符、每一个数据包都是线索。这个过程需要耐心、细心和一点点好奇心。别被一开始的复杂吓倒从最简单的HTTP过滤开始一步步跟着数据流走你总能拨开迷雾看到攻击者留下的痕迹。希望这个从钓鱼邮件到C2服务器的完整追踪实例能给你带来一些实用的启发。下次再看到可疑的数据包不妨用今天的方法试试说不定你就能阻止下一次真正的攻击。