什么是BeEF?

BeEF是The Browser Exploitation Framework的缩写,用Ruby语言开发的,Kali中默认安装的一个模块,用于实现对XSS漏洞的攻击和利用。它是一种专注于Web浏览器的渗透测试工具。

随着对包括移动客户端在内的客户网络攻击的担忧日益增加,BeEF允许专业渗透测试人员使用客户端攻击媒介来评估目标环境的实际安全状况。与其他安全框架不同,BeEF超越了强化的网络边界和客户端系统,并在一个开放的环境中检查可利用性:Web浏览器。BeEF将挂钩一个或多个Web浏览器,并将它们用作启动定向命令模块以及从浏览器上下文中对系统进一步攻击的滩头阵地。

下载安装

kali一般自带有该框架,对重要的配置文件应先行备份,否则会导致不必要的数据丢失或错误(笔者吸收的教训):
beef-xssymlerror.png

至此没办法,没有备份,配置文件出错,只能重装。输入命令先卸载:apt-get purge beef-xss(没有用到remove是因为我配置文件出错了,所以得用purge清除已配置的相关的信息),然后再输入命令apt install beef-xss安装。

修改配置文件并启动

配置文件一般的是在目录/usr/share/beef-xss/下,config.yml中修改host为本机eth0中的ip地址,然后输入命令./beef启动服务,输入默认账号密码beef登录后显示:
beefstart.png
beefxsshook.png

点击其中的测试页面(被勾住的页面,点击进入以后则浏览器也会被勾住)后就可以进行浏览器的攻击测试了。

攻击用户

攻击用户可分为三部分:内容劫持、捕获用户输入、社会工程学。

内容劫持

内容劫持是指替换被勾连的浏览器中当前页面内容,比如替换被勾连的浏览器中当前页面中所有的<a>元素的href。
BeEF自带了很多内容劫持相关的攻击模块:
redirect.png

Replace Content(Deface)是直接修改页面的内容。这些功能可以窃取一些内容,也可以配合钓鱼网站来攻击用户。
简单测试重定向,设置好参数后点击execute执行就可以了。

捕获用户输入

捕获用户的输入也就是我们常说的键盘记录器,BeEF通过使用焦点事件,键盘事件,鼠标和指针事件这四个事件来实时监控着用户的操作。而这些操作都会实时地记录在log日志页面中

社会工程学

social-engineer.png

这是一个假的通知栏,简单设置好显示的参数后:
notice.png

Pretty Theft 攻击模块会在被勾连浏览器上弹出一个弹框,然后通过欺骗性的语句来使用户输入帐号和密码。当网站有http-only这个响应首部,无法窃取cookie时,可以使用完美盗窃这个模块来窃取用户的帐号和密码。

使用Pretty Theft前,需要做一些参数的设置:
theft.png
facebook.png

然后查看捕获的用户输入的信息:
capture.png

读者可能注意到了,Pretty Theft默认下弹出的诱惑性弹框中所使用的语言是英文。在国内效果肯定要打折扣了。所以要修改一下,在beef-xss/modules/social_engineering/pretty_theft/command.js中修改:
theft_msg.png

由于我修改的是Generic模块,所以得选择此模块查看:
configpicture.png
重新测试:
theft_zh_CN.png

攻击浏览器

攻击浏览器的技术,笔者只介绍一个:联合metasploit来攻击浏览器。演示的环境与上面演示pretty_theft是一样的。

kali默认没有此模块,先安装:
msf_install.png
要使用Metasploit + BeEF之前,需要做一下设置。

首先要在BeEF中修改beef-xss/extensions/metasploit/config.yaml配置文件:
metasploit.png

上图配置文件中的port, user, pass 需要与下面在msf中启动MSGRPC接口中的port, user, pass一样。而图中最下面的”{os: ‘custom’, path:’/usr/share/metasploit-framework/’}”要根据实际情况来改,这里写的是msf的路径。

接着修改beef-xss/config.yaml, 设置开启metasploit模块:
metasploit_config.png

开启Metasploit的MSGRPC接口

设置好BeEF后,现在来开启Metasploit的MSGRPC接口, 先在一个空白文件msf_beef.txt中写入(启动远程服务所需的文件):

load msgrpc ServerHost=192.168.43.6 ServerPort=55552 User=msf Pass=xxx

msfconsole -r msf_beef.txt    //启动msf,并启动msgrpc接口

远程的服务器上启动msf,而且msf必需保持运行状态,可以使用screen命令来启动msf。这样即使我关闭了ssh连接,也可以保证msf保持运行状态:
screen -S msf //创建一个名为msf的session

接着按住Ctrl键 + a + d, 暂时离开”msf” session窗口, 回到原本的窗口。 这样即使退出了ssh连接, “msf”session还是会在继续运行。

screen -ls //可以看到当前有多少个session窗口在运行
screen -r id //可以进入到 某个session窗口

若命令行中直接输入msfconsole 提示不能连接到数据库 ,是由于postgresql 未启动。因此,需要开启postgresql,并且进行postgresql 的初始化配置。

键入命令service postgresql start或systemctl start postgresql.service来启动数据库,键入ss –ant查看postgresql默认端口5432是否正在监听:
postgresql_listening.png

然后键入msfdb init进行初始化。
msfdbinit.png

本地启动直接键入命令msfconsole,成功后,会有如下图的输出:
start_local_msf_db.png

至此,环境设置完毕。BeEF + msf攻击原理, 原本如果只是使用metasploit 来攻击浏览器(这里是Chrome70.0),那么metasploit会生成一个URL,如果IE访问了这个URL,那么就会中招。
现在有BeEF, BeEF可以把metasploit生成的URL嵌入到被勾连浏览器的一个iframe中。通过msgrpc接口,可以直接在BeEF的管理UI中设置metasploit的参数并直接使用msf的exploit模块。

重新启动beef会加载刚刚设置好的metasploit模块:
restart_beef.png
beef+metasploit.png

钓鱼网站(结合DNS欺骗)

curl.png

克隆的网站在目录:/usr/share/beef-xss/extensions/social_engineering/web_cloner/cloned_pages 下:
cloned_pages.png

直接输入url地址访问:
baidu_clone.png
这只是虚拟的百度,并没有实际的搜索功能。

参考文章:谢公子NT00