自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Evil-Twin框架:一個用于提升WiFi安全性的工具

開發(fā) 開發(fā)工具 開源
越來越多的設(shè)備通過無線傳輸?shù)姆绞竭B接到互聯(lián)網(wǎng),以及,大范圍可用的 WiFi 接入點為攻擊者攻擊用戶提供了很多機會。

 [[258125]]

了解一款用于對 WiFi 接入點安全進行滲透測試的工具。

越來越多的設(shè)備通過無線傳輸?shù)姆绞竭B接到互聯(lián)網(wǎng),以及,大范圍可用的 WiFi 接入點為攻擊者攻擊用戶提供了很多機會。通過欺騙用戶連接到虛假的 WiFi 接入點,攻擊者可以完全控制用戶的網(wǎng)絡(luò)連接,這將使得攻擊者可以嗅探和篡改用戶的數(shù)據(jù)包,將用戶的連接重定向到一個惡意的網(wǎng)站,并通過網(wǎng)絡(luò)發(fā)起其他的攻擊。

為了保護用戶并告訴他們?nèi)绾伪苊饩€上的危險操作,安全審計人員和安全研究員必須評估用戶的安全實踐能力,用戶常常在沒有確認(rèn)該 WiFi 接入點為安全的情況下就連接上了該網(wǎng)絡(luò),安全審計人員和研究員需要去了解這背后的原因。有很多工具都可以對 WiFi 的安全性進行審計,但是沒有一款工具可以測試大量不同的攻擊場景,也沒有能和其他工具集成得很好的工具。

Evil-Twin Framework(ETF)用于解決 WiFi 審計過程中的這些問題。審計者能夠使用 ETF 來集成多種工具并測試該 WiFi 在不同場景下的安全性。本文會介紹 ETF 的框架和功能,然后會提供一些案例來說明該如何使用這款工具。

ETF 的架構(gòu)

ETF 的框架是用 Python 寫的,因為這門開發(fā)語言的代碼非常易讀,也方便其他開發(fā)者向這個項目貢獻代碼。除此之外,很多 ETF 的庫,比如 Scapy,都是為 Python 開發(fā)的,很容易就能將它們用于 ETF。

ETF 的架構(gòu)(圖 1)分為不同的彼此交互的模塊。該框架的設(shè)置都寫在一個單獨的配置文件里。用戶可以通過 ConfigurationManager 類里的用戶界面來驗證并修改這些配置。其他模塊只能讀取這些設(shè)置并根據(jù)這些設(shè)置進行運行。

圖 1:Evil-Twin 的框架架構(gòu)

ETF 支持多種與框架交互的用戶界面,當(dāng)前的默認(rèn)界面是一個交互式控制臺界面,類似于 Metasploit 那種。正在開發(fā)用于桌面/瀏覽器使用的圖形用戶界面(GUI)和命令行界面(CLI),移動端界面也是未來的一個備選項。用戶可以使用交互式控制臺界面來修改配置文件里的設(shè)置(最終會使用 GUI)。用戶界面可以與存在于這個框架里的每個模塊進行交互。

WiFi 模塊(AirCommunicator)用于支持多種 WiFi 功能和攻擊類型。該框架確定了 Wi-Fi 通信的三個基本支柱:數(shù)據(jù)包嗅探、自定義數(shù)據(jù)包注入和創(chuàng)建接入點。三個主要的 WiFi 通信模塊 AirScanner、AirInjector,和 AirHost,分別用于數(shù)據(jù)包嗅探、數(shù)據(jù)包注入,和接入點創(chuàng)建。這三個類被封裝在主 WiFi 模塊 AirCommunicator 中,AirCommunicator 在啟動這些服務(wù)之前會先讀取這些服務(wù)的配置文件。使用這些核心功能的一個或多個就可以構(gòu)造任意類型的 WiFi 攻擊。

要使用中間人(MITM)攻擊(這是一種攻擊 WiFi 客戶端的常見手法),ETF 有一個叫做 ETFITM(Evil-Twin Framework-in-the-Middle)的集成模塊,這個模塊用于創(chuàng)建一個 web 代理,來攔截和修改經(jīng)過的 HTTP/HTTPS 數(shù)據(jù)包。

許多其他的工具也可以利用 ETF 創(chuàng)建的 MITM。通過它的可擴展性,ETF 能夠支持它們,而不必單獨地調(diào)用它們,你可以通過擴展 Spawner 類來將這些工具添加到框架里。這使得開發(fā)者和安全審計人員可以使用框架里預(yù)先配置好的參數(shù)字符來調(diào)用程序。

擴展 ETF 的另一種方法就是通過插件。有兩類插件:WiFi 插件和 MITM 插件。MITM 插件是在 MITM 代理運行時可以執(zhí)行的腳本。代理會將 HTTP(s) 請求和響應(yīng)傳遞給可以記錄和處理它們的插件。WiFi 插件遵循一個更加復(fù)雜的執(zhí)行流程,但仍然會給想?yún)⑴c開發(fā)并且使用自己插件的貢獻者提供一個相對簡單的 API。WiFi 插件還可以進一步地劃分為三類,其中每個對應(yīng)一個核心 WiFi 通信模塊。

每個核心模塊都有一些特定事件能觸發(fā)響應(yīng)的插件的執(zhí)行。舉個例子,AirScanner 有三個已定義的事件,可以對其響應(yīng)進行編程處理。事件通常對應(yīng)于服務(wù)開始運行之前的設(shè)置階段、服務(wù)正在運行時的中間執(zhí)行階段、服務(wù)完成后的卸載或清理階段。因為 Python 允許多重繼承,所以一個插件可以繼承多個插件類。

上面的圖 1 是框架架構(gòu)的摘要。從 ConfigurationManager 指出的箭頭意味著模塊會從中讀取信息,指向它的箭頭意味著模塊會寫入/修改配置。

使用 ETF 的例子

ETF 可以通過多種方式對 WiFi 的網(wǎng)絡(luò)安全或者終端用戶的 WiFi 安全意識進行滲透測試。下面的例子描述了這個框架的一些滲透測試功能,例如接入點和客戶端檢測、對使用 WPA 和 WEP 類型協(xié)議的接入點進行攻擊,和創(chuàng)建 evil twin 接入點。

這些例子是使用 ETF 和允許進行 WiFi 數(shù)據(jù)捕獲的 WiFi 卡設(shè)計的。它們也在 ETF 設(shè)置命令中使用了下面這些縮寫:

  • APS Access Point SSID
  • APB Access Point BSSID
  • APC Access Point Channel
  • CM Client MAC address

在實際的測試場景中,確保你使用了正確的信息來替換這些縮寫。

在解除認(rèn)證攻擊后捕獲 WPA 四次握手的數(shù)據(jù)包。

這個場景(圖 2)做了兩個方面的考慮:解除認(rèn)證攻擊de-authentication attack和捕獲 WPA 四次握手?jǐn)?shù)據(jù)包的可能性。這個場景從一個啟用了 WPA/WPA2 的接入點開始,這個接入點有一個已經(jīng)連上的客戶端設(shè)備(在本例中是一臺智能手機)。目的是通過常規(guī)的解除認(rèn)證攻擊(LCTT 譯注:類似于 DoS 攻擊)來讓客戶端斷開和 WiFi 的網(wǎng)絡(luò),然后在客戶端嘗試重連的時候捕獲 WPA 的握手包。重連會在斷開連接后馬上手動完成。

圖 2:在解除認(rèn)證攻擊后捕獲 WPA 握手包的場景

在這個例子中需要考慮的是 ETF 的可靠性。目的是確認(rèn)工具是否一直都能捕獲 WPA 的握手?jǐn)?shù)據(jù)包。每個工具都會用來多次復(fù)現(xiàn)這個場景,以此來檢查它們在捕獲 WPA 握手?jǐn)?shù)據(jù)包時的可靠性。

使用 ETF 來捕獲 WPA 握手?jǐn)?shù)據(jù)包的方法不止一種。一種方法是使用 AirScanner 和 AirInjector 兩個模塊的組合;另一種方法是只使用 AirInjector。下面這個場景是使用了兩個模塊的組合。

ETF 啟用了 AirScanner 模塊并分析 IEEE 802.11 數(shù)據(jù)幀來發(fā)現(xiàn) WPA 握手包。然后 AirInjecto 就可以使用解除認(rèn)證攻擊來強制客戶端斷開連接,以進行重連。必須在 ETF 上執(zhí)行下面這些步驟才能完成上面的目標(biāo):

  1. 進入 AirScanner 配置模式:config airscanner
  2. 設(shè)置 AirScanner 不跳信道:config airscanner
  3. 設(shè)置信道以嗅探經(jīng)過 WiFi 接入點信道的數(shù)據(jù)(APC):set fixed_sniffing_channel = <APC>
  4. 使用 CredentialSniffer 插件來啟動 AirScanner 模塊:start airscanner with credentialsniffer
  5. 從已嗅探的接入點列表中添加目標(biāo)接入點的 BSSID(APS):add aps where ssid = <APS>
  6. 啟用 AirInjector 模塊,在默認(rèn)情況下,它會啟用解除認(rèn)證攻擊:start airinjector

這些簡單的命令設(shè)置能讓 ETF 在每次測試時執(zhí)行成功且有效的解除認(rèn)證攻擊。ETF 也能在每次測試的時候捕獲 WPA 的握手?jǐn)?shù)據(jù)包。下面的代碼能讓我們看到 ETF 成功的執(zhí)行情況。

  1. ███████╗████████╗███████╗
  2. ██╔════╝╚══██╔══╝██╔════╝
  3. █████╗     ██║   █████╗  
  4. ██╔══╝     ██║   ██╔══╝  
  5. ███████╗   ██║   ██║    
  6. ╚══════╝   ╚═╝   ╚═╝    
  7.                                        
  8.  
  9. [+] Do you want to load an older session? [Y/n]: n
  10. [+] Creating new temporary session on 02/08/2018
  11. [+] Enter the desired session name:
  12. ETF[etf/aircommunicator/]::> config airscanner
  13. ETF[etf/aircommunicator/airscanner]::> listargs
  14.   sniffing_interface =               wlan1; (var)
  15.               probes =                True; (var)
  16.              beacons =                True; (var)
  17.         hop_channels =               false; (var)
  18. fixed_sniffing_channel =                  11; (var)
  19. ETF[etf/aircommunicator/airscanner]::> start airscanner with
  20. arpreplayer        caffelatte         credentialsniffer  packetlogger       selfishwifi        
  21. ETF[etf/aircommunicator/airscanner]::> start airscanner with credentialsniffer
  22. [+] Successfully added credentialsniffer plugin.
  23. [+] Starting packet sniffer on interface 'wlan1'
  24. [+] Set fixed channel to 11
  25. ETF[etf/aircommunicator/airscanner]::> add aps where ssid = CrackWPA
  26. ETF[etf/aircommunicator/airscanner]::> start airinjector
  27. ETF[etf/aircommunicator/airscanner]::> [+] Starting deauthentication attack
  28.                     - 1000 bursts of 1 packets
  29.                     - 1 different packets
  30. [+] Injection attacks finished executing.
  31. [+] Starting post injection methods
  32. [+] Post injection methods finished
  33. [+] WPA Handshake found for client '70:3e:ac:bb:78:64' and network 'CrackWPA'

使用 ARP 重放攻擊并破解 WEP 無線網(wǎng)絡(luò)

下面這個場景(圖 3)將關(guān)注地址解析協(xié)議(ARP)重放攻擊的效率和捕獲包含初始化向量(IVs)的 WEP 數(shù)據(jù)包的速度。相同的網(wǎng)絡(luò)可能需要破解不同數(shù)量的捕獲的 IVs,所以這個場景的 IVs 上限是 50000。如果這個網(wǎng)絡(luò)在首次測試期間,還未捕獲到 50000 IVs 就崩潰了,那么實際捕獲到的 IVs 數(shù)量會成為這個網(wǎng)絡(luò)在接下來的測試?yán)锏男碌纳舷?。我們使?aircrack-ng 對數(shù)據(jù)包進行破解。

測試場景從一個使用 WEP 協(xié)議進行加密的 WiFi 接入點和一臺知道其密鑰的離線客戶端設(shè)備開始 —— 為了測試方便,密鑰使用了 12345,但它可以是更長且更復(fù)雜的密鑰。一旦客戶端連接到了 WEP 接入點,它會發(fā)送一個不必要的 ARP 數(shù)據(jù)包;這是要捕獲和重放的數(shù)據(jù)包。一旦被捕獲的包含 IVs 的數(shù)據(jù)包數(shù)量達到了設(shè)置的上限,測試就結(jié)束了。

圖 3:在進行解除認(rèn)證攻擊后捕獲 WPA 握手包的場景

ETF 使用 Python 的 Scapy 庫來進行包嗅探和包注入。為了最大限度地解決 Scapy 里的已知的性能問題,ETF 微調(diào)了一些低級庫,來大大加快包注入的速度。對于這個特定的場景,ETF 為了更有效率地嗅探,使用了 tcpdump 作為后臺進程而不是 Scapy,Scapy 用于識別加密的 ARP 數(shù)據(jù)包。

這個場景需要在 ETF 上執(zhí)行下面這些命令和操作:

  1. 進入 AirScanner 設(shè)置模式:config airscanner
  2. 設(shè)置 AirScanner 不跳信道:set hop_channels = false
  3. 設(shè)置信道以嗅探經(jīng)過接入點信道的數(shù)據(jù)(APC):set fixed_sniffing_channel = <APC>
  4. 進入 ARPReplayer 插件設(shè)置模式:config arpreplayer
  5. 設(shè)置 WEP 網(wǎng)絡(luò)目標(biāo)接入點的 BSSID(APB):set target_ap_bssid <APB>
  6. 使用 ARPReplayer 插件啟動 AirScanner 模塊:start airscanner with arpreplayer

在執(zhí)行完這些命令后,ETF 會正確地識別加密的 ARP 數(shù)據(jù)包,然后成功執(zhí)行 ARP 重放攻擊,以此破壞這個網(wǎng)絡(luò)。

使用一款全能型蜜罐

圖 4 中的場景使用相同的 SSID 創(chuàng)建了多個接入點,對于那些可以探測到但是無法接入的 WiFi 網(wǎng)絡(luò),這個技術(shù)可以發(fā)現(xiàn)網(wǎng)絡(luò)的加密類型。通過啟動具有所有安全設(shè)置的多個接入點,客戶端會自動連接和本地緩存的接入點信息相匹配的接入點。

圖 4:在解除認(rèn)證攻擊后捕獲 WPA 握手包數(shù)據(jù)。

使用 ETF,可以去設(shè)置 hostapd 配置文件,然后在后臺啟動該程序。hostapd 支持在一張無線網(wǎng)卡上通過設(shè)置虛擬接口開啟多個接入點,并且因為它支持所有類型的安全設(shè)置,因此可以設(shè)置完整的全能蜜罐。對于使用 WEP 和 WPA(2)-PSK 的網(wǎng)絡(luò),使用默認(rèn)密碼,和對于使用 WPA(2)-EAP 的網(wǎng)絡(luò),配置“全部接受”策略。

對于這個場景,必須在 ETF 上執(zhí)行下面的命令和操作:

  1. 進入 APLauncher 設(shè)置模式:config aplauncher
  2. 設(shè)置目標(biāo)接入點的 SSID(APS):set ssid = <APS>
  3. 設(shè)置 APLauncher 為全部接收的蜜罐:set catch_all_honeypot = true
  4. 啟動 AirHost 模塊:start airhost

使用這些命令,ETF 可以啟動一個包含所有類型安全配置的完整全能蜜罐。ETF 同樣能自動啟動 DHCP 和 DNS 服務(wù)器,從而讓客戶端能與互聯(lián)網(wǎng)保持連接。ETF 提供了一個更好、更快、更完整的解決方案來創(chuàng)建全能蜜罐。下面的代碼能夠看到 ETF 的成功執(zhí)行。

  1. ███████╗████████╗███████╗
  2. ██╔════╝╚══██╔══╝██╔════╝
  3. █████╗     ██║   █████╗  
  4. ██╔══╝     ██║   ██╔══╝  
  5. ███████╗   ██║   ██║    
  6. ╚══════╝   ╚═╝   ╚═╝    
  7.                                        
  8.  
  9. [+] Do you want to load an older session? [Y/n]: n
  10. [+] Creating ne´,cxzw temporary session on 03/08/2018
  11. [+] Enter the desired session name:
  12. ETF[etf/aircommunicator/]::> config aplauncher
  13. ETF[etf/aircommunicator/airhost/aplauncher]::> setconf ssid CatchMe
  14. ssid = CatchMe
  15. ETF[etf/aircommunicator/airhost/aplauncher]::> setconf catch_all_honeypot true
  16. catch_all_honeypot = true
  17. ETF[etf/aircommunicator/airhost/aplauncher]::> start airhost
  18. [+] Killing already started processes and restarting network services
  19. [+] Stopping dnsmasq and hostapd services
  20. [+] Access Point stopped...
  21. [+] Running airhost plugins pre_start
  22. [+] Starting hostapd background process
  23. [+] Starting dnsmasq service
  24. [+] Running airhost plugins post_start
  25. [+] Access Point launched successfully
  26. [+] Starting dnsmasq service

結(jié)論和以后的工作

這些場景使用常見和眾所周知的攻擊方式來幫助驗證 ETF 測試 WIFI 網(wǎng)絡(luò)和客戶端的能力。這個結(jié)果同樣證明了該框架的架構(gòu)能在平臺現(xiàn)有功能的優(yōu)勢上開發(fā)新的攻擊向量和功能。這會加快新的 WiFi 滲透測試工具的開發(fā),因為很多的代碼已經(jīng)寫好了。除此之外,將 WiFi 技術(shù)相關(guān)的東西都集成到一個單獨的工具里,會使 WiFi 滲透測試更加簡單高效。

ETF 的目標(biāo)不是取代現(xiàn)有的工具,而是為它們提供補充,并為安全審計人員在進行 WiFi 滲透測試和提升用戶安全意識時,提供一個更好的選擇。

ETF 是 GitHub 上的一個開源項目,歡迎社區(qū)為它的開發(fā)做出貢獻。下面是一些您可以提供幫助的方法。

當(dāng)前 WiFi 滲透測試的一個限制是無法在測試期間記錄重要的事件。這使得報告已經(jīng)識別到的漏洞更加困難且準(zhǔn)確性更低。這個框架可以實現(xiàn)一個記錄器,每個類都可以來訪問它并創(chuàng)建一個滲透測試會話報告。

ETF 工具的功能涵蓋了 WiFi 滲透測試的方方面面。一方面,它讓 WiFi 目標(biāo)偵察、漏洞挖掘和攻擊這些階段變得更加容易。另一方面,它沒有提供一個便于提交報告的功能。增加了會話的概念和會話報告的功能,比如在一個會話期間記錄重要的事件,會極大地增加這個工具對于真實滲透測試場景的價值。

另一個有價值的貢獻是擴展該框架來促進 WiFi 模糊測試。IEEE 802.11 協(xié)議非常的復(fù)雜,考慮到它在客戶端和接入點兩方面都會有多種實現(xiàn)方式??梢约僭O(shè)這些實現(xiàn)都包含 bug 甚至是安全漏洞。這些 bug 可以通過對 IEEE 802.11 協(xié)議的數(shù)據(jù)幀進行模糊測試來進行發(fā)現(xiàn)。因為 Scapy 允許自定義的數(shù)據(jù)包創(chuàng)建和數(shù)據(jù)包注入,可以通過它實現(xiàn)一個模糊測試器。

責(zé)任編輯:龐桂玉 來源: Linux中國
相關(guān)推薦

2011-08-01 09:20:16

2020-06-09 21:07:56

OT安全網(wǎng)絡(luò)安全攻擊

2015-12-10 14:41:15

2023-11-12 22:29:13

2017-06-12 08:47:14

ESXi安全vSphere

2021-04-28 15:16:04

數(shù)據(jù)安全/SOC/安全

2010-09-06 10:47:56

2012-02-29 09:13:08

ibmdw

2021-10-25 14:40:43

Web工具Linux

2015-03-25 10:32:41

2022-12-23 12:50:42

2019-11-27 12:01:14

安全應(yīng)用程序工具

2023-10-12 22:21:40

2022-06-14 23:34:10

Linux安全服務(wù)器

2015-07-17 13:16:06

2010-03-02 13:45:28

2016-11-15 11:20:39

2018-02-05 08:26:11

大數(shù)據(jù)云存儲安全性

2020-08-12 11:35:04

物聯(lián)網(wǎng)安全機器學(xué)習(xí)物聯(lián)網(wǎng)應(yīng)用

2023-09-26 08:21:30

點贊
收藏

51CTO技術(shù)棧公眾號