免杀,顾名思义就是“免得被杀”,再书面一点就是,对抗杀软。
适用的场景就是:内外网渗透里的有杀软存在的各种场景。这里出现了几个名词:内外网,杀软,场景。接下来会给大家一一解释这几种。
内外网:免杀不是对抗杀软吗,外网哪有什么杀软?外网不是有waf吗?
回答:外网的免杀场景仅存在于webshell,内存马免杀,因为你始终要连webshell,webshell是始终存在于服务器上,还有一些安全防护比较严格的机构,甚至还有NTA(全流量监管设备),这时候你得改webshell管理工具(冰蝎/哥斯拉)的流量特征,例如accept,user-agent
杀软:杀软不就是defender吗?还有其他的杀软吗?
杀软分类很多:例如Windows自带的杀软(Defender),360安全卫士,火绒安全管家,电脑管家,卖咖啡,卡巴斯基.....
像我们平时测试就是用Defender,360,卡巴斯基这三款杀软为核心测试,这三款杀软能过基本其他的都能过了,每个杀软都有自己独特的侧重方向,比如360侧重于行为免杀,进程迁移,自启动,但是对于白加黑的方式很容易就放过了,卡巴斯基侧重于内存查杀,对于行为不是很敏感。
场景:免杀场景仅限于shellcode免杀吗?
回答:当然不是,包括的免杀场景是:
-
webshell免杀
-
shellcode免杀(上线c2)
-
frp/nps免杀(隧道免杀)
-
抓取hash免杀
-
横向执行命令免杀
-
fscan,gogo内网梭哈工具免杀
-
kill杀软
在这些工具的前提下就是最好要改流量特征,为了过掉nta流量设备检测
你说的前面几种我都能理解,但是kill杀软就是直接关闭杀软,用taskkill不就行了嘛??
当然是不行的哈!因为杀软都会在ring0进行hook,咱们在ring3进行kill当然是不行的。那退一万步来说,如果进行了kill杀软,为啥还要继续做免杀,我直接上原生木马不就行了嘛,反正都没杀软?
kill杀软是只有万不得已的情况下才去,因为防止有EDR,咱们客户端的杀软被kill掉那主控端就会接受信息,那就后续的横向操作就做不了了。
还有个主题就是源码免杀和非源码免杀
源码免杀
shellcode加载器免杀
这种适用于自己敲代码进行免杀,因为现在的c2,例如Cobalt Strike,Empire,Vshell现在用基础的加载器免杀已经被杀软杀得烂烂的了,得用一些复杂的方式,例如加密shellcode,重组shellcode,内存加密shellcode
工具源码重组免杀
这种得去掉特征,这种在git或者github上的工具已经被杀软记录了MD5值或者特征已经记录,比如有些没恶意行为的工具,扫描类的工具:
fscan,gogo这些工具直接编译源代码就可以,改掉原来的hash值就行了。
非源码免杀
这种以前的方式,例如加花指令,加壳已经也随着时代的浪潮拍死在沙滩上了,有些正常的软件可能你加了花指令,加壳然后就会识别为恶意软件。现在好一点的非源码免杀方式就是:将工具编译成shellcode,然后再将shellcode,进行异或或者AES,这些方式进行混淆,然后再写shellcode加载器进行解密加载。
今天的免杀就是很初级的认识免杀,更多的免杀细节敬请关注 强制安全说
一个执着于免杀和渗透的圈子~~~