Python常见的免杀方式

news2024/9/21 4:34:45

 

 

10.1节介绍了通过msfvenom生成shellcode ,并通过Python程序加载执行,又  介绍了如何将Python的.py文件生成为exe文件。使用pyinstaller生成的可执行文件 本身就具有一定的免杀能力,但是在与杀毒软件对抗时,部分杀毒软件也可以通 过分析可执行文件的内容来判断文件是否为恶意程序,导致这些代码仍然具有被 杀的可能。

对于用msfvenom生成的shellcode ,在生成时可以通过参数将shellcode优化, 使用-b选项禁止生成的shellcode 中出现易被杀毒软件检测的字符,如图10-7所示。

6a88bf07f1954c61b0e9202947c3d2d8.png

图10-7    优化shellcode

除此之外,还可以使用msfvenom的-e选项选择相应的编码器,对shellcode进 行编码处理,如图10-8所示。

通过这种方式对脚本的源代码进行混淆后,可有效避免部分杀毒软件的查 杀。与此同时,可以将shellcode 的顺序打乱,增加查杀难度。

 

 

 

 

 

除了在代码层上对脚本进行优化外,还有其他免杀方式,比如通过加壳进行 免杀。

什么是壳?壳的全称是“可执行程序资源压缩” ,压缩后的程序可以直接打

开。除此之外,另一种常见的加壳方式就是在二进制程序中植入一段代码,在主 程序运行前优先获得程序控制权,之后再将控制权交给主程序代码。这样能够有 效地隐藏程序的入口点(OEP)。我们需要使用的便是加壳后隐藏OEP的功能,

以达到免杀效果。大多数的病毒制作也都是使用了这个方法。多数壳对于程序的 原始二进制文件内容还会进行加密、混淆。免费的壳免杀效果相对商业壳来说还 是有一定的差距,但要初步做到免杀,使用免费壳即可。此外,还有一些第三方 的免杀工具也可以利用,比如:

·Veil工具,可以生成基于C 、Go 、Ruby 、Python 、C# 、Perl 、Powershell等格 式的Payload 。该工具是采用Python语言编写的免杀框架,能够将任意shellcode编 译转化成Windows的可执行文件,并且可以与Metasploit相结合。

6bf912357a2b498e8ce68a0bb992784d.png

图10-8    选择编码器

·Venom工具,利用msfvenom生成不同格式的shellcode ,如C 、Python、

Ruby 、DLL 、MSI 、hta-psh等,然后将生成的shellcode注入程序中,并使用类似 gcc 、mingw32或pyinstaller等编译器生成Windows系统下的Payload文件。

· Shellter工具,安装非常简单,使用也非常便捷,而且生成的Payload免杀效  果也比较好,Windows和Linux下都可以使用。可以使用自动配置和手动配置两种 模式,手动配置生成的Payload免杀效果会更好。

 

 

 

 

·BackDoor-factory工具,又称后门工厂(BDF),利用该工具,可以在不破 坏原来的可执行文件功能的前提下,在代码中注入恶意的shellcode攻击代码。

BackDoor-factory不仅可以单独使用,还可以嵌入其他工具生成的shellcode 中。其 原理是替换原有程序的二进制数据中的00字段,并且在程序执行时跳转到替换的 代码段,触发Payload程序。

免杀的工具多种多样,但运用的方式大致都是相同的。免杀处理大致可以分 为两种类型:一种是通过二进制实现免杀,或通过修改asm代码、二进制数据、

其他数据来完成免杀;另一种是源码免杀,可以通过修改源代码免杀,也可以结 合二进制进行免杀。也可以分为静态文件免杀、动态行为免杀。

其中,静态免杀可以通过修改特征码来进行。要查找文件的特征码,可以使 用特征码定位工具,如CCL 、MYCCL 、VirTest等。找到特征码后,修改特征码  的值,就能做到静态免杀。还可以通过一些工具的加密、加壳等手段进行静态免 杀。

动态监测的原理是通过拦截恶意行为,如注册表操作、文件写入、杀进程、 劫持等来发现木马程序。恶意的行为都是通过API的调用完成的,杀毒软件通过 拦截这些API的调用来实现拦截。那么动态免杀的思路就出来了,分为以下几

种:

· 替换API 。使用有同等功能的API替换,杀毒软件并不会拦截所有的API操 作,所以替换成杀毒软件不拦截的API进行操作即可绕过动态监测。

· 未导出API 。寻找具有相同功能且未被导出的API ,分析API的内部调用情 况,进行API替换。

·重写API ,即通过逆向操作重写API的功能。

·跳字节。一部分杀毒软件的API拦截操作是通过对API的前几个字节内容的 监测实现的,如果跳过了头部字节,就可以避开这种拦截方式。

·底层API 。可通过寻找底层的API调用绕过拦截。

 

 

 

 

 

 

防御策略

 

了解了免杀原理后,我们再来看如何针对这些操作进行防御。10.3节中介绍 过,免杀处理主要是分为静态文件免杀和动态行为免杀,那么杀毒软件的防御应 该着重关注这两个方面。常用的杀毒软件的检测方法有特征代码法、校验法、行 为检测法、模拟法等。

·特征代码法:通过相同的一种病毒或木马文件的部分代码是相同的原理,来 识别病毒文件,即通过对比特征来发现病毒和木马。

·校验法:计算文件的校验值并保存,定期进行对比或者在调用文件时对比, 从而检测文件是否被感染。

· 行为检测法:通过分析病毒或木马的行为特征,如注册表操作、添加或删除 用户等来进行检测。

·模拟法:通过模拟病毒运行的方式检测病毒。

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

双非本科准备秋招(21.2)—— ReentrantLock

一、vs synchronized 可中断可以设置超时时间可以设置为公平锁支持多个条件变量 语法: // 获取锁reentrantLock.lock();try {// 临界区} finally {// 释放锁reentrantLock.unlock();} 二、可重入 连续三次上锁。 Slf4j(topic "c.test") public class…

软件应用实例分享,电玩计时计费怎么算,佳易王PS5游戏计时器系统程序教程

软件应用实例分享,电玩计时计费怎么算,佳易王PS5游戏计时器系统程序教程 一、前言 以下软件教程以 佳易王电玩计时计费管理系统软件V17.9为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 点击开始计时后,图片…

【深度学习:SegGPT】在上下文中分割所有内容 [解释]

【深度学习:SegGPT】在上下文中分割所有内容 [解释] SegGPT与以前的模型相比如何?SegGPT在实践中是如何工作的?SegGPT培训计划上下文着色上下文集成上下文调整SegGPT 训练参数 如何尝试 SegGPT?使用哪些数据集来训练 SegGPT&#…

前端页面禁止debugger调试并跳转空白页面----文心一言官网实现方式

技术点:setInterval定时器Object.defineProperty 背景: 某天打开文心一言想看看接口返回结构是怎样的,熟练的打开浏览器开发者工具查看网络请求。 发现出现了以下debugger断点 这难不倒我,去掉断点调试,继续下一步不…

Django模板(三)

一、标签URL 返回与给定视图和可选参数相匹配的绝对路径引用(不含域名的 URL) {% url some-url-name v1 v2 %} 第一个参数是url模式名称,后面跟着的是参数,以空格分隔可以使用关键字: {% url some-url-name arg1=v1 arg2=v2 %}如果您想检索命名空间的URL,请指定完全限定…

【前端web入门第四天】01 复合选择器与伪类选择器

文章目录: 1. 复合选择器 1.1 后代选择器 1.2 子代选择器 1.3 并集选择器1.4 交集选择器(了解) 2.伪类选择器 2.1 伪类-文本2.2 伪类-超链接(拓展) 1. 复合选择器 什么叫复合选择器? 由两个或多个基础选择器,通过不同的方式组合而成。 复合选择器的作…

《动手学深度学习(PyTorch版)》笔记7.6

注:书中对代码的讲解并不详细,本文对很多细节做了详细注释。另外,书上的源代码是在Jupyter Notebook上运行的,较为分散,本文将代码集中起来,并加以完善,全部用vscode在python 3.9.18下测试通过&…

【新书推荐】7.2 while语句

本节必须掌握的知识点: 掌握if语句语法 熟练使用if语句 7.2.1 示例二十三 ■while语句其语法形式: while(表达式) { 语句块; } ●语法解析: 第一步:执行表达式,如果表达式为真,则执行第…

Elasticsearch:通过 ingest pipeline 对大型文档进行分块

在我之前的文章 “Elasticsearch:使用 LangChain 文档拆分器进行文档分块” 中,我详述了如何通过 LangChain 对大的文档进行分块。那个分块的动作是通过 LangChain 在 Python 中进行实现的。对于使用版权的开发者来说,我们实际上是可以通过 i…

【Fabric.js】监听画布or元素的点击、选中、移动、添加、删除销毁、变形等各事件

在fabric使用过程中,如果想要玩各种花样,那么fabric的事件监听是一定、必须、肯定要掌握!!! 例子就用vue项目组件里的代码,fabric的使用跟vue、react、angular之类的框架都没任何关系! 并且本de…

MySQL学习记录——칠 表操作

文章目录 1、了解2、创建和插入1、基本创建和插入2、插入并更新on duplicate3、插入并替换replace 3、Retrieve1、查询select2、条件查询where3、结果排序order by4、限制行数limit 4、更新Update5、删除delete6、去重7、聚合函数(5个)1、count2、sum3、…

Project2007下载安装教程,保姆级教程,附安装包和工具

前言 Project是一款项目管理软件,不仅可以快速、准确地创建项目计划,而且可以帮助项目经理实现项目进度、成本的控制、分析和预测,使项目工期大大缩短,资源得到有效利用,提高经济效益。软件设计目的在于协助专案经理发…

PySpark(三)RDD持久化、共享变量、Spark内核制度,Spark Shuffle、Spark执行流程

目录 RDD持久化 RDD 的数据是过程数据 RDD 缓存 RDD CheckPoint 共享变量 广播变量 累加器 Spark 内核调度 DAG DAG 的宽窄依赖和阶段划分 内存迭代计算 Spark是怎么做内存计算的? DAG的作用?Stage阶段划分的作用? Spark为什么比MapReduce快? Spa…

高德 API 10009

问题 笔者使用高德地图所提供的API接口,访问接口报错 {"info":"USERKEY_PLAT_NOMATCH","infocode":"10009","status":"0","sec_code_debug":"d41d8cd98f00b204e9800998ecf8427e"…

SolidWorks学习笔记——草图绘制的基本命令

目录 一、进入草图绘制 二、直线命令与删除命令 三、圆弧命令与矩形命令 四、槽口命令以及多边形命令 五、椭圆以及倒角命令 六、草图绘制中的剪裁命令 七、草图中的几何关系 八、草图绘制中的智能尺寸 九、从外部粘贴草图(CAD) 一、进入草图绘…

基于鲲鹏服务NodeJs安装

准备工作 查看当前环境 uname -a查看鲲鹏云CPU架构 cat /proc/cpuinfo# 查看CPU architecture项,8表示v8,7表示v7下载Node.js NodeJs 选择 Linux Binaries (ARM) ARMv8 wget -c https://nodejs.org/dist/v12.18.3/node-v12.18.3-linux-arm64.tar.xz…

创新指南|生成式AI实验 - 企业快速渐进采用人工智能的科学新方法

生成式人工智能(Gen AI)正迅速成为各行各业的企业创新焦点。 生成式AI实验对于企业创新而言至关重要,不仅可以帮助企业识别最适合和最有影响的应用场景,还能促进组织沿着生成式 AI 学习曲线前进,建立早期的创新领导者和…

【Java】苍穹外卖 Day02

苍穹外卖-day02 课程内容 新增员工员工分页查询启用禁用员工账号编辑员工导入分类模块功能代码 **功能实现:**员工管理、菜品分类管理。 员工管理效果: 菜品分类管理效果: 1. 新增员工 1.1 需求分析和设计 1.1.1 产品原型 一般在做需…

git rebase # |REBASE 1/1 #rebase in progress; onto

git 代码解决冲突之后会提示rebase in progress; onto 1 执行git rebase --abort 回到没有pull代码之前 2 git pull 3 解决冲突 4 git add . (不需要git commit) 5 git rebase --continue 6 git push

MyBatis之动态代理实现增删改查以及MyBatis-config.xml中读取DB信息文件和SQL中JavaBean别名配置

MyBatis之环境搭建以及实现增删改查 前言实现步骤1. 编写MyBatis-config.xml配置文件2. 编写Mapper.xml文件(增删改查SQL文)3. 定义PeronMapper接口4. 编写测试类1. 执行步骤2. 代码实例3. 运行log 开发环境构造图总结 前言 上一篇文章,我们…