最近幾天,一直在想,如何用單片機(jī)實(shí)現(xiàn)一次較完整的wifi攻擊。于是結(jié)合釣魚考慮是否能利用單片機(jī)成功拿到wifi的登陸密碼。
0×01 攻擊構(gòu)思
第一步,利用tpyboard v202將wifi干擾;
第二步,將v202的ssid和信道改為與受干擾wifi相同的SSID及信道;
第三步,制作釣魚頁(yè)面;
第四步,受干擾用戶極有可能去連接虛假的WIFI,當(dāng)用戶連接后,無論用戶訪問哪個(gè)網(wǎng)絡(luò)都會(huì)跳出偽裝的釣魚頁(yè)面,從而誘導(dǎo)其寫入密碼。
第五步,當(dāng)密碼寫入后,v202后嘗試驗(yàn)證密碼的正確性,如果正確將停止干擾,并將密碼通過tpyboard存入TF卡,否則繼續(xù)干擾。
0x02 搭建開發(fā)環(huán)境
1、首先你的需要TPYB oard v202和TPYBoard V102(用于接收密碼信息)開發(fā)板各一塊,tpyboard V102自帶TF卡,而且用python編程,相對(duì)來說操作較簡(jiǎn)單,且能支持存儲(chǔ)。
2、網(wǎng)上下載了一個(gè)使用esp8266 制作Deauth無線攻擊的 開源固件,是arduino開發(fā)的。 里面包含了arduino IDE、固件源碼、TPYBoard v102的源碼和串口調(diào)試工具。另外,還需要esp8266開發(fā)包。
3、下載完畢后,解壓

使用串口和TPYBoard v102進(jìn)行連接,將獲取到的WIFI密碼傳遞給v102,v102接收到正確的密碼后,進(jìn)行TF卡的存儲(chǔ),同時(shí)也記錄下攻擊日志。
4、雙擊arduino-1.8.2-windows.exe 安裝arduino IDE。(如果你已經(jīng)安裝過arduino IDE,這步可以省略)。
5、安裝完畢后,打開arduino,菜單找到 文件—》首選項(xiàng),點(diǎn)擊紅色區(qū)域進(jìn)入SDK目錄。我的路徑是:C:\Users\Sen\AppData\Local\Arduino15。

6、解壓Arduino15-2.rar,將里面的全部?jī)?nèi)容直接覆蓋C:\Users\Sen\AppData\Local\Arduino15下的文件。

0x03編譯燒寫固件及程序代碼
1、TPYBoard v102 源代碼(main.py)
import pyb
from pyb import UART
u4=UART(4,115200)
mkdir_='/sd/log.txt' #需先插入TF卡 新建log.txt
pyb.LED(2).on()
while True:
if(u4.any()>0):# 判斷串口是否有數(shù)據(jù)
_mag=''
pyb.LED(3).toggle()
f=open(mkdir_,'a')
_data=u4.readline()#讀取一行數(shù)據(jù)
_dataMsg=_data.decode('utf-8')#將字節(jié)數(shù)據(jù)轉(zhuǎn)碼成utf-8 編碼的字符串
print('_dataMsg:',_dataMsg)
#解析數(shù)據(jù)
_index_h=_dataMsg.find('tpyboardpwd')
_index_e=_dataMsg.find('*')
if _index_h>-1 and _index_e>-1 and (_index_e-_index_h)>11:
_dataMsg=_dataMsg.replace('tpyboardpwd','').replace('*','')
print('GetPwd:',_dataMsg)
_mag=_mag+'---------------attack log------------\r\n'
_mag=_mag+'SSID:'+_dataMsg.split('+')[0]+'--'+'PWD:'+_dataMsg.split('+')[1]
print('-------------------------\r\n')
pyb.LED(4).toggle()
if _mag!='':
f.write(_mag)#將獲取到的SSID和PWD 保存在日志文件中
f.close()
2、TPYBoard v202的使用
(1)解壓esp8266_wifi.rar,arduino IDE菜單欄 文件-》打開esp8266_wifi源碼包下的esp8266_deauther\esp8266_deauther.ino
(2)TPYBoard v202 使用micro USB數(shù)據(jù)線接入電腦。查看安裝的usb轉(zhuǎn)串的端口。打開電腦的設(shè)備管理器(這里是COM44)。

(3)工具-》端口,選擇COM44(根據(jù)自己的實(shí)際端口號(hào)選擇)

(4)菜單欄下面的綠色圖標(biāo)菜單區(qū),選擇上傳,開始編譯,燒寫固件

(5)查看最下方的日志區(qū)域


等待編譯完成,出現(xiàn)上圖信息(狀態(tài):變?yōu)?ldquo;上傳”)時(shí),按住FLASH的同時(shí),按一下RST按鍵松開,讓TPYBoard v202復(fù)位一下,繼續(xù)按著FLASH,出現(xiàn)下面的信息時(shí)就可以松開FLASH按鍵了。

0x04硬件的連接
代碼和程序都完成了,接下來需要將TPYBoard v102和TPYBoard v202 的串口連接起來。 連接示意圖:
連接實(shí)物圖:

0x05 測(cè)試效果
1、 用自己家的WIFI做測(cè)試,先用手機(jī)接入WIFI(Tend_01CB30)。
2、解壓XCOM V2.0.rar(或者使用其它的串口工具),解壓雙擊運(yùn)行XCOM V2.0.exe 串口助手。打開串口選擇V202所在串口(我的是COM44), 波特率改為115200 ,其余默認(rèn),打開串口,就可以看到v202打印的信息了。
ps:剛才v202燒寫完固件后會(huì)馬上自啟動(dòng),所以這里先復(fù)位一下v202,按一下RST,這樣我們就可以看到從開始到最后的整個(gè)過程了。

3、大家可以看到,v202啟動(dòng)會(huì)搜索到了很多附近的WIFI,然后它就判斷出那一個(gè)信號(hào)最強(qiáng),我這里剛好是我家的最強(qiáng),于是v202開始攻擊[Tend_01CB30] 這個(gè)WIFI,同時(shí)也會(huì)建立一個(gè)開放的[Tend_01CB30]熱點(diǎn)。攻擊時(shí),v202上的小藍(lán)燈會(huì)常亮。

4、此時(shí)手機(jī)已經(jīng)連接不到原有路由器的[Tend_01CB30]的WIFI。這時(shí),如果換成完全不知情的別人,極有可能會(huì)去手機(jī)設(shè)置里面看,怎么連接不上網(wǎng)絡(luò)了?
5、此時(shí),他只能連接到我們偽裝的WIFI上來。
6、當(dāng)其成功連接到偽裝的WIFI后,只要打開瀏覽器,輸入任何網(wǎng)址,都會(huì)自動(dòng)跳轉(zhuǎn)到虛假網(wǎng)絡(luò)密碼確認(rèn)頁(yè)面。

7、測(cè)試輸入12345678點(diǎn)擊確認(rèn),串口調(diào)試助手中可以看到獲取到的WIFI密碼,然后停止攻擊,小藍(lán)燈會(huì)熄滅。
8、同時(shí),v202會(huì)自己先去嘗試連接,來驗(yàn)證密碼的準(zhǔn)確性,如果連接成功的話,會(huì)自動(dòng)將密碼傳送給v102 進(jìn)行保存;如果連接失敗,v202會(huì)繼續(xù)進(jìn)行干擾攻擊。

9、查看一下TF卡中的log.txt文件,是否記錄了剛才破解的密碼。

0×06 擴(kuò)展
本實(shí)驗(yàn)做的有點(diǎn)粗,可以再做精細(xì)一點(diǎn),比如V202完全由V102來供電(將V102的5V、GND與V202的VIN、GND連接),這樣就是一整套設(shè)備,只需要加個(gè)電源供電就可以長(zhǎng)期放在一邊,靜等密碼了。
【免責(zé)聲明】
以上方法,僅做學(xué)術(shù)研究,請(qǐng)不要在非合法情況下實(shí)施攻擊,這種行為將會(huì)被視作非法活動(dòng)。由本軟件所造成的任何不良后果,作者將不承擔(dān)任何責(zé)任,請(qǐng)各位謹(jǐn)慎使用。
|