0.写在前面

AV厂商检测恶意软件的方式主流的就三种:

  1. 基于特征码的检测
  2. 启发式恶意软件检测
  3. 基于行为的恶意软件检测

我们要做的就是让我们的恶意软件没法被这三种方式找到,也就是免杀。具体的手段有:

  • 改变特征码

    • 如果你手里只有EXE
    • 有shellcode(像Meterpreter)
    • 有源代码
  • 改变行为

    • 通讯方式
    • 操作模式
  • 非常规方法

1.实践

1.0实验系统环境

靶机:
系统:Windows7 x64
杀软:360安全卫士 V11.4.0.2049
攻击机:
Kali 虚拟机
检测网站:
Viruscan

1.1MSF编码器

MSF编码器也就是上个实验玩的那个,所以我直接用上个实验的20154312_backdoor.exe去检测了。(改了个名字,因为含有数字的话Viruscan会提示含广告,可能就和什么WG123456一样?)
20154312 曾林 Exp3 免杀原理与实践
很显然,裸奔的后门非常的惨,19个杀软都检测到了它。(请记住这个没检测出后门的Baidu Antivirus
把这个后门编码十次之后还是一样的19个杀软检测到没有任何实质性的变化。这种老套路只要不是太蠢的杀软肯定都能识别(别问了,Baidu Antivirus还是没有检测出来)

1.2veil-evasion

是一个和Metasploit类似的免杀平台,Kali里没有,用sudo apt-get install安装以下就ok。
20154312 曾林 Exp3 免杀原理与实践
安装完成后,用use evasion命令进入Evil-Evasion
20154312 曾林 Exp3 免杀原理与实践
选择一个模板生成payload,选啥都可以,提供的模块还是挺多的。
20154312 曾林 Exp3 免杀原理与实践
拷贝到win10的过程中,被无情的拦截。
20154312 曾林 Exp3 免杀原理与实践
在那个时候还没有安装杀软的win7上还是一条好汉,回连是直接成功的
20154312 曾林 Exp3 免杀原理与实践
看看Viruscan的扫描结果怎么样吧
20154312 曾林 Exp3 免杀原理与实践
好在是比MSF进步了很多,只有8个引擎检测出来了有后门。(Baidu Antivirus总算是有所进步...)
试试看装了360之后能不能扫出来
20154312 曾林 Exp3 免杀原理与实践
嗯,国内第一大病毒杀软可不是吹的。

1.3shellcode

1.3.1Windows环境编译

在VS里编辑好直接编译就好
20154312 曾林 Exp3 免杀原理与实践
回连是没有任何问题的
20154312 曾林 Exp3 免杀原理与实践
还是一样用Viruscan和360扫描一下
20154312 曾林 Exp3 免杀原理与实践
比之前用Evil又好了很多,只有三个引擎报警。
20154312 曾林 Exp3 免杀原理与实践
360沦陷了...(我有个大胆的想法)

1.3.2Linux环境编译

这一块编译过程没截图,反正思路就是把shellcode放到C文件里面,然后i686-w64-xxx.c -o xxx.exe编译一下就ok。回连也是没有任何问题的。继续Viruscan+360扫描
20154312 曾林 Exp3 免杀原理与实践
一夜回到解放前,被11个引擎查杀了
20154312 曾林 Exp3 免杀原理与实践
360这边也不乐观,直接被找到了

1.4加壳

1.4.1UPX加壳

用下面的命令来加这个压缩壳

# upx 4312-1.exe -o 4312-1v3.exe

成功之后结果如下
20154312 曾林 Exp3 免杀原理与实践
来,继续viruscan检测一下
20154312 曾林 Exp3 免杀原理与实践
8个,emmmm比前面没有加壳好一点点。
在我拷贝到win10的过程中直接被杀了...

1.4.2Hyperion加壳

用下面命令来加这个加密壳

/root/veil-evasion/tools/hyperion/#wine hyperion.exe -v 4312-1.exe 4312-1v2.exe
记得先cd到Hyperion这个文件夹

加壳之后的结果
20154312 曾林 Exp3 免杀原理与实践
继续viruscan扫描一下
20154312 曾林 Exp3 免杀原理与实践
...你真的加壳了吗...

1.5shellcode变形

这一块就比较有意思了,看了学长学姐们的一些方法,我打算把shellcode去和一个固定16进制数做异或,因为是43的所以选了个0x43,用来得到异或结果的函数其实很简单。源代码就不在这放了,反正用函数就能得到异或的结果
20154312 曾林 Exp3 免杀原理与实践
异或的结果复制到word或者notepad++替换,,0x放回shellcode里面,然后在之前的后门程序里面重新异或一次0x43,可能会遇到strlen函数报错,因为本身是一个const char变成了unsigned charstrlen()会报错的。最简单的方法直接数就好了,341个16进制字符,直接把strlen(met)改成341就ok,编译一下。
20154312 曾林 Exp3 免杀原理与实践
Viruscan+360
20154312 曾林 Exp3 免杀原理与实践
20154312 曾林 Exp3 免杀原理与实践
近乎完美的通过。
伪装一下骗同学岂不是美滋滋
20154312 曾林 Exp3 免杀原理与实践

1.6实测于杀软共生

一个Windows直接编译的shellcode以及异或后的shellcode都是可以共生的。
20154312 曾林 Exp3 免杀原理与实践
20154312 曾林 Exp3 免杀原理与实践

2.报告

2.1总结

本次实验一共有如下版本

  版本名称 编译方式              viruscan  360
1. 4312                            8      F
2. 4312-1 Kali下编译shellcode      11      F
3. 4312-2 Windows下编译shellcode    6      T
4. 4312-3 异或后的shellcode         1      T
5. 4312-1 v2 UPX加壳                8      F
6. 4312-1 v3 Hyperion加壳          12      F

总结就是啥都不干也比用Hyperion加壳好。
自给自足,自己用C去编一个shellcode是最好用的。

2.2基础问题回答

  • (1)杀软是如何检测出恶意代码的?
  1. 基于特征码的检测
  2. 启发式恶意软件检测
  3. 基于行为的恶意软件检测
  • (2)免杀是做什么?
    防止被杀软检测出来

  • (3)免杀的基本方法有哪些?
    1.改变特征码
    2.加壳

2.3离实战还差哪些技术或步骤

IP地址转换技术
社会工程学(骗人

相关文章:

  • 2021-12-05
  • 2021-11-15
  • 2021-08-07
  • 2021-10-24
猜你喜欢
  • 2021-09-19
  • 2021-12-05
相关资源
相似解决方案