操作系統(tǒng)大神制造的木馬,到底有多可怕?
Unix的作者Ken Thompson有種神奇的本事,他大搖大擺地走到公司任何一臺Unix電腦前,輸入自己的用戶名和密碼,就可以以root身份登錄系統(tǒng),為所欲為。
圖片
貝爾實(shí)驗(yàn)室人才濟(jì)濟(jì),看到Ken這么“囂張”,另外一些大牛發(fā)誓要把這個漏洞給找出來,他們通讀了Unix源碼,終于找到了Ken安放的登錄的后門,清理后編譯Unix,再次運(yùn)行,可是Ken Thompson還能以root身份登錄。
圖片
既然源碼沒問題,那肯定是編譯的過程出了問題!
編譯器一定被Ken動了手腳,在編譯Unix時植入后門!
于是,大牛們重新寫了一個干凈的編譯器,用這個干凈的編譯器去編譯干凈的Unix,這下世界清凈了吧?
可依然不管用,Ken像上帝一般,照樣以root身份登錄。
這實(shí)在是太讓人崩潰了!
后來,還是Ken Thompson本人解開了這個秘密。
原來,問題在于Ken寫的第一個C編譯器,它在編譯Unix源碼時,會植入后門。
圖片
但這還不夠,更牛的是,當(dāng)其他人寫了編譯器,肯定也需要編譯成二進(jìn)制的代碼,用什么來編譯呢?當(dāng)然是Ken寫的那第一個編譯器,于是,這個新的編譯器也被污染了。
再用新的編譯器去編譯Unix,也會植入后門。
圖片
所以,這就是Ken在1984年獲得圖靈獎演講時,提出的關(guān)鍵問題:
如果你沒有編寫全部的代碼,那你自己寫的代碼是不能被信任的。
無論多少源代碼級別的審核都不能保證安全性,因?yàn)槟阋蕾嚨能浖拖到y(tǒng)中還是可能有后門。
Ken選擇了C編譯器做手腳,但實(shí)際上他還可以選擇匯編器,load程序,甚至硬件級別的微代碼,隨著程序級別越來越低,這些錯誤越來難以被檢測到。
相比而言,相信編寫軟件的人更加重要。
那么這個后門僅僅局限于貝爾實(shí)驗(yàn)室,還是外界也能用?
開源先鋒Eric S. Raymond提到過,有兩份獨(dú)立的報告展示,那個帶后門的Unix版本確實(shí)從貝爾實(shí)驗(yàn)室“泄露了”,進(jìn)入了BBN公司。
BBN即雷神公司,曾經(jīng)深度參與互聯(lián)網(wǎng)的前身——ARPANET——的構(gòu)建。
圖片
報告稱,有人在深夜通過網(wǎng)絡(luò)用“kt”這個登錄名進(jìn)行了登錄BBN的Unix,kt很可能就是Ken Thompson的縮寫。
如果BBN的電腦被感染,那么其他地方的電腦被感染的可能性也非常高。
你可能會好奇,Ken的密碼是什么?知道了它不就可以登錄任意一臺Unix電腦了?
2014年,一個叫l(wèi)eah的網(wǎng)友在BSD 3 源碼樹的文件轉(zhuǎn)儲中發(fā)現(xiàn)了一個/etc/passwd 文件。
這真是一個寶藏,因?yàn)槔镞叞亩际荱nix前輩的密碼,每一個人都大名鼎鼎,如雷貫耳!
如Dennis Ritchie, Brian W. Kernighan, Steve Bourne and Bill Joy,當(dāng)然,Ken Thompson的密碼也在內(nèi)。
圖片
由于該密碼用基于 DES 的 crypt(3) 算法加密后的散列hash值,而 crypt(3) 是一種弱加密算法(最多限于 8 個字符),Leah 覺得破解起來應(yīng)該比較容易,所以決定嘗試。
很快,那些簡單的密碼就被破解了,但是Ken Thompson的密碼卻如同一座高山,一直巋然不動。
Leah花了好幾天,用小寫字母和數(shù)字不斷組合,徹底搜索,也不管用。
更有趣的是,這個crypt算法就是Ken Thompson和另外一位密碼學(xué)家Robert Morris編寫的,也許Ken在算法中弄了手腳?
嘗試無果的Leah把這個消息發(fā)到了郵件列表中,讓全球的黑客一起想辦法。
5年以后,澳大利亞人 Nigel Williams 宣稱終于破解 Ken Thompson 的密碼,他的密碼是:p/q2-q4!
圖片
猛一看,這像一個數(shù)學(xué)公式。而實(shí)際上是一種古老的符號,代表國際象棋中棋子的走位,意思是“線上的棋子向前移動 2 個方格(Pawns in the line move forward 2 squares”)。q 代表 Queen,p 代表 Pawn,這種走棋記法屬于國際象棋的代數(shù)記譜法。
圖片
Ken Thompson為什么用這個當(dāng)密碼呢?
因?yàn)镵en熱愛國際象棋,也是個國際象棋的高手,他在PDP-11上寫了一個國際象棋程序,后來又制作了加速運(yùn)算的特殊硬件, 最終形成了一臺叫Belle的國際象棋計算機(jī)。
圖片
Belle戰(zhàn)績驕人,在于人類的常規(guī)比賽中,獲得了2200等級分,成為第一臺榮升國際象棋大師的計算機(jī),還獲得了1980年世界計算機(jī)國際象棋大賽的冠軍。
當(dāng)然了,p/q2-q4!不一定是那個后門的密碼,即使是,那個到后門的Unix版本估計也找不到了。