BeEF 構架
構架
架構圖

文件組織
下面描述的所有相對文件路徑均來自Beef的根文件夾。
對于Kali Linux存儲庫安裝,路徑為/usr/share/beef-xss。請注意,它不是最新的beef版本,因此對于新功能和修復。
SQLite數據庫
beef.db -beef使用的SQLite數據庫文件
在kali安裝中,它在 /usr/share/beef-xss/db/beef.db
配置文件
config.yaml是beef的全局配置文件。在kali安裝中,它在/etc/beef-xss/config.yaml
模組
模塊定義了用于控制掛鉤的瀏覽器的附加功能。
模塊存儲在modules/文件夾中,如下所示:
modules/<category>/<module_name>/
文件夾和文件名的命名約定均為小寫。
每個模塊文件夾中存儲3個文件:
| 文件 | 目的 |
|---|---|
config.yaml |
模塊信息和配置 |
command.js |
在瀏覽器中執行的javascript |
module.rb |
后端ruby 類定義 |
擴展名
擴展更改/擴展了BeEF的行為方式。
文件存儲在extensions/文件夾中,如下所示: extensions/<name>/
存儲在每個擴展文件夾中的文件:
| 文件 | 目的 | 必要 |
|---|---|---|
extension.rb |
必要,為擴展定義類 | * |
config.yaml |
擴展信息和配置 | * |
擴展可以掛鉤(并掛載)REST API中的路徑。它們被安裝在相對于Beef服務器根目錄的路徑上,例如,以下從extensions/admin_ui/api/handler.rb鉤子中提取的代碼鉤住了一個縮小的靜態Javascript文件:
config = BeEF::Core::Configuration.instance
bp = config.get "beef.extension.admin_ui.base_path"
auth_js_file = File.read(File.dirname(__FILE__)+'/../media/javascript/ui/authentication.js') + "\n\n"
web_ui_auth = self.evaluate_and_minify(auth_js_file, params, 'web_ui_auth')
beef_server.mount("#{bp}/web_ui_auth.js", Rack::File.new(web_ui_auth))
REST API
REST API是與BeEF核心進行交互的主要方式,可通過管理UI和常規HTTP請求(例如使用curl)使用
文件存儲在中core/main/rest。
core/main/rest/api.rb 包含用于將路由(HTTP URL路徑,例如/ api / hooks)安裝/映射到BeEF類的實例以進行訪問的代碼。
core/main/rest/handlers/<name>.rb 定義對安裝的類的不同請求的響應。
管理界面
可通過上的BeEF Web服務器訪問管理界面/ui/panel。如果尚未登錄,則會提示您登錄。
例如,您可以通過localhost http:// localhost:3000 / ui / panel 訪問它
admin UI被視為擴展,因此所有代碼都存儲在中extensions/admin_ui。
安慰
Beef控制臺也是一個擴展,但目前不受支持。目前正在進行修復工作。要嘗試,請./beef-console在Beef-console分支中運行
有關控制臺如何工作的更多信息,請參閱BeEF-Console。
控制臺不使用REST API,而是通過ActiveRecord直接與數據庫進行交互。在Beef-console分支中,./beef-console單獨運行于服務器實例,但通過數據庫同步。
聯網
外部BeEF服務器的典型設置

掛鉤時,內部網絡中的掛鉤瀏覽器會使用正常的網絡流量(通常在默認端口80/443上)向外部Beef服務器發出呼叫。這使攻擊者可以繞過防火墻控件,以通過掛鉤的瀏覽器(尤其是類似HTTP的服務)掃描和利用內部基礎結構。
此設置的缺陷在于,所連接的瀏覽器所屬的組織網絡和主機始終與BeEF保持聯系,如果監視網絡,則會增加暴露BeEF端點的風險。
安全注意事項
為避免暴露和損害BeEF服務器,請考慮以下配置:
- 設置IP地址白名單
編輯config.yaml(在Beef根文件夾中)以更改允許的Web UI子網。當心IPv6配置;如果將不使用IPv6路由來訪問Beef UI,則最好將其限制為:: 1(本地主機)。例如(此字段位于restrictions:
permitted_ui_subnet: ["192.168.0.0/16", "::1"]
- 設置反向代理到安全(HTTPS)端點
這可以通過多種方式完成:
- 使用公共端口轉發服務(例如servo.net,ngrok,portmap.io),
- 設置Linux VPS(AWS,Vultr,Google Cloud,Azure)并使用letencrypt獲得免費證書
WebRTC網格設置-內部瀏覽器
一種避免噪音的設置是讓一個“主”鉤子瀏覽器不斷與BeEF服務器通信,而同一內部網絡中的其他鉤子瀏覽器將使用WebRTC設置與主鉤子瀏覽器的p2p通信。這樣,只有一臺主機正在與BeEF服務器進行回叫,因此噪音較小。

WebRTC網格設置-外部主瀏覽器
由于WebRTC是對等協議,因此可以使用公共STUN服務器遍歷NAT(網絡地址轉換),該服務器也內置在BeEF中的WebRTC擴展中。
因此,可以使用攻擊者網絡中的一個掛鉤瀏覽器通過WebRTC來控制其他掛鉤瀏覽器,其中一個與BeEF服務器的初始連接可以建立命令和控制,也可以將此功能直接嵌入執行的Javascript掛鉤中。這樣,如果主瀏覽器的IP地址與BeEF服務器不同,則可以限制BeEF服務器IP的暴露。
BeEF
*控制臺擴展處于禁用狀態,不受支持,僅在再次啟用此功能后,才可使用*
介紹
BeEF包括類似metasploit的控制臺。該控制臺可用于控制掛鉤的瀏覽器和發送模塊。
配置
BeEF控制臺是應在主要config.yml文件中啟用的擴展。
使用率
該控制臺將隨BeEF腳本自動啟動。
幫助
Core Commands
=============
Command Description
------- -----------
? Help menu
back Move back from the current context
exit Exit the console
help Help menu
irb Drops into an interactive Ruby environment
jobs Print jobs
offline List previously hooked browsers
online List online hooked browsers
quit Exit the console
review Target a particular previously hooked (offline) hooked browser
show Displays 'zombies' or 'browsers' or 'commands'. (For those who prefer the MSF way)
target Target a particular online hooked browser
掛鉤的瀏覽器
BeEF > online
Currently hooked browsers within BeEF
Id IP Browser OS
-- -- ------- --
6 10.1.1.1 C-21 Linux
BeEF > offline
Previously hooked browsers within BeEF
Id IP Browser OS
-- -- ------- --
1 10.1.1.2 FF-15 Windows XP
[...]
工作
BeEF > jobs -l
Id Job Name
-- --------
0 http_hook_server
啟動模塊
選擇目標僵尸:
BeEF > target 6
列出可用的模塊:
BeEF (10.1.1.1) [6] > commands
List command modules for this target
Id Command Status Execute Count
-- ------- ------ -------------
1 Host/Hook_Default_Browser User Notify 0
2 Host/Detect_CUPS Working 0
3 Host/Get_Clipboard Not Working 0
4 Host/Get_Registry_Keys Not Working 0
5 Host/Get_Wireless_Keys User Notify 0
[...]
選擇一個模塊:
BeEF (10.1.1.1) [6] > select 66
查看有關模塊的信息:
BeEF (10.1.1.1) [6] / Detect Google Desktop > cmdinfo
Module name: Detect Google Desktop
Module category: Host/
Module description: This module attempts to detect Google Desktop running on the default port 4664.
啟動模塊:
BeEF (10.1.1.1) [6] / Detect Google Desktop > execute
[*] Command successfully queued
[13:21:24][*] Hooked browser [id:6, ip:10.1.1.1] has been sent instructions from command module 'Detect Google Desktop'
查看回應:
BeEF (10.1.1.1) [6] / Detect Google Desktop > response
List of responses for this command module:
Id Executed Time Response Time
-- ------------- -------------
48 2012-10-15 13:18 2012-10-15 13:19:04 +0200
51 2012-10-15 13:21 2012-10-15 13:21:29 +0200
BeEF (10.1.1.1) [6] / Detect Google Desktop > response 51
Results retrieved: 2012-10-15 13:21:29 +0200
Response:
google_desktop=Not Installed
BeEF中文文檔
推薦文章: