有個笑話:女的說,你們能讓論壇上的人吵起來,我就做你女朋友。男的發了一句話:PHP是世界上最好的語言。瞬間論壇就炸鍋了,女的說好吧,我同意了,咱們去吃飯吧。男的:不!我一定要說服他們PHP必須是世界上最好的語言。今天揭秘一個“最好的語言”編寫的木馬——敲詐者木馬。 背景 你永遠叫不醒一個裝睡的人。但,快遞小哥可以! 雖說是一句戲言,但確實多少反映出了快遞在大家心中的重要性。如果你收到一個帶有快遞公司發來的電子郵件通知,你會不會也希望快點打開看看是不是哪個朋友給你寄了什么東西等著你去取呢?最近我們就收到了這樣的一個帶有“快遞單號”的電子郵件附件。唯一有些水土不服的就是——在中國用FedEx的確實并不很多……大寫的PITY……
木馬起始——FedEx_ID_00645987.doc.js 這個所謂的doc文檔,其實是一個javascript腳本,而腳本的內容……好亂…… 凌亂的javascript腳本代碼 經過簡單的解密和格式整理,給大家呈現了一個比較漂亮的腳本格式如下: 整理后的javascript腳本代碼 腳本主要功能就是循環下載并執行木馬。腳本中供提供了5個域名供下載(域名作用為備份,如果前面的域名可以下載,則不再嘗試后面的域名): 腳本通過給URL傳遞不同參數的方式,獲取不同的文件(返回狀態碼200且返回內容大于1000字節即判斷為下載成功)。 最終木馬獲取如下文件(p.s. 根據后續實測,這五個文件仍在服務端不定期更新,本文僅描述文章撰寫時下載到的樣本行為): 如上表所示,腳本下載到本地的5個文件實際上被分成了3組:a1.exe和a2.exe各自獨立運行;a.exe、php4ts.dll和a.php則同為一組。必須三個文件同時存在,腳本才會執行該木馬,而且還會再執行完第三組之后打掃一下戰場——刪除掉木馬文件并且修改注冊表值用于關聯被加密的文件: 根據VT的掃描結果來看,54家全球主流殺軟中有12款產品可以檢出該木馬: PHP木馬分析 其實這個木馬最先引起我們興趣的是后面下載的這三個一組的文件。之所以引起我們的興趣,是因為根據我們的記錄:a.exe和php4ts.dll其實都是人畜無害的合法程序。實際上,a.exe是PHP Thread Safe CGI(PHP線程安全通用網管接口),而php4ts.dll則是這個接口程序運行所必須導入的一個動態庫文件: 把話說的通俗點,這兩個程序其實就是一個php腳本的解釋器。他們被下載下來的唯一目的——就是讓a.php可以執行。所以就讓我們看看這個a.php吧: 代碼邏輯并不復雜,腳本會遍歷C盤到Z盤的所有盤符下的文件,并跳過含有以下字符串的目錄: [code]\winnt\boot\system\windows\tmp\temp\program\appdata\application\roaming\msoffice\temporary\cacherecycle[/code] [code][/code]查找以下這些擴展名的文件: [code]zip|rar|r00|r01|r02|r03|7z|tar|gz|gzip|arc|arj|bz|bz2|bza|bzip|bzip2|ice|xls|xlsx|doc|docx|pdf|djvu|fb2|rtf|ppt|pptx|pps|sxi|odm|odt|mpp|ssh|pub|gpg|pgp|kdb|kdbx|als|aup|cpr|npr|cpp|bas|asm|cs|php|pas|class|py|pl|h|vb|vcproj|vbproj|java|bak|backup|mdb|accdb|mdf|odb|wdb|csv|tsv|sql|psd|eps|cdr|cpt|indd|dwg|ai|svg|max|skp|scad|cad|3ds|blend|lwo|lws|mb|slddrw|sldasm|sldprt|u3d|jpg|jpeg|tiff|tif|raw|avi|mpg|mp4|m4v|mpeg|mpe|wmf|wmv|veg|mov|3gp|flv|mkv|vob|rm|mp3|wav|asf|wma|m3u|midi|ogg|mid|vdi|vmdk|vhd|dsk|img|iso[/code] [code][/code]打開每一個符合擴展名要求的文件,讀取前1024字節并和密鑰做循環異或加密。加密完成后再將修改后的文件加上一個.crypted擴展名——萬事大吉。 只是讓我們很疑惑的是——雖然php這世界上最好的語言(好吧,這只是個梗),但木馬作者是如何用php在這么一段并不算長的代碼中實現不對稱加密的敲詐者代碼的? 細讀代碼之后恍然大悟——并沒有實現……這段代碼的加密方式采用了對稱加密算法,準確的說是循環異或加密。更加“人道主義”的是——這個php的加密代碼其實是“兩用”的,只要修改腳本中的一個參數,整個腳本立刻成為了解密腳本?梢灾苯訉⒓用艿奈臋n解密回去: 所以說世界已經這么亂了,不對稱加密的敲詐者滿天飛的今天,對稱加密敲詐者能不能就不要來添亂了? 當然,也并不是說這個腳本就人畜無害了——對稱加密沒有密鑰想解開依然很麻煩,雖然我們這里拿到密鑰了,但上面已經說了:木馬作者再服務端依然持續更新著木馬的內容,并且木馬運行后會自刪除,所以說雖然是對稱加密,但依然有可能因為找不到加密時的密鑰導致依然很難解開文件(難,但并非無解)…… 但這都不是重點,重點是木馬在加密完文件之后給出的敲詐信息: 相對于那些動輒兩三個比特幣的敲詐者木馬來說,0.40290個比特幣雖然有零有整的程度令人發指,但確實也算是價錢厚道了。但你所謂的“RSA-1024”是什么鬼?明明就是個簡單的循環異或加密好么!不要假裝自己是高大上的不對稱加密好么!WTF…… POWERSHELL木馬分析 然后我們再來說說兩個獨立運行的powershell木馬。雖然a1.exe與a2.exe是各自獨立運行的,但因為他們的行為基本相同,所以我們這里合并為一個來做統一說明。 樣本首先會執行注入功能: 之后對線程做恢復以便執行注入后的代碼: 完成后,惡意代碼會檢測機器環境——對不知處powershell的系統安裝微軟的KB968930補丁(補丁相關說明:https://www.microsoft.com/en-us/download/details.aspx?id=16818),添加對powershell的支持: 在確保用戶環境可以執行powershell之后,注冊一個文件關聯,在文件打開的shell command中執行一段腳本: 這是一段短小精悍的腳本,但系統會根據這段短小的腳本的指令,再次訪問注冊表去執行注冊表中的另一段惡意代碼: 通過這種方式,惡意程序將惡意代碼全部保存在注冊表中,而落地文件只是用于觸發惡意代碼的執行,本身并沒有惡意代碼。落在本地的文件根本沒有惡意代碼,這樣就更容易繞開安全軟件的掃描檢測。 我們導出含有惡意的代碼的注冊表內容,如下: 雖然已經是落在注冊表中,但顯然木馬作者還是不放心——依然是用了多次的加密來掩蓋這段代碼的行為意圖。經解密,我們得到的最終執行代碼正是一段powershell代碼: 顯然,雖然已經解密到最終一步,但中間的變量“$sc32”依然讓人看著有些不知所云……但看到ps1代碼的最后,發現其實這已經是最終代碼了。最終就是將$sc32的內容全部加載帶內存中執行: 我們把數據dump出來,發現代碼會從遠端下載文件到本地執行,并且還會判斷一下文件是否是有效的可執行程序——典型的下載者木馬: 非PE漸成趨勢 隨著安全軟件的普及,木馬病毒與安全軟件的對抗也逐漸變成了“近身肉搏戰”,大家都在鉆細節,都想在對方忽略的某個小點上做單點突破——這樣一來,各種腳本甚至連腳本都不算的數據文件就顯現除了相對于傳統PE格式木馬更多的優勢。 這次出現的敲詐者木馬就是典型的例子——一個javascript腳本木馬釋放出了一個php腳本木馬和兩個powershell腳本木馬。而powershell木馬甚至都沒有落成ps1腳本而是直接在注冊表中存儲,php木馬有落地的php文件,但php腳本既然能實現對稱加密的敲詐者木馬,更高一級的不對稱加密敲詐者木馬真的還會遠么? 當然,并不是說非PE就可以為所欲為了,既然是近身肉搏,安全軟件的響應自然也不會處于下風——兵來將擋水來土掩,我們已經做好了戰斗準備。 |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信