在這里,惡意軟件的作者使用了一個(gè)base_64decode()調(diào)用來(lái)對(duì)看似毫無(wú)意義的字符串進(jìn)行解碼,使其變成攻擊代碼。惡意軟件所使用的工具和技術(shù),在執(zhí)行類似動(dòng)作時(shí),都是對(duì)更加復(fù)雜的模糊腳本或可執(zhí)行代碼進(jìn)行操作。

代碼包裝器與這類腳本模糊的可執(zhí)行代碼是同種東西。代碼包裝器通過(guò)將一個(gè)可執(zhí)行程序進(jìn)行編碼,然后在被編碼數(shù)據(jù)的開頭位置插入一段簡(jiǎn)短的“解碼”程序,此后就啟動(dòng)被解碼的程序,如上面的例子所展示的那樣。

注意,這是一段極端簡(jiǎn)短的代碼。特別是這段簡(jiǎn)短的加載器通常會(huì)處理如加載動(dòng)態(tài)鏈接庫(kù)等操作。

對(duì)于這種可執(zhí)行的模糊代碼,我們需要注意其多態(tài)性。多態(tài)性背后的觀念很容易理解:將復(fù)雜的程序分解,并可以通過(guò)多種方式組裝起來(lái)。例如,有一種工具,可以通過(guò)一段可執(zhí)行代碼來(lái)查找并發(fā)現(xiàn)指令,然后用隨機(jī)選擇的亂七八糟的東西來(lái)替換這些指令,使得惡意程序很難與檢測(cè)惡意代碼的反惡意程序中的簽名匹配。事實(shí)上,多態(tài)性可以工作在更為復(fù)雜的水平上,但其理念都是用功能性對(duì)等的東西來(lái)替換代碼塊。

上述例子中的指令是使用eval()函數(shù)來(lái)解碼并執(zhí)行的,因而會(huì)產(chǎn)生下面這段可被識(shí)別的代碼:

使用eval()函數(shù)來(lái)解碼模糊的惡意代碼

這段代碼揭示了一段PHP腳本,它能夠?qū)⒁自馐躌FI漏洞攻擊的機(jī)器信息(入站URI、操作系統(tǒng)類型、是否啟用了PHP的安全模式等)發(fā)送給惡意程序的作者。

其實(shí),代碼包裝工具還是有很多的,每一種都是上述包裝觀念的變種, Mporphine就是其中很著名的一個(gè)。

分享到

huanghui

相關(guān)推薦