企業級無線滲透與無線資料淺析

wyzsk發表於2020-08-19

icecolor · 2016/06/21 10:03

author: icecolor

0x00 企業級無線滲透


注:
這篇文章裡我詳細說一下針對企業802.1X的安全解析,還有一些針對資料協議的分析方法和淺析關於個人滲透太多太囉嗦我就不寫了,有機會在說。
因為我不想一部分一部分的寫,所以索性就把三個內容寫在了一起,如果大家覺得那裡有問題,歡迎指正與交流。

一.關於網路卡

工欲善其事,必先利其器。在無線滲透或者是無線攻擊中,並不是任何支援linux的網路卡都支援無線工具的。推薦過一款網路卡 :‘AWUS036H’我用過這款網路卡,是RT8187晶片的。確實不錯,完美的支援工具。當然,也可以選用RTL3070晶片。
其實除了不相容工具外,選好網路卡還有個很重要的因素就是質量問題,質量不好的可能不穩定,造成斷開,或者是藍屏,嗅探抓包時出現丟包等狀況。

二.企業級無線滲透

網際網路企業裡只要有一定規模的公司,一般無線架設都會選用Radius。WPA+Radius應該算是標配了。

p1

這是一個簡單的Radius的工作原理圖,我畫圖畫不好,就弄個簡單的,複雜的也不一定有人看,能表示就行了。

在個人無線網設定裡面會有一些讓我們選擇認證機制和加密方式(WPA-WPA2 TKIP-AES CCMP)等 。在802.11X中也有一些認證機制,最多使用的是基於TLS的身份驗證。TLS是出自IETF組織。就跟802.11出自IEEE一個道理。現在有三種標準被開發並被部署到了無線網中。

  1. EAP-TLS : EAP傳輸層安全
  2. EAP-TTLS : 隧道傳輸層安全
  3. EAP-PEAP : 受保護的PEAP

EAP是一個802.1x認證的協議。EAP給802.1X提供了一個驗證框架,是一個可擴充套件性協議,支援多種驗證方式。

EAP在企業WPA-802.11X的認證方式(果然還是老外的圖易懂):

p2

802.1X協議是在第二層,上一層是EAP。EAP上一層是各種認證方法,最底層是802.11(圖不畫了。請君腦補。) 整個EAP通訊,包括EAP的協商都是通過TLS隧道執行。

上面剛剛列舉了三種現在常用的機制,其實認證機制有好多,什麼Leap,eap-MD5等等....最火的就是這三種。

因為本身EAP是沒有保護的,它的EAP-Identity明文顯示,EAP-Success等資訊被仿冒或抓取:

p3

(1) EAP-TLS:它是一個雙向認證的機制,Server與client之間完成的認證。它哪裡都好,就是兩個缺點致命:(1)是傳輸使用者名稱用的是明文可以抓到(2)是他要求企業部署PKI,因為它基於這個證照體系。但是PKI太龐大太複雜了。所以....

(2) EAP-TTLS&&PEAP:因為上面的那個缺陷,所以有了EAP-TTLS,這兩個可以放在一起說,就像是WPA/WPA2 相似度很高。它們也要證照,不過是要Server端的而不是Client的。這兩個相比,還是peap從各個方面來說方便,而且相容好。所以企業一般都是PEAP。

EAP需要進行保護,EAP協商就在安全隧道(TLS)內部來做,保證所有通訊的資料安全性。那麼它在內部也會選擇一些認證來:【EAP-MS-CHAPv2】【EAP-GTC】

這是WPA/WPA2允許的兩個PEAP子型別。企業使用最多的就是第一種域架構【EAP-MS-CHAPv2】。說了這麼多,可能公司企業無線部署是這樣情況的能明白,沒遇到種架構的可能比較難腦補。我給幾張圖:

p4

p5

就是這樣的,一般情況下,用你的域賬號登陸進去,就可以連線你公司的無線網路了。

關於MSCHAPV2

其實在MSCHAPV2之前是有個MSCHAPV1版本的,是因為前者安全性的加密和認證都比後者好而把它取代。

在PEAP-MSCHAPV2認證流程中呢,會有一些Server與client的互動,這裡麵包含了EAP-Respons/Identitye和challenge字串。在PEAP的保護下,因為它們的認證是在內部TLS隧道里,所以我們很難直接對MSCHAPV2做什麼手腳,但是MSCHAPV2爆出了漏洞可被暴力破解。所以我們就可以對它進行fake AP從而取得它們的hash。

p6

如果沒有驗證伺服器的TLS證照.那麼通過模擬的AP,攻擊者就可以誘騙客戶連線到惡意接入點,並獲得客戶的內部認證。很遺憾,上面已經說過了pki的問題。就這樣,黑客就進入到了你的企業域。具體的攻擊方式呢,就是利用 hostapd-wpe這個工具。它替代了freeradius-wpe.

Github:github.com/OpenSecurit…

支援EAP的型別:

  1. EAP-FAST/MSCHAPv2
  2. PEAP/MSCHAPv2
  3. EAP-TTLS/MSCHAPv2
  4. EAP-TTLS/MSCHAP
  5. EAP-TTLS/CHAP
  6. EAP-TTLS/PAP

當我們建立偽AP的同時,會產生兩個相同的SSID。如果我們是指定目標攻擊,而我們我目標已經連上了正常的無線網路,那我們可以對此SSID進行Deauth攻擊,使其強制斷線重連到我們的Fake AP。

命令: aireplay-ng -0 10 –a <ap mac> -c <my mac> mon0

當目標連線到我們的Fake AP 上時:

p7

這是抓取到的hash。你所有抓取的hash都在 hostapd目錄下的一個名為host-wpe.log的檔案內。

當我們抓到這些hash以後,需要破解它,可以用asleap破解密碼。Kali內建了好像。也可以自己去github。

p8

可能有的人覺得,一個暴力破解,關鍵還是要看字典,密碼設定的複雜就沒有關係。但是大家有沒有想過,一個無線架構在radius的企業,我假設它有2000人。2000人中我保守一點估計抓了1000的人hash。難道我連1000/5的概率都沒有麼?更何況無線其他攻擊也很多,拿到幾個域賬號根本沒難度。組合攻擊的手法還是不容小覷的。

EAP-MD5

還有一種認證是EAP—MD5,這個可能現在見不到了,不過應該也有吧,凡事不絕對,遇到了就簡單提一下,它的認證我就不說了,其實也沒什麼可說的,沒安全性可言,資料不受ssl保護,只有個MD5,只提供了最低階加密,MD5hash能被字典破掉,而且不支援金鑰生成,所以就根本不適合企業加密。我也不知道這是誰想出來的,可能開發這個加密的時候還沒無線安全呢吧。抓包就能抓出來。

p9

這是一個在連線了EAP-MD5認證的AP。通過抓包我們直接可以看到了它的challenge. 我們把他們通訊的整個過程抓下來。就像WPA/WPA2的握手包一樣。捕獲資料包之後,有一個專門針對EAP-MD5的破解工具叫做:eapmd5Pass。

p10

使用方法也簡單:

eapmd5pass -r  <握手包檔名>  -w <字典>
複製程式碼

LEAP

Cisco的東西。叫輕量級EAP,特點也是資料不受SSL保護,用的是MS-CHAPV1,也就是我上面說的那個第一個版本。這就更別說了,還不如個WEP,03年就能黑了。

EAP-FAST

LEAP的升級版,有個受保護的訪問憑證(PAC)在TLS端驗證,說也是有漏洞,但是我對這個加密接觸不是太多,也沒遇到過,可能見識短吧,大家有遇到的可以交流交流,但是估計也沒啥價值。

LEAP的破解方法也是捕獲四次握手,然後暴力破解。具體方法見上面都一個道理。簡單的東西不多說.

針對一些高複雜的密碼呢,我們可以去試試John the Ripper。 也叫JTR,也不錯。支援的演算法也多:

github.com/magnumrippe…

在我們針對一個未知的不瞭解的企業熱點進行滲透時,我們需要事先清楚它是採用什麼加密,我們可以通過wireshark過濾一下型別:

p11

也算個小技巧,受用。

順便再貼一個MDK3關於802.1X的攻擊方法。

#!bash
mdk3 mon0 x  
    0 - EAPOL Start packet flooding   #EAPOL格式的報文洪水攻擊
        -n <ssid>               
        -t <bssid>        #目標客戶端的mac地址               
        -w <WPA type>
           Set WPA type (1: WPA, 2: WPA2/RSN; default: WPA)
        -u <unicast cipher>
           Set unicast cipher type (1: TKIP, 2: CCMP; default: TKIP)
        -m <multicast cipher>
           Set multicast cipher type (1: TKIP, 2: CCMP; default: TKIP)
        -s <pps>      #速率,預設400               
    1 - EAPOL Logoff test       #登出認證攻擊
        -t <bssid>       #目標客戶端的mac地址             
        -c <bssid>       #目標ap的合法客戶端mac               
        -s <pps>         #速率,預設400  
複製程式碼

MDK3 X 1 -t <目標mac地址> -c <客戶端mac地址>

p12

再推薦個工具吧:3vilTiwnAttacker

老外寫的一款做無線劫持,嗅探為一體的工具。新出的,覺得不錯大家可以試試。

github.com/joridos/3vi… 裡面附帶演示視訊

其實呢,我覺得吧,大家如果是真想研究的話呢,不妨去自己下載個FreeRadius去研究下。

freeradius.org/

買個路由器,一般裡面都有設定Radius的選項,沒用的也可以刷個韌體。雖說安裝環節有點慢,但是真能學到很多東西,我本來是想把每一步涉及到Radius的設定和配置檔案說一下的,無奈學校上網客戶端的限制我安不了路由器,悲催了,以後再說吧。

還有一個關於企業wifi的backdoor,worm的一個思路,我放個pdf大家有興趣的看下:

www.securitybyte.org/resources/2…

關於防禦策略

前些日子我看了一篇文章: drops.wooyun.org/wireless/15…

很巧合的是,這個作者是我去年暑假實習時候的同事。ID換了,不過給了微博,微博ID是沒換的。

他在裡面提出了關於證照機制的缺陷。確實如此,但是這個東西做起來是個繁瑣的工程。就算解決了這個,也會有別的攻擊可以破壞到無線網路。不如我們去開發一些策略去全面保護無線網路。其實我也是近期才想到了一些,我只把簡單的想法說一下,還並沒有什麼實體化的東西做出來,有興趣的我們們也可以聊聊。

1.因為無線網路的特殊性,我們去真正檢測一個攻擊行為是否真實存在時,多少會有一些誤差。簡單例子:

p13

這個客戶端對這個 AP發起了Deauth 攻擊,那我該將它判定為洪水還是捕獲握手包?

因為Deauth包是使其AP斷線重連捕獲資料的。一個是DOS攻擊,一個是密碼威脅。還有就是,我如果輸錯了幾次密碼是不是也會報警?

所以這些都是問題,這個引數很難去設定。我曾經想過去計算他們之間正常差值然後把精確度提到最高,但是還是覺得不夠好,我只能從資料變化和流量方面去做,因為後面它是離線攻擊。

還有,企業問題一般員工建個私人熱點,一旦被攻破,那也是很嚴重的一件事,所以這方面的意識還是要去培養。

2.還有一種就是針對偽AP的這種。

p14

如上圖,我們可以用一些mac地址的策略去識別這些‘fake AP’。

有款工具叫做“Airdrop-ng”它開始是個‘Deauth’工具,但是後來被用於做了IPS。真應了那句話:‘工具是把雙刃劍,看你怎麼使用它.’

Airdrop的玩法很多,也能有蜜罐的效果哦。具體可以參照:

github.com/aircrack-ng…

功能差不多就是一個黑白名單的機制,根據自己的要求可以寫一些規則。

有個老外寫了個IDS,不過針對個人的地方比較多,但也可以借鑑下。

github.com/SYWorks/wai…

這哥們腦洞挺大的,以前寫過一個針對WPA無client的破解指令碼。當然了,還是跟條件有關係的東西,但是人家能想到也確實比我們們強,不服也是不行的。

我心裡也是有一些針對其他攻擊的規則但不想說了,因為還需要完善,不過我覺得應該挺有用,等真正沒問題的時候再發吧。

0x01 無線資料分析


說一些資料分析吧,802.11 有好幾個標準,像什麼802.11g 802.11n 等等之類的,不同的標準對應著不同的頻道。分析資料肯定是避免不了的,況且無線就是協議的東西。 我就簡單說一下常見的,時常用到的。就算你不分析,起碼遇到了能看懂不是。

802.11資料包有三種型別。

  1. 管理資料包:認證:authentication 關聯:association 訊號:beacon
  2. 控制包:是一些請求用的基本上
  3. 資料包:這裡面是一些有用的,通訊資料什麼的。

也許有人聽過有個叫beacon包的東西,其實最重要的東西也就是這個,beacon裡面包含了一些AP功能、資訊網路名稱、配置、安全資訊等等東西。所以MDK3裡面也有個模式叫做Beacon flood的模式。

這不是完整的資料,只是其中一部分,它的頭部的‘type’定義為beacon。它是作為一個廣播資料包由wap傳送。

p15

這不是全部的,簡單點我們可以看出的資訊有:它的頭部給它定義的型別為:Beacon. 裝置資訊是:Huawei. MAC地址之類的。下面可以看出SSID的名稱。用的802.11B協議。工作11通道。

也可以通過分析得知AP與站點是否加密一致:

先看下 Authentiction資料中的 Authentiction Algorithm:open System(0)數值是否為0 ,則說明並非Shared加密模式,而是Open加密或WPA加密。和下面的Beacon資料中的數值是否為(1)來判定是否啟用加密。AP與S他的認證一致。

p16

p17

當然加密還有別的。只舉一例了。

還有就是關於DOS攻擊的分析,這個更簡單了,DOS攻擊很多,什麼beacon flood Authentication DoS Deauthentication/Disassociation 等等。。 就拿Authentication Flood 舉個例子吧。

p18

從type型別和請求可以看出是什麼樣的攻擊型別(Authentiction)

  • Destination address:被攻擊的AP MAC
  • Source address:源MAC (也可能是偽造的client Mac)

其他型別的攻擊也大體差不多,稍有出入相信大家也能辨別。

還有就是針對於802.11 無線通道和頻率的

通道中心頻率(MHZ)
12412
22417
32422
42427
52432
62437
72442
82447
92452
102457
112462
122467
132472

p19

這就是隻顯示10通道的資料。

其實無線資料裡面頭疼的也就是它的封包結構,控制幀、管理幀、資料幀。全都弄懂真心不容易。我現在也還在學習中,如果是簡單分析是用不太多這些東西的。我給大家提供一些802.11的type與subtype型別。方便大家對照

p30

還有一些wireshark的過濾引數:

p20

這個不全,老外整理了一篇 集 過濾引數、802.11模型和資料值解釋為一體的pdf:

www.willhackforsushi.com/papers/8021… 我覺得超級牛B,新手看也容易懂。

如果大家想分析指定的AP包的話,可以

p21

我們也可以分析下握手包,下面以Wpa為例,

p22

因為WPA-psk (個人版)在STA和ap建立資料後使用了EAPOL協議處理使用者登入認證。然後由四次握手組成。支援WPA的AP工作時候呢,如果客戶端裡面有Radius伺服器的話就用802.1X認證。要沒有就用psk的方式認證。上面是第四次握手中抓到的資料,別的都好懂,這個MIC我說一下,這個值是最後握手成功的一個重點。

在認證過程中,SSID和password使用特定的演算法產生這個PSK。 那麼客戶端接收到AP發來的資訊後也會用這個演算法產生PSK。然後這兩部分分別用演算法進行認證,最後會提取到一個MIC KEY 。STA和AP的MIC KEY 如果相等,他們就成功,如果不等就失敗。

基本上這些都是一些常用的或者是重點。,但還有好多沒寫到。因為學校的網路環境不支援太多。如果你正好用到用也可私我,我可以把我知道的全部free。寫的有點驢脣不對馬嘴.因為802.11協議的東西太多太繁瑣.我也有點抓不住重點了.對不住各位了。

再延伸一點知識,關於 802.11 fuzzing 的東西。

現在Fuzzer是很流行的一種挖掘漏洞手段,不管是在web還是其他安全,fuzz現在都很熱,但是無線fuzz以前火過,最近好像沒啥動靜了。資料更是少之又少。簡單提一下。

借老外的一張圖吧:

p23

p24

老外這張圖表示的是一個底層。它可能表示的意思就是一個溢位fuzz。

p31

分別是型別,長度,和資訊值,OCtets 定義了長度和Element ID為1(bit) 我們都知道FUZZ的原理就是嘗試協議各種奇葩資料看看協議有沒有考慮到,我可以給它定義一個自定值,如果客戶端沒有處理的話就會出現核心破壞類的漏洞。

所以,在802.11裡面最常見的Fuzz就從SSID入手。例如這個,你可以針對它的Bytes自己去設定fuzz

其實跟溢位的解釋差不多吧。其實最初的辦法也就是投放大量的ssid,如果超出了其長度,來實現崩潰。等還有一些其他的CVE,是跟無線驅動程式有關的。

有人開發過一個關於802.11堆疊的fuzz指令碼叫wifuzz。

github.com/0x90/wifuzz

它利用的Scapy包生成的。所以環境要下載Scapy

先要用airmon-ng把網路卡監聽一下。

p25

下面的引數對應著攻擊型別。

#!bash
$ sudo python wifuzz.py -s admin auth
Wed Sep 28 10:38:36 2011 {MAIN} Target SSID: admin; Interface: wlan0; Ping timeout: 60;PCAP directory: /dev/shm; Test mode? False; Fuzzer(s): auth;
Wed Sep 28 10:38:36 2011 {WIFI} Waiting for a beacon from SSID=[admin]
Wed Sep 28 10:38:36 2011 {WIFI} Beacon from SSID=[admin] found (MAC=[00:aa:bb:cc:dd:ee])
Wed Sep 28 10:38:36 2011 {WIFI} Starting fuzz 'auth'
Wed Sep 28 10:38:36 2011 {WIFI} [R00001] Sending packets 1-100
Wed Sep 28 10:38:50 2011 {WIFI} [R00001] Checking if the AP is still up...
Wed Sep 28 10:38:50 2011 {WIFI} Waiting for a beacon from SSID=[admin]
Wed Sep 28 10:38:50 2011 {WIFI} Beacon from SSID=[admin] found (MAC=[00:aa:bb:cc:dd:ee])
Wed Sep 28 10:38:50 2011 {WIFI} [R00002] Sending packets 101-200
Wed Sep 28 10:39:04 2011 {WIFI} [R00002] Checking if the AP is still up...
Wed Sep 28 10:39:04 2011 {WIFI} Waiting for a beacon from SSID=[admin]
Wed Sep 28 10:39:04 2011 {WIFI} Beacon from SSID=[admin] found (MAC=[00:aa:bb:cc:dd:ee])
Wed Sep 28 10:39:04 2011 {WIFI} [R00003] Sending packets 201-300
Wed Sep 28 10:39:18 2011 {WIFI} [R00003] Checking if the AP is still up...
Wed Sep 28 10:39:18 2011 {WIFI} Waiting for a beacon from SSID=[admin]
Wed Sep 28 10:39:19 2011 {WIFI} Beacon from SSID=[admin] found (MAC=[00:aa:bb:cc:dd:ee])
Wed Sep 28 10:39:19 2011 {WIFI} [R00004] Sending packets 301-400
Wed Sep 28 10:39:42 2011 {WIFI} [R00004] recv() timeout exceeded! (packet #325)
Wed Sep 28 10:39:42 2011 {WIFI} [R00004] Checking if the AP is still up...
Wed Sep 28 10:39:42 2011 {WIFI} Waiting for a beacon from SSID=[admin]
Wed Sep 28 10:40:42 2011 {WIFI} [!] The AP does not respond anymore. Latest test-case has been written to '/dev/shm/wifuzz-eK97nb.pcap'
複製程式碼

Admin就是SSID名 用的auth的FUzz。到最後的時候發現已經崩潰了

Wed Sep 28 10:40:42 2011 {WIFI} [!] The AP does not respond anymore. Latest test-case has been written to '/dev/shm/wifuzz-eK97nb.pcap'

Wifuzz可以自己進行檢測Bacon frame,會假定目標已經崩潰,然後生成一個pacp來重現崩潰。

其實在Metasploit裡面也內建了一些fuzzer的指令碼。要想在Metasploit進行fuzz的話,要安裝一個lorcon2模組。這個模組是專門用於無線注入的。Google把程式碼撤了。如果想自己安的話,環境變數要自己設定.

p26

自己airodump一個STA 的mac。因為是Beacon fuzz,它要製出大量的ssid。

p27

p28

可以看下該頻道的ESSID。 這就證明開始fuzz了。

沒辦法,802.11的fuzz能表示出來的就這麼點東西,也許有更難的我沒看到,還有一些是驅動層的東西,但我不太會,也不著重看過。

關於wifuzzit

例如還有個工具,github.com/bullo95/WiF… 這個工具發現了好多如Atheros驅動 CVE:

  • Cve-2006-6332 其中這是一個遠端程式碼執行漏洞,是關於madwifi的802.11的堆疊溢位。

  • Cve-2009-0952 它錯誤出現在可以在一個無線接入點傳送惡意的管理幀。可以攻擊任何未經身份驗證的基於EAP 的WPA/WPA2 WPA2-EAP的無線裝置。Netgear 與Atheros晶片都受到了影響。

  • CVE-2009-0052 這也是一個關於Atheros的無線驅動程式的漏洞,該漏洞可導致使用者拒絕服務(裝置重啟或直接掛掉)

其實真的還有很多東西沒寫出來。就在腦子裡,也真是不知道咋寫出來了。可能是太懶了,人一呆著就容易有惰性啊。有想交流的可以一起交流。

也非常感謝在 unicorn Team的兩個月,時隔一年整,短短兩個月我看到了自己的不足,也讓我更清晰了方向,回來努力補過。感謝 Ir0smith Sweeper 在當時對我的各種方面的幫助。我至今還記得我去的第一天,Sweeper讓我看了Vivek Ramachandran的視訊,當時沒放心上,後來看了之後也挺困難的,印度方言,很是雷我。不過看了好幾遍連續,看懂之後受益匪淺。再次感謝幫助過我的人。

0x02 參考文獻


相關文章