C/C++ 實現切片免殺的思路


今天突然想到了一個好玩的免殺思路,原理就是想辦法切斷磁盤特征與內存特征,關於沙盒免殺我尋思着,這樣可以將不同的的DLL映射到內存,在內存中他們的特征也是被切斷的,在注入器上做判斷如果是沙盒則不加載,不是則分別注入三個甚至是更多的DLL,將我們的ShellCode切片力度更細,分配到幾百個甚至上千個DLL上面,做成一個鏈,應該可以,沒嘗試過,抽空可以試試。

如果我們把粒度變得細致,捕捉特征也會變得異常的麻煩,如果被殺也僅僅只是某一個DLL被殺,我們只需要遠程更新一下被殺的DLL即可繼續使用,方便的很,一鍋端的概率應該極低。

編譯這些DLL時,要是能采用不同的編譯器編譯則會更好一些,例如VC6編譯2個,VC7編譯一個,VC8編譯3個。

1.編寫一個腳本,准備好更多的編譯器,然后在腳本中取隨機數,並隨即使用不同版本的編譯器進行編譯。
2.編寫一個腳本,只需要將頭部第一個dll名字固定,其他的DLL文件名稱全部隨機取值,或者是以系統dll隨機命名。
3.我們在這幾百個DLL中內嵌一些系統DLL的頭部信息,或者加入不同的花指令,寫的繞一點,足夠讓分析者通宵了。

上面只是一個思路,完全可以實現,只不過所有的DLL都是在一個進程中的。

我在想,如果能將不同進程之間的DLL進行互通應該效果會更好!

順着這個思路想了一下,能不能自己寫一個進程,然后讓自己寫的這個程序作為一個橋梁使用,架起一座橋,使不同進程之間的DLL可以互相調用,這樣一來,我們的反彈ShellCode就會變得更有趣,跳來跳去很贊,例如UserA.exe中存在一處ShellCode片段,UserB.exe中存在另一處,UserC.exe中也存在,最后都是通過我們的橋連接起來,讓所有的分散的DLL鏈接起來。

單看獨立進程中的獨立DLL沒有任何含義,只有將其鏈接起來才是一個完整的程序。


這個只是我的一個思路,沒有實現,如果有能力就去實現一下,我認為可以實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM