在這里,惡意軟件的作者使用了一個base_64decode()調(diào)用來對看似毫無意義的字符串進行解碼,使其變成攻擊代碼。惡意軟件所使用的工具和技術(shù),在執(zhí)行類似動作時,都是對更加復(fù)雜的模糊腳本或可執(zhí)行代碼進行操作。
代碼包裝器與這類腳本模糊的可執(zhí)行代碼是同種東西。代碼包裝器通過將一個可執(zhí)行程序進行編碼,然后在被編碼數(shù)據(jù)的開頭位置插入一段簡短的“解碼”程序,此后就啟動被解碼的程序,如上面的例子所展示的那樣。
注意,這是一段極端簡短的代碼。特別是這段簡短的加載器通常會處理如加載動態(tài)鏈接庫等操作。
對于這種可執(zhí)行的模糊代碼,我們需要注意其多態(tài)性。多態(tài)性背后的觀念很容易理解:將復(fù)雜的程序分解,并可以通過多種方式組裝起來。例如,有一種工具,可以通過一段可執(zhí)行代碼來查找并發(fā)現(xiàn)指令,然后用隨機選擇的亂七八糟的東西來替換這些指令,使得惡意程序很難與檢測惡意代碼的反惡意程序中的簽名匹配。事實上,多態(tài)性可以工作在更為復(fù)雜的水平上,但其理念都是用功能性對等的東西來替換代碼塊。
上述例子中的指令是使用eval()函數(shù)來解碼并執(zhí)行的,因而會產(chǎn)生下面這段可被識別的代碼:
這段代碼揭示了一段PHP腳本,它能夠?qū)⒁自馐躌FI漏洞攻擊的機器信息(入站URI、操作系統(tǒng)類型、是否啟用了PHP的安全模式等)發(fā)送給惡意程序的作者。
其實,代碼包裝工具還是有很多的,每一種都是上述包裝觀念的變種, Mporphine就是其中很著名的一個。