【免杀】C++另类免杀轻松过杀软

admin 2023年3月10日17:30:27评论338 views1字数 1251阅读4分10秒阅读模式


C++另类免杀轻松过杀软


1⼀、前⾔

通过不⼀样的⽅法过Windows Defender的静态和动态查杀。

本文原作者四五qq,公众号锦鲤安全

2⼆、效果图

windows server 2022 上进⾏测试,defender已更新⾄最新,过defender静态加动态查杀:

【免杀】C++另类免杀轻松过杀软

VT查杀:

【免杀】C++另类免杀轻松过杀软

3三、过defender静态查杀

过静态查杀主要在shellcode加解密上做⽂章,加载器可以随意⼀点,如何防⽌杀软通过代码中的key和 解密函数逆推出原shellcode才是重点。

下⾯是⼀个动态EnumDesktops回调加载器:

【免杀】C++另类免杀轻松过杀软

直接使⽤这个加载器打包exe,肯定会被杀软查杀的,我们对shellcode进⾏加密。

下⾯是我最常使⽤的⾃定义异或加解密:

【免杀】C++另类免杀轻松过杀软

加密过程:

先异或再加上6位的key得到与原⻓度6倍的密⽂。

使⽤⾃定义的异或加解密shellcode后的代码:

【免杀】C++另类免杀轻松过杀软

使⽤这个⾃定义的异或加解密对shellcode进⾏加密已经可以过⼤部分杀软查杀了,但还是有⼀些杀软报 毒,原因很简单,key和解密函数直接出现在代码中,逆推能⼒厉害的杀软可以使⽤key和解密函数逆推 出原shellcode

之前使⽤过对key进⾏⼀点混淆,在key中插⼊Sleep()rand()碰撞出key的⽅法,有⼀点的效果,可以绕 过95%的杀软,但还是绕不过defender,在不插⼊花代码的情况下还是很容易被defender的静态查杀:

【免杀】C++另类免杀轻松过杀软

如果在解密函数中插⼊⼤量花代码的话则有不错的静态免杀效果,可以过defender静态查杀。

因此,对key再次进⾏混淆,key不能直接出现代码代码中,也不能由代码可以直接推导出key,这样就没 有意义了。更⾼级的做法是把key放到外界中,从运⾏环境中去获取key。⽐如,把key设为与运⾏路径或

系统⽬录下的某个⽂件名或注册表中某个固定的值相关等,当然,考虑到注册表操作可能会被360这些杀 软拦截,所以我设成了运⾏路径的最后⼀个字符,如果我的免杀⻢newsc.exe运⾏路径为C:UsersAdministratorDesktopnewsc.exe,那么最后⼀个字符“e”就为解密密钥。代码实现如下:

【免杀】C++另类免杀轻松过杀软

将上⾯的⼏点组合起来,使⽤上⾯的⾃定义异或随机值加密将shellcode加密,密钥e,打包exe,在不加 花代码的情况下过了defender静态:

【免杀】C++另类免杀轻松过杀软

上⾯的代码中,获取最后⼀个字符有⼀个减字符'0'的操作,那是因为我将⾃定义的加解密打包成了exe, 不必每次都⽤c代码加密,exe⽤的密钥是数字类型因此有⼀个-'0'转数字的操作,你们实际使⽤c代码加 密时不必减'0'

g++ newsc.cpp exclusionPath.cpp -o newsc.exe -mconsole -fno-stack-protector
-fvisibility=hidden -Wl,--dynamicbase -Wl,--nxcompat

4最后:

需要源码 添加 暗月的备用号 回复源码 

如提示添加频繁请稍后添加

【免杀】C++另类免杀轻松过杀软

或加群

【免杀】C++另类免杀轻松过杀软





原文始发于微信公众号(moonsec):【免杀】C++另类免杀轻松过杀软

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年3月10日17:30:27
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【免杀】C++另类免杀轻松过杀软https://cn-sec.com/archives/1596173.html

发表评论

匿名网友 填写信息