看完就改密碼!但我打賭你肯定看不完
2025-01-12 11:06:11
泡泡網新聞頻道5月30日 今天小編在煎蛋網發現一篇長文,用玩家的話說「我……從來沒有在煎蛋上見到那麼長的東西……除了邊欄廣告……」,這篇文章題目《用戶密碼薄如紙》,看過之後你會相信現世界上部分黑客猜密碼的時候都會試試「對馬電池訂書釘(correcthorsebatterystaple)」。詳情請謄出40分鐘看下文。
Password:對馬電池訂書釘(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 HD6990 GPU的機器,搞定了 13,486個密碼,佔全部的82%!另外一名諢號 moniker radix的黑客,用一塊AMD 7970,搞定62%的密碼,也差不多花了1個小時,如果不是被我們打擾接受採訪,他應該能取得更好的成績。
黑客窮舉破解密碼所用的「字典」裡,包括了很多密碼明文,這些常用的密碼字符組合,來自於很多大型網站的用戶數據中,包括像「123456」,「password」之類,這些屬於弱暴了的密碼,還有稍微好一點的,像「」、「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人沒有選擇一個好密碼,他們總以為自己選了一個好密碼,但正相反,那些密碼太糟糕了」。
抓緊把密碼改了吧騷年
編輯總結:
相信看完每段的人並不多,很多人都希望馬上知道結論:我該如何設置密碼才安全?小編總結:20個字符以上很安全。至於這20多個字符是常見用語,還是隨機字符影響都不大。而較勁腦汁想出的6-8位「字母+大小寫+符號+數字」的密碼組合真的很脆弱,很脆弱。網站保存的用戶名和密碼都不會用明文(直接顯示出),而是用加密後的方式保存,即便這樣,幾個水平較高的黑客完全可以在幾小時內破解90%用戶的密碼,你開始改密碼了嗎?■