close

關於Wi-Fi Framework

Wi-Fi Framework是一款功能強大的WiFi安全測試工具,該工具本質上來說是一個安全框架,可以幫助廣大研究人員更輕鬆地執行Wi-Fi安全測試。除此之外,我們還可以利用Wi-Fi Framework來創建模糊測試工具,設計新的測試方案,創建PoC以驗證漏洞,自動化滲透測試或開發其他的漏洞測試工具。

該框架的主要優點是,它允許我們重用Linux的Wi-Fi功能,以便更輕鬆地實施安全測試。比如說,該框架可以幫我們連接(受保護的)Wi-Fi網絡,並在測試客戶端時為我們廣播信標。一般來說,Linux的任何Wi-Fi功能都可以重用,以更快地實施安全測試。

Wi-Fi Framework架構

下圖顯示的是Wi-Fi Framework中Wi-Fi守護進程和框架組件架構:

工具安裝

該框架可以在本地Linux系統或虛擬機環境中運行。

首先,我們需要使用下列命令將該項目源碼克隆至本地:

git clone https://github.com/domienschepers/wifi-framework.git

接下來,使用下列命令安裝工具所需的依賴組件:

apt-get updateapt-get install git make gcc python3-venv net-toolsapt-get install libdbus-1-dev libnl-3-dev libnl-genl-3-dev libnl-route-3-dev libssl-dev

安裝完成之後,使用下列命令安裝框架:

cd ../dependencies./build.shcd ../setup./pysetup.sh

Libwifi

libwifi庫作為一個git只模塊使用,需要手動安裝:

git submodule initgit submodule update

工具使用

初始化並激活Python環境:

source setup/venv/bin/activate

模擬Wi-Fi網絡接口:

./setup-hwsim.sh 4

運行工具並創建測試用例:

usage: run.py [-h] [--config CONFIG] [--binary BINARY] [--debug DEBUG] iface name

指定網絡配置信息:

cd setupln -s supplicant-wpa3-personal.conf supplicant.conf

工具使用樣例

假設我們現在需要測試客戶端是否使用全零密鑰去加密幀數據,而這種情況可能發生在密鑰重新安裝攻擊期間。那麼在Wi-Fi Framework的幫助下,我們無需重新實現接入點的所有功能,只需編寫以下測試用例即可:

class ExampleKrackZerokey(Test):name = "example-krack-zero-key"kind = Test.Authenticatordef __init__(self):super().__init__([# Replay 4-Way Handshake Message 3/4.Action( trigger=Trigger.Connected, action=Action.Function ),# Receive all frames and search for one encrypted with an all-zero key.Action( trigger=Trigger.NoTrigger, action=Action.Receive ),# When we receive such a frame, we can terminate the test.Action( trigger=Trigger.Received, action=Action.Terminate )])def resend(self, station):# Resend 4-Way Handshake Message 3/4.station.wpaspy_command("RESEND_M3 " + station.clientmac )def receive(self, station, frame):if frame[Dot11].addr2 != station.clientmac or not frame.haslayer(Dot11CCMP):return False# Check if CCMP-encrypted frame can be decrypted using an all-zero keyplaintext = decrypt_ccmp(frame.getlayer(Dot11), tk=b"\x00"*16)if plaintext is None: return False# We received a valid plaintext frame!log(STATUS,'Client encrypted a frame with an all-zero key!', color="green")return True

上面的測試用例將創建一個客戶端能夠連接的接入點。客戶端連接後,它將向客戶端發送4路握手消息。接下來,易受攻擊的客戶端將開始使用全零加密來密鑰,隨後測試用例將會自動檢測到這一情況。

我們也可以使用模擬Wi-Fi來運行上述測試用例:

./setup/setup-hwsim.sh 4source setup/venv/bin/activate./run.py wlan1 example-krack-zero-key

項目地址

https://github.com/domienschepers/wifi-framework

參考資料

https://github.com/vanhoefm/libwifi

https://www.krackattacks.com/#demo

https://dl.acm.org/doi/10.1145/3448300.3468261

https://github.com/vanhoefm/fragattacks

https://github.com/domienschepers/wifi-framework/blob/master/docs/EXAMPLES.md



精彩推薦





arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()