用戶密碼薄如紙
感謝XKCD的漫畫,現在世界上所有的黑客猜密碼的時候,都會試試「對馬電池訂書釘」(correcthorsebatterystaple)這個密碼。
前情提要:可能各位煎蛋蛋友看了題圖和這句話后,會有點懵。其實「對馬電池訂書釘」出自XFCD發表的漫畫名為「密碼強度」:
但是……這幅漫畫顯然太低估黑客們的實力了:
本周,Ars網站邀請了三位黑客破解了16,000多個hash過的密碼-成功率90%!
OK,這可能是煎蛋史上最臭最長的文章,翻譯君為了體量諸位蛋友的耐心,先上一個刪減版把這事兒說清楚:
黑客告訴你,你的密碼不是因為又臭又長就安全,而是因為沒人惦記你,所以暫時安全。
咳,然后是獻給好學蛋友們的正文:
3 月,博客作者Nate Anderson,下載了一份側漏的暴庫密碼表,內含超過16,000個hash過的真實密碼,經過百度知道的簡單培訓,結果只花了大概能煎3個蛋的功 夫,破解了其中一半的密碼。這給所有人提了一個警醒:如果一個沒有經過任何訓練的蛋友,就能達到這個程度,想一下一個職業黑客能搞出多大動靜。
不用自行腦補了,我們請來了三位職業黑客,使出渾身解數,來破解Anderson練手的那份密碼表,展開了終極PK。你會看到包括數字,大小寫,標點符號的長密碼是如何被快速破處出的。
這 份密碼表里總共有16,449個hash過(MD5)的密碼。任何負責的網站,都不會明文存儲用戶的密碼信息,而是用MD5加密,這種加密過程是不可逆 的,也就是說,就算拿到MD5密文,也不可能直接「反求」出原文。比如 「passwd」 被hash過以后,密文是 「5f4dcc3b5aa765d61d8327deb882cf99」 。
雖 然Anderson的47%破解率已經非常不錯,但對于職業黑客來說,還是不足掛齒。為了證明這點,我們請來他們來演示一下,說真的,他們沒有讓我們失 望。就算三個里成績最差的一個——他用最弱的硬件,花了一個小時,用最小的字典,中間還接受了一次采訪,也搞定62%的密碼,而最好成績是90%。
這個三人黑客團隊包括一名密碼破解軟件專家,一名安全顧問,和一名匿名自由黑客。其中最牛的一名黑客是來自S.C.G., 使用一臺只配置一塊AMD 7970 GPU的家用電腦,花了20小時破解了90%,共14,734個密碼。免費GPU密碼破解軟件oclHashcat-plus(參 加測試的黑客都使用這款軟件)的開發負責人,Jens Steube 也取得了不俗的成績,他在一個多小時的時間里,用一臺雙AMD 6690 GPU的機器,搞定了 13,486個密碼,占全部的82%!另外一名諢號 moniker radix的黑客,用一塊AMD 7970,搞定62%的密碼,也差不多花了1個小時,如果不是被我們打擾接受采訪,他應該能取得更好的成績。
黑 客窮舉破解密碼所用的「字典」里,包括了很多密碼明文,這些常用的密碼字符組合,來自于很多大型網站的用戶數據中,包括像「123456」, 「password」之類,這些屬于弱暴了的密碼,還有稍微好一點的,像「p@$$word」、「123456789j」、「LETMEin3」等也同樣 不堪一擊。在這些字典里,你還能找到一些理論上強悍的密碼,比如「LOL1313le」、「1368555av」、[Oscar+emmy2]之類:
截 圖里展示了一部分黑客字典中的密碼組合。像這次參與PK的黑客手里的字典,有接近1億種常見密碼。但像「momof3g8kids」、 「Coneyisland9/」這樣的密碼,雖然不在他們的字典里,一樣沒能幸免,他們是怎么做到的呢?答案來自于兩個方面:網站沒能保護用戶密碼的 MD5信息,和用戶沒有使用足夠強壯的密碼。
嗖嗖地,妥妥的
「這些弱暴的密碼」radix說道,他不愿意透露真名,「說明他們真的不是很在乎自己的密碼安全,別用MD5加密,這對他們來說其實并不難」。
MD5 算法,是一種快速簡單的的「報文編譯」方法,由它生成的密文,也是黑客最喜歡拿來練手的對象,一塊GPU顯卡,就能在1秒鐘內遍歷8億個字符組合,比較起 來看,加密過程就費時費力的多,比如在蘋果Mac OSX系統,和大多數基于Unix的系統上采用的SHA512加密算法,一個明文密碼需要經過5,000次hash。這點小障礙也就讓一塊GPU每秒少跑 了2,000次而已,類似的還有bcrypt,scrypt,和 PDKDF2。
另 外一個漏洞就是用戶自己,選擇好記的單詞當作密碼,好記就代表容易被破,比如「momof3g8kids」看上去好記又難猜,但實際上,「mom」、 「kids」都是每一個黑客手里必備的破解詞匯。越來越彪悍的硬件和軟件,能讓黑客輕而易舉地不斷嘗試這些詞匯的各種組合,除非用戶細心設計,否則好記的 密碼就是正中黑客下懷。
而 且必須指出,這次三名黑客并不知道這份密碼表是從哪個網站得來的,這就等于封殺了他們的一項技能。一般,當得到一份hash過的密碼表后,他們第一個步就 是「去那個網站看看他們的密碼設置要求和強度」radix說道,如果黑客知道這個網站的密碼強度和其它約定,這就大大減小了他們的工作強度,讓黑客可以有 針對性地采取破解策略。
破解步驟
要 細說他們是如何破解強密碼的,那就需要對他們三個人的方法和策略進行比較分析,因為他們的硬件和方法都不太一樣,也不能說得哪個人的水平更高一些,打個比 方,這是一場游戲通關,那么一關定比一關難,第一輪破解,一般能搞定其中50%的密碼,后面的成功率就越來越少,到最后的階段,他們只能純靠運氣,得到幾 百個密碼明文。
舉 例來講,在Goseney動手的第一階段,只花了16分鐘,就干掉了10,233個hash密文,也就是62%的樣子。他先用6位以內的密碼開路,用暴力 窮舉法對付1~6個字符的密碼組合由95個字符組成的密碼,包括26個小寫,26個大寫,10個數字,33個符號。猜完一輪這樣的排列組合(956 + 955 + 954 + 953 + 952+95 個),只花了2分32秒就得到了1,316個正確結果。
當密碼長度超過6位,Gosney開始改變策略,用精心挑選的字典進行窮舉。因為隨著密碼長度的增加,字符組合成指數級增長。1小時能搞定所有6位密碼,但要遍歷更長的密碼,可能要花費數周,甚至數年。所以,對于暴力窮舉破解的方法,有一種說法叫:「長度防火墻」:
暴力窮舉可以很好地對付6位以下的密碼,但對于8位以上的密碼,就算開動Amazon的EC2云計算也無能為力。
黑 客當然不會一條道走到黑,Gosney 下一步的暴力窮舉將只針對7~8位,全小寫字母的情況。這將大大減少窮舉所需時間,而且收獲也不少,成功破解1,618個密碼。接著他繼續嘗試7~8位全 大寫的情況,又得到了708個結果。因為他們的排列組合是268+267,每一步只許41秒。最后,他嘗試全部由數字組成長度從1~12位的情況,得到 312個密碼,耗時3分21秒。
用 光了以上入門級暴力破解法,黑客Gosney這才開始拉開架勢,拿出自己潛心調教多年的「字典」,通過在HashCat軟件中內置的「best64」規則 (一種基于密碼統計學的破解行為模式),他能在9分04秒內,跑完了6,228個hash密文,然后他利用上一步破解所得到的所有明文密碼,通過另一組名 叫「d3ad0ne」的規則過濾獲得「字符組合特征」,讓他在一秒鐘內,又得到了51個密碼明文。
「正常情況下,我先用暴力窮舉法,完成1~6位的密碼破解,因為就算是單GPU,也能幾乎瞬間完成用MD5加密的密碼」。Gosney在郵件中解釋道:
因為這一步很快就能完成,所以,我的字典幾乎都 是6位以上的密碼組合。這可以讓我節省不少磁盤空間,也可以利用GPU的蠻力,加快我之后用字典破解的速度。對于數字組合也是這樣,我可以很快破解純數字 的密碼,所以在我的字典里沒有任何數字組成的密碼,然后才是我的字典文件+bast64規則文件。我們的目的就是先挑軟柿子捏。
從 簡單密碼下手對于被「摻鹽」(cryptographic salt)的密碼特別有用。「摻鹽」是用來對付黑客的「彩虹表」(一種明文和密文對應的窮舉表)和類似的字典技術,摻鹽就是在用戶密碼后面,再加上隨機字 符,然后再hash的技術。除了防御彩虹表,摻鹽也減慢了暴力窮舉法的破解速度。
但「摻鹽」的關鍵在于,只有在摻入不同的鹽巴(字符)情況下,才能明顯減慢破解速度。這就意味著,摻鹽的效果,會隨著破解的進行而逐漸降低。黑客可以通過破解簡單密碼的結果,逐漸排除鹽巴的干擾。當然,這次PK活動使用的密碼沒有被摻鹽。
經 過第一輪的摧枯拉朽,10,233個hash密文已經告破,進入第二個階段,黑客開始采用「混合破解的策略」。就和之前提到的游戲通關的比喻一樣,隨著難 度的增大,第二階段需要花費的時間會大大增加,而且戰果也會減少,準確的說,只有2,702個密碼告破,耗時5小時又12分鐘。
就 和名字一樣「混合破解法」,結合了暴力窮舉和字典破解兩種路數,這大大拓展的字典所涵蓋的組合種類,并且把組合數量控制在能接受的范圍里。第一輪,黑客在 所有字典條目的后面,加上兩個隨機字符包括符號和數字,這樣在11分25秒內,有破獲585個密碼。第二輪加上3個隨機字符,耗時58分鐘,得到527個 結果,第三輪再接再厲,加上四個隨機數字,25分鐘內又得到435個密碼明文,第四輪,加上四個隨機字符包括一個數字和三個小寫字母,再斬獲451個密碼 明文。
面對可觀的戰果,Gosney認為,這只用了一張GPU卡的結果而已。
「你注意到我們只加上了2~3個長度的隨機字符,但到4個長度,我們只能用數字了,因為只有1塊顯卡的GPU,想要跑完+4位隨機字符和數字的組合會耗費很長時間,所以我只能放棄。」
毫無疑問,說這話的Gosney,已經用這臺25GPU交火的怪獸機搞過更長的密碼,他在去年10月透露了這臺名叫「鐳池」機器:
因為GPU的并行運算能力是隨著運算單元的增加而線性增長,這讓Gosney很好地利用這些資源,讓他能在每秒獲得350億次的運算速度,去挑戰微軟的NTLM加密算法。
第二階段,Gosney繼續采取差不多的戰術。在這個階段結束的時候,他總共斬獲 12,935個密碼明文,也就是完成了78.6%的破解工作,總共耗時5小時28分鐘。
很 多黑客都知道有一個有趣的現象,就是在同一個網站下,用戶的密碼會非常相似...盡管這些用戶互天南海北,互相都不認識。通過已經得到大部分的密碼,黑客 開始分析這個未知網站的密碼特征,來模仿這個網站用戶的行為,去破解余下的密碼。通過Markov Chains(一種統計學模型),黑客用HashCat生成了一份新的密碼詞典,Gosney認為,這本字典是高度優化和智能的,大大縮減了所需的字符組 合數量。
初 級的暴力窮舉詞典包含像「aaa」,「abb」這樣的組合。但經過Markov Chains調教過的字典,通過分析已有密碼明文,列舉出了最有可能的密碼組合。「Markov破解法」,可以把7位字符組合難度從 957降低到657,大概可以節省7個小時。一般來說,字符組合有「首字母大寫,中間小寫,數字在尾部」等顯著特點,Markov破解法的命中率,幾乎可 以和暴力窮舉的命中率一樣高。
「這讓你的破解方法更具針對性,因為你對于具體的網站,有了具體的目標」,Gosney說道,當你獲得了這些組合特征,你就能順藤摸瓜直搗黃龍。
Gosney花了14小時59分鐘,完成了第三階段的破解工作,得到了1699個密碼。有趣的是,在這個階段,前962個密碼花費了大概3個小時,但后面的737個密碼卻花費了12個小時。
黑客radix手里有2009年,線游戲服務商RockYou的被SQL注入攻擊后,暴出的數據庫,內含140萬個密碼明文,另外還有一份貨真價實的更大的密碼詞典,但魔術師不會輕易透露機關,PK中radix也沒有拿出這份字典。
獵殺哈希
光 用RockYou的暴庫數據,radix就能取得和新手Anderson差不多的戰績,獲得4900個密碼明文,大概占總量的30%。接著,他用這份數 據,切掉后四位,加上四位隨機數字,HashCat預估需要2個小時才能跑完,這要比radix預計的長,但他跑了20分鐘以后,也得到了2,136個密 碼明文。接著他又嘗試了1~3位數字的組合,再次得到259個結果。
「分析,直覺,加一點點魔法」,radix說道,「提取模式,測試組合,把結果放入字典繼續嘗試,等等」,如果你知道你手里的密文的來源網站,你就能猜到和那個網站有關的領域里的詞匯,然后你就能搞到你想要的結果。
于是radix從已經得到的7,295個密碼分析,發現了一些明顯的特征,比如三分之一的密碼由8個字符組成,19%的是9個字符,16%有6個字符,69%由「字母+數字」組成,他還發現62%的密碼全是小寫字母和數字組成。
這 些信息給了他繼續破解的階梯。后面,他采用「掩碼破解法」,這和之前的「混合破解法」頗為相似,但要比暴力窮舉節約大量時間,嘗試「全小寫字母+數字」的 1~6位密碼組合,得到341個密碼。但8位「全小寫+數字」的組合所需時間,還是超出radix的期望,雖然復雜程度從528減到了268,就 radix手頭的機器來說,這就是6小時和1個小時的區別,但他還是跳過了這一步。
于是radix改變了策略,使用HashCat內置的5,120種特殊規則,例如把「e」替換成「3」,刪掉每一個單詞的第一個字母,或者每隔一個字母加一個數字……在38秒之內,又破了1,940個密碼。
「這就是黑客的樂趣所在」他說,「就像打獵,但你找的不是動物,而是哈希密文」。但他也承認密碼破解技術的陰暗面,游走在道德的邊境,如果多走一步,后果嚴重。
當另一位黑客Steube發現了一個密碼組合:「momof3g8kids」的時候,忍不住說道:「這就是用戶的密碼邏輯,但我們并不知道這種邏輯,這給了我一些靈感,這就是我們為什么要盯著屏幕看結果」。
「momof3g8kids」被破解的原因是,Steube采用了「詞典聯合破解法」,他用多本詞典的種的條目組合,發現了這個密碼,其中,「momof3g」在一本1110萬的大詞典中收錄,而「8kids」在另外一本較小的詞典中。
「這太酷了!」他引用了本文開頭,xkcd的那副著名的漫畫說道:「告訴“對馬電池訂書釘”,這不靈」。
PK 過程中,最讓人驚異的就是某些破獲的密碼明文,包括:「k1araj0hns0n」,「Sh1a-labe0uf」,「Apr!1221973」, 「Qbesancon321」,「DG091101%」……甚至包括了像「all of the light」這樣包含空格的密碼。Steube還在結果中看到了「Philippians4:6-7」和「qeadzcwrsfxv1331」,他表示: 「如果不是用暴力窮舉,是不可能猜到這些密碼的」。
GPU通用計算出現以后,很少有黑客在攻擊中采用「彩虹表」(rainbow tables),這種過時的方,需要容量巨大的表文件。
當Reputation.com看到從自己網站被攻擊后泄露的用戶信息后表示,雖然看上去用戶的密碼加密信息不可能被破解,但我們還是立即通知用戶更改自己的密碼。
所有公司都應該認識到,就算用戶密碼被hash過,但發生信息泄露以后,用戶應該立即更換密碼,特別是那些在不同網站,卻用相同密碼的用戶。黑客通常能從被暴庫的密文中,破解60%~90%的密碼。
必須承認,采用「摻鹽」hash用戶密碼的的網站確實能減緩大量hash信息被破解速度,但「摻鹽」并不能阻擋對單個hash密文和少量密文的破解,換句話說,如果黑客針對的是具體的某個帳戶,比如銀行經理,某位名流,「摻鹽」也無能為力。
這三位黑客的高超技藝,也指出用戶需要加強自己的密碼保護意識。許多世界500強企業,都對雇員郵件帳號,和訪問公司網絡的密碼有嚴格的規定,這大大增加了黑客攻擊的難度。
「在企業行業領域,這確實不容易」,radix說道,「當我給一家企業做密碼安全漏洞檢查的時候,那簡直了,我可能跑三天三夜也得不到一個字符。」
如果網站可以像那些大企業一樣采取相同的安全策略,那用戶密碼就會安全很多。但這對于用戶來說,要去記住11位的隨機密碼確實有點痛苦。
黑客破解hash密文的效率,與網站得知用戶信息被泄露以后的反應,形成鮮明的對比。就在上個月,LivingSocial披露黑客攻破了他們的數據庫,暴出了了5千萬個用戶姓名,地址和密碼信息的hash內容,但網站負責人顯然低估了這所帶來的風險。
網站CEO Tim說:「雖然用戶的密碼已經被加密,而且很難被破解,我們的預防措施也能保證用戶的數據是安全的,但我們還是通知大家,更新自己的網站密碼」。
事實上,幾乎沒有什么能阻止黑客去解密hash信息。LivingSocial所用的SHA1算法,在黑客面前不堪一擊。雖然他們也宣傳用戶的hash是被「摻鹽」的,這也無法保證用戶信息的安全。
由 此課件,Intel最近上線的一個網站,宣稱能測試你的密碼強度,是多么的不靠譜,它竟然評估說「BandGek2014」需要6年時間才能被破解,可笑 的是,這個密碼可能在黑客手里,大概是被首先拿下的。問題的關鍵在與,大部分網站的密碼強度要求,正好落在黑客的能力范圍之內。
「你們已經看到了,我們在1小時之內破出了82%的密碼,意味著有13,000人沒有選擇一個好密碼,他們總以為自己選了一個好密碼,但正相反,那些密碼太糟糕了」。
文/煎蛋網