- A+
概述
一个真实的Linux恶意软件入侵环境,往往包含有病毒文件、病毒进程、恶意启动项、网络通信流量等病毒项,若我们只获得单一的病毒文件,很难还原出恶意软件的整个攻击环境,从而不便于对攻击链进行全面的研究分析,以及产品安全能力测试。下面,介绍一种基于Docker的方法,可以自动化地采集及还原恶意软件的整个攻击场景,以最大程度地模拟主机中毒的环境,方便后续对恶意软件进行研究与分析。
该方法的原理是,使用bash脚本自动化收集中毒主机上的病毒项,然后打包成容器环境,最后通过Docker在本地模拟运行,这时生成的Docker容器就包含了完整的恶意软件环境。
详细步骤
如下,以StartMiner(8220挖矿家族)的中毒环境作为演示,通过命令可以看到主机中包含有恶意定时任务、病毒文件、病毒进程等信息。
采集脚本具体的代码如下,主要采集以下目录的文件:
- /tmp/、/root/、/opt/ 病毒文件常见目录
- 定时任务文件
- ssh缓存文件
- syslog和audit安全日志
- 进程信息
- 网络信息
然后自动化生产docker-compose.yml文件,用于一键创建docker容器。
malbox.sh脚本运行数秒后,即可打包好所有病毒项,生成文件malbox.tar.gz。
将malbox.tar.gz在本地解压缩,malbox目录便包含Docker环境的所需的文件系统和配置文件,docker-compose.yml的功能为映射关键目录,及模拟执行恶意命令。在运行之前需要自定义下docker-compose.yml的信息,填上病毒家族名,以及启动时要运行的命令(可以参考ps.txt及netstat.txt填上需要模拟的病毒进程命令)。
修改完后,使用命令docker-compose up -d即可一键部署容器,查看容器列表,若出现了startmienr_2010便说明容器运行成功了。
恶意软件容器所使用的基础镜像为malbox,该镜像在ubuntu镜像基础上新增了恶意软件常用到的一些命令及服务(wget、curl、ssh、crontab等),以达到更好的模拟效果。
使用docker exec -it startminer_2010 /bin/bash命令,就能进入到容器,此时的环境就跟中毒主机的环境几乎一样了,可以在该环境中进行排查分析。
查看进程,也能清晰地看到恶意的下载进程,以及CPU占用率极高的挖矿进程。
容器中的syslog日志和audit.log日志,也有助于研究员对整个恶意软件的攻击链进行溯源。
audit可以使用自定义规则进行监控,将可疑行为按照ATT&CK矩阵进行分类。
总结
模拟出来的恶意软件容器,方便搭建及部署,若有蜜网或EDR环境,还可以将容器接入到其中以更好地检测收集恶意软件的恶意流量、恶意行为。
参考链接
https://github.com/vulhub/vulhub/