原文地址:http://resources.infosecinstitute.com/beef-part-1/
http://resources.infosecinstitute.com/beef-part-2/
BeEF使用浏览器漏洞来获得目标机器的控制权。BeEF提供API,我们可以编写自己的模块来攻击目标浏览器。
1. 安装
1)使用root权限执行下列命令:
2)使用常规权限执行:
3)下载BeEF框架:
4)要安装BeEF框架,必须使用bundle命令来安装缺少的依赖:
5)成功安装依赖关系如下图:
6)更新BeEF框架:
7)然后BeEF框架启动如下:
我们可以看到BeEF启动/正确运行:它现在运行在所有发现的网络接口,所以可以从各个网卡访问。从BeEF输出中可以看到user接口面板可以通过http://10.1.1.2:3000/ui/panel来访问,如果我们访问该页面,我们将自动重定向到http://127.0.0.1:3000/ui/authentication,如下图所示:
默认username/passwd是 beef:beef,现在登录
我们我们可以看到web页面的欢迎信息以及出现基本信息,以及使用手册。
开始使用
当前当前BeEF框架有两个demo页面:
a.基本demo页面
当上图页面加载时,我们的浏览器已经被hook到BeEF框架中,并且我们可以利用它执行命令了。显示的额外的连接/表单是为了显示BeEF的各种特性
b)Butcher Demo页面
这个例子也是用于自动hook浏览器到BeEF框架中,所以不需要额外的步骤。web页面中的其他元素也是为了演示目的。
在BeEF user interface面板的左侧,我们可以看到“Online Browsers” 和 “Offline Browsers,表示为已经被hook的浏览器,它们中的一些在线,另一些不在线。取决于受害者机器的状态
我们我们也可以通过点击浏览器来与一个被hook的浏览器通信,然后会创建一个新的tab,如下图
我们我们可以看到每一个tab代表一个浏览器,它有5个tab-总结如下:
Details-显示被hook的浏览器的细节。如上图所示
Logs-显示当前浏览器的log实体。如下图所示
commands-我们可以对一个浏览器执行模块。模块可以执行可以通过JavaScript来执行的任何命令。每一个模块有一个图标,表示为如下色彩:
Green : 可以工作; user不可见
Orange :可以工作; user可见
Grey : 可能工作
Red : 不能工作
如下图所示,选择了“Browser – Hooked Domain – Play Sound” module.
Rider-允许我们以被hook的浏览器身份提交任何请求
XssRays-用于检测被hook的页面是否含有XSS漏洞。如果我们右击被hook的页面,弹出一个menu,有两个选项
-Use as Proxy:允许我们使用被hook的浏览器做代理
-Launch XssRays on Hooked Domain:用于发现web页面的XSS漏洞。XssRays标签用于做同样的事
使用模块
1. 获得cookie:
当我们执行Get Cookie,得到如下结果:
2. 获得页面HREFs
该模块用于从目标页面中获得HREFS。如果我们查看代码,我们将会看到如下代码:
在html代码中有三个连接:
- http://beefproject.com
- http://ha.ckers.org/
- http://slashdot.org/
通过本模块,我们可以从模块中提取这些连接。如果我莫执行模块“Get Page HREFs”,我们将会得到如下响应:
3. 获得页面HTML
该模块将会从当前页面中获得HTML。执行结果如下:
4. 替换HREFs
该模块将会覆盖指定URL的HREFs属性。实验用www.google.com替换该模块。成功覆盖目标页面的所有url。响应如下所示:
5. 创建alert对话框
这是第一个对于user来说非不可见的模块。该模块发送一个alert到被hook的浏览器。如下所示:
6 Google搜索
该模块从被hook的浏览器来搜索Google。成功执行是如下:
7. 原生态JavaScript
本模块发送输入框中的JS代码到被hook的浏览器。代码在一个匿名函数中运行,并通过框架返回结果。
如果我们在输入框中输入alert(“Hello World!”); return ‘Ok’; ,被hook的浏览器将会显示alert窗口,如下:
8. 检查社交网络
本模块检查被hook的浏览器是否在浏览Gmail,Facebook,或Twitter。当用户被授权到Facebook时响应如下:
10. Google钓鱼
本模块伪造一个google登录页面,一旦登录到Gmail邮件系统,用户口令将会发送给BeEF框架。当我们点击执行按键,Gmail Google页面将会显示,如下图:
我们可以看到页面和Google的页面一样,除了url不同。当输入用户口令test:test时,我们将会从BeEF框架中获得该口令:
http://resources.infosecinstitute.com/beef-part-2/
BeEF使用浏览器漏洞来获得目标机器的控制权。BeEF提供API,我们可以编写自己的模块来攻击目标浏览器。
1. 安装
1)使用root权限执行下列命令:
- # apt-get install ruby1.9.1 ruby1.9.1-dev libsqlite3-dev sqlite3 sqlite3-doc rubygems1.8
- # gem install bundler
- # export PATH='$PATH:/var/lib/gems/1.8/bin'
2)使用常规权限执行:
- # curl -L https://get.rvm.io | bash -s stable –ruby
- # export PATH='$PATH:/usr/local/rvm/bin/'
- # source /<a title="home" href="http://resources.infosecinstitute.com/">home</a>/user/.rvm/scripts/rvm
- # unset RUBYOPT && sudo env-update && gem -v
3)下载BeEF框架:
- # git clone https://github.com/beefproject/beef.git
4)要安装BeEF框架,必须使用bundle命令来安装缺少的依赖:
- # cd beef/
- # bundle install
5)成功安装依赖关系如下图:
- # bundle install
- Fetching gem metadata from http://rubygems.org/.......
- Fetching gem metadata from http://rubygems.org/..
- Installing addressable (2.2.8)
- Installing ansi (1.4.3)
- Installing daemons (1.1.9)
- Installing data_objects (0.10.8)
- Installing dm-core (1.2.0)
- Installing dm-do-adapter (1.2.0)
- Installing dm-migrations (1.2.0)
- Installing do_sqlite3 (0.10.8) with native extensions
- Installing dm-sqlite-adapter (1.2.0)
- Installing eventmachine (0.12.10) with native extensions
- Installing em-websocket (0.3.8)
- Installing erubis (2.7.0)
- Installing multipart-post (1.1.5)
- Installing faraday (0.8.4)
- Installing jsmin (1.0.1)
- Installing json (1.7.5) with native extensions
- Installing librex (0.0.68)
- Installing msgpack (0.4.7) with native extensions
- Installing msfrpc-client (1.0.1)
- Installing multi_json (1.3.6)
- Installing parseconfig (1.0.2)
- Installing rack (1.4.1)
- Installing rack-protection (1.2.0)
- Installing simple_oauth (0.1.9)
- Installing tilt (1.3.3)
- Installing sinatra (1.3.2)
- Installing term-ansicolor (1.0.7)
- Installing thin (1.4.1) with native extensions
- Installing twitter (3.6.0)
- Using bundler (1.1.5)
- Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.
6)更新BeEF框架:
- # ./update-beef
7)然后BeEF框架启动如下:
- # ./beef
- [ 9:13:42][*] Browser Exploitation Framework (BeEF)
- [ 9:13:42] | Version 0.4.3.7-alpha
- [ 9:13:42] | Website http://beefproject.com
- [ 9:13:42] | Run 'beef -h' for basic help.
- [ 9:13:42] |_ Run 'git pull' to update to the latest revision.
- [ 9:13:45][*] BeEF is loading. Wait a few seconds...
- [ 9:13:53][*] 8 extensions loaded:
- [ 9:13:53] | Autoloader
- [ 9:13:53] | Events
- [ 9:13:53] | Proxy
- [ 9:13:53] | Requester
- [ 9:13:53] | Admin UI
- [ 9:13:53] | Console
- [ 9:13:53] | Demos
- [ 9:13:53] |_ XSSRays
- [ 9:13:53][*] 122 modules enabled.
- [ 9:13:53][*] 2 network interfaces were detected.
- [ 9:13:53][+] running on network interface: 127.0.0.1
- [ 9:13:53] | Hook URL: http://127.0.0.1:3000/hook.js
- [ 9:13:53] |_ UI URL: http://127.0.0.1:3000/ui/panel
- [ 9:13:53][+] running on network interface: 10.1.1.176
- [ 9:13:53] | Hook URL: http://10.1.1.2:3000/hook.js
- [ 9:13:53] |_ UI URL: http://10.1.1.2:3000/ui/panel
- [ 9:13:53][*] RESTful API key: 8f6d1d719227a0bc6b654e5682c2d73801d3cffc
- [ 9:13:53][*] HTTP Proxy: http://127.0.0.1:6789
- [ 9:13:53][*] BeEF server started (press control+c to stop)
我们可以看到BeEF启动/正确运行:它现在运行在所有发现的网络接口,所以可以从各个网卡访问。从BeEF输出中可以看到user接口面板可以通过http://10.1.1.2:3000/ui/panel来访问,如果我们访问该页面,我们将自动重定向到http://127.0.0.1:3000/ui/authentication,如下图所示:
![](https://i-blog.csdnimg.cn/blog_migrate/d104d087fa73406ea62e1ee52bad973f.png)
默认username/passwd是 beef:beef,现在登录
![](https://i-blog.csdnimg.cn/blog_migrate/ade1a51e005a7e47827e0946df15370f.png)
我们我们可以看到web页面的欢迎信息以及出现基本信息,以及使用手册。
开始使用
当前当前BeEF框架有两个demo页面:
a.基本demo页面
![](https://i-blog.csdnimg.cn/blog_migrate/b59217fb730d3d9a058857ad41af185e.png)
当上图页面加载时,我们的浏览器已经被hook到BeEF框架中,并且我们可以利用它执行命令了。显示的额外的连接/表单是为了显示BeEF的各种特性
b)Butcher Demo页面
![](https://i-blog.csdnimg.cn/blog_migrate/74fdbe2f93892150af291377acc1ac3c.png)
这个例子也是用于自动hook浏览器到BeEF框架中,所以不需要额外的步骤。web页面中的其他元素也是为了演示目的。
在BeEF user interface面板的左侧,我们可以看到“Online Browsers” 和 “Offline Browsers,表示为已经被hook的浏览器,它们中的一些在线,另一些不在线。取决于受害者机器的状态
我们我们也可以通过点击浏览器来与一个被hook的浏览器通信,然后会创建一个新的tab,如下图
![](https://i-blog.csdnimg.cn/blog_migrate/d7ba4fc0f41443c2b13576f3e5609b21.png)
我们我们可以看到每一个tab代表一个浏览器,它有5个tab-总结如下:
Details-显示被hook的浏览器的细节。如上图所示
Logs-显示当前浏览器的log实体。如下图所示
![](https://i-blog.csdnimg.cn/blog_migrate/6629c30c9bb9a4bacede42f640d353b3.png)
commands-我们可以对一个浏览器执行模块。模块可以执行可以通过JavaScript来执行的任何命令。每一个模块有一个图标,表示为如下色彩:
Green : 可以工作; user不可见
Orange :可以工作; user可见
Grey : 可能工作
Red : 不能工作
如下图所示,选择了“Browser – Hooked Domain – Play Sound” module.
![](https://i-blog.csdnimg.cn/blog_migrate/4cc527121c335cbaf316d1738b992f70.png)
Rider-允许我们以被hook的浏览器身份提交任何请求
XssRays-用于检测被hook的页面是否含有XSS漏洞。如果我们右击被hook的页面,弹出一个menu,有两个选项
-Use as Proxy:允许我们使用被hook的浏览器做代理
-Launch XssRays on Hooked Domain:用于发现web页面的XSS漏洞。XssRays标签用于做同样的事
使用模块
1. 获得cookie:
![](https://i-blog.csdnimg.cn/blog_migrate/34bca715205fb6bdd85915c2f0e2998c.png)
当我们执行Get Cookie,得到如下结果:
![](https://i-blog.csdnimg.cn/blog_migrate/25aeebf8792a0b1a02b6ea6d0f6e4e1e.png)
2. 获得页面HREFs
该模块用于从目标页面中获得HREFS。如果我们查看代码,我们将会看到如下代码:
- </pre>
- <ul>
- <li><a href="http://beefproject.com" target="_blank">The Browser Exploitation Framework Project homepage</a></li>
- <li><a href="http://ha.ckers.org/" target="_blank">ha.ckers.org homepage</a></li>
- <li><a href="http://slashdot.org/" target="_blank">Slashdot</a></li>
- </ul>
- <pre>
在html代码中有三个连接:
- http://beefproject.com
- http://ha.ckers.org/
- http://slashdot.org/
通过本模块,我们可以从模块中提取这些连接。如果我莫执行模块“Get Page HREFs”,我们将会得到如下响应:
![](https://i-blog.csdnimg.cn/blog_migrate/8452e968c4ad1eb589c396e720278463.png)
3. 获得页面HTML
该模块将会从当前页面中获得HTML。执行结果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/f16925d9636ca0172579b7b8190f2b57.png)
4. 替换HREFs
该模块将会覆盖指定URL的HREFs属性。实验用www.google.com替换该模块。成功覆盖目标页面的所有url。响应如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/3bf03ee3e5d75d8358f4a42e47ab2318.png)
5. 创建alert对话框
这是第一个对于user来说非不可见的模块。该模块发送一个alert到被hook的浏览器。如下所示:
![](https://i-blog.csdnimg.cn/blog_migrate/dca67d5bccb4342bc6eda2c0326eeee5.png)
6 Google搜索
该模块从被hook的浏览器来搜索Google。成功执行是如下:
![](https://i-blog.csdnimg.cn/blog_migrate/e1d2b9a50951e2f3f27151398f74e739.png)
7. 原生态JavaScript
本模块发送输入框中的JS代码到被hook的浏览器。代码在一个匿名函数中运行,并通过框架返回结果。
如果我们在输入框中输入alert(“Hello World!”); return ‘Ok’; ,被hook的浏览器将会显示alert窗口,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/8e56cdc63471f4b74a6ce14509c421de.png)
8. 检查社交网络
本模块检查被hook的浏览器是否在浏览Gmail,Facebook,或Twitter。当用户被授权到Facebook时响应如下:
![](https://i-blog.csdnimg.cn/blog_migrate/dfb7505f986b064c093700d5e89aaeb7.png)
10. Google钓鱼
本模块伪造一个google登录页面,一旦登录到Gmail邮件系统,用户口令将会发送给BeEF框架。当我们点击执行按键,Gmail Google页面将会显示,如下图:
![](https://i-blog.csdnimg.cn/blog_migrate/7d89fcfb05bee6542243fe74fc0cd3a2.png)
我们可以看到页面和Google的页面一样,除了url不同。当输入用户口令test:test时,我们将会从BeEF框架中获得该口令: