【免杀】C++另类免杀轻松过杀软
2023-6-13 00:2:58 Author: 白帽子(查看原文) 阅读量:34 收藏

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

1⼀、前⾔

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

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

2⼆、效果图

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

VT查杀:

3三、过defender静态查杀

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

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

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

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

加密过程:

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

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

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

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

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

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

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

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

上⾯的代码中,获取最后⼀个字符有⼀个减字符'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最后:

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

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

或加群


文章来源: http://mp.weixin.qq.com/s?__biz=MzAwMDQwNTE5MA==&mid=2650246752&idx=1&sn=b9598c39e0ad0e7d7f426b36982538ce&chksm=82ea55c9b59ddcdfdb947311e22a324ed8b87a325e569b212d47aa9142f51b21bf7e6f1095d2#rd
如有侵权请联系:admin#unsafe.sh