当前位置: 首页 > news >正文

[系统安全] PE文件知识在免杀中的应用

0x1 PE文件与免杀思路

基于PE文件结构知识的免杀技术主要用于对抗启发式扫描。
通过修改PE文件中的一些关键点来达到欺骗反病毒软件的目的。

  • 修改区段名

1.1 移动PE文件头位置免杀

工具:PeClean

SizeOfOptionalHeader字段来描述扩展头的大小,恒定值为0xE0。
某些程序直接使用0xE0对PE文件进行处理,对于修改过的程序会被识别为非PE文件。

1.2 导入表移动免杀

通过修改程序里导入表ThunkValue值实现。

  • 1)通过ThunkValue的偏移地址,找到API函数名
  • 2)将原地址的API函数名移动到其他空白处
  • 3)00填充掉原地址的API函数名
  • 4)修改ThunkValue值为新移动的地址

1.3 导出表移动免杀

通过修改导入表中API函数名的相对偏移地址实现。

  • 获取API函数名的RAV(相对虚拟地址)
  • 将API函数名移动到新位置
  • 将API函数名相对偏移地址填写回原先记录的地方

0x2 PE文件与反启发式扫描

其它非与PE文件相关的启发式扫描请参考第16章“免杀技术前沿”内容。

2.1 最后一个区段为代码段

启发特征:最后一个区段为代码段。这会引发“异常的入口点”。如果入口点被定位在了非正常的代码段上,则会被启发式扫描引擎查杀。

2.2 可疑的区段头部属性

蠕虫在感染一个文件时有三种方案,这些方案都要求会修改代码段具有可写属性。

  • 1 增加一个新的可执行区段
  • 2 现有的代码段中插入恶意代码
  • 3 将恶意代码分别穿插到不同的区段中,并修改相应区段的属性

启发特征:一个正常的可执行程序如果出现多个具有可执行属性的区段,就会制造出这些特征。

2.3 可疑的PE选项头的有效尺寸值

启发特征:这一项启发特征是基于 “移动PE文件头免杀”建立起来的。用于试图修改选项头大小而隐藏更多敏感数据的恶意程序。

2.4 可疑的代码节名称

启发特征:如果产生了编译器厂商之外的区段名,则启发特征判定为恶意程序。

2.5 多个PE头部

启发特征:可执行文件中含有需要释放的DLL或者SYS。

注:一般情况下将其中包含的可执行文件加密即可避免出现这个特征。

2.6 导入表项存在可疑导入

启发特征:

  • 无效导入表
  • 偏移形式调用API
  • 特定恶意行为的API序列

注:黑客一般会使用自己实现的GetProcAddresss函数,以便用散列值寻找并调用相关敏感API

0x3 隐藏导入表

隐藏导入表思路

  • 简单异或加密
  • 导入表单项移除
  • 重构导入表
  • 利用HOOK方式打乱其调用

3.1 操作原理与先决条件

原理:

  • 1)手工将指定导入项的IAT(Import Address Table)删除掉
  • 2)在启动初期用正确的值填充IAT

条件限制:

  • OriginalFirstThunk字段是一个以0x00000000结尾的32位数组,将INT填充为0x00000000删掉后,
    会导致在此IAT项后面所有由此DLL导入的函数失效。

3.2 修改PE文件

简单的例子

3.3 构造我们的反汇编代码

没看懂RegisterClassExW的起始地址是怎么得到的。

0x4 小结

  • PE免杀入门技巧

  • 对PE免杀入门技巧的启发式扫描规则

  • 反启发式扫描PE免杀技巧

相关文章:

[系统安全] PE文件知识在免杀中的应用

0x1 PE文件与免杀思路 基于PE文件结构知识的免杀技术主要用于对抗启发式扫描。 通过修改PE文件中的一些关键点来达到欺骗反病毒软件的目的。 修改区段名 1.1 移动PE文件头位置免杀 工具:PeClean SizeOfOptionalHeader字段来描述扩展头的大小,恒定值为…...

相机标定原理

相机标定原理 什么是相机标定相机畸变 什么是相机标定 为了确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,需建立相机成像的几何模型,几何模型参数即为相机参数,求解相机参数的过程就是相机标定。 坐标系 **世界坐标…...

Linux基础开发工具使用

目录 1. 软件包管理器yum 1.1 概念介绍 1.2 更换镜像源(可选) 1.3 工具的搜索/查看/安装/卸载 1.4 优势 2. vim编辑器 2.1 vi和vim 2.2 三种常用模式和操作 2.3 配置vim 3. Linux编译器-gcc/g 4. Linux调试器-gdb 5. make和Makefile 6.…...

蓝牙PBAP协议及Android实现

文章目录 前言一、什么是PBAP协议?PBAP的关键功能 二、PBAP的工作流程PBAP流程 三、PBAP在Android实现关键步骤:1. 检查设备是否支持 PBAP 服务 2. 创建 PBAP 连接3. 发送 OBEX 请求4. 解析 vCard 数据数据存储与展示6. 性能优化建议7. 完整示例&#xf…...

Py之pymupdf:基于langchain框架结合pymupdf库实现输出每个PDF页面的文本内容、元数据等

Py之pymupdf:基于langchain框架结合pymupdf库实现输出每个PDF页面的文本内容、元数据等 目录 PyMuPDFLoader类 初始化 属性 方法 __init__(file_path, *, headers=None, extract_images=False, **kwargs) lazy_load() aload() alazy_load() load(**kwargs) load_and…...

LeetCode题解:17.电话号码的数字组合【Python题解超详细,回溯法、多叉树】,知识拓展:深度优先搜索与广度优先搜索

题目描述 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits "23" 输出…...

《JVM第10课》内存溢出(OOM)排查过程

文章目录 常用命令1. jps2. jconsole3. jstat4. jmap 工具1.jvisualvm 排查OOM的方法其实很简单很简单。 如果能找到拋OOM的日志,可以在日志里看到是哪一行抛出的OOM异常。如果找不到日志,那么处理方式是导出Java进程的内存快照,然后用工具查…...

Thinkphp6视图介绍

一.MVC MVC 软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller) ThinkPHP6 是一个典型的 MVC 架构 控制器—控制器,用于将用户请求转发给相应的Model进行处理&a…...

躺平成长-人工智能进行编程-(12)

躺平成长: 让每一个人在科技(开源的网络/智能科技对于生活琐事的处理)的帮助下,实现养生反卷,躺平成长。 开源竞争: 当你无法彻底掌握技术的时候,你就开源这个技术,形成技术依赖&a…...

计算机网络中的域名系统(DNS)及其优化技术

💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 计算机网络中的域名系统(DNS)及其优化技术 计算机网络中的域名系统(DNS)及其优化…...

Matplotlib库中show()函数的用法

在Matplotlib库中使用show()函数是用于显示绘制的图形的函数。它将图形显示在屏幕上或保存到文件中。show()函数通常在绘制完图形后调用。 Matplotlib是一个用于绘制2D图形的Python库,它提供了丰富的绘图工具和函数,可以用于创建各种类型的图表&#xf…...

C#中object和dynamic

在C#中,object和dynamic都是用于存储不同类型值的类型,但它们之间存在一些关键的区别: object object是C#中的基元类型之一,是所有其他类型的最终基类。当你将一个值赋给object类型的变量时,编译器会执行装箱操作&am…...

Spring Cloud Eureka 服务注册与发现

Spring Cloud Eureka 服务注册与发现 一、Eureka基础知识概述1.Eureka两个核心组件2.Eureka 服务注册与发现 二、Eureka单机搭建三、Eureka集群搭建四、心跳续约五、Eureka自我保护机制 一、Eureka基础知识概述 1.Eureka两个核心组件 Eureka Server :服务注册中心…...

【WPF】Prism学习(三)

Prism Commands 1.复合命令(Composite Commanding) 这段内容主要介绍了在应用程序中如何使用复合命令(Composite Commands)来实现多个视图模型(ViewModels)上的命令。以下是对这段内容的解释: …...

1+X应急响应(网络)系统加固:

系统加固: 数据库的重要性: 数据库面临的风险: 数据库加固: 业务系统加固: 安全设备加固: 网络设备加固:...

使用 Grafana api 查询 Datasource 数据

一、使用grafana 的api 接口 官方API 二、生成Api key 点击 Administration -》Users and accss -》Service accounts 进入页面 点击Add service account 创建 service account 点击Add service account token 点击 Generate token , 就可以生成 api key 了 三、进入grafana…...

【电子设计】按键LED控制与FreeRTOS

1. 安装Keilv5 打开野火资料,寻找软件包 解压后得到的信息 百度网盘 请输入提取码 提取码:gfpp 安装526或者533版本都可以 下载需要的 F1、F4、F7、H7 名字的 DFP pack 芯片包 安装完 keil 后直接双击安装 注册操作,解压注册文件夹后根据里面的图示步骤操作 打开说明 STM…...

JMeter中添加请求头

在JMeter中添加请求头的步骤如下: 1.打开HTTP信息头管理器 : 首先,你需要进入JMeter的HTTP请求组件。这可以通过在HTTP请求测试元素上右键点击,然后选择“添加 > 配置元件 > HTTP信息头管理器”来完成。 2.添加新的请求头…...

VMD + CEEMDAN 二次分解,CNN-LSTM预测模型

往期精彩内容: 时序预测:LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较 全是干货 | 数据集、学习资料、建模资源分享! EMD变体分解效果最好算法——CEEMDAN(五)-CSDN博客 拒绝信息泄露!VMD滚动分…...

【Linux系统编程】第四十六弹---线程同步与生产消费模型深度解析

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】【C详解】【Linux系统编程】 目录 1、Linux线程同步 1.1、同步概念与竞态条件 1.2、条件变量 1.2.1、认识条件变量接口 1.2.2、举例子认识条件变量 1.2.3、…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误

HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

基于Docker Compose部署Java微服务项目

一. 创建根项目 根项目&#xff08;父项目&#xff09;主要用于依赖管理 一些需要注意的点&#xff1a; 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件&#xff0c;否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域&#xff0c;向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能&#xff0c;能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作&#xff0c;并通过具体…...