惡意軟件作者演示愚蠢的加密錯誤,安全專家或可輕易破解
事實證明,由于犯罪分子的技術(shù)水平參差不齊,因此他們在開發(fā)惡意軟件的過程中經(jīng)常會犯一些愚蠢的錯誤。一旦惡意軟件的加密過程出現(xiàn)問題,安全研究專家就可以輕易地破解這些惡意軟件。
想要編寫安全的代碼是一件非常具有挑戰(zhàn)性的事情,而正確地在軟件中使用加密算法則更加需要下苦功夫。即便是經(jīng)驗豐富的開發(fā)人員也經(jīng)常會犯一些愚蠢的錯誤。如果你的目標(biāo)是為了在短時間內(nèi)通過詐騙手段來獲取金錢的話,那么你的軟件質(zhì)量可能就不會盡如人意了。如果軟件的加密體系設(shè)計不當(dāng)?shù)脑挘愕拇a中絕對會存在非常嚴(yán)重的加密錯誤。
只為實現(xiàn)自己的目的,完全不考慮其他
實際上,很多惡意軟件的開發(fā)者在“如何錯誤使用加密算法”上已經(jīng)給我們提供了非常豐富的經(jīng)驗和教訓(xùn)了。很多惡意軟件的作者通常會直接在他們的惡意代碼中加入加密算法,他們不會像合法軟件的開發(fā)者那樣去為自己的軟件設(shè)計合適的加密算法,因為犯罪分子一般不會去考慮惡意軟件的代碼質(zhì)量或者設(shè)計規(guī)范。他們往往只會關(guān)心這款惡意軟件是否能夠滿足他們的犯罪需求,其他的因素并不在他們的考慮范圍之內(nèi)。
實際上,有時可能因為開發(fā)時間有限,或者是開發(fā)人員并不理解某些加密算法的具體工作機(jī)制,所以代碼中的漏洞往往是不可避免的。但是,很多惡意軟件的作者甚至都不知道如何去正確使用加密工具。無論你是專業(yè)的或是業(yè)余的惡意軟件作者,你都不得不承認(rèn)加密算法的正確使用在惡意軟件的開發(fā)過程中是至關(guān)重要的一環(huán)。
有的惡意軟件屬于勒索軟件,攻擊者可以使用勒索軟件來從受害人身上勒索錢財。當(dāng)攻擊者需要通過C&C服務(wù)器來與受感染設(shè)備進(jìn)行通信時,同樣需要使用到惡意軟件來實現(xiàn)隱藏通信。除此之外,攻擊者有時也會需要使用惡意軟件來躲避安全工具的檢測。但是安全分析表明,目前有很多惡意軟件在使用加密算法時都存在各種各樣的問題。
知其然,而不知其所以然
比如說銀行木馬Zeus和Linux勒索軟件Linux.Encoder的開發(fā)者就陷入了這種誤區(qū),他們其實在采用加密算法之前并沒有真正理解這些加密算法內(nèi)部的運行機(jī)制。
銀行木馬Zeus的開發(fā)者在對Zeus與C&C服務(wù)器的通信數(shù)據(jù)進(jìn)行加密時,雖然選用的是著名的流加密算法RC4,但是他們卻對算法進(jìn)行了一些修改。他們將流數(shù)據(jù)通過RC4算法加密完成之后,會用數(shù)據(jù)中的每一個字節(jié)與下一個字節(jié)進(jìn)行異或運算,從而生成新的加密數(shù)據(jù)。雖然RC4算法有其自身的安全缺陷,但是這個算法的安全性對于Zeus來說,已經(jīng)是綽綽有余了。而開發(fā)人員所進(jìn)行的額外修改看似增加了數(shù)據(jù)的復(fù)雜程度,但實際上卻有些畫蛇添足的意味。
Linux.Encoder的開發(fā)者在為rand()函數(shù)選擇隨機(jī)數(shù)生成種子的時候使用的是當(dāng)前的時間戳,并通過這個隨機(jī)數(shù)來生成加密密鑰。但是安全研究人員發(fā)現(xiàn),通過這種方式生成的勒索軟件密鑰是非常容易被破解的。于是乎,該勒索軟件的作者又嘗試通過對時間戳進(jìn)行八次哈希計算來生成一個AES密鑰。
安全研究專家表示:
“連續(xù)使用一個哈希函數(shù)來對輸出數(shù)據(jù)進(jìn)行八次計算的這種行為足以表明,這些開發(fā)者其實根本就沒有真正理解哈希函數(shù)的作用。實際上,這種行為反而會大大降低程序的安全性。”
純粹的復(fù)制粘貼
安全研究專家發(fā)現(xiàn),很多惡意軟件的開發(fā)者通常會直接將某些看似可用的代碼復(fù)制到自己的項目中。這些代碼塊從表面上看似乎的確是一個可行的方案,但是他們卻并不了解復(fù)制過來的代碼塊是如何工作的。其實,復(fù)制粘貼他人的代碼也并不是什么大問題,如果這也成問題的話,那么StackOverflow這個網(wǎng)站也沒有存在的必要了。但是,如果開發(fā)者無法真正了解代碼塊的運行機(jī)制,那么他們又怎么能夠確定這段代碼是一個切實可行的解決方案呢?
勒索軟件CryptoDefense就是一個很好的例子。這款勒索軟件的很多功能都是從勒索軟件CryptoLocker身上抄襲過來的,比如說RSA2048加密,通過比特幣支付贖金,以及通過Tor網(wǎng)絡(luò)來與C&C服務(wù)器通信等等。除此之外,這款勒索軟件在實現(xiàn)RSA加密的過程中還使用了Windows的加密API,而這些加密代碼我們都可以在MicrosoftDeveloper Network的開發(fā)文檔中找到。
安全研究專家表示:
“根據(jù)開發(fā)文檔的描述,如果程序中的flag設(shè)置錯誤的話,那么應(yīng)用程序?qū)衙荑€保存在本地。而CryptoDefense的作者沒有正確設(shè)置這個flag,所以安全研究人員就可以直接在受害者的主機(jī)中找到解密密鑰。”
社會工程學(xué)
實際上,這些犯罪分子所犯的錯誤并不僅僅只有編碼錯誤而已,對于惡意軟件的開發(fā)者而言,社會工程學(xué)技術(shù)就是實現(xiàn)攻擊的一種捷徑。如果目標(biāo)用戶是“傻白甜”的話,那么他們其實根本就不需要去設(shè)計什么“完美的加密體系”,因為“欺騙”往往更加的容易。而且對于普通用戶而言,勒索軟件所采用的加密算法根本就不重要。
Nemucod是一款JavaScript木馬,而近期這款木馬卻轉(zhuǎn)型成了勒索軟件。安全研究專家通過分析發(fā)現(xiàn),雖然這款勒索軟件聲稱自己采用了RSA-1024加密,但它實際上使用的只是一種簡單的異或密碼。除此之外,在用戶的文件真正被加密之前,Nemucod會將勒索信息顯示給用戶。
Nemucod的開發(fā)者認(rèn)為:
“當(dāng)受害者看見“RSA-1024加密算法”這幾個字之后,可能就會被嚇到。這樣一來,他們就不會去仔細(xì)研究我們的勒索軟件了,而且有的用戶甚至可能會直接向我們支付贖金。”
總結(jié)
密碼學(xué)確實非常的深奧,很多軟件開發(fā)者在實現(xiàn)加密的過程中或多或少都會犯錯誤。甚至在目前的十大開源Web應(yīng)用程序安全項目中,開發(fā)人員在實現(xiàn)加密的過程中同樣會犯一些很白癡的錯誤,更何況那些唯利是圖的犯罪分子呢?