免杀原理与实践
1 关键内容
正确使用msf编码器,msfvenom 生成如 jar 之类的其他文件,veil-evasion,加壳工具,使用 shellcode 编程
通过组合应用各种技术实现恶意代码免杀
用另一电脑实测,在杀软开启的情况下,可运行并回连成功
2 基础问题回答
杀软是如何检测出恶意代码的?
构建病毒库,对比特征码
启发式检测
分析其是否有恶意行为
免杀是做什么?
针对杀毒软件使用的检测技术,伪装恶意代码使之不被发现
免杀的基本方法有哪些?
改变特征码
- 加壳
- 用encode进行编码
- 基于payload重新编译生成可执行文件
- 用其他语言进行重写再编译(veil-evasion)
改变行为
- 尽量使用反弹式连接
- 使用隧道技术
- 加密通讯数据
- 基于内存操作
- 减少对系统的修改
- 加入混淆作用的正常功能代码
3 基本内容
使用 msf 编码 6 次,生成 .jar 文件
安装 veil ,得首先解决wine32的问题
sudo apt-get install wine32
嗯,装了两天
sudo apt-get install veil-evasion
根据 veil 菜单提示逐步操作即可
使用 msf 生成 shellcode,具体参数见 Exp2 加分项
修改为 .c 文件,进行编程,特别的
- 可编程处理字符串,增减字符以改变其存储内容,在运行时还原并最终实现功能
- 头文件可通过工程设置省略,在这种情况下,恶意代码更难被杀软查出
压缩壳 UPX
试了一圈,它无法压缩 .jar 和 .c 文件,这里加壳的是 Exp2 中生成的 .exe 文件
加密壳 Hyperion 的使用方法类似,运行相应的可执行文件即可
hyperion.exe -v new_20164306.exe new2_20164306.exe
查看生成的文件
4 结果验证
上述恶意代码在 win10 环境下不会被 Windows Defender 检测为病毒
仅使用现有工具不可能实现反弹连接
这是因为实验中使用的工具都是些老牌免杀软件且现行杀软普遍使用启发式检测
通过实验发现不同杀软判断编码器、加壳等处理方式的敏感程度存在差异,举例如使用 shellcode 实现后门,加壳前360并不会直接报毒,反而是加了 UPX 壳后直接就被查杀了
使用现有工具反复尝试,发现使用 shellcode 编程实现后门是相对隐蔽的
然而,使用shellcode编程时,就算对生成的字符串进行特殊处理,也无法阻止杀软查杀
举使用 .c 文件实现后门为例,首先是免不了系统函数调用,其次是在编译运行时会生成一个 Meterpreter.o 这明摆着是告诉人家自己有毒
特别的,在此不讨论结合了缓冲区溢出、社会工程学等其他方式的攻击,因为上述攻击成功条件本身太过苛刻,且与免杀关联不大
可见纯手工编写后门程序也应尽量使用 python 等脚本语言实现,但这种方法又不具有普遍性,因为不保证靶机是否具有 python 环境
在此诚心向使用 meterpreter 成功反弹的同学请教,dalao 们在评论区留言就好