0x0環境
主機A win10:10.51.20.60(wifi)
主機A中的虛擬機器kali(攻擊者):192.168.110.129(NAT)
主機A中的虛擬機器win2003(受害者):192.168.110.132(NAT)
0x1 配置
0x11 beef配置
Beef的配置檔案在 /usr/share/beef-xss/config.yaml
Host:kali IP
Port:beef監聽埠預設3000
public:主機A(接入外網的電腦IP)
public_port:主機A中空閒的埠,我設定的是20000
0x12 虛擬機器埠對映
修改虛擬機器閘道器的埠對映,簡單來說,就是設定後,所有訪問主機A的20000埠的請求都會被轉發到192.168.110.129的3000埠,也就是kali的3000埠上
虛擬網路編輯器在VM編輯欄
0x2 模擬攻擊
0x21 kali
啟動beef
Beef彈出瀏覽器開啟beef的後臺管理,這裡注意,原本應該是開啟上圖中的地址,但出了點問題(最後總結會說),所以我們要把ip改成kali的ip,也就是192.168.110.129:3000/ui/authentication
使用者名稱/密碼:beef/beef
這就是beef的介面,複製basic demo link:http://192.168.110.129:3000/demos/basic.html
0x22 win2003,win10
地址轉換:
複製的地址是:http://192.168.110.129:3000/demos/basic.html
受害者Win2003輸入的地址應該是埠對映後的地址:10.51.20.60:20000/demos/basic.html
成功開啟,此時應該是成功了才對(。。。。。。)
檢視kali中的beef管理介面,並沒有win2003的資訊(慌了。。。)
此時,我試了下在主機A中開啟hook地址,成功了
再看beef,有了主機A的資訊了,hook成功了(摸不著頭腦???)
嘗試利用social engineering(社會工程學模組)騙取facebook密碼
再開啟主機A上的頁面,成功了
輸入hello後,再回到kali看攻擊效果
0x3 總結,思考
0x31關於beef配置的host
根據參考文章,一開始beef配置的host我是沒有改動,也就是預設的0.0.0.0
但出現瞭如下圖的問題,成功開啟了demo,但是demo上的js一直不成功,原因是無法連線(Error connection)
後來把host改成了kali的ip,js連線上了,但是beef的管理頁面,也就是127.0.0.1:3000/ui/panel卻無法開啟了,試了下192.168.110.129:3000/ui/authentication倒是成功了,但是這其中的原因我還沒明白
0x32 win2003的失敗
0x22中說到,win2003成功開啟了demo,但是beef這沒有收到資訊
換成主機A嘗試成功後,我又轉回來研究2003失敗的原因,因為只有ie,而且是舊版本的,沒辦法F12看具體的請求狀況,我下了個47版本的火狐裝上後,再次嘗試訪問demo,這次beef成功收到資訊了,也就是2003被成功hook住了(我又摸不著頭腦了???)
Beef頁面
0x33 關於beef配置的public
因為此次用的是wifi,所以beef配置中的public填的是wlan的ip地址,如果是用網線,
應該要改成192.168.110.1
0x34 實際環境攻擊的想法
這次是虛擬機器網路模擬攻擊,如果在實際情況下
根據參考文件A
需要一臺能訪問(有獨立ip)的主機
伺服器裝好beef後,要修改後臺管理頁面的URL和使用者名稱密碼,因為你能登陸管理頁面,別人也能登陸
還要修改host為主機的獨立ip,port自設要大於1024
Public和public_port不用設定
以下來自文件A
### 指定某個網段,只有在這個網段的瀏覽器才能被hook permitted_hooking_subnet: "0.0.0.0/0" ### 指定某個網段,只有在這個網段的瀏覽器才能訪問管理UI permitted_ui_subnet: "0.0.0.0/0" ### 上面這兩項都是可以被繞過的,只要使用X-Forwarded-For首部繞過,一般不需要設定 ### 設定beef伺服器的主機, 如果有自己的域名, 那麼可以設定自己的域名, 沒有就使用預設 host: "0.0.0.0" ### 設定beef伺服器監聽的埠, 可以自己定一個,比如8080, 記得埠號需要大於1024 port: "3000" ### 受害瀏覽器輪詢beef主機的時間, 預設為1秒,可以設定為更低。 xhr_poll_timeout: 1000 #public: "" # public hostname/IP address #public_port: "" # experimental ### 這是讓BeEF執行在一個反向代理或者NAT環境下才需要設定的。 ### 管理頁面的URI, 預設是/ui, 建議修改,這樣就不會讓別人找到你的管理頁面 web_ui_basepath: "/ui" ### hook_file 的名稱, 建議修改, 可以修改為jquery.js之類的來提升隱蔽性 hook_file: "/hook.js" ### 管理頁面登入的使用者名稱和密碼, 這個一定要改,兩個都改是最好的 credentials: user: "beef" passwd: "beef"
0x4參考文件
A:https://www.freebuf.com/articles/web/175755.html
B:https://www.cnblogs.com/heijuelou/p/7804771.html
兩篇文章的作者都有對beef的進一步研究,可以看看