深入解析无线WEP和WPA密码及破解原理
轉自:http://itbbs.pconline.com.cn/network/11090686.html
1 概述
目前情況下:
WEP的破解為利用加密體制缺陷,通過收集足夠的數據包,使用分析密算法還原出密碼。
WPA目前沒有加密體制的缺陷可被利用,破解WPA密碼使用的是常規的字典攻擊法。
所以在破解方式上WEP和WPA有很大差異。
2 WEP
2.1 (Wired EquIValent PrIVacy,WEP)
叫做有線等效加密。掌握WEP破解的人,肯能會說WEP不如有線的安全性高。但這
發生在WEP的很多弱點被發現之后。也是由于WEP的弱點導致WPA的出現。
2.2 (WEP)算法
WEP算法是一種可選的鏈路層安全機制,用來提供訪問控制,數據加密和安全性檢驗
等。802.11 定義了WEP 算法對數據進行加密。
2.3 加密過程如圖所示。
IV為初始化向量,PASSWORD 為密碼KSA=IV+PASSWORD。DATA 為明文CRC-32
為明文的完整性校驗值PRGA=RC4(KSA) 的偽隨機數密鑰流XOR 異或的加密算法。
ENCRYPTED DATA 為最后的密文。最后IV+ENCRYPTED DATA一起發送出去。
2.4 接收端的解密過程如圖所示。
CIPHERTEXT 為密文。它采用與加密相同的辦法產生解密密鑰序列,再將密文與之
XOR 得到明文,將明文按照CRC32 算法計算得到完整性校驗值CRC-32′,如果加密密
鑰與解密密鑰相同,且CRC-32′= CRC-32,則接收端就得到了原始明文數據,否則解密失
敗。
2.5 WEP算法通過以上的操作試圖達到以下的目的
采用WEP加密算法保證通信的安全性,以對抗竊聽。
采用CRC32算法作為完整性檢驗,以對抗對數據的篡改。
2.6 WEP 算法之死
95 9 月RC4 潛在的威脅性(wanger)
00 10 月通過分析wpe包獲取密碼(walker)
01 5 月針對于明文攻擊的一個推論(Arbaugh)
01 7 月針對于CRC32的攻擊(Borisov, Goldberg,Wagner)
01 8 月針對于RC4的攻擊(S。Fluhrer, I。Martin 和 A。Shamir)
01 8 月airosnort發布
02 2 月改進的攻擊算法(h1kari)
04 8 月chopchop攻擊出現
04 7/8 月aircrack出現(Devine,Sanchez )
2.7 WEP的破解理論是在01 年8月就變得可行了
S.Fluhrer, I.Martin 和A.Shamir 合作研究發現了對無線局域網安全性最致命的攻擊。
利用WEP 幀的數據負載中部分已知信息來計算出該WEP 幀所使用的WEP 密鑰。由于
WEP 加密算法實際上是利用RC4 流密碼算法作為偽隨機數產生器,將由初始矢量IV 和
WEP 密鑰組合而成的種子生成WEP 密鑰流,再由該密鑰流與WEP 幀數據負載進行異或
運算來完成加密運算。而RC4 流密碼算法是將輸入種子密鑰進行某種置換和組合運算來生
成WEP 密鑰流的。由于WEP 幀中數據負載的第一個字節是邏輯鏈路控制的802.2 頭信
息,這個頭信息對于每個WEP幀都是相同的,攻擊者很容易猜測,利用猜的第一個明文字
節和WEP 幀數據負載密文就可以通過異或運算得到PRNG 生成的密鑰流中的第一字節。
另外,種子密鑰中的24比特初始矢量是以明文形式傳送的,攻擊者可以將其截獲,存到初
始矢。S.Fluhrer, I.Martin 和A.Shamir 證明:利用已知的初始矢量IV 和第一個字節密鑰
流輸出,并結合RC4 密鑰方案的特點,攻擊者通過計算就可以確定WEP密鑰。
2.8 CRC-32 算法缺陷
CRC-32 算法作為數據完整性檢驗算法,由于其本身的特點非但未使WEP 安全性
得到加強,反而進一步惡化。首先CRC 檢驗和是有效數據的線性函數,這里所說的線性主
要針對異或操作而言的,即C(x?y)=C(x)?C(y)。利用這個性質,惡意的攻擊者可篡改原文
P 的內容。特別地,如果攻擊者知道要傳送的數據,會更加有恃無恐。其次,CRC-32檢驗
和不是加密函數,只負責檢查原文是否完整,并不對其進行加密。若攻擊者知道P,就可算
出RC4(v,k) (RC4(v,k)=P?(P?RC4(v,k)),然后可構造自己的加密數據C'=(P',C(P'))
? RC4(v,k)和原來的IV一起發送給接收者(802.11b 允許IV重復使用)。
2.9 WEP密碼如何被破解出來的
2.9.1 監聽模式被動破解(這個就是有客戶端并有大量有效通信)
根據已知的的信息。我們知道要還原出WEP的密碼關鍵是要收集足夠的有效數據
幀,從這個數據幀里我們可以提取IV 值和密文。與對于這個密文對應的明文的第一個
字節是確定的他是邏輯鏈路控制的802.2 頭信息。通過這一個字節的明文,還有密文我
們做XOR運算能得到一個字節的WEP密鑰流,由于rc4 流密碼產生算法只是把原來的
密碼給打亂的次序。所以我們獲得的這一次字節的密碼就是就IV+PASSWORD 的一部
分。但是由于RC4 的打亂。不知道這一個字節具體的位置很排列次序。當我們收集到足
夠多的IV 值還有碎片密碼時,就可以進行統計分析運算了。用上面的密碼碎片重新排
序配合IV使用RC4算法得出的值和多個流密碼位置進行比較。最后得到這些密碼碎片
正確的排列次序。這樣WEP的密碼就被分析出來了。下圖就是WEP破解過程。有助于
你理解破解WEP通過分析子密碼還原密碼的過程。
2.9.2 主動攻擊(有客戶端。少量通信或者沒有通訊)
-3 ARP-request attack mode攻擊抓取合法客戶端的arp請求包。如果發現合法客戶
端發給AP的arp請求包,攻擊者就會向AP重放這個包。由于802.11b 允許IV重復使
用。所以AP接到這樣的arp請求后就會回復客戶端。這樣攻擊者就能搜集到更多的IV
了。當捕捉到足夠多的IV就可以按上面的2.9.1里的進行破解了。如果沒有辦法獲取arp
請求包我們就可以用-0 攻擊使得合法客戶端和AP斷線后重新連接。-0 Deautenticate攻
擊實際就是無線欺騙。這樣我們就有機會獲得arp請求包了。
2.9.3 主動攻擊(沒有客戶端的模式)
先和AP進行偽鏈接-1 fakeauth count attack mode。這樣就能產生數據包了。
收集兩個IV 相同的的WEP 包,把這兩個包里的密文做XOR 運算。得到一個XOR 文
件。用這個XOR文件配合偽造arp包的工具。利用CRC-32的特點偽造一個arp包和原
來的IV一起發給AP。這樣就可以按上面2.9.2 里的進行破解了。其中-2 Interactive,
-4 Chopchop,-5 Fragment 都是屬于上面這個攻擊類型的。
2.10 WEP的安全弱點
A.802.2 頭信息和簡單的rc4 流密碼算法
導致攻擊者在有客戶端并有大量有效通信時,可以分析出WEP的密碼。
B.IV重復使用
導致在攻擊者在有客戶端。少量通信或者沒有通訊時,可以使用arp 重放的方法獲得大
量有效數據。
C.無身份驗證機制,使用線性函數CRC32進行完整性校驗。
無身份驗證機制,導致攻擊者能使用-1 fakeauth count attack mode和AP建立偽鏈接。
進而獲得XOR 文件。使用線性函數CRC32 進行完整性校驗,導致攻擊者能用XOR 文
件偽造一個arp包。然后依靠這個包去捕獲大量有效數據。
2.11 WEP竊聽
由于 WEP 全局都是用IV+WEP 密碼來保護明文的。當有了密碼后攻擊者可以使用同
樣的算法能隨時任意竊聽任意STATION 至AP 之間的通訊。這樣的竊聽對于網銀這樣的雙
向認證的安全不會有影響。但是在ip 包里的明文用戶名和密碼就很容易被竊聽到了。例如
登錄AP 的用戶名和密碼。由于無線網絡竊聽的存在,在使用交換機的有線網絡中用關閉
dhcp 設置陌生網段的來禁止非法訪問的方式。不在適合于無線網絡。攻擊者完全能根據竊
聽到的合法客戶端數據包配合已知密碼來分析出ip的真實配置。
2.12 WEP的現狀
WEP真的不是一種強壯的加密方式對于那種不懷好意的攻擊者。無法勝任在安全有求
比較高的場所。對于安全較低的廠所只能說有勝于無。
3 WPA
3.1 WPA加密算法的的兩個版本介紹
WPA = 802.1x + EAP + TKIP + MIC
= Pre-shared Key + TKIP + MIC
802.11i(WPA2)
= 802.1x + EAP + AES + CCMP
= Pre-shared Key + AES + CCMP
這里802.1x + EAP,Pre-shared Key是身份校驗算法(WEP沒有設置有身份驗證機制)
TKIP和AES是數據傳輸加密算法(類似于WEP加密的RC4 算法)
MIC和CCMP數據完整性編碼校驗算法(類似于WEP中CRC32算法)
3.2 WPA 認證方式
802.1x + EAP (工業級的,安全要求高的地方用。需要認證服務器)
Pre-shared Key (家庭用的,用在安全要求低的地方。不需要服務器)
EAP 擴展認真協議,是一種架構。而不是定義了算法。常見的有LEAP,MD5,TTLS,
TLS,PEAP,SRP,SIM,AKA 其中的TLS 和TTLS 是雙向認證模式。這個和網絡銀行的
安全方式差不多。這個認證方式是不怕網絡劫持和字典攻擊的。而md5 是單向認證的。不
抗網絡劫持,中間人攻擊。關于企業級的如何破解就不討論了。因為論壇上也很少提到。本
身EAP模式是個協議,不是算法。
3.3 WPA-PSK
論壇上破解WPA 也主要是集中在這個模式上的。我們都知道破解WPA-PSK 不是和
WEP一樣抓很多包就能破解的。關鍵是要獲取握手包,這個握手包叫4way-handshake 四次
握手包。那么我們就從這個四次握手包開始。
3.4 四次握手
通信過程如圖
3.4.1 WPA-PSK 初始化工作
使用 SSID 和passphares使用以下算法產生PSK 在WPA-PSK 中PMK=PSK
PSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096)
3.4.2 第一次握手
AP廣播SSID,AP_MAC(AA)→STATION
STATION 端
使用接受到的SSID,AP_MAC(AA)和passphares使用同樣算法產生PSK
3.4.3 第二次握手
STATION 發送一個隨機數SNonce,STATION_MAC(SA)→AP
AP端
接受到SNonce,STATION_MAC(SA)后產生一個隨機數ANonce
然后用PMK,AP_MAC(AA),STATION_MAC(SA),SNonce,ANonce 用以下算
法產生PTK
PTK=SHA1_PRF(PMK, Len(PMK), "Pairwise key expansion",MIN(AA,SA) ||
Max(AA,SA) || Min(ANonce,SNonce) || Max(ANonce,SNonce))
提取這個PTK 前16 個字節組成一個MIC KEY
3.4.4 第三次握手
AP發送上面產生的ANonce→STATION
STATION 端
用接收到ANonce 和以前產生PMK,SNonce,AP_MAC(AA),STATION_MAC(SA)
用同樣的算法產生PTK。
提取這個PTK 前16 個字節組成一個MIC KEY
使用以下算法產生MIC值
用這個MIC KEY 和一個802.1x data 數據幀使用以下算法得到MIC值
MIC = HMAC_MD5(MIC Key,16,802.1x data)
3.4.5 第四次握手
STATION 發送802.1x data ,MIC→AP
STATION 端
用上面那個準備好的802.1x 數據幀在最后填充上MIC值和兩個字節的0(十六進
制)讓后發送這個數據幀到AP。
AP端
收到這個數據幀后提取這個MIC。并把這個數據幀的MIC部分都填上0(十六進
制)這時用這個802.1x data 數據幀,和用上面AP產生的MIC KEY 使用同樣的
算法得出MIC’。如果MIC’等于STATION 發送過來的MIC。那么第四次握手成
功。若不等說明則AP 和STATION 的密鑰不相同,或STATION 發過來的數據幀
受到過中間人攻擊,原數據被篡改過。握手失敗了。
3.4.6 MIC的派生圖
SSID passphares
PSK=PMK=pdkdf2_SHA1(passphr
ase, SSID, SSID length, 4096)
PTK=SHA1_PRF(PMK, Len(PMK),
"Pairwise key expansion",MIN(AA,
SA) || Max(AA,SA) || Min(ANonce,
SNonce) || Max(ANonce,SNonce))
MIC KEY=提取PTK 的前16 個字節
MIC = HMAC_MD5(MIC Key,16,
802.1x data)
SNonce
STATION MAC APMAC
ANonce
802.1x data
3.5 AP和STATION 之間的加密通信
3.5.1 通訊使用的臨時KEY 的派生圖
3.5.2 使用 KEY 進行加密通信
3.5.2.1 TKIP
3.5.2.2 CCMP
PTK – X bit
Pairwise Transcient Key
EAPOL-Key
confirmtion Key
128 bits
EAPOL-Key
Encryption Key
128 bits
Temporal
Encryption Key
128 bits
Temporal AP
Tx MIC Key
64 bits
Temporal AP
Tx MIC Key
64 bits
X = 512 (TKIP)
X = 384 (CCMP)
Bit 128-256
KEK
Bit 256-384
TEK(=TK)
Bit 384-447
TMK1
Bit 447-511
TMK2
Bit 0-127
KCK
3.5.3 WPA安全規則
針對于WEP的安全漏洞WPA 也相應更新了安全規則:
A. 增強至48bit的IV。
B.Sequence Counter,防止IV重復。
C.Dynamic key management,動態key管理機制。
D.Per-Packet Key加密機制,每個包都使用不同的key加密。
E.MIC (Message Integrity Code )<Michael>,信息編碼完整性機制。
解說:動態key管理機制
在通訊期間:
如果偵測到MIC錯誤,將會執行如下程序。
記錄并登錄MIC錯誤,60 秒內發生兩次MIC錯誤。
反制措施會立即停止所有的TKIP通訊。
然后更新數據加密的用的TEK。
3.5.4 WPA 安全機制作用
a. 加密通信流程圖、Per-Packet Key 加密機制、動態key 管理機制使得使用類似
于WEP中分析子密碼攻擊的方案,在WPA 中將變得異常困難,和不可實現。
b. 身份驗證機制杜絕了-1 fakeauth count attack mode,建立偽連的攻擊。
c. 增強至48bit 的IV、防止IV 重復、MIC 信息編碼完整性機制。使得要偽造一
個合法數據包變得異常的困難。同時也致使-2 Interactive,-4 Chopchop,5
Fragment 此類攻擊對于WPA 無效。
解說:
a. 雖然TKIP使用的是和WEP一樣的加密算法RC4,但是TKIP中使用Per-Packet
Key加密機制配合RC4。這樣彌補了RC4 加密算法的不足。抵抗基于RC4 漏
洞的攻擊。WPA2 中的AES比TKIP有更高的安全性,對他的破解難度就更高
了。
b. 使用非線性的MIC信息編碼完整性算法,取代線性的CRC-32。增加了攻擊者
偽造合法數據的難度。
有以上結論我們不難得出一個事實。類似于WEP中的無客戶端破解密碼的做
法在WPA 中是不存在的。
3.6 針對 WPA的破解攻擊
3.6.1 抓取數據傳輸包進行破解
上面已經明確的指出無論數據傳輸算法是TKIP還是AES。使用類似于WEP中捕
獲數據包進行分析破解的方式對于WPA幾乎是不可能的。
3.6.2 抓取WPA-PSK 的四次握手包進行破解
可以說 WPA-PSK 安全體系是十分完善的。但他始終是用一個密碼保護的。對于
這種用密碼保護的安全體系。一般情況下我們都可以用一種叫字典攻擊的常規攻擊手
段。所以針對WPA-PSK 可以進行的直接攻擊,目前就只有字典攻擊這一種方式。而這
種常規的攻擊方式將在字典攻擊里詳細討論。當然我們WPA-PSK 的設計者也很明確這
點,所以在WPA-PSK 的安全體系中加入了潛規則加以對抗。這點將在攻擊預算里做詳
細的討論。在WPA-PSK 的四次握手包中包含著和密碼有聯系的信息,依靠這個信息進
行字典攻擊。
3.6.3 斷線攻擊
由于 WPA-PSK 是單向認證的。所以可以使用-0 Deautenticate攻擊。這樣有助于
我們獲取握手包。在獲得握手包時-0 攻擊不要太多,否則適得其反的。有些AP幾次握
手不成就會認為有攻擊。禁止客戶端和AP的鏈接30秒。(可能基于WPA EAP TLS 這
樣雙向認證的就不怕斷線攻擊了)
3.6.4 間接攻擊
例子:別人輸密碼你在哪里偷看。使用美人計騙取密碼。有技術含量點的。原來
WEP時他的計算機有漏洞你給他下了木馬。改成WPA 后木馬把密碼發給你的。或你整
天竊聽他的WEP通信,他改密WPA 模式時發給路由的密碼讓你截獲了。比較狠一點的,
AP是你賣給他的AP的系統里添加了你的后門。
3.7 WPA安全性的前景
WEP 由原來的安全到今天的不安全。你是否同樣也會擔心是不是很多年之后的WPA
也會是同樣的命運。但我們也要看到WEP 的破解不是某個算法的漏洞導致的。而是整個
WEP的安全體系有很多漏洞所共同導致的。而WPA的安全體系很強壯。使用的大多是混合
算法。所以某一個算法的弱點往往不能給WPA 這樣的安全體系以致命的打擊。WPA 這種依
靠算法的安全體系也許某一天會被破解。但是可能WPA 被完全破解的那一天比WPA 廢棄
的那一天都晚。如果這樣的話,那么的確該說WPA 是一種很強壯的安全體系。
3.8 WPA 的竊聽
WP-PSK 沒有密碼幾乎沒法竊聽他的通信。在有了密碼的情況下WPA 的竊聽也不具
有WEP 中竊聽的隨意性。在WPA 中SNonce,ANonce 也很好的起到了加密數據防止竊聽
的作用,所以作為攻擊者我們必須從握手開始竊聽。而且會同步更替數據加密密鑰。所以
WPA-PSK 的安全性都依賴于密碼。
3.9 WPA評價
無論是WPA還是WPA2 在目前都是有很好的安全性的。企業級EAP的安全模式更為
WPA的安全性如虎添翼。我很欣賞WPA = PSK + TKIP + MIC這個模式。因為原來WEP的
設備只需要更換代碼就能升級到這個模式了。所以這個模式使用較低的成本就可以實現很高
的安全性,還有便捷性。成本當然也是一個東西是否能普及重要因素。而WPA2 AES+CCMP
的更高的安全性對硬件的要求也是要高一點的。
4 字典攻擊
4.1 尋找可以攻擊的信息元素
字典攻擊作為一種常用的攻擊手段要明白的是從那里開始攻擊。要尋找和密碼有有聯系
的信息元素。在WPA 中和密碼有聯系的信息有數據的傳送包和四次握手包。由于無法知道
明文,和WPA的數據加密算法的復雜性。在數據傳輸包上要找到可以攻擊的信息元素基本
上很難實現。所以只能在握手包里尋找有密碼有聯系的信息。在上面的四次握手包的圖片中
很清楚的表明,在四川握手中主要傳遞的有如下數據:SSID,AP_MAC,STATION_MAC,
SNonce,ANonce,802.1x data,MIC。前面6 個元素很清楚,一般不會和密碼有聯系的。
只有最后一個MIC和密碼有所聯系。通過MIC的派生圖我們知道,MIC是通過上面六個信
息元素和密碼通過三個主要的算法派生出來的。那么我們是不是只要找到這三個算法的逆反
算法就可以根據上面的7 個信息元素把密碼計算出來了呢。的確實這樣。但是這三個算法有
一個共同的名字叫HASH 函數。
4.1.1 HASH 函數
HASH 函數是不可能從生產的散列值來唯一的確定輸入值。
a. 單向性(one-way)。HASH 函數是沒有反函數的。
b. 抗沖突性(collision-resistant)。要尋找兩個hash值相同的原值十分困難。
c. 映射分布均勻性和差分分布均勻性。不像普通函數那樣數值分布有一定規
律。
由于上面的pdkdf2_SHA1,SHA1_PRF,HMAC_MD5是HASH 函數。所以我們就基
本上無法直接計算出密碼。對于HASH 函數比較有效的攻擊就是建立HASH 字典攻擊。
HASH 字典就是把預先算好的HASH 值按照線性排列然后組成一個數據庫。當我們知道
一個HASH 值時在這個數據庫里能馬上找到他的原值。當然這個過程是通過數據庫實現
的而不是HASH 的逆反函數。所以有些HASH 值在這樣的數據庫里是找不到原值的。
由于HASH 庫是線性的所以。所以在HASH 庫里找數據是十分迅速的。下面的鏈接讓
你體驗一下HASH 線性庫的速度http://www.cmd5.com/。還有一點有的人也知道的國內
的王小云教授對于部分HASH 算法有突出貢獻的。她的主要貢獻是尋找碰撞值。暴力破
解的話就是大概需要2^80 量級的MD5 HASH 運算。被王教授提高到只需要2^69 量級
的MD5 HASH 運算就能夠找到一個碰撞。我們有這樣兩個對付HASH 函數的方法。那
么對我們破解我怕密碼是不是如虎添翼了呢?
4.1.2 HMAC (HASH Message Authentication Code)哈希消息校驗算法
這里我承認我剛才有騙過你。pdkdf2_SHA1,SHA1_PRF,HMAC_MD5 不是HASH
函數。當然我騙你我也有我的理由啦。第一我以前被別人騙過,某論壇上說建立HASH
庫然后進行WPA破解的。能建立HASH 庫那三個函數不是HASH 函數那是什么啊。第
二我不是故意的。了解HASH 函數,有助于你理解HMAC 算法。所以
pdkdf2_SHA1,SHA1_PRF,HMAC_MD5是HMAC算法。不是HASH 函數。HMAC算法
就是用一個密碼,和一個消息。最后生成一個HASH值。由上面的介紹,我們可以看出,
HMAC算法更象是一種加密算法,它引入了密鑰,其安全性已經不完全依賴于所使用的
HASH 算法。所以上面對HASH 的攻擊,對于HMAC 是沒有效果的。HMAC 特別是
象“挑戰/響應”身份認證應用中,由于攻擊者無法事先獲得HMAC 的計算結果,對系
統的攻擊只能使用窮舉或“生日攻擊”的方法,但計算量巨大,基本不可行。所以,在
目前的計算能力下,可以認為HMAC算法在“挑戰/響應”身份認證應用中是安全的。
4.1.3 四次握手包
有上面的HMAC 的特性我們也不難得出SSID,AP_MAC,STATION_MAC,
SNonce,ANonce,802.1x data,這些信息元素都是上面的HMAC算法里的消息。HMAC
算法里的密碼在pdkdf2_SHA1 算法里是WPA 的密碼,在SHA1_PRF 算法里是PMK,
在HMAC_MD5算法里是PTK。最后才得出MIC值。由于這些消息和這個MIC值都有
關聯性。所以四次握手吧的后面三次是缺一不可的。而且是有時效性的。不能把不是同
一次的握手包拼起來使用的。當然第一次握手包的SSID 和AP-MAC是可以后獲取的。
這里你也明白了四次握手中根本是不是在傳遞一個簡單的HASH 值。而是要傳遞一個
HMAC 值。如果是傳遞一個簡單的HASH 值,那么我們只要獲取后重播這個值就可以
欺騙AP 獲得認證了。都不要知道這個HASH 值對應的原值。但我的這么好的想法被
HMAC給打破了。
4.1.4 面向于四次握手包的字典攻擊。
字典攻擊,就是把密碼的可能性羅列起來組成一個密碼字典。然后把字典里的密
碼和SSID,AP_MAC,STATION_MAC,SNonce,ANonce,802.1x data,這些信息元
素。通過pdkdf2_SHA1,SHA1_PRF,HMAC_MD5 這些算法最后生成MIC’(具體過程看
上面MIC派生圖)。當在字典里找到一個密碼他的MIC’等于握手包中的MIC。這時字
典破解成功。這就是我們要的那個密碼。如果把字典里的所有密碼都找遍了還有沒有符
合上述條件的。那么破解失敗。
4.2 WPA-PSK 密碼規范和可能的密碼空間
4.2.1 HEX 模式
64 個的十六進制數字。
4.2.2 ASCII模式
密碼至少8位最大不能超過63位。字符要求a~z,A~Z,任意字符包括空格。所
以一共可是使用的字符個數為95 個。
這兩種模式的密碼的窮舉字典(羅列所有的可能性)是超乎想象的大(不包括那
想象特別大的人)。我們就拿HEX 模式的窮舉打個比方吧。如果用一個水分子比作是一
個密碼的話。那么窮舉字典里的密碼組成一個圓球。這個球的直徑是2.4光年。而ASCII
模式密碼空間,你別逗了!我們可能觀察到的最廣闊宇宙空間的直徑只可能在150億光
年這樣的范圍之內。這樣水球都還需要在那個基礎上在大上百萬倍。密碼空間有時會形
成超天文數字的。當然我們不需要嘗試像上面一樣如此多的數值。因為MIC值只有128
位,我們只需要上面的球和月亮這么大的嘗試就能找到一個符合的MIC。但是這個找到
的值可能可以成功握手。但不一定能正常通訊。這樣的值可能就是一個MIC的碰撞值。
他的MIC 是相同的但是PMK 是不同的。所以需要嘗試所有PMK 的可能性,而256 位
PMK 的窮舉組成的水球直徑還是2.4 光年。根據WPA的密碼規范,使用字典攻擊法,
如此大的密碼空間足以讓人類計算機的總和望而卻步。
4.3 弱密碼字典
WPA-PSK的密碼空間用浩瀚來形容一點不為過,所以直接進行字典攻擊是傻子的行為。
但是作為一個密碼對字典攻擊來說有強密碼和弱密碼的區別。強密碼就是破解希望極其渺茫
的密碼。弱密碼是很有希望破解的密碼。當然強弱也是個相對概念,他也是依賴于加安全制
的。銀行的密碼一般都為6 位。像這樣密碼空間如此小的密碼。普通情況下都為弱密碼。但
是銀行的ATM 一天只讓你試三次。三次密碼不對鎖卡。有這樣的機制。6 位的就不再是弱
密碼了。由弱密碼組成的字典叫弱密碼字典。當然一般的弱密碼有以下幾種。
4.3.1 密碼空間太小的密碼
什么叫密碼空間。密碼可能字符個數為n 密碼的位數為p 那么n 的p 次冪就是密
碼空間,例如一個6 位數子的的密碼他的密碼空間6M=10^6。密碼空間的大小也是個相
對概念,這個和安全體制有關系的。還有就是嘗試密碼的速度。在WPA-PSK 的破解中。
我們可以無限次的嘗試。嘗試密碼的速度也和設備有關系。WPA-PSK 分布式破解無疑
是用速度來換取同等時間里更大的密碼嘗試空間。在下面的攻擊預算里會對這一部分內
容做詳細的補充。
4.3.2 社會工程學的弱密碼
就是密碼中帶有一定的社會工程學屬性。也就是說密碼中帶有和個人有關系的信
息。這里列出一個mm做的社會工程學字典方便理解。
19602008.txt 1960-2008 年的生日組合
mydic.txt 自己弄的常用字典
abc-birth.txt 任意三字母+所有的生日組合;
shouji10.txt 10位的手機號
shouji11.txt 11 位的手機號
shouji.txt 上海的手機號
8-af16.txt 8位的abcdef和123456 的任意組合
8-qrafzv.txt qwerasdfz
當然你可以看到社會工程學字典中窮舉法的影子。WPA-PSK 破解中一般情況下我
們沒有辦法知道設置密碼的人的具體信息。所以WPA-PSK 破解就沒法生成針對性很強
的社會工程學字典。
4.3.3 有一定聯系性規律性弱密碼
例子:有人曾破如此一個WPA-PSK 密碼IX1V7051242。如果你不了解這個密碼的
背景你肯能會覺得很神奇,這么強的密碼也能破。這樣的密碼是在西班牙的tele2 這樣
的AP 上有,而且這樣AP_ESSID 里都有tele2 字段。這樣的密碼后面的8 位是相同的有
真正的密碼只有四位。四位密碼其密碼空間很小很容易被字典攻擊出來。這個也是AP
的默認密碼。所以這個密碼被破解是因為AP本身產生的隨機密碼就是個弱密碼。是AP
的廠家自己降低了安全性的做法。
4.3.4 暴露過的強密碼
密碼這個名字就告訴我們他是不能見光的。見光即死。見光的方式很多被***了,
被竊聽了等。這里講個典型點的例子:有些人具備一定的安全知識的。知道要設置一個
密碼空間很大的強密碼如acdess!@#$%,這個密碼破之實在不易。但是這個AP 的密碼
還是被破解了。原因何在。因為這個人比較懶,他在任何地方都是使用的這個強密碼。
由此他注冊了一個論壇。習慣性的輸入自己的強密碼。但是那個不懷好意的論壇的后臺
有個密碼收集工具。他的密碼被收錄進字典。用這樣的字典破他的WPA-PSK 不是很容
易嗎。你是不是這樣的人啊?至少我碰到一個就是他的blog密碼和銀行卡是一個密碼。
《劍魚行動》中那個黑客是如何在一分鐘進入國家安全信息網的啊。就是網絡上工作著
為他收集密碼的程序。而他就是通過這樣的字典迅速破解的。而這樣的字典真正的黑客
也是不愿意發布出來的。原因還是那句話密碼見光即死。
4.4 強密碼
看名字你就應該知道破解強密碼的希望是十分渺茫的。怎么樣的密碼算一個強密碼,第
一肯定不能有上面弱密碼的屬性。第二是需要足夠的密碼空間。關于WPA-PSK 中什么
形式的密碼可以被稱之為強密碼了,在下面的攻擊預算里會指出來的。
5 攻擊預算
拿分布式攻擊來說。開始破解一個WPA-PSK 包。我們知道他是8位的全字符一個密碼。
然后我們征集到萬人自愿參加這個工作。可是一破破解了一周這個密碼沒有任何動靜。這時
人數減少了50%,之后又破了一月,人數減少到10%。這個10%是很好的支持者,他們堅
持數月。密碼還是沒有出現。這下就剩下5%的絕對擁護者了。但是花開花又落密碼還是沒
有出來。這時沒有人在堅持了。這個密碼最后還是沒有被破解出來。那么我們的時間精力是
不是都白花了呢。的確是這樣。但是如果有這些人開始這個巨大的工程前,如果我們進行了
預算。我們就會知道這1 萬個人即使進行全速破解這個密碼,而且都是使用的4 核心的處理
器。那么他們也需要花上27 年。看到這樣的預算我想當時的1 萬人會有99.9% 。還有10
個人為什么不放棄。這還用問嗎,他們都是愚公的子孫。很厲害的,山都能鏟平。還搞不定
你一個密碼了。只要你的密碼有限,而我的子子孫孫無窮匱也。攻擊預算的意義就在此,提
前讓我們知道做這件事所需要的代價和所能獲得的意義。不行進預算也是一種不成熟的表
現。當然搞分布式計算的人可能知道這一點。他們早就強調分布式破解只是思路。不是破解
方案。破不出來也沒有關系。這樣的人最可氣,自己知道不可行也不說,害人誤入歧途。空
歡喜。
5.1 攻擊預算的意義
預算運用的地方很廣。迅雷下個大的電影他都會預算一下大概需要花多少時間完成這個
任務。做大的工程預算更加不能少。字典攻擊這樣的常規攻擊,理論上是能可行的但實際上
不一定可行的。而攻擊預算要解決的問題就是:在均衡了攻擊代價后,攻擊是否具有實際可
行性?一般情況下攻擊的代價主要是時間和資源。有強大的資源支持就可以節省時間(分布
式破解就是走的這條路線)。當時間合適的話。而使用的資源遠大于攻擊帶來的意義。那么
這樣的攻擊也不具備現實意義。當然在一開始我用會使用極值的方式評估攻擊方案的可行性
的問題。即考慮最佳情況,如果還不行可以直接放棄。最差的情況,如果亦有可能值得深入。
5.2 WPA-PSK 中攻擊預算
WPA-PSK 中的攻擊預算是很容易的事。Aircrack 軟件會告訴你詳細的數據。讓你進行
攻擊預算的。無論是你直接字典攻擊還是建庫都會明確的告訴你他的效率和所花的時間。而
且他的數據是比較準確的。破解WPA 是最好要在純命令行下進行。在破解WEP 的時候,
由于現在計算機的速度比較快,你很難比較純命令行模式和圖形界面的執行的效率差異。但
是WPA字典攻擊是及其耗費資源的。在命令行模式下會執行的更快。他們的速度差異是:
命令行最快398.24 k/s,windows 下次之264.93 k/s, xwindwos 下最慢158.95 k/s。像linux
這么難用又ugly的系統,要不是他有驚人的執行效率。他早就淘汰了。所以破解WPA 在純
命令行模式下有更高效的優勢。下面是我在純命令行模式下實測數據。
密碼嘗試數度398.24key/s
產生PMK 的速度是193PMK/s PMK 庫的增長數度是24.6kb/s
(沒有想到吧PMK 庫的增長速度這么慢。還不如寬帶快。)
直接PMK 庫嘗試密碼的速度為57136.97key/s
也許你會說這是我計算機的上速度對其他計算機沒有用。當然要通過上面的值換算成其他計
算機的精確值是不行的。但作為估算是不需要進行精確換算的。那么性能不同的計算機一般
是按什么指標換算其運算能力的呢?是按GFLOPS(10 億次擴展雙精度能力/秒)。那些超級
計算機等于多少臺普通臺式機不是實測出來的。也是通過上面的值進行換算出來的。我的計
算機的這個數值是10.3GFLOPS。如果你想轉化成其他計算機的數值,只需要下載我提供的
EXCEL表格他是會自動給你計算的。
5.3 WPA-PSK 中的隱蔽規則
上面你也看到我的密碼嘗試數度只有398.24key/s。WPA-PSK 中曾經提及過設計者是知
道字典攻擊是唯一有效進攻WPA-PSK的手段。為此他也是在允許條件下對這一點嚴加防范。
導致我的計算機嘗試密碼的速度只有這么點。他是如何防范的,四次握手生成PMK 的函數
PSK=PMK=pdkdf2_SHA1(passphrase,SSID,SSID length,4096),在這個函數里的輸入值都
很明了除了這個4096。這就是設計者加入的防范。他的意思讓函數迭代4096次。主要目的
就是大大的降低字典攻擊的效率。同時也增加了函數的復雜性。這個函數的消耗的時間占派
生一個MIC 的總時間的99.3%。也就是SHA1_PRF,HMAC_MD5 這兩個函數消耗的時間只
占不到總時間的0.7%。看到這里你也該明白所謂的建庫破解是怎么回事了。就是先完成時
間上99.3%的任務。產生一個PMK 庫。破解時只要完成時間上0.7%的工作了。這也就解釋
了為什么建庫比較慢。這里我們建的庫叫PMK 庫。或叫HMAC 預運算庫。根本不是什么
叫Rainbow Hash表。而且PMK 的值還要經過那兩個非線性的HMAC函數才是MIC值。我
們建立的庫怎么會有線性的特點。雖然建立了PMK庫是提高了速度。但不要說線速破解。
線速只有在按線性值排列了Rainbow Hash表里有。PMK 值根本沒有按線性排列,也沒有這
個必要。排列他只會浪費時間,而起不到任何作用。如果要線速破解你還是去建立MIC 值
的線性庫吧。這樣能實現線速了。就是這個庫只能對一個握手包有用。建立這樣的線性庫有
意思嗎。下面這個網站用JAVA 實現了派生PMK 的過程,和教程里的PMK 相同吧。
http://www.xs4all.nl/~rjoris/WPAPSK.html
產生PMK 如此費時,為什么硬件條件差的AP 在握手時如此的迅速。實際是在你選擇用
WPA-PSK 模式后。AP 就開始用密碼和ESSID 產生PMK(WPA-PSK 初始化)以后他都保
存了這個PMK值。除非你改ESSID或密碼否則AP都不會花時間去生產PMK。所以STATION
和AP 握手如此的快速。所以增大上面算法中4096 的值只會增加初始化時間而,不會對握
手和傳輸數據有任何時間上的影響。但是對攻擊者就不同了,如果增大10 倍那么字典攻擊
的速度就只有原來的1/10 了。
5.4 隱蔽規則的作用
在 05 年的一片對WPA-PSK 安全分析的文章上指出。對于一個安全的WPA-PSK 密碼當
時最新PC也是沒有希望破解的。當然3 年過去了。一切都會變化。如今破解WPA-PSK 的
情況怎么樣呢。首先我們例舉一個密碼,看看目前計算機的破解能力吧。這個密碼是8位的
全字符密碼。當然我們選當今世界上能查到的最好的計算機進行破解。這個計算機叫走鵑浮
點能力是1.026PFLOPS。他窮舉這個一個8 位的密碼,按照目前WPA-PSK 的算法,需要5
年時間。而破解密碼至少要嘗試一半的可能性。這樣也需要2.5 年的。而已上情況都是建立
在那臺超級計算機置國家安全于不顧。全力幫你破解密碼的基礎上的。你問我為什么不用庫
破解。8位的全字符的窮舉PMK 庫是782PB。而那個超級計算機需要10 年的時間才能建完
這個庫。而且這么個庫跑一邊也要花掉走鵑13 天的時間。所以想模仿Rainbow Hash 表在
WPA-PSK 中根本不現實。而14 位的Rainbow Hash 表有多大?走鵑目前的速度相當于5 萬
臺左右的個人PC(四核)。但是分布式破解在5 萬臺左右的個人PC上的表現肯定不如走鵑
的。因為別人幫忙掛機時可能是下著電影看著高清進行的。也許你會說人多力量大。但是
08 年500 強計算機的總和破解這樣的密碼也要花費5.6個月。所以該是時候認真考慮一下所
謂分布式破解或建庫的意義的時候了。
5.5 WPA-PSK 的強密碼
剛才使用超級計算機極值估算的方式,我們知道了一個8 位的全字符密碼在WPA-PSK
里可以稱得上是一個強密碼了。所以WPA-PSK 的強密碼第一沒有上面弱密碼的特性。第二
滿足下面的要求,使得密碼有足夠大的密碼空間。
字符類型等效密碼長度(位)
10位純數字15.82
26位純字母11.18
36位字母+數字10.17
52位大小寫字母9.22
62位大小+數字8.83
95位全字符8.00
HEX密碼長度13.14
有些人愛抬杠。會說我上面列出的強密碼也被破解過。我不否認有些人有心靈感應的潛
能。別人設的強密碼都設置到你的頭腦里了,你不用破解直接知道密碼。還有那種人是上帝
的恩寵。別人再強壯的密碼你的字典里都有的。如果你不是上面的兩種人。如果你破了一周
的密碼還沒有出來就放棄吧。你怎么就知道這個密碼不是個強密碼。有時還是需要理智放棄。
網上破解WPA-PSK 的教程很多。都是幾分鐘就破解的。有些密碼還很強。教程嗎都不是實
戰。都是知道密碼在破密碼。所以不要讓那些教程誤導了。以為破解WPA-PSK 很容易。
WPA-PSK 密碼破解很長時間都不出來千萬不要鉆牛角尖。
5.6 WPA-PSK 的弱密碼攻擊
到現在我們明白了針對WPA-PSK 的攻擊目前唯一有實際價值的是弱密碼字典攻擊。由
于弱密碼攻擊WPA-PSK 的成功。就有人否定WPA-PSK 的安全性。難道弱密碼攻擊就是
WPA-PSK 的安全性的弱點嗎?這個例子可能大家都知道。一個人在旅館里丟了錢包。錢包
里有身份證、銀行卡。結果銀行卡里的前被盜了。原因是這個人用的是生日做的密碼。而使
用弱密碼導致卡內資金被盜銀行是沒有責任的。同里所以你使用了弱密碼WPA-PSK 被破解
AP 和WPA 的設計者都是沒有責任的。在僅用密碼保護的安全體系里,弱密碼一項都是問
題所在。我認為銀行也不是一點責任都沒有。信息高度敏感性的銀行應該像網上的密碼學習
主動根據客戶的信息判斷是否為弱密碼。發現弱密碼該主動提醒客戶并給客戶補充安全知
識。如果我們的AP也加入評估機制的話。破解WPA-PSK 就更加雪上加霜了。那些說WPA
漏洞百出的。你怎么不去說銀行的系統不可靠呢。WPA不會給你吧。但ATM會。
5.7 良好的弱密碼字典
良好的弱密碼字典對于破解WPA目前還是有一定作用的。但是由于以后安全措施的提
高這樣的字典最后也會失效。但是產生一個良好的弱密碼字典并不是容易的。這樣的字典需
要收集很多的密碼然后進行分析。最后總結出大眾設置密碼的特點。絕不是意想得來的。上
面mm 的字典不錯,但是他如果知道他的字典普通的機器要跑一邊要花上幾個月的時間這
個字典從時間上來看也太大了點。三跑兩跑少女變老太了。而這么大的字典如同別人所說的
手機號后面加個@這個字典就得掛。所以好的弱密碼字典在于精而不在于大。而且上面的字
典如此大傳輸也不方便。實際上面的字典也很容易壓縮小。使用的時候完全可以邊生成字典
邊破解。這就需要有個linux 下工作的字典生成器了。配合這樣的生成器字典就能變得很小
了。700m的字典需要4~5 天的時間。而這樣長的時間一般人也能接受。而且正好能刻個盤。
比較實際。如果是DVD 的字典需要1.5 月才能跑完實用性也不強。
5.8 PMK 庫的意義
PMK 的有點是速度,但為之犧牲的是漫長的建庫時間,巨大的磁盤空間,SSID 的針對
性也是PMK 庫的主要問題。所以PMK 主要用于對付那種使用十分廣泛的默認SSID。一般
陌生的SSID 沒有必要為他建立PMK。還有SSID 帶有唯一性的。如新出的TP-LINK。默認
SSID 變成了TP-LINK+MAC 的前六位。這個做法無疑是想廢了我們給TP-LINK 做的PMK
庫。從另一個角度來說TP-LINK 無疑是一個很注重安全的生產商。對于這樣的SSID 一般
不要為他生成PMK 庫。陌生的SSID 為什么沒有建立PMK 庫的必要。要么那個人不注重安
全的他不會改密碼。你破解了一次長期能用。要么他注重安全改個安全點的密碼或有天他想
個性化一下把SSID 改成了他們家小狗的名字。任何一條導致我們辛苦建起來的庫直接殘廢
了。而唯一的用武之地就是別人不改SSID,每次還改個你字典里有的弱密碼讓你破。所以
為陌生的SSID 建立PMK 庫意義不大。使用范圍相當狹窄。精選250m 左右的字典。這樣
單SSID 的PMK 庫為7G一個DVD 正好帶的下。方便攜帶,也不會占用硬盤空間。這樣一
個DVD 光盤普通計算機一半30分鐘就能歷遍了。這樣的光盤對WPA的破解比較有實際意
義。關于網絡上的SSID 庫就沒有那么有有用了。太大下了沒有地方放。邊下邊破可以考慮,
但是目前寬帶滿足不了PMK 速率的要求。但是比直接的密碼破解會快上幾倍。
5.9 WPA-PSK 安全性
這里我們可以說WPA-PSK 模式和一個強壯的密碼配合完全能勝任安全要求比較高的
場所。
6 結尾
與其把精力放在沒有多少意義的分布式破解上,不如集中到下面。
配合airodump-ng 的針對于WEP/WPA-PSK 的竊聽攻擊。WEP 的竊聽比較容易有密碼就能
隨時任意竊聽。WPA 的比較復雜。需要從握手開始竊聽。并且在WPA 有更新數據加密密碼
的機制。這樣的竊聽工具。就是把加密在WEP或WPA 里的IP包解開來。有了這樣的工具。
我們可以很容易的解決關閉HDCP時陌生網段所使用的IP配置。也能從IP包里捕獲明文帳
號和密碼了。如AP 的登錄密碼。QQ 帳號等。科萊和CAIN 也能完成上面的工作他們和竊
聽工具有什么區別。科萊和CAIN 是通過ARP 欺騙來獲取數據的。這樣捕捉的效率不如竊
聽工具。而且會使合法客戶端鏈接不穩定。導致合法客戶端使用了ARP 綁定上面的攻擊就
無法使用了。竊聽工具是工作在數據鏈路層的。在知道了密碼的情況下這樣的竊聽防不勝防。
如果那個高手把這樣的工具弄出來告訴我一聲哦。
總結
以上是生活随笔為你收集整理的深入解析无线WEP和WPA密码及破解原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 它是最神秘的黑客组织:来自战斗民族 专黑
- 下一篇: 选择合适的家用WIFI路由器的秘籍 如何