WooyunWifi高级组合技&一套连击拿SHELL

0x00 概述

十步之外,可取汝SHELL

本文介绍了使用WooyunWifi+BDFproxy+Metasploit的GETSHELL工具组合,并介绍了BDF的原理,并简要介绍了WooyunWifi+beEF+Metasploit的GETSHELL组合及其原理

本文使用的工具及缩写一览:

Backdoor Factory(后门工厂),缩写:bdf

Backdoor Factory Proxy(后门工厂代理器),缩写:bdfproxy

The Browser Exploitation Framework(浏览器漏洞利用框架),缩写:beEF

0x01 WooyunWifi相关功能简介

WooyunWifi路由器是一款用于无线网络安全测试&学习的智能路由器

在本文中,分别使用了WooyunWifi的流量转发功能、JS注入功能

流量转发功能可以让目标设备的流量转发至进行实际执行安全测试工具的设备上,即提供了免配置的中间人网络介入。中间人攻击的传统手法有ARP欺骗、DNS欺骗等,均需要其他安全工具配合,难度较大且物理条件要求苛刻(需要额外的设备接入同一网段,并且要关闭可能的Lan隔离及ARP防火墙)。因此,WooyunWifi提供的一键流量转发功能可以使您跳过网络层手工配置,直接使用任意设备对目标设备进行应用层的安全测试

JS注入功能可以提供简单的脚本注入,可以用来做启动更大脚本HOOK平台的跳板,举例说本文中介绍的beEF平台就是由JS注入功能初始化,然后直接HOOK住目标浏览器进行安全测试的。JS注入攻击的传统手法非常复杂,首先需要依赖于上文所说的网络层攻击,之后还要配合应用层的JS注入工具,最后才能开始使用beEF平台,由于前几步骤的难度极高,因此传统上相对更加简单的JS注入反而变得难以实施。因此,WooyunWifi自身集成的安全工具已经实现了JS注入功能,您可以简单地通过WEB界面进行JS注入,简单直接地对目标浏览器进行安全测试。

0x02 WooyunWifi+BDFproxy+Metasploit测试流程

WooyunWifi的WEB配置:

在WooyunWifi的WEB界面中点击Settings(高级设置)按钮,在Traffic Redirect选项中填写流量转发的目标设备IP以及用于安全测试设备的IP,例:

192.168.1.134 是目标设备的IP,该IP的流量将被转发至Proxy IP

192.168.1.163 是安全测试设备的IP,该IP将接收到来自192.168.1.134的流量

bdfproxy配置:

如果您使用的是Kali Nethunter手机,您已经安装好bdfproxy了。如果您使用的是Kali Linux的老版本(我不确定新版本是否将包含bdfproxy),您可以使用

安装bdfproxy以及相关的依赖软件包

默认情况下,您极有可能安装bdfproxy至

如果您是直接从git上获得并编译的源代码,请自己寻找您的bdfproxy配置文件的路径

默认的配置文件可能在/etc/bdfproxy下

修改其中的部分内容如下:

配置完毕之后,把Metasploit的服务打开,我们接下来要开启工具了:

以上是第一步:将HTTP/HTTPS流量转发至bdfproxy

以上是第二步:开启bdfproxy,如果您配置正确,在目标设备访问网页时可以看到bdfproxy中截获的REQUEST如上所示

在目标设备通过HTTP下载文件时,您将在bdfproxy中看到拦截下的请求,提示您选择注入的CAVE,这里上面我选择了2,输入2然后回车,目标设备这时成功下载到putty.exe,看上去毫无异样。

以上截图出自WooyunWifi 2.0的视频,目前版本已经到达3.0,除了功能增强也有一个全新界面了

先不解释发生了什么,我们先来启动Metasploit:

请注意,这里的bdfproxy_msf_resource.rc正是我们上文中设置文件的名称,可能位于/usr/share/bdfproxy下面,如果您自己编译的bdfproxy,那您需要自己找这文件放哪里了

可以看到启动时开启了一堆handler等待bdfproxy使用,当目标设备运行putty.exe时,显示Meterpreter session 1 opened,这时已经获取到了目标设备的SHELL

具体拿到SHELL之后怎么用,请参阅Metasploit的文档,这里就不细说了

0x03 BDF原理分析

首先,我们来看看我们大概做了一件什么事情:

目标设备->WooyunWifi路由器->安全测试设备(Kali+bdfproxy)->网站

那么发生了什么事情呢?

目标设备请求putty.exe->WooyunWifi路由器转发->安全测试设备(bdfproxy)拦截到请求->bdfproxy根据配置请求BDF挂后门->BDF请求Metasploit生成后门SHELLCODE->把SHELLCODE填进CAVE中(一会儿解释)->响应发回目标设备->目标设备下载完无异常于是执行->执行SHELLCODE->反弹SHELL给Metasploit

大家最关心的肯定是BDF挂后门时的CAVE是什么意思,下面以Joshua Pitts(BDF作者,He is awesome!!!)的PPT来翻译讲解BDF的原理,给出PPT原地址,翻译时格式有改动内容有删改:

http://www.slideshare.net/midnite_runr/patching-windows-executables-with-the-backdoor-factory

Metasploit挂后门的方式:

覆盖掉程序入口点之前:

覆盖掉程序入口点之后:

覆盖程序入口点方式的好处和弊端:

创建新线程但是保留程序入口点方法:

可以明显地看到新增了一个RWE的code section

创建新线程但是保留程序入口点方法的好处和弊端:

CTP方式挂后门:

添加一个新的code section,这和保留程序入口点的msfvenom Keep方式相似,然后使用存在的code Caves来加解密新加的code section中的SHELLCODE(我们尝试过xor加密,但是已经对杀毒软件没啥用了)

译者注:上图与keep方式比较相似,先跳到新加的code section然后跳回原来的程序入口点

那么,什么是Code Caves 呢?

Code Cave 是指在一个二进制文件中存在的一个全都是空字节(x00)的区域

编者注:如上图一堆x00的区域,就是一个Code Cave

Code Cave的产生与编译器有关:

不同编译器下在section中大于200字节的Code Caves个数:

BDF工作原理:

使用自定的SHELLCODE:

最后,对比一下文中所述的三种挂后门方式:

MSFVENOM –k –t exe

MSFVENOM –t exe

BDF Cave jumping

然后对比一下32位挂后门和64位挂后门的效果:

因此,BDF在自动化挂后门流程的同时,也实现了CTP方式挂后门的功能,这也就是之前手动选择Code Cave的原因,根据测试结果看来,Cave跳转方式过杀软的效果最好,而64位后门比32位后门的隐蔽性更高

0x04 WooyunWifi+beEF+Metasploit测试流程

WooyunWifi的WEB配置:

在WooyunWifi的WEB界面中点击Settings(高级设置)按钮,在jsInject选项中填写要注入的JS语句,例:

我们注入的是JS语句,请不要混淆“JS语句”、“HTML标签”和“JS文件”的区别,在beEF中会自动生成hook.js并提示其URL地址,我们要想让beEF成功hook到目标浏览器,就要在目标浏览器上对应页面执行hook.js,因此我们使用JS语法document.write写入一个html标签,然后由标签来在当前页面加载hook.js(js执行的页面对beEF有重大影响,建议以这种方式在当前页面进行hook,您也可以尝试其他方式)

请先启动beef,Kali linux默认情况下集成了beEF,可以通过beef-xss命令启动,或者在快捷启动栏里也可以找到启动器

hook成功后,将在beef“Hooked Browsers”里面弹出上线的浏览器,在这里可以看到详细的浏览器信息

如图,目标浏览器为IE 9,并且支持Flash,使用老版本IE还开着Flash这基本上就是随意拿SHELL的了

上www.exploit-db.com找一个最新的exploit,比如hacking team的flash漏洞,放在msf的modules文件夹下,然后按照exploit代码mkdir并且touch一个可读写的swf文件(具体路径可以先运行报错一遍看看在哪)

但是,我是一个口是心非的人,因为我在hacking team事件当天就升级了Flash,降级基本上不可能,而且老版本如果一旦更新就是最新版,实在不想浪费时间去配置个Flash 18.0.0.194特定的版本

让我来用一个比较冷门的exploit演示Metasploit和beEF的组合用法:

为了节省空间,上面演示的命令中我把我敲错的命令都自己删掉了 :)

首先你在Metasploit里面要开启一个Browser Exploit的module,可能为了方便你喜欢手动设置uri为/a,payload可以是reverse shell,这里为了演示用的是MessageBox弹窗

然后在beEF里面让目标浏览器跳转至你的Browser Exploit的uri中

之后目标浏览器就会访问我们设置好的Metasploit Browser Exploit页面,触发漏洞:

0x05 Browser Exploit组合原理科普

首先,看看我们做了一件什么事情:

目标设备发出浏览网页请求->WooyunWifi路由器不作改动->网站服务器->网站响应发回WooyunWifi路由器->WooyunWifi路由器在JS文件中插入写标签代码->WooyunWifi将修改后的响应发回目标设备->目标设备执行写标签代码->目标设备通过html标签加载并执行了安全测试设备上的hook.js代码->hook.js代码与安全测试设备上的beEF进行交互式的操作->beEF准备指令hook.js跳转至安全测试设备上的Metasploit Browser Exploit uri->目标设备当前页面受hook.js控制跳转至安全测试设备上的Metasploit Browser Exploit uri->Metasploit准备并发送浏览器攻击代码->目标设备浏览器被攻击后执行后门代码->目标设备后门代码与安全测试设备上的Metasploit进行交互->GETSHELL成功

那么,什么是Browser Exploit呢?Browser Exploit就是利用浏览器的漏洞来渗透目标设备的方法,常见的比如ie的漏洞都可能导致目标设备在访问恶意页面后直接被GETSHELL,另外其他的比如Flash漏洞也都是可以通过浏览器来触发的,因此也可纳于Browser Exploit范畴

0x06 结语

WooyunWifi不是一个黑客路由器,它只是一个用来研究、学习、交流的集成测试平台,请自觉遵守相关法律法规。该路由器仅在乌云集市中以平台积分形式赞助给在乌云平台上做过卓越贡献的白帽子,我们认为这些白帽子具备合格的安全知识能力及职业道德素质,兑换该路由器即保证仅用于学习研究用途。

那么,目标设备是怎么连上WooyunWifi的呢?破解WPA/WPA2握手包 + 5种方式秒杀无客户端连接嗅探不到包的WEP + 半握手包破解 + WPS在线暴力/pixie dust离线破解WPS-PIN + de-authentication掉线攻击 + KARMA混杂响应劫持手机扫描 + 利用大数据制作更好的弱密码字典,欲知后事如何 且听下回分解~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180729G1GRAL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券