Vaibhav-226/malware-analysis-sandbox
GitHub: Vaibhav-226/malware-analysis-sandbox
一个基于 VirtualBox 的恶意软件分析沙箱项目,包含针对 AgentTesla 信息窃取程序的完整分析流程及一个 Python 静态分析工具。
Stars: 0 | Forks: 0
# 恶意软件分析沙箱
这是我为了真正理解恶意软件分析的工作原理而构建的一个项目,而不是仅仅阅读相关理论。计划非常简单:建立一个安全隔离的实验室,获取真实的恶意软件样本,并对其进行静态和动态分析。最后编写一个小型 Python 工具,自动完成枯燥的静态检查。
我分析的样本是一个活跃的 **AgentTesla** 信息窃取程序,来自 [MalwareBazaar](https://bazaar.abuse.ch/)。所有操作都在一个完全没有连接互联网的 Windows 10 虚拟机中进行,因此绝不会出现样本逃脱或联系其服务器的情况。
## 我实际完成的工作
- 在 VirtualBox 中构建了 Windows 10 虚拟机,并通过仅主机网络进行了锁定,同时在每个阶段都进行了快照,以便能够瞬间回滚。
- 首先进行了静态分析,这意味着在不运行文件的情况下对其进行检查(哈希值、熵、PE 结构、导入表、字符串)。
- 然后将其引爆,并使用 Procmon、FakeNet-NG 和 Wireshark 实时观察它的行为。
- 遇到了样本的反分析规避机制,找出了其原因,并成功将其破解。
- 在破解规避机制后,我转储了进程内存,并恢复了恶意软件的命令与控制(C2)配置。
- 编写了 `malware_scanner.py`,将所有的静态检查整合到一个脚本中。
## 有趣的部分
当我第一次引爆样本时,网络上什么也没发生。零流量。起初我真以为是我的设置坏了。
其实并不是。恶意软件正在检查它是否正在被分析。它会寻找诸如正在运行的分析工具、VM 痕迹之类的东西,一旦发现这些,它就会保持安静,并且永远不会解密其真实配置。所以它是故意隐藏的。
为了绕过这一点,我让环境看起来像一台正常的机器。我重命名了分析工具,使其进程名无法被识别;伪造了 VM 的 MAC 地址前缀;停止了 VirtualBox 客户机服务;并在注册表中伪造了 BIOS 字符串。之后,样本信任了该环境,解密了其配置,我从内存中提取了整个 C2 设置。
结果发现,该恶意软件使用 **FTP 服务器**来外泄窃取的数据,并且它会从许多应用程序中获取保存的凭据,如 FileZilla、WS_FTP、Outlook、Thunderbird、Chrome、Firefox、Opera 和 Yandex。
## 为什么隔离很重要
仅主机网络是这里的全部安全保障。由于没有连接互联网的路由,恶意软件无法下载任何东西,无法联系其 C2,也无法触及我网络上的任何其他设备。而且由于我在每次运行前都会对虚拟机进行快照,因此它在虚拟机内破坏的任何内容都会在恢复时被清除。它基本上是一个密封的盒子,我可以深入其中研究样本,但没有任何东西可以泄露出来。
## 此仓库中的内容
```
.
├── README.md
├── scanner/
│ ├── malware_scanner.py # the main tool (static analysis)
│ ├── analyzer.py # an earlier simpler version (just hash and entropy)
│ └── vt_key.txt.example # rename to vt_key.txt and put your own key in it
├── report/
│ ├── MALWARE_SANDBOX_PROJECT_REPORT.md # the full write-up (C2 redacted)
│ └── images/ # the main figures from the report
├── screenshots/ # step by step screenshots, numbered in order
├── requirements.txt
├── .gitignore
└── LICENSE
```
截图已编号,因此它们遵循我执行操作的顺序,并且文件名会告诉你它属于哪个阶段以及屏幕上显示了什么。
## 扫描工具
`malware_scanner.py` 会在不运行 Windows 程序文件的情况下对其进行检查,并标记出任何看起来异常的内容。它会为你提供:
- SHA-256 哈希值
- 熵值,并在文件看起来像被加壳或加密时发出警告
- PE 导入表,并高亮显示可疑的 API
- 提取出的字符串,并分类为可能的 IOC(URL、电子邮件、FTP 服务器、注册表 Run 键)
- 快速的规避启发式检查
- 可选的基于哈希的 VirusTotal 查询
### 运行方式
```
pip install -r requirements.txt
python scanner/malware_scanner.py
```
VirusTotal 检查是可选的。如果你需要使用它,请将 `scanner/vt_key.txt.example` 复制到 `scanner/vt_key.txt`,并粘贴入你自己的 [VirusTotal API 密钥](https://www.virustotal.com/)。该文件包含在 `.gitignore` 中,因此它永远不会被提交,这正是关键所在——你的密钥会保留在你的机器上。
有一点需要注意,请先在一些无害的文件上进行测试(我使用的是 notepad.exe)。只能在完全隔离的虚拟机内部将其指向真实的样本,切勿在你正常的计算机上运行。
## 我使用的工具
环境:VirtualBox、Windows 10、仅主机网络、快照
静态分析:PEStudio、Sysinternals Strings、`pefile`、VirusTotal API
动态分析:Procmon、FakeNet-NG、Wireshark 以及内存转储分析
## 简短免责声明
这是防御性的恶意软件分析,是在封闭的实验室中为了学习而进行的。此仓库中没有恶意软件样本,没有可用的凭据,也没有虚拟机镜像。如果你想自己尝试类似的操作,请从 MalwareBazaar 获取你自己标注的样本,并且务必在完全隔离的虚拟机中运行它。
## 作者
Vaibhav Srivastava,B.Tech CSE(网络安全),UPES Dehradun
标签:DAST, HTTP工具, IP 地址批量处理, Python, SolidJS, 云安全监控, 云资产清单, 安全沙箱, 恶意软件分析, 无后门, 逆向工具, 逆向工程, 静态分析