大約10年前,有種名為Typosquatting的古老攻擊手法——國內(nèi)有將之翻譯成“誤植域名”的。這個(gè)詞的前半部分“Typo”意思是排版錯(cuò)誤,其實(shí)已經(jīng)表達(dá)了這種攻擊手法的內(nèi)涵。舉個(gè)例子:黑客可能會(huì)去注冊(cè)像appple.com、taobaoo.com這樣的域名,如果用戶手誤多輸一個(gè)字幕,就會(huì)訪問到這樣的網(wǎng)站——這些網(wǎng)站還會(huì)模仿原網(wǎng)站,也就可以起到釣魚的作用了。
所以Typosquatting如果要分類的話,大概是可以劃歸到釣魚攻擊中去的。不過這類攻擊手法主要是寄希望于用戶可能會(huì)輸錯(cuò)某些域名。
最近來自德國漢堡大學(xué)的學(xué)生,利用Typosquatting攻擊,將他自己的代碼感染到了超過17000臺(tái)開發(fā)者的計(jì)算機(jī)中。注意哦,是開發(fā)者的計(jì)算機(jī)!而且里面很多人還是為美國政府,甚至軍方組織工作的。
究竟是怎么感染的?
這名漢堡大學(xué)的學(xué)生現(xiàn)年25歲,名叫Nikolai Philipp Tschacher。他在自己的學(xué)士論文里大致闡述了這種攻擊手法,論文名為《Typosquatting in Programming Language Package Managers》,有興趣的同學(xué)可以去搜一下。
整個(gè)過程其實(shí)很簡(jiǎn)單:他首先去瀏覽一些專門探討編程語言的社區(qū)網(wǎng)站(如PyPI、RubyGems、NPM),記錄了其中下載量較高的214個(gè)包。然后他自己偽造了這214個(gè)包,里面包含他自己的腳本代碼(雖然并非惡意的),名字與這214個(gè)包非常相似。
雖然不是域名,不過他也將之稱作Typosquatting攻擊。實(shí)際上里面的確沒有包含什么惡意代碼,只是給那些下載的開發(fā)者以警示:您安錯(cuò)包啦!另外,這段代碼還會(huì)向Tschacher的計(jì)算機(jī)發(fā)送一個(gè)Web請(qǐng)求,這樣他就能夠記錄他的代碼執(zhí)行了多少次,是否獲取到管理員權(quán)限。
攻擊結(jié)果很“理想”
最終的結(jié)果是很“喜人”的,幾個(gè)月時(shí)間內(nèi),他的代碼就在超過17000個(gè)獨(dú)立域名中執(zhí)行了超過45000次,其中超過一半還獲得了管理員權(quán)限。意外發(fā)現(xiàn)是,其中有兩個(gè)域名后綴為.mil,表明這是美軍有人也運(yùn)行了這段腳本。Tschacher在論文中說:
“另外還有23個(gè)域名以.gov結(jié)尾,是美國政府機(jī)構(gòu)的域名。這個(gè)數(shù)字是值得人們關(guān)注的,因?yàn)槟孟旅绹芯抗ぷ魇液驼畽C(jī)構(gòu)的主機(jī),會(huì)帶來災(zāi)難性的后果。”
這件事比較有趣的地方在于,Tschacher攻擊目標(biāo)并非普通終端用戶,而是開發(fā)者。如果Tschacher真的有意進(jìn)行攻擊,并植入了惡意代碼,那么打擊面和傳播速度都并非一般的釣魚網(wǎng)站可比。但凡從開發(fā)者入手的攻擊,總是能夠在短期內(nèi)極速傳播,因?yàn)槿绻_發(fā)過程都在神不知鬼不覺的情況下被植入惡意代碼,那么終端用戶遭遇攻擊也就顯得理所應(yīng)當(dāng)。
很多時(shí)候,將政府和企業(yè)作為目標(biāo)的的攻擊者,都很喜歡從開發(fā)者下手。因?yàn)殚_發(fā)者對(duì)敏感網(wǎng)絡(luò)擁有很高的訪問權(quán)限,能做的事自然就多多了。
延伸閱讀:有關(guān)Bitsquatting
是不是感覺這群被感染的開發(fā)者很弱智?然而實(shí)際上,Typosquatting也有比較高級(jí)的應(yīng)用。最后這部分作為簡(jiǎn)單的延伸:早在2011年的時(shí)候,安全研究人員Artem Dinaburg曾經(jīng)介紹過一種名為Bitsquatting的攻擊,基本理念就是取自于Typosquatting,但它并不依賴于用戶輸錯(cuò)域名,而是利用計(jì)算機(jī)的隨機(jī)單比特錯(cuò)誤(詳情點(diǎn)擊這里)。
其實(shí)所謂的比特錯(cuò)誤是發(fā)生在硬件產(chǎn)品上的,比如內(nèi)存、CPU緩存因?yàn)榄h(huán)境或者灰塵、輻射之類的,會(huì)莫名產(chǎn)生比特錯(cuò)誤(如著名的UltraSparc II CPU就存在這種問題)。比如我們要訪問一家網(wǎng)站,域名是n.com。其二進(jìn)制表達(dá)方式是這樣的:
n | . | c | o | m |
---|---|---|---|---|
01101110 | 0101110 | 01100011 | 01101111 | 01101101 |
如果內(nèi)存模塊發(fā)生比特錯(cuò)誤,某一位比特發(fā)生錯(cuò)誤,就會(huì)變成下面這樣。你在訪問n.com這個(gè)域名的時(shí)候,二進(jìn)制數(shù)據(jù)是需要過一次內(nèi)存的,但最終我們?cè)L問到的實(shí)際上是o.com,這個(gè)過程真正實(shí)現(xiàn)了神不知鬼不覺。如果有人注冊(cè)一個(gè)o.com域名,用于模仿n.com網(wǎng)站,則釣魚成功率幾乎可以達(dá)到100%。
o | . | c | o | m |
---|---|---|---|---|
01101111 | 0101110 | 01100011 | 01101111 | 01101101 |
這聽起來似乎很懸,前兩年國外有安全專家特別做了針對(duì)Bitsquatting的實(shí)驗(yàn)(首先選擇一些可能產(chǎn)生一比特之差的域名注冊(cè),比如說micrgsoft.com,然后主要從DNS來入手這個(gè)實(shí)驗(yàn)),結(jié)果每天都存在Bitsquatting后的域名請(qǐng)求,的確非常神奇。
* Freebuf官方報(bào)道,本文作者:歐陽洋蔥,轉(zhuǎn)載請(qǐng)注明來自FreeBuf黑客與極客(FreeBuf.COM)