360安全衛士 · 2016/06/22 14:53javascript
你永遠叫不醒一個裝睡的人。但,快遞小哥能夠!php
雖然說是一句戲言,但確實多少反映出了快遞在你們心中的重要性。若是你收到一個帶有快遞公司發來的電子郵件通知,你會不會也但願快點打開看看是否是哪一個朋友給你寄了什麼東西等着你去取呢?最近咱們就收到了這樣的一個帶有「快遞單號」的電子郵件附件。惟一有些水土不服的就是——在中國用FedEx的確實並不不少……大寫的PITY……java
這個所謂的doc文檔,實際上是一個javascript腳本,而腳本的內容……好亂……git
通過簡單的解密和格式整理,給你們呈現了一個比較漂亮的腳本格式以下:github
腳本主要功能就是循環下載並執行木馬。腳本中供提供了5個域名供下載(域名做用爲備份,若是前面的域名能夠下載,則再也不嘗試後面的域名):算法
腳本經過給URL傳遞不一樣參數的方式,獲取不一樣的文件(返回狀態碼200且返回內容大於1000字節即判斷爲下載成功)。sql
最終木馬獲取以下文件(p.s. 根據後續實測,這五個文件仍在服務端不按期更新,本文僅描述文章撰寫時下載到的樣本行爲):shell
如上表所示,腳本下載到本地的5個文件實際上被分紅了3組:a1.exe和a2.exe各自獨立運行;a.exe、php4ts.dll和a.php則同爲一組。必須三個文件同時存在,腳本纔會執行該木馬,並且還會再執行完第三組以後打掃一下戰場——刪除掉木馬文件而且修改註冊表值用於關聯被加密的文件:windows
根據VT的掃描結果來看,54家全球主流殺軟中有12款產品能夠檢出該木馬:安全
其實這個木馬最早引發咱們興趣的是後面下載的這三個一組的文件。之因此引發咱們的興趣,是由於根據咱們的記錄:a.exe和php4ts.dll其實都是人畜無害的合法程序。實際上,a.exe是PHP Thread Safe CGI(PHP線程安全通用網管接口),而php4ts.dll則是這個接口程序運行所必須導入的一個動態庫文件:
把話說的通俗點,這兩個程序其實就是一個php腳本的解釋器。他們被下載下來的惟一目的——就是讓a.php能夠執行。因此就讓咱們看看這個a.php吧:
代碼邏輯並不複雜,腳本會遍歷C盤到Z盤的全部盤符下的文件,並跳過含有如下字符串的目錄:
查找如下這些擴展名的文件:
#!shell
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
複製代碼
打開每個符合擴展名要求的文件,讀取前1024字節並和密鑰作循環異或加密。加密完成後再將修改後的文件加上一個.crypted擴展名——萬事大吉。
只是讓咱們很疑惑的是——雖然php這世界上最好的語言(好吧,這只是個梗),但木馬做者是如何用php在這麼一段並不算長的代碼中實現不對稱加密的敲詐者代碼的?
細讀代碼以後恍然大悟——並無實現……這段代碼的加密方式採用了對稱加密算法,準確的說是循環異或加密。更加「人道主義」的是——這個php的加密代碼實際上是「兩用」的,只要修改腳本中的一個參數,整個腳本馬上成爲了解密腳本。能夠直接將加密的文檔解密回去:
因此說世界已經這麼亂了,不對稱加密的敲詐者滿天飛的今天,對稱加密敲詐者能不能就不要來添亂了?
固然,也並非說這個腳本就人畜無害了——對稱加密沒有密鑰想解開依然很麻煩,雖然咱們這裏拿到密鑰了,但上面已經說了:木馬做者再服務端依然持續更新着木馬的內容,而且木馬運行後會自刪除,因此說雖然是對稱加密,但依然有可能由於找不到加密時的密鑰致使依然很難解開文件(難,但並不是無解)……
但這都不是重點,重點是木馬在加密完文件以後給出的敲詐信息:
相對於那些動輒兩三個比特幣的敲詐者木馬來講,0.40290個比特幣雖然有零有整的程度使人髮指,但確實也算是價錢厚道了。但你所謂的「RSA-1024」是什麼鬼?明明就是個簡單的循環異或加密好麼!不要僞裝本身是高大上的不對稱加密好麼!WTF……
而後咱們再來講說兩個獨立運行的powershell木馬。雖然a1.exe與a2.exe是各自獨立運行的,但由於他們的行爲基本相同,因此咱們這裏合併爲一個來作統一說明。
樣本首先會執行注入功能:
以後對線程作恢復以便執行注入後的代碼:
完成後,惡意代碼會檢測機器環境——對不知處powershell的系統安裝微軟的KB968930補丁(補丁相關說明:www.microsoft.com/en-us/downl…),添加對powershell的支持:
在確保用戶環境能夠執行powershell以後,註冊一個文件關聯,在文件打開的shell command中執行一段腳本:
這是一段短小精悍的腳本,但系統會根據這段短小的腳本的指令,再次訪問註冊表去執行註冊表中的另外一段惡意代碼:
經過這種方式,惡意程序將惡意代碼所有保存在註冊表中,而落地文件只是用於觸發惡意代碼的執行,自己並無惡意代碼。落在本地的文件根本沒有惡意代碼,這樣就更容易繞開安全軟件的掃描檢測。
咱們導出含有惡意的代碼的註冊表內容,以下:
雖然已是落在註冊表中,但顯然木馬做者仍是不放心——依然是用了屢次的加密來掩蓋這段代碼的行爲意圖。經解密,咱們獲得的最終執行代碼正是一段powershell代碼:
顯然,雖然已經解密到最終一步,但中間的變量「$sc32」依然讓人看着有些不知所云……但看到ps1代碼的最後,發現其實這已是最終代碼了。最終就是將$sc32的內容所有加載帶內存中執行:
咱們把數據dump出來,發現代碼會從遠端下載文件到本地執行,而且還會判斷一下文件是不是有效的可執行程序——典型的下載者木馬:
隨着安全軟件的普及,木馬病毒與安全軟件的對抗也逐漸變成了「近身肉搏戰」,你們都在鑽細節,都想在對方忽略的某個小點上作單點突破——這樣一來,各類腳本甚至連腳本都不算的數據文件就顯現除了相對於傳統PE格式木馬更多的優點。
此次出現的敲詐者木馬就是典型的例子——一個javascript腳本木馬釋放出了一個php腳本木馬和兩個powershell腳本木馬。而powershell木馬甚至都沒有落成ps1腳本而是直接在註冊表中存儲,php木馬有落地的php文件,但php腳本既然能實現對稱加密的敲詐者木馬,更高一級的不對稱加密敲詐者木馬真的還會遠麼?
固然,並非說非PE就能夠隨心所欲了,既然是近身肉搏,安全軟件的響應天然也不會處於下風——兵來將擋水來土掩,咱們已經作好了戰鬥準備。