我們首先分析Poweliks這款著名的無文件啟動的惡意程序的運行過程,隨后我們基于對Poweliks的理解,從Poweliks中抽取出關鍵的指令信息,以實現一個可以無文件啟動的程序。只作技術交流,勿非法用途。
Poweliks運行過程
1.在啟動項中,調用javascript讀取注冊表值,這個值就是加密的數據data1
2.data1是javascript.encode過的,使用decode解密后
3.這個腳本,會判斷有沒有powershell,如果沒有會接著判斷安裝了哪些.NET Framework版本,根據不同版本下載不同的補丁包安裝powershell,隨后運行一段base64過的代碼
4.有gd函數,有調用GetModuleHandle,GetProcAddr函數等,運行一段base64過的代碼
5.解密出這個base64代碼就是一個PE
利用過程:
我們將利用的文件,放在文末的下載地址中,文件經過下面的幾部就可輕松easy的實現無文件啟動。當然,寫個腳本串聯起這幾個步驟,可以很容易實現自動化生成。
1.將我們想要無文件啟動的文件命名為AAA,文件我體積最好不要太大
2.將AAA進行base64后替換“第四步”文件中的powershell中的密文部分,替換后的“第四步”文件記為BBB
3.將BBB進行base64后替換掉“第三步”文件中的密文部分,同時可以根據自身需要將第三步文件中的log函數進行清理,處理完后的“第三步”文件記為CCC
4.寫個javascript腳本,將CCCencode一下下,或者通過自已喜歡的手法混淆后保存,記為DDD
使用時,將DDD寫入注冊表EEE位置處中,將“文件1”中注冊表位置改成EEE處,然后將“文件1”寫入注冊表的啟動項中
另外:Poweliks寫入的注刪表文件,使用regedit無法正常的查看與編輯,我們通過pchunter工具對比后,找到原因:
病毒寫入的注冊表用regedit是無法查看的
但可以用xurte進行導出后,看到出現這種情況的原因,是因為regedit對字符的處理方式不同,對a字體串值判斷的問題,判斷是00就直接當成空字符串了
文件下載鏈接:http://pan.baidu.com/s/1o8wAs3o 密碼:o7jo
參考資料:
http://www.freebuf.com/articles/system/108288.html