mwchavez/MA_S2026_Project_MC_MT
GitHub: mwchavez/MA_S2026_Project_MC_MT
基于 Security Onion 构建的虚拟化恶意软件分析实验室,针对 URSNIF 银行木马实现从静态分析、动态引爆到汇编级逆向的全链路分析,并生成检测签名与情报报告。
Stars: 2 | Forks: 0
# 恶意软件分析实验室:URSNIF 的基于网络的检测与行为分析
## 概述
本项目展示了一个基于 Security Onion 构建的虚拟化恶意软件分析实验室,将网络入侵检测与静态、动态以及汇编级的恶意软件分析技术相结合。该实验室环境能够在受控条件下引爆 URSNIF (Gozi/ISFB) 银行木马家族的恶意软件样本,通过 Suricata 和 Zeek 捕获产生的网络遥测数据,并将观察到的行为与二进制级别的指标进行关联,从而生成可操作的检测签名和结构化的情报报告。
所有分析均在隔离的虚拟环境中进行,与公共互联网或主机系统的本地网络没有任何连接。
## 背景
本项目扩展了之前为入侵检测系统 (Intrusion Detection Systems) 和数字取证 (Digital Forensics) 课程所做的工作,该前期工作主要侧重于部署 Security Onion 传感器、捕获基线网络流量以及编写自定义的 Suricata 规则。当前的迭代版本通过引入沙箱化的引爆环境、模拟的互联网服务、基于 YARA 的文件检测、汇编级代码分析,以及基于杀伤链和钻石模型的结构化分析方法,将项目范围扩展到了全方位的恶意软件分析领域。
## 实验室架构
该实验室运行在一台 Windows 11 桌面计算机上(32 GB 内存,250+ GB 可用存储空间),使用 Oracle VirtualBox。它由跨两个隔离网络段运行的三个虚拟机组成:
| 虚拟机 | 角色 | 资源 | 网络 |
|---|---|---|---|
| **Security Onion** | 网络传感器 (Suricata IDS, Zeek NSM, Elasticsearch/Kibana) | 12 GB 内存, 200 GB 硬盘 | 管理 + 分析 (监控) |
| **REMnux** | Linux 分析工作站,INetSim (模拟 DNS/HTTP/SMTP),静态分析工具,YARA | 4 GB 内存, 40 GB 硬盘 | 管理 + 分析 |
| **Windows 引爆虚拟机** | 恶意软件执行环境,动态和内存分析 | 8 GB 内存, 80 GB 硬盘 | 隔离分析 |
### 网络拓扑
**管理网络** (VirtualBox Host-Only Adapter)
提供从主机浏览器对 Security Onion Web 界面 (Kibana, SOC 控制台) 的管理访问权限。没有恶意软件流量经过此网络。
**隔离分析网络** (VirtualBox Internal Network)
所有引爆流量仅在此网段上流动。Windows 引爆虚拟机与 REMnux 的 INetSim 服务(模拟 DNS、HTTP、SMTP)进行通信。Security Onion 通过混杂模式接口监控此网络。此网络中的流量不会路由到公共互联网或主机的本地网络。
### 安全控制
始终强制执行以下隔离和安全措施:
- **禁用桥接或 NAT 网络** — 引爆虚拟机仅使用内部网络适配器;不存在通往互联网或主机 LAN 的路由
- **禁用共享文件夹** — 在所有虚拟机上均禁用了 VirtualBox 共享文件夹
- **禁用共享剪贴板或拖放** — 主机和客户机之间禁用了双向剪贴板和拖放功能
- **禁用 USB 直通** — 引爆虚拟机上的 USB 控制器已被禁用
- **每次引爆前进行快照** — 每次分析运行后,引爆虚拟机都会恢复到干净的快照状态
- **恶意软件处理** — 所有样本均专门存储在隔离的分析环境中;此仓库中不包含任何恶意软件二进制文件
- **引爆虚拟机绝不允许访问互联网** — 所有分析工具均通过只读挂载的 ISO(在主机上根据单独验证的工具下载构建)安装到 Windows 引爆虚拟机上,而不是通过依赖于互联网的安装程序(如 FlareVM Boxstarter 脚本)。该引爆虚拟机从未有过通往互联网的网络路径
- **Security Onion 部署状态** — Security Onion 部署在 EVAL 模式下并启用了 Airgap(气隙)。选择 EVAL 而不是 STANDALONE 是因为后者需要 16 GB 的内存分配;EVAL 在实验室的资源预算内提供了相同的 Suricata、Zeek、Elasticsearch 和 Kibana 组件。Airgap 模式适合学术实验室,并且与分析网络的无互联网状态保持一致
## 恶意软件样本:URSNIF (Gozi/ISFB)
### 概述
URSNIF,也称为 Gozi 或 ISFB,是 2006 年首次被识别出的一种银行木马。其源代码在 GitHub 上泄露,导致了广泛的传播和众多的变种。URSNIF 被归类为商品化的银行木马,通过浏览器注入、表单抓取和浏览器中间人攻击来窃取金融凭证。
### 样本来源
样本集来自 https://www.malware-traffic-analysis.net,这是一个为研究和教育目的而维护的公共存储库。具体的练习日期为 **2021-05-14**,记录了一个 URSNIF 感染链。
### 样本清单
| 样本 | 描述 | 分析作用 |
|---|---|---|
| `2021-05-03-malspam-pushing-Ursnif.eml` | 原始钓鱼邮件(初始访问向量) | 杀伤链映射,社会工程学分析 |
| `I8m7XluZbbj10J53.xlsb` | 包含嵌入式宏的 Excel 二进制工作簿(第一阶投放器) | 静态分析(宏检查),阶段 2 和 3 |
| `block.dll` | URSNIF DLL 载荷(核心恶意软件) | 静态分析(PE 头、导入表、字符串),汇编级反汇编,动态执行,内存分析 |
| `2021-05-14-Ursnif-infection-traffic.pcap` | 感染流量的完整数据包捕获 | 网络行为分析,Suricata/Zeek 检测,C2 识别 |
| `2021-05-14-IOCs-for-Ursnif-infection.txt` | 预先记录的失陷指标 | 阶段 5 的验证和交叉参考 |
### 杀伤链
```
Malicious Email (.eml)
→ PDF/Excel Attachment (.xlsb with macros)
→ JavaScript Dropper (Fattura.js)
→ Secondary Dropper (lista.js)
→ URSNIF DLL Payload (block.dll)
```
## 分析方法论
每个样本都会经过一个结构化的分析流程,该流程与要求的五个项目阶段保持一致:
### 阶段 1:环境设置
构建隔离的三虚拟机实验室环境,安装和配置所有分析工具,并验证网络隔离和安全控制。
### 阶段 2:静态分析
提取文件哈希值 (MD5, SHA-256)、字符串分析、文件格式检查(DLL 的 PE 头、导入表、节区熵;XLSB 的宏提取),以及针对已知 URSNIF 签名的 YARA 规则匹配。
### 阶段 3:汇编级代码分析
使用 Ghidra 12.0.4 对 `block.dll` 进行反汇编。识别和记录有意义的代码区域,包括循环、条件分支、API 解析技术以及任何混淆或加壳指标。Detect It Easy (DIE) 用于编译器/链接器指纹识别和基于熵的加壳检测。Ghidra 12 包含一个集成的调试器;x64dbg 经评估后被排除在外,因为 VirusTotal 标记其官方二进制文件有 3/67 的检出率(其中一个还命名了特定的恶意软件家族)—— 这被作为一项故意的工具排除决策记录在分析方法论中。
### 阶段 4:动态与内存分析
在 Windows 引爆虚拟机中受控执行感染链。观察运行时行为,包括进程创建、加载的模块、文件系统和注册表修改以及内存驻留样本。通过 Security Onion 捕获并分析网络流量(Suricata 告警、Zeek 日志)。
### 阶段 5:行为与防御性解释
将所有发现综合成一个行为摘要、全面的 IOC 列表(文件哈希、注册表键、网络指标)以及具有可操作性的防御建议,包括自定义 Suricata 规则和 YARA 签名。
## 仓库结构
```
├── docs/ # Wiki and reference documentation
│ ├── lab-setup-guide.md # Full environment build instructions
│ ├── tool-reference.md # Tool configurations and usage notes
│ └── analysis-methodology.md # Analytical framework documentation
│
├── rules/ # Detection signatures
│ ├── suricata/ # Custom Suricata rules
│ │ └── custom.rules
│ └── yara/ # YARA rules for URSNIF indicators
│ ├── ursnif-dll.yar
│ └── ursnif-dropper.yar
│
├── reports/ # Analysis reports
│ └── ursnif-2021-05-14/
│ ├── static-analysis.md
│ ├── assembly-analysis.md
│ ├── dynamic-analysis.md
│ ├── kill-chain.md
│ └── iocs.json
│
├── evidence/ # Supporting artifacts (no binaries)
│ ├── screenshots/
│ ├── pcap-exports/
│ └── disassembly-excerpts/
│
├── README.md
└── LICENSE
```
## 工具与技术
- **Security Onion** — 网络安全监控平台 (Suricata, Zeek, Elasticsearch, Kibana)
- **Suricata** — 基于签名的入侵检测和网络流量分析
- **Zeek** — 网络元数据生成和协议日志记录
- **YARA** — 用于文件级恶意软件识别的模式匹配
- **REMnux** — 基于 Linux 的恶意软件分析发行版
- **INetSim** — 用于安全动态分析的模拟互联网服务
- **Ghidra 12.0.4** — NSA 的开源逆向工程和反汇编框架(包含集成调试器)
- **Detect It Easy (DIE)** — PE 编译器/链接器指纹识别、加壳检测和熵分析
- **Wireshark** — 网络协议分析器
- **olevba / oletools** — Office 文档和宏分析实用工具
- **XLMMacroDeobfuscator** — 用于 `.xlsb` 投放器分析的 Excel 4.0 (XLM) 宏反混淆
- **PEStudio / PE-bear** — 可移植可执行 (PE) 文件检查工具
- **rabin2 (radare2)** — 用于在 REMnux 上进行阶段 2 静态分析的命令行 PE 检查工具
- **capa** — 映射到 MITRE ATT&CK 的能力检测
- **tshark** — 命令行 PCAP 分析
- **Process Monitor / Process Explorer** — Sysinternals 运行时行为监控
- **Volatility** — 内存取证框架(内存转储已保留用于离线分析)
## 作者
- **Moses Chavez** — @mwchavez
- **Marissa Turner** — @marilturner
## 致谢
本项目是作为 CSEC 4300:恶意软件分析的课程作业开发的,基于之前在道成肉身大学 为 CIS 3370:入侵检测系统 和 CIS 3345:数字取证 完成的课程工作。
## 许可证
本项目基于 [MIT 许可证](LICENSE) 授权。详情请参见 LICENSE 文件。
标签:Beacon Object File, DAST, Diamond模型, DNS信息、DNS暴力破解, DNS 反向解析, ELK Stack, Gozi木马, HTTP工具, INetSim, ISFB, Kill Chain模型, Metaprompt, OpenCanary, REMnux, Rootkit, SecList, Security Onion, Suricata, URSNIF, VirtualBox, Windows 11, YARA规则, Zeek, 云安全监控, 入侵检测系统, 内存取证, 威胁情报, 安全实验, 安全数据湖, 开发者工具, 恶意软件分析, 恶意软件引爆, 教学课程项目, 数字取证, 数据包嗅探, 无线安全, 汇编分析, 沙箱, 现代安全运营, 网络传感器, 网络信息收集, 网络安全实验室, 网络安全审计, 网络流量分析, 自动化脚本, 虚拟化环境, 越狱测试, 银行木马, 隔离网络, 静态分析