📚 网络安全 Kali 学习系列
模块 0 基础阶段 ✅ 已完成
01-18 Linux → 网络 → 密码学 → 编程 → Docker
模块 1 信息收集 ✅ 已完成 | 模块 2 Web渗透 ✅ 已完成
19-31 扫描 → 漏洞 → sqlmap → XSS → WAF绕过
模块 3 代码审计 ✅ 已完成
32-37 审计入门 → Node.js → PHP → Java → Python → CVE复现
模块 4 漏洞利用与后渗透 ✅ 已完成
38-43 Metasploit → Payload → 提权 → 维持 → 免杀
模块 4-3 恶意软件分析(进行中)
44-46 逆向工程基础 ✓ | 47 静态分析 ✓
48 恶意软件动态分析(当前篇)
49 Windows 权限体系与域环境
恶意软件动态分析
网络安全 Kali 学习系列 · 第 48 篇 · 模块 4-3 恶意软件分析
读完本篇你将能:搭建安全的动态分析沙箱环境,使用 Process Monitor 监控进程行为,用 Wireshark 抓包分析恶意软件网络通信,用 Regshot 对比注册表变化,掌握 INetSim 和 FakeNet 模拟网络环境,理解 C2 信标通信模式,并能完成一份完整的恶意软件动态分析报告。
静态分析是"看代码猜行为",动态分析则是"真运行看行为"。恶意软件为了对抗静态分析,会使用加壳、混淆、字符串加密等手段,但只要程序运行起来,它的真实行为就无处遁形——创建了什么文件、修改了哪些注册表、连接了哪个 IP、发送了什么数据,全部可以被监控工具捕获。动态分析的关键是在安全的隔离环境中进行。
目录
第一章 动态分析环境搭建
第二章 进程监控:Process Monitor
第三章 文件与注册表变化对比
第四章 网络流量分析
第五章 网络模拟:INetSim 与 FakeNet
第六章 行为分析与 C2 识别
第七章 分级练习
第一章 动态分析环境搭建
动态分析的第一原则是隔离——绝不能让恶意软件接触到真实网络或主机文件。一个标准的动态分析环境需要:隔离的虚拟机、虚拟网络、流量捕获工具、行为监控工具、快照回滚能力。
1.1 沙箱架构
| 组件 |
作用 |
推荐工具 |
| 分析机(Kali) |
运行分析工具、抓包、INetSim |
Kali Linux + Wireshark |
| 靶机(Windows) |
运行恶意样本、安装监控工具 |
Win10/Win7 + ProcMon |
| 虚拟网络 |
隔离的内部网络,仅分析机可访问 |
VMware 仅主机模式 |
| 快照管理 |
分析后快速回滚到干净状态 |
VMware 快照 |
⚠️ 安全检查清单
运行样本前必须确认:
1. 靶机网络设为"仅主机模式"(NAT 和桥接都不安全)
2. 靶机已做干净快照,分析完可一键回滚
3. 分析机上的 INetSim 已启动(模拟 DNS/HTTP)
4. Wireshark 已开始抓包
5. 所有监控工具(ProcMon、Regshot)已准备就绪
6. 样本文件通过密码压缩包传入靶机
1.2 必备监控工具
Shell · Kali 侧工具安装
kali_tools.sh
|
1
2
3
4
5
6
7
8 9
|
# 网络模拟服务
sudo apt install -y inetsim fakenet-ng
# 流量分析
sudo apt install -y wireshark tshark tcpdump
# 其他分析工具
sudo apt install -y volatility3 # 内存取证
sudo apt install -y yara # 规则匹配
|
第二章 进程监控:Process Monitor
Process Monitor(ProcMon)是 Windows 平台最强大的进程行为监控工具,可以实时捕获进程的文件系统操作、注册表操作、网络操作、进程/线程创建等所有系统调用。恶意软件运行时做的每一件事,ProcMon 都能记录下来。
2.1 ProcMon 使用流程
ProcMon · 使用步骤
procmon_steps.txt
|
1
2
3
4
5
6
7
8
9
10
11
12 13
14
15
|
// 分析前准备
1. 启动 ProcMon,默认会捕获所有事件
2. 先清空已有事件(Ctrl+X)
3. 设置过滤器(Filter → Filter)
- Process Name is malware.exe → Include
- Operation is RegSetValue → Include
// 运行样本
4. 点击 Capture 图标开始/暂停捕获
5. 双击运行恶意样本
6. 观察 1-2 分钟,等样本完成初始化
7. 暂停捕获(Ctrl+E)
// 保存日志(File → Save)
8. 保存为 CSV 格式,方便后续分析
|
2.2 重点关注的事件类型
| 事件类别 |
关注的操作 |
分析意义 |
| 文件系统 |
CreateFile、WriteFile、DeleteFile |
释放 payload、创建副本、删除自身 |
| 注册表 |
RegSetValue、RegCreateKey |
持久化(Run 键)、配置存储 |
| 网络 |
TCP Connect、Send、Receive |
C2 通信、数据外泄 |
| 进程 |
Process Create、Thread Create |
进程注入、启动子进程 |
第三章 文件与注册表变化对比
除了实时监控,另一种方法是"前后对比"——运行样本前拍一张系统快照,运行后再拍一张,对比差异就能知道恶意软件做了什么修改。Regshot 是最经典的工具,专门用来对比注册表和文件系统的变化。
3.1 Regshot 使用方法
Regshot · 操作流程
regshot.txt
|
1
2
3
4
5
6
7
8
9
10
11 12
|
// 第一步:运行前快照
1. 启动 Regshot
2. 勾选 "Scan dir1"(可选:扫描指定目录)
3. 点击 "1st shot" → Shot
4. 等待扫描完成(几分钟)
// 第二步:运行恶意样本
5. 运行样本,等待 2-3 分钟
// 第三步:运行后快照 + 对比
6. 回到 Regshot,点击 "2nd shot" → Shot
7. 点击 "Compare" 生成差异报告
|
3.2 差异报告解读
Regshot 的报告分为几个部分:新增的键/值、删除的键/值、修改的键/值、新增文件、删除文件。不是所有变化都是恶意的——Windows 系统本身运行也会产生大量注册表变化。需要关注的是样本路径相关和经典持久化位置的变化。
💡 重点关注位置
注册表持久化位置:
- HKLM\Software\Microsoft\Windows\CurrentVersion\Run
- HKCU\Software\Microsoft\Windows\CurrentVersion\Run
- HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce
- HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows\Load
文件持久化位置:
- C:\Users\%USERNAME%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\
- C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\
- C:\Windows\System32\ (新增可疑 DLL/EXE)
第四章 网络流量分析
网络通信是恶意软件最重要的行为特征之一——几乎所有恶意软件都需要和 C2(命令与控制)服务器通信。通过抓包分析可以获取 C2 地址、通信协议、加密方式、信标频率等关键情报。
4.1 Wireshark 抓包分析
Wireshark · 分析流程
wireshark_analysis.txt
|
1
2
3
4
5
6
7
8
9
10
11
12
13 14
15
|
# 1. 开始抓包
# 选择连接靶机的网卡,点击开始
wireshark -i eth0 -k -w capture.pcap &
# 2. 常用过滤表达式
http # HTTP 流量
dns # DNS 查询
ip.addr == 192.168.56.100 # 指定 IP 的流量
tcp.port == 4444 # 指定端口
tls # TLS/SSL 加密流量
# 3. 分析步骤
# 先看 DNS 查询 → 找域名
# 再看 HTTP 请求 → 找 URI 和 User-Agent
# 最后看 TCP 流 → 找通信模式和频率
|
4.2 常见 C2 通信特征
| C2 类型 |
特征 |
常见家族 |
| HTTP/HTTPS 信标 |
定时 GET/POST 请求、固定间隔、独特 UA |
Cobalt Strike、Emotet |
| DNS 隧道 |
大量 DNS 查询、子域名为编码数据 |
DNSCat、Cobalt Strike DNS |
| Raw TCP |
非标准端口、固定大小数据包、心跳包 |
Metasploit、Gh0st RAT |
| 域名生成算法(DGA) |
大量 NXDOMAIN、随机字符串域名 |
Conficker、CryptoLocker |
第五章 网络模拟:INetSim 与 FakeNet
动态分析有个矛盾:恶意软件需要联网才能展现完整行为,但我们又不能让它真的连到真实 C2(可能会下载更多 payload、发起攻击)。解决方案是网络模拟——在分析机上运行模拟服务,让恶意软件以为连到了真实网络,同时捕获所有通信内容。
5.1 INetSim 配置
INetSim 是 Kali 自带的网络模拟工具,可以模拟 DNS、HTTP、HTTPS、FTP、SMTP 等多种服务。它会响应所有 DNS 查询(返回自己的 IP),并提供假的 HTTP/FTP 服务,让恶意软件"以为"自己连到了真实服务器。
Shell · INetSim 配置与启动
inetsim_setup.sh
|
1
2
3
4
5
6
7
8
9
10
11 12
13
14
|
# 编辑配置文件
sudo vim /etc/inetsim/inetsim.conf
# 关键配置项:
start_service dns # 启用 DNS 服务
start_service http # 启用 HTTP 服务
dns_default_ip 192.168.56.1 # 所有域名解析到分析机 IP
bind_address 192.168.56.1 # 监听地址
# 启动 INetSim
sudo inetsim
# 靶机 DNS 设为分析机 IP
# 这样所有 DNS 查询都会被 INetSim 拦截
|
💡 分析技巧
有些恶意软件会验证 C2 服务器的指纹(如特定 HTTP 响应头、特定内容),如果 INetSim 返回的假响应不符合预期,样本会直接退出。遇到这种情况,需要用静态分析先搞清楚 C2 的通信协议,然后修改 INetSim 的响应内容(或用 Python 写一个自定义假服务器)来欺骗恶意软件,让它继续执行后续行为。
第六章 行为分析与 C2 识别
收集完所有监控数据后,需要把零散的事件串起来,还原恶意软件的完整行为链。一个完整的分析报告需要回答:它怎么进来的、做了什么持久化、怎么通信、有什么危害、怎么清除。
6.1 行为链分析
| 阶段 |
典型行为 |
检测工具 |
| 初始执行 |
释放自身副本、创建互斥量、反调试检测 |
ProcMon、Ghidra |
| 持久化 |
注册表 Run 键、计划任务、服务安装 |
Regshot、Autoruns |
| 权限提升 |
令牌模拟、服务漏洞、UAC 绕过 |
ProcMon、Process Explorer |
| C2 通信 |
DNS 查询、HTTP 信标、加密流量 |
Wireshark、INetSim 日志 |
| 横向移动 |
SMB 连接、WMI 调用、RDP 登录 |
Wireshark、安全日志 |
| 数据窃取 |
文件读取、键盘记录、截屏、上传 |
ProcMon、Wireshark |
6.2 分析报告结构
报告模板 · 动态分析报告
report_template.md
|
1
2
3
4
5
6
7
8
9
10
11 12
13
|
# 恶意软件动态分析报告
## 1. 样本基本信息
- 文件名 / 大小 / 类型
- MD5 / SHA1 / SHA256
## 2. 环境配置
- 操作系统版本 / 工具列表
## 3. 行为分析
- 文件系统操作 / 注册表操作
- 进程行为 / 网络通信
## 4. C2 分析
- C2 IP/域名 / 通信协议 / 信标频率
## 5. IOC(入侵指标)
## 6. 检测与清除建议
|
第七章 分级练习
🟢 基础验证
任务:搭建动态分析环境。(1) 创建一个 Windows 虚拟机,安装 ProcMon、Regshot、Wireshark;(2) 设置虚拟机网络为"仅主机模式";(3) 在 Kali 上安装并启动 INetSim,配置 DNS 返回 Kali IP;(4) 在 Windows 上设置 DNS 为 Kali IP,测试 ping 任意域名是否都解析到 Kali;(5) 在 Windows 上运行一个普通程序(如记事本),用 ProcMon 捕获其文件和注册表操作,用 Regshot 对比运行前后的系统变化。
🟡 组合应用
任务:找一个简单的木马样本(如 Poison Ivy、DarkComet 的老版本样本),完成完整动态分析:(1) 运行前用 Regshot 拍第一次快照,启动 ProcMon 和 Wireshark 开始捕获;(2) 运行样本,等待 3-5 分钟;(3) 停止捕获,保存数据;(4) 分析 ProcMon 日志:找出样本创建了哪些文件、修改了哪些注册表键(重点看 Run 键);(5) 分析 Wireshark 流量:找出 C2 IP/域名、通信端口、请求间隔;(6) 用 Regshot 对比找出持久化机制;(7) 整理成一份简单的分析报告,包含 IOC 列表。
🔴 开放挑战
任务:选择一个 Cobalt Strike 或 Metasploit 生成的 beacon payload(自己生成更安全),深入分析其 C2 通信机制:(1) 先做静态分析,找出加壳方式并脱壳;(2) 动态运行,用 Wireshark 捕获完整的 C2 通信流量;(3) 分析通信协议:是 HTTP 还是 raw TCP?信标间隔多少?请求的 URI 是什么?User-Agent 是什么?(4) 如果是加密流量,尝试用 ProcMon 配合断点调试找出加密密钥和明文内容;(5) 写一份详细的 C2 协议分析报告,包含可以用来检测的特征(YARA/Snort 规则)。
进阶方向:学习使用 Cuckoo Sandbox 自动化沙箱——它可以自动运行样本并生成图文并茂的分析报告,还能生成 PCAP 抓包文件和行为截图。Cuckoo 是开源的,可以本地搭建,适合批量分析大量样本。
知识回顾
沙箱隔离
Process Monitor
Regshot 对比
Wireshark 抓包
INetSim 模拟
FakeNet-NG
C2 信标通信
DNS 隧道
DGA 域名生成
持久化检测
行为链分析
IOC 指标
分析报告
下一篇预告
恶意软件分析两篇告一段落。下一篇进入全新的模块——Windows 权限体系与域环境搭建。域(Domain)是企业 Windows 网络的核心管理架构,也是内网渗透的主战场。Active Directory(AD)域环境涉及域控制器、组策略、Kerberos 认证、DNS 集成等大量概念。下一篇将从 Windows 权限体系讲起,然后介绍域环境的搭建方法,为后续的域渗透学习打基础。域渗透是高级渗透测试的必备技能,也是红队操作的核心内容。
关注本公众号,持续获取网络安全 Kali 学习系列更新。如果觉得有帮助,欢迎点赞、在看、分享给同样在学习网络安全的朋友。