Exp3-免杀原理
20191306 张宇鹏
1.基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征码的检测
恶意代码常常具有明显的特征码也就是一段数据,杀软检测到具有该特征码的程序就当作检测到了恶意代码。 - 启发式恶意软件检测
简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。 - 基于行为的恶意软件检测
通用的、多特征的、非精确的扫描,如果一个程序的行为是带有恶意的行为,那么这个程序也会被认为是恶意代码。
(2)免杀是做什么?
一般是对恶意软件做处理,让它不被杀毒软件所检测。也是渗透测试中需要使用到的技术。
(3)免杀的基本方法有哪些?
免杀的总体技术有:
改变特征码
- 如果你手里只有EXE
加壳:压缩壳 加密壳
- 有shellcode(像Meterpreter)
用encode进行编码
基于payload重新编译生成可执行文件
- 有源代码
用其他语言进行重写再编译(veil-evasion)
改变行为
- 通讯方式
尽量使用反弹式连接
使用隧道技术
加密通讯数据
- 操作模式
基于内存操作
减少对系统的修改
加入混淆作用的正常功能代码
(4)开启杀软能绝对防止电脑中恶意代码吗?
经过此次实验使我深刻的理解到杀软的局限性,“绝对防止”肯定达不到。
2.实验过程
(1)使用msf编码器,生成如jar之类的其他文件
- 生成meterpreter可执行文件
- 将生成的文件进行免杀测试
网站:https://www.virustotal.com
识别率53/69,我们将其作为标准,对比查看不同的操作会带来怎样不同的结果
(2)利用Msfvenom多次编码
- 再次测试
可以看出,并没有什么变化
再多编码几次(编码50次),再次测试
还是没什么变化,上网查询后了解到:AV厂商研究的是编码器本身,shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,只要盯住这部分就可以了。
(2)利用veil生成后门程序并加壳
- 安装并打开veil
- 设置反弹ip 设置端口号,生成后门程序
生成的程序进行测试
有了一点成效
- 进行加壳处理
使用UPX对1306veil.exe加壳
再次测试结果如下:
还是不理想,原因可能是msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。曾经有一段时间,只要换了模板,就可以对所有AV免杀。现在这招不行了。所以一般来说AV厂商会针对其使用的模板来生成特征码,这样就一劳永逸地解决所有msfvenom生成的恶意代码了。那如果使用msfvenom免杀,就要使用原生的模板。
(3)使用C + shellcode编程
使用msf生成shellcode
根据shellcode编写c文件
编译
检测1306bd.exe
已经有很大提升了!
(4)通过组合应用各种技术实现恶意代码免杀
使用 upx 对 1306.exe 进行加壳
检测结果为:
变化并不明显,使用火绒进行测试
火绒没有查出问题,并且后门程序能正常运行
(5)附加题:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
运行1306x.exe成功获取Windows的shell
火绒为最新版本5.0.67.0
再使用360安全卫士进行测试,360是可以查出木马病毒的,看来还是360安全一些。