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