1.远程免杀
shellcode直接在文件中进行操作会很容易被提取特征,beacon远程加载免杀性和持久性会更好,但请求的地址容易被封禁和溯源,在实战中根据实际情况选择,并配合云函数或CDN进行C2地址隐匿
2.木马添加反沙箱反虚拟机
判断用户桌面文件数、若文件数较少则不进行上线操作;比较源文件名称和进程名称不一致则为沙箱环境,不进行上线操作;判断当前时区是否为北京时区,否则不进行上线操作、判断虚拟机关键文件是否存在,存在则不进行上线操作。
3.木马落地扩展
为防止杀毒软件自动将可疑文件提交样本,在木马落地后扩展木马的文件大小。
4.一机器一密钥
shellcode加载器先提交机器信息,server端根据机器的信息生成加密后的shellcode加证书下发;使用uefi绕过安全机制启动,shellcode加载器只做远程加载shellcode的动作,shellcode每个机器使用不同的key解密后分散写至内存进行加载
5.内存免杀
内存免杀技术大多数只需要使用 “ShellCode 加载器” 就可以达到很好的免杀效果,内存免杀后门大部分基于 “VirtualAlloc” 函数申请内存,使用 shellcode 加载器将 shellcode 直接加载进内存,避免文件落地就可以绕过文件扫描。
6.断链
在webshell,cs console等地方启动的时候,父进程可能是java.exe cmd.exe等,这种情况下可能因为进程链不可信导致敏感操作被检测。
断链技术可以使进程链可信,配合白加黑达到免杀的效果。
7.进程参数欺骗
使用参数欺骗防止杀毒软件识别危险操作。
8.cs特征去除
在teamserver中修改端口号;重新生成证书文件;避免使用默认或常见的Malleable-C2-Profiles配置文件,建议自己根据真实网站的数据包生成。
9.分析常见杀软特点
火绒对编译参数的限制多,有较多hash和字符串特征进行识别的动作,但是免杀主要集中在于静态,静态能过动态基本不进行查杀,同时对很多go库的调用报毒。
360核晶对进程注入加载shellcode的查杀较为严格,无法执行大部分cmd命令和相关程序,可使用bof插件进行替代。
面对WINDOWS DEFENDER ,Stageless的免杀性比Stage好,cs4.5版本开启可sleep_mask参数增强免杀性,对体积大的文件查杀度不高。
10资源修改与添加
可以将生成的木马更换图标、伪造签名。
有些杀软会设置有扫描白名单,比如之前把程序图标替换为 360 安全卫士图标就能过 360 的查杀。
使用 ResHacker 对文件进行资源操作,将正常软件的图片,版本信息,对话框等内容加入到自己软件中。
也可使用 ResHacker 替换无用的资源(Version 等)。
使用签名伪造工具,将正常软件的签名信息加入到自己软件中。
11.多种加载方式
可使用参数加载、分离加载、纤程加载、远程加载等方式。
12.shellcode多重加密
shellcode多重加密下发,shellcode获取shellcode解密后直接写入内存。常用的多重加密有:PEM 加密动态嵌入 XOR、Base85+XOR+RC4等
13.二次编译
metasploit 的 msfvenom 提供了多种格式的 payload 和 encoder,生成的 shellcode 也为二次加工提供了方便,但是也被各大厂商盯得死死的。
而 shikata_ga_nai 是 msf 中唯一 excellent 的编码器,这种多态编码技术使得每次生成的攻击载荷文件是不一样的,编码和解码也都是不一样。还可以利用管道进行多重编码进行免杀。
目前 msfvenom 的 encoder 特征基本都进入了杀软的漏洞库,很难实现单一 encoder 编码而绕过杀软,所以对 shellcode 进行进一步修改编译成了 msf 免杀的主流。互联网上有很多借助于 C、C#、python 等语言对 shellcode 进行二次编码从而达到免杀的效果。