1. 项目概述:为什么需要组合分析恶意软件行为?
在安全分析这个行当里,单打独斗的工具往往只能给你一个片面的视角。你可能会用杀毒软件扫出一个恶意文件,但它是怎么进来的?运行后又干了什么?它偷偷联系了哪个服务器?这些关键问题,静态扫描常常无能为力。这就是为什么动态行为分析,尤其是结合系统行为监控和网络流量抓取,成为了我们分析未知威胁、复盘安全事件的“黄金标准”。
这次要聊的,就是如何把Process Monitor和Wireshark这两款神器拧成一股绳,对恶意软件样本进行一场“外科手术式”的解剖。Process Monitor,我们习惯叫它 ProcMon,是 Sysinternals 套件里的王牌,它能像手术台上的无影灯一样,照亮样本在系统里的一举一动:文件创建、注册表读写、进程启动、网络连接尝试,事无巨细。而 Wireshark,则是网络世界的听诊器,能捕获和分析流经网卡的所有数据包,让你看清样本在暗地里和外界“窃窃私语”了什么。
单独使用它们,你只能看到一个侧面:ProcMon 告诉你“它想打开 C:\Windows\System32\cmd.exe”,Wireshark 告诉你“它向 1.2.3.4 的 443 端口发送了加密数据”。但当你把两者的时间线对齐,故事就完整了:样本先篡改了注册表实现持久化(ProcMon 记录),然后启动了一个子进程(ProcMon 记录),该子进程立即尝试连接 C2 服务器(Wireshark 记录),并上传了系统信息(Wireshark 解密或分析载荷后得知)。这种关联分析,能让你从“知道有问题”跃升到“清楚问题到底出在哪,以及它想干什么”。
这个分析流程特别适合安全研究人员、应急响应工程师、恶意软件分析师,甚至是那些想深入了解自己电脑上某个可疑程序行为的进阶用户。它不依赖于特征码,而是基于行为证据,因此对于零日漏洞利用、无文件攻击、新型勒索软件等传统杀软可能漏报的威胁,有着不可替代的价值。接下来,我们就一步步拆解,如何搭建这个分析环境,并像侦探一样,从海量日志和数据包中找出决定性的线索。
2. 分析环境搭建与核心工具解析
工欲善其事,必先利其器。一个隔离、可控的分析环境是安全分析的基石,而深刻理解手中工具的能力与局限,则是高效分析的前提。
2.1 安全分析实验室的构建要点
分析恶意软件,首要原则是隔离。绝对不能在日常使用的主机或公司生产网络上直接运行未知样本。常见的方案是使用虚拟机。我个人强烈推荐使用VMware Workstation Pro或VirtualBox来创建隔离的 Windows 分析环境。
虚拟机配置要点:
- 网络隔离:将虚拟机的网络适配器设置为“主机仅模式”或“NAT模式”。避免使用“桥接模式”,以防样本感染同一局域网内的其他机器。在分析的最后阶段,如果需要观察样本的网络行为,可以短暂切换到“NAT模式”并配合防火墙规则进行控制。
- 系统快照:在安装完干净的 Windows 系统、分析工具,但尚未运行样本之前,创建一个干净的“快照”。每次分析结束后,都回滚到这个快照,确保每次实验都在一个纯净的状态下开始。
- 资源分配:给予虚拟机足够的内存(建议 4GB 以上)和 CPU 核心,因为 ProcMon 和 Wireshark 在记录高频率事件时资源消耗较大。
- 共享文件夹:为了方便将样本文件传入虚拟机,可以设置一个只读的共享文件夹。切记,分析完成后,该文件夹在宿主机上应被妥善处理或删除。
注意:高级的恶意软件具备检测虚拟机环境的能力。如果怀疑样本有反虚拟机行为,可能需要使用更复杂的沙箱环境或对虚拟机进行特定配置(如修改 BIOS 信息、隐藏虚拟机进程)来绕过检测,这属于更进阶的话题。
2.2 Process Monitor:系统行为的显微镜
Process Monitor 不是一个简单的进程查看器。它实时监控并记录四种核心事件:
- 文件系统活动:所有文件的读、写、创建、删除操作。
- 注册表活动:所有注册表键的读、写、创建、删除操作。
- 进程/线程活动:进程的创建、退出,线程的创建与执行。
- 网络活动:TCP/UDP 的监听与连接(注意:它只记录“尝试连接”这个行为,不捕获具体数据)。
它的强大之处在于过滤和详情。启动 ProcMon 后,事件会像瀑布一样刷屏。如果不加过滤,信息将毫无价值。
核心操作逻辑:
- 开始捕获:启动 ProcMon 后,捕获默认是开启的(工具栏上的“魔杖”图标是亮的)。在运行样本前,最好先点击“清除”按钮清空当前日志,然后确保捕获是开启状态。
- 运行样本:在虚拟机中执行恶意软件样本。
- 停止捕获:样本行为执行完毕后(或你认为关键行为已发生后),点击“魔杖”图标停止捕获。
- 关键过滤技巧:
- 按进程名过滤:这是最常用的。在 Filter 菜单选择
Filter -> Filter...,添加条件Process Nameis[你的样本进程名].exe,然后选择Include。这样日志就只显示该进程的活动。 - 按路径过滤:如果你怀疑样本操作了特定目录(如系统目录、用户文档目录),可以添加
PathcontainsC:\Windows\System32之类的过滤条件。 - 按操作类型过滤:可以只显示
WriteFile(文件写入)或RegSetValue(注册表设置值)等特定操作。 - 排除系统进程:在分析初期,可以排除
System、svchost.exe等大量产生噪音的系统进程,让画面更干净。
- 按进程名过滤:这是最常用的。在 Filter 菜单选择
需要重点关注的 ProcMon 事件:
- 进程创建:样本启动了哪些子进程(
Process Create)?这可能是它注入代码、下载第二阶段载荷或执行横向移动的标志。 - 文件写入:在哪些路径创建或修改了文件?特别是临时目录、启动目录、系统目录下的可执行文件或脚本。
- 注册表持久化:是否修改了
Run、RunOnce、服务、计划任务等注册表键来实现开机自启? - 命名管道/Mutex:创建了哪些命名管道或互斥体?这常用于进程间通信或作为“感染标记”,防止同一恶意软件在系统中重复运行。
2.3 Wireshark:网络流量的录音机
Wireshark 负责网络层面的监控。它的核心工作是抓包和解码。
抓包前的关键设置:
- 选择正确的网卡:启动 Wireshark,在主界面会列出所有可用的网络接口。在虚拟机中,通常只有一个虚拟网卡(如“Intel(R) PRO/1000 MT”)。你需要选择它作为抓包接口。
- 捕获过滤器:在开始抓包前设置,用于在抓包阶段就丢弃不关心的流量,减少资源占用和文件大小。例如,如果你只关心样本与特定 IP 的通信,可以设置
host 1.2.3.4。对于初步分析,建议先不设捕获过滤器,以免漏掉关键信息。 - 开始抓包:点击选定的网卡,Wireshark 立即开始捕获所有经过该网卡的数据包。
运行样本与分析:
- 在 Wireshark 开始抓包后,切换到虚拟机桌面运行恶意样本。
- 观察 Wireshark 界面,你会看到数据包列表开始滚动。
- 样本行为结束后,点击 Wireshark 的红色停止按钮。
核心分析技巧:
- 显示过滤器:这是 Wireshark 分析的核心。在抓包完成后使用,用于在已捕获的数据中快速定位目标。
ip.addr == [样本IP或服务器IP]:过滤出涉及特定 IP 的所有流量。tcp.port == 443:过滤出 HTTPS 流量。http或dns:快速查看所有 HTTP 或 DNS 请求。tcp.stream eq [数字]:选中一个 TCP 包,右键 -> “追踪流” -> “TCP流”,Wireshark 会自动生成显示过滤器,只显示该完整会话的所有包,这对于分析一次完整的通信极其有用。
- 协议分层解码:Wireshark 的强大在于它能解析数百种协议。对于一个 HTTPS 包,它能展示以太网帧头、IP 头、TCP 头,并告诉你这是一个 TLS 握手或应用数据。虽然无法解密 HTTPS 内容,但通过分析 TLS 握手阶段的“客户端问候”包,往往能发现样本连接的服务器的域名(SNI 扩展),这是一个非常重要的线索。
- 端点与会话统计:通过
Statistics -> Endpoints和Statistics -> Conversations,可以快速查看哪些 IP 地址之间通信最频繁,使用了哪些端口,这有助于快速定位可疑的 C2 通信。
将两者关联的关键:时间戳。ProcMon 和 Wireshark 的记录都带有精确到微秒的时间戳。当你发现 ProcMon 中记录样本进程创建了一个网络连接(显示目标 IP 和端口),你可以将这个时间点与 Wireshark 中对应时间点的 TCP 握手包(SYN, SYN-ACK, ACK)关联起来,从而将系统行为与网络行为一一对应。
3. 实战演练:从样本执行到行为关联分析
理论讲得再多,不如亲手做一遍。我们假设有一个名为suspicious.exe的样本,现在在隔离的虚拟机中,用 ProcMon 和 Wireshark 对它进行一次完整的“体检”。
3.1 准备工作与基线捕获
在运行样本前,我们需要一个相对“安静”的环境,并确保工具就位。
- 关闭非必要程序:关闭虚拟机中所有不必要的应用程序,特别是浏览器、邮件客户端、自动更新服务等,以减少分析时的背景噪音。
- 启动并配置 ProcMon:
- 以管理员身份运行 Process Monitor。
- 点击工具栏上的“清除”按钮(或按 Ctrl+X),清空可能存在的旧日志。
- 暂时不设置任何过滤器。确保捕获是开启的(魔杖图标亮起)。
- 启动并配置 Wireshark:
- 以管理员身份运行 Wireshark(需要权限才能抓包)。
- 选择正确的虚拟网卡接口。
- (可选但推荐)设置捕获过滤器:为了初步减少噪音,可以设置
not arp and not icmp来过滤掉大量的 ARP 广播和 ICMP 协议包,它们通常与样本核心行为无关。 - 点击“开始捕获”按钮(蓝色鲨鱼鳍图标)。
- 记录开始时间:记下当前的系统时间,或直接看 ProcMon/Wireshark 界面上的时间。这将是分析的起始锚点。
3.2 执行样本与关键行为捕获
现在,是时候让样本“动起来”了。
- 执行样本:在虚拟机中找到
suspicious.exe并双击运行。观察其窗口行为(如果有的话),例如是否快速闪退、是否弹出错误提示、是否请求管理员权限等。这些直观现象是后续分析的重要提示。 - 观察与等待:让样本运行一段时间(例如 1-2 分钟),以便其完成可能的持久化、下载、通信等行为。你可以同时观察 ProcMon 的日志是否在飞速滚动,以及 Wireshark 是否有新的数据包出现。
- 停止捕获:
- 首先,回到 Wireshark,点击红色停止按钮,结束网络抓包。
- 然后,回到 ProcMon,点击魔杖图标停止系统事件捕获。
- 顺序很重要:先停 Wireshark,可以确保网络活动的结束点被准确记录;后停 ProcMon,可以捕获到样本进程退出等相关事件。
此时,ProcMon 的列表里可能已经有数十万条事件,Wireshark 也可能捕获了成千上万个数据包。别慌,我们一步步来提炼。
3.3 ProcMon 日志深度剖析
面对海量日志,我们需要像淘金一样,层层过滤,找到最有价值的 nuggets。
第一步:定位样本进程本身
- 在 ProcMon 中,使用快捷键
Ctrl+T调出进程树窗口。在这里,你可以清晰地看到suspicious.exe是由哪个父进程启动的(通常是explorer.exe),以及它自己又创建了哪些子进程。这是理解恶意软件执行链的第一步。 - 记下样本进程的完整名称和 PID(进程ID)。
第二步:应用进程过滤器
- 在 Filter 菜单中,添加一个新过滤器:
Process Nameissuspicious.exe,操作选择Include。点击“应用”。 - 现在,视图里只剩下
suspicious.exe这个进程产生的所有事件了。日志量会大幅减少。
第三步:按操作类型分类排查即使过滤后,事件类型依然繁杂。我们可以借助 ProcMon 底部的“事件类型”选项卡进行快速分类查看:
- 注册表:重点关注
RegSetValue操作。逐条检查路径,寻找常见的自启动项:HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKLM\SYSTEM\CurrentControlSet\Services\(创建新的服务)HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options(用于映像劫持) 发现此类操作,意味着样本试图在系统重启后依然保持活跃。
- 文件系统:重点关注
WriteFile和CreateFile操作。- 它是否在
C:\Users\[用户名]\AppData\Local\Temp\或C:\Windows\Temp\下创建了可执行文件(.exe, .dll, .vbs)?这可能是释放的后续载荷。 - 是否修改了系统关键文件,如
C:\Windows\System32\drivers\etc\hosts(用于域名劫持)? - 是否在用户目录或桌面创建了疑似勒索信的文件(如
README.txt,DECRYPT_INSTRUCTIONS.html)?
- 它是否在
- 进程:查看
Process Create事件。样本启动了哪些新进程?常见的可能是:cmd.exe /c ...:执行命令行指令。powershell.exe -EncodedCommand ...:执行经过 Base64 编码的 PowerShell 脚本,这是非常流行的无文件攻击手法。- 启动了另一个看似无关的进程,可能是进程注入或进程镂空的结果。
- 网络:查看
TCP Connect或UDP Connect事件。这里会显示样本尝试连接的目标 IP 地址和端口号。例如,你可能会看到一条记录:suspicious.exe尝试连接203.0.113.5:443。请务必记下这个 IP 和端口,这是关联 Wireshark 分析的关键。
第四步:检查进程退出和清理痕迹查看样本进程的Process Exit事件,了解它何时结束。同时,注意观察在进程退出前后,是否有其他进程(可能是它创建的子进程)进行了大量的文件删除操作,这是恶意软件试图清除入侵痕迹的常见行为。
3.4 Wireshark 流量关联分析
拿到 ProcMon 中发现的疑似 C2 服务器 IP(例如203.0.113.5)和端口(443)后,我们转向 Wireshark。
第一步:应用显示过滤器定位流量
- 在 Wireshark 顶部的显示过滤器栏中输入:
ip.addr == 203.0.113.5然后回车。视图将只显示所有源或目的 IP 是该地址的数据包。 - 如果流量仍然较多,可以进一步过滤端口:
ip.addr == 203.0.113.5 and tcp.port == 443。
第二步:分析通信模式
- TCP 三次握手:找到最早的
[SYN],[SYN, ACK],[ACK]序列包。这标志着连接的开始。查看这个握手过程的时间戳,与 ProcMon 中记录的TCP Connect事件时间戳进行比对,它们应该几乎同时发生。这证实了“是样本进程发起了这次连接”。 - 协议识别:连接端口是 443,大概率是 HTTPS/TLS。观察握手后的数据包。展开一个 TLS 包,查看协议详情。
- 寻找域名:在 TLS 握手阶段的
Client Hello包中,展开Transport Layer Security -> Handshake Protocol: Client Hello -> Extensions -> server_name。这里可能会直接暴露其连接的域名(SNI),例如c2.malicious-domain.com。这个域名信息比 IP 地址更有价值,因为它可能指向多个 C2 服务器或用于动态解析。 - 观察心跳:连接建立后,是否每隔固定时间就有小尺寸的数据包交互?这可能是恶意软件在发送“心跳”包,向 C2 服务器报告自己依然在线。
- 数据上传/下载:观察
Application Data包的长度。突然出现的一系列从本地发往服务器的大尺寸数据包,可能是在上传窃取的文件(如文档、截图);而从服务器发来的大尺寸数据包,则可能是在下载第二阶段的恶意模块或更新配置。
- 寻找域名:在 TLS 握手阶段的
第三步:还原会话内容(针对非加密协议)如果样本不幸(或者说我们幸运地)使用了未加密的 HTTP、FTP 或自定义的明文协议,我们可以直接看到通信内容。
- 选中该会话的一个包,右键 ->
追踪流->TCP流(或UDP流)。 - 一个新的窗口会弹出,以 ASCII 或十六进制形式展示整个会话的请求和响应。在这里,你可能会直接看到:
- HTTP 的 GET/POST 请求路径和参数。
- 上传的数据(可能是经过编码的系统信息)。
- 服务器下发的命令(如
whoami,dir,download http://.../payload.exe)。
第四步:DNS 请求分析在运行样本前,我们可能没有目标 IP。这时,分析 DNS 请求至关重要。
- 在 Wireshark 显示过滤器中输入
dns。 - 查看样本运行时间点附近产生的所有 DNS 查询请求。恶意软件在连接 C2 服务器前,通常需要解析域名。
- 关注那些看起来是随机生成的、长字符串的子域名(例如
xkjhdfg.duckdns.org),或者模仿正常服务但略有差别的域名(例如update.microsoft-gb.com),这些很可能是恶意域名。
通过以上步骤,我们成功地将 ProcMon 中看到的“进程A在时间T1尝试连接IP:Port”这一系统行为,与 Wireshark 中“在时间T1捕获到从本机到IP:Port的 TCP SYN 包,且后续 TLS 握手显示域名为X”这一网络行为关联起来,并进一步分析了通信内容。至此,样本的网络行为意图就清晰了很多。
4. 高级技巧、问题排查与行为报告提炼
掌握了基础流程,我们再来看看如何提升分析效率,解决常见问题,并将散落的证据整理成一份有价值的报告。
4.1 提升分析效率的高级技巧
- ProcMon 的后台记录与启动日志:对于某些一启动就结束或行为非常短暂的样本,你可以在样本运行前就启动 ProcMon 并开始记录,运行样本,等几秒后停止。然后通过过滤样本进程名和其子进程来分析。更高级的用法是使用 ProcMon 的“启动日志”功能(
Options -> Enable Boot Logging),重启系统后,ProcMon 会记录从内核启动开始的所有事件,这对于分析那些作为驱动或服务加载的顽固 rootkit 特别有效。 - Wireshark 的着色规则与配置文件:Wireshark 允许你自定义数据包的着色规则。例如,可以将所有 DNS 查询失败(NXDOMAIN响应)的包标记为红色,将到已知恶意 IP 的流量标记为紫色。你可以导入社区维护的恶意 IP/域名列表来创建规则,这样可疑流量会在捕获时立即高亮显示,非常直观。
- 时间同步与精确关联:确保分析虚拟机内的系统时间准确,并且 ProcMon 和 Wireshark 都使用该系统时间。在分析时,可以同时打开两个工具的窗口,按照时间戳排序,并排比对,寻找精确匹配的事件。
- 使用 Sysmon 进行增强:微软的 Sysinternals 套件中还有一个强大的工具叫Sysmon。它可以作为系统服务安装,将关键的安全事件(如进程创建、网络连接、文件创建时间变更等)记录到 Windows 事件日志中,并且比 ProcMon 更适合做长期的、后台的监控。你可以将 Sysmon 的日志导出,与 ProcMon 的详细日志互为补充。
4.2 常见问题与排查实录
在实际操作中,你肯定会遇到各种棘手的情况。以下是我踩过的一些坑和解决办法:
问题一:ProcMon 捕获的事件太多,卡死或找不到重点。
- 排查:这是最常见的问题。通常是因为没有及时应用过滤器,或者过滤器设置得不够精确。
- 解决:
- 先停止捕获,然后清除现有日志。
- 在运行样本前就设置好过滤器。例如,如果你知道样本文件名,直接添加
Process Nameis样本名.exe的Include过滤器。你还可以添加一个Process NameisSystem的Exclude过滤器来减少大量系统噪音。 - 使用 ProcMon 的“丢弃过滤器”功能(
Filter -> Drop Filtered Events)。这会在内核层面直接丢弃被过滤的事件,极大减轻内存和CPU压力,但设置要非常小心,以免误丢关键事件。
问题二:Wireshark 抓不到任何样本发出的网络包。
- 排查1:样本可能没有网络行为,或者其网络行为被防火墙拦截。
- 解决1:检查 ProcMon 的“网络”事件选项卡,确认样本进程是否有
TCP Connect尝试。如果没有,那它可能就是个不联网的勒索软件或破坏性病毒。 - 排查2:样本可能使用了非常规的网络通信方式,如 ICMP 隧道、DNS 隧道,或者通过 HTTP/HTTPS 代理通信。
- 解决2:
- 在 Wireshark 中检查 ICMP 和 DNS 协议。观察是否有大量异常的、携带数据的 ICMP Echo 请求/回复,或者是否有对同一域名频繁的、携带长子域名的 TXT 记录查询。
- 检查样本是否在本地开启了代理设置(可通过 ProcMon 查看其对
HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings注册表项的修改)。
- 排查3:Wireshark 选错了网卡。
- 解决3:在虚拟机中,使用命令行
ipconfig /all查看当前活跃的网络连接及其描述,确保在 Wireshark 中选择的是正在使用的那个虚拟网卡。
问题三:样本连接使用了 HTTPS,Wireshark 无法解密内容。
- 排查:这是正常情况。TLS/SSL 加密的目的就是防止中间人窥探。
- 解决:
- 关注元数据:即使内容加密,TLS 握手阶段的
Client Hello包中的SNI(服务器名称指示)是明文的,这通常就是域名。这是极其重要的情报。 - 关注通信模式:观察数据包的大小、频率、方向。规律的心跳、特定时间点的大数据量传输,都能推断出行为。
- (进阶)尝试解密:如果恶意软件使用硬编码的、或弱随机数生成的对称密钥,理论上存在解密可能。但这通常需要逆向工程配合,已超出本基础分析范畴。另一种情况是,如果你能在客户端(即你的分析虚拟机)上安装该 HTTPS 服务的“假”证书,并让系统信任它,配合一些工具可以实现中间人解密,但这在分析随机恶意软件时通常不现实。
- 关注元数据:即使内容加密,TLS 握手阶段的
问题四:样本进程很快就退出了,但似乎有残留。
- 排查:这可能是“进程镂空”或“傀儡进程”技术。样本创建了一个合法的系统进程(如
svchost.exe,rundll32.exe),然后将其内存替换为恶意代码执行,随后父进程退出。 - 解决:
- 在 ProcMon 中,不要只过滤样本进程名。观察在样本进程运行期间,有哪些其他新进程被创建。重点关注这些新进程在创建后,是否立即有异常的文件、注册表或网络操作。
- 查看样本进程退出后,系统中是否仍有进程在持续进行可疑的网络连接(在 Wireshark 中持续有来自新 IP/端口的外联流量)。
4.3 从数据到情报:撰写行为分析报告
分析的最后一步,是将零散的技术观察,整合成一份清晰、 actionable 的报告。一份好的行为分析报告应该包含以下部分:
- 样本信息:文件名、MD5/SHA256 哈希值、首次发现时间等。
- 执行概要:用一两句话概括样本的主要恶意行为,例如:“该样本是一个窃密木马,通过注册表实现持久化,并通过 HTTPS 信道将窃取的浏览器凭证上传至 C2 服务器。”
- 详细行为分析:
- 持久化机制:详细描述它是如何实现开机自启的(例如:在
HKCU\...\Run下创建了值Updater,指向%TEMP%\svchost.exe)。 - 系统操作:列举其创建、修改、删除的文件和注册表项。
- 进程操作:描述其创建的进程树,包括进程名、参数和可能的注入行为。
- 网络通信:
- C2 服务器信息:IP、端口、域名(从 TLS SNI 获取)。
- 通信协议:HTTP/HTTPS/DNS 隧道等。
- 观察到的行为:心跳包间隔、数据外传的迹象(如 POST 请求上传数据)、从服务器接收的指令(如从
http://[C2]/config.bin下载文件)。
- 持久化机制:详细描述它是如何实现开机自启的(例如:在
- 关联指标(IoC - Indicators of Compromise):这是报告中最有价值的部分,是其他安全设备(如防火墙、IDS)可以用来检测和阻断该威胁的“指纹”。
- 文件哈希:样本本身及它释放的所有文件的哈希。
- 网络 IoC:C2 域名、IP 地址、端口。
- 主机 IoC:创建的特定文件路径、注册表键值、Mutex 名称、服务名等。
- 缓解与检测建议:
- 如何清除:根据分析结果,给出手动清除的步骤(删除哪些文件、修复哪些注册表)。
- 如何检测:建议在 SIEM 或终端防护软件中,添加基于上述 IoC 的检测规则(例如:监控对特定注册表路径的写入、检测到对外部恶意 IP 的连接尝试则告警)。
通过这样一套组合拳,你不仅“看到”了恶意软件的行为,更“理解”了它的意图和手法,并能将这些知识转化为保护其他系统的实际能力。这个过程就像侦探破案,ProcMon 和 Wireshark 是你的放大镜和指纹采集器,而你的分析和推理,则是将线索串联成完整证据链的关键。