首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

免杀基础学习记录

编程知识
2024年08月16日 12:46

前言

参考SecretTeam安全团队的学习记录

什么是免杀?

免杀(Bypass AV, Anti-Virus Evasion)是指恶意软件通过各种手段规避杀毒软件和安全检测系统的识别和拦截,从而在目标系统中成功执行。这种技术不仅用于恶意软件的传播,也被信息安全研究人员用来测试和提升安全防护系统的能力。根据有无源码,免杀可以分为以下两种情况:

  • 二进制免杀

直接对一个二进制程序进行免杀,通过修改数据,加壳加花,定位修改特征码等等黑盒方式

  • 源码免杀

通过修改源码来进行免杀(大概率成为今后免杀的主流)

直接对一个二进制程序来进行免杀技术难度较高,免杀效果也不好,所以通常将二进制程序转换成一段shellcode,使用加载器来执行shellcode的方式来进行从无源码免杀向有源码免杀的转换,根据免杀阶段还分为以下两个阶段:

  • 静态免杀

静态免杀主要是为了抵抗杀毒软件的静态扫描,杀毒软件的静态扫描一般会通过提取文件中的一段特征串来与自身的病毒库中的特征码进行对比来判断该文件是否为恶意文件,因此我们一般围绕修改或是掩盖文件的特征码来实现静态免杀

  • 动态免杀

动态免杀主要是为了抵抗杀毒软件的动态查杀,如内存扫描,行为分析等

杀软特性

360

360有点全能了,在国内基本各个方面都是顶尖
报毒特征

HEUR/Malware.QVM06.Gen 一般情况下加数字签名可过
HEUR/Malware.QVM07.Gen 一般情况下换资源
HEUR/Malware.QVM13.Gen 加壳了
HEUR/Malware.QVM19.Gen 杀壳 (lzz221089提供 )
HEUR/Malware.QVM20.Gen 改变了入口点
HEUR/Malware.QVM27.Gen 输入表
HEUR/Malware.QVM18.Gen 加花
HEUR/Malware.QVM05.Gen 加资源,改入口点

QVM07加资源一般加到2M会报QVM06
再加数字签名,然后再慢慢减资源,这个方法对大部分木马有效果。
QVM06 加数字签名
QVM12杀壳
QVM13杀壳
QVM27杀输入表
QVM19 加aspack
QVM20就加大体积/加aspack压缩

金山毒霸

金山走的是云安全,云防护,云鉴定这些云安全路线,所以,断了网后金山就是个废

江民

主要是对特征码和资源进行定位查杀

瑞星

主要是主动防御查杀

卡巴斯基

非常变态的一款杀软,误报低,查杀率高,特征码+输入表变态查杀+静动态启发式+强力的虚拟机脱壳技术。人类已经无法阻止卡巴斯基的输入表查杀了,在反汇编下,你无论对输入表怎么重建,移位都不行,需要进行手动异或加密。

小红伞,木伞

小红伞的特征码定位抗干扰技术和启发式比较好

火绒

主要是主动防御这块,静态查杀也比较严格,不过很好做免杀

Windows Defender

静态查杀能力较强,动态查杀较强,监控 HTTP 流量

杀软的查杀方式

特征码

特征码是什么?特征码就是病毒分析师从病毒中提取的不大众化的不大于64字节的特征串。通过判断是否有这个特征字符串从而确定是否为病毒。通常为了减少误报,一个病毒会取数个特征码。举个例子,一款很出名的木马,它的名字就能被当作特征码。

静态启发式

静态启发式即对整个软件进行分析,杀软会指定一系列的规则,然后对软件进行扫描,当扫描出匹配这些规则的字符串等等之类时,杀软会将软件标记成怀疑对象,匹配到的规则越多,软件的可疑程度越高,到一定程度,就成了恶意软件了

动态启发式

动态启发式又叫虚拟机查杀技术,会模拟出一个近似于windows的系统,杀软将软件放入这个虚拟机运行,监测它的行为,如果操作越可疑,就越容易被定为病毒

HIPS

HIPS可以说是主动防御,何为主动防御,一个病毒或木马如果通过了表面查杀,那么主动防御就是最后一道防线,HIPS主要是对一个软件运行时的操作进行检测,如果发现软件有注册表操作,加载驱动这些一般程序不应操作的操作时,那么他就会以他R0级的优势,拦截掉并将程序暂停运行,也就是挂起,询问用户是否进行该操作。

云查杀

杀软那里有一套规则,如果一个软件触犯了这些规则,则杀软会上报至云服务器,到了云服务器后,则会对上报文件进行鉴定,可能会是人工鉴定,这样的效果比杀软查杀效果要好得多。那么如果分析出这个程序是病毒,那么就会将这个程序的MD5发生至云中心,用户在联网状态下杀毒的话,就与云中心核对MD5,如果对上了,无条件认定为病毒。相当于安装了杀软的所有用户给云上提供素材,一旦素材在一台电脑上被认定为病毒,则所有安装了该杀软的用户都会查杀这个素材

免杀中的术语

API

泛指Windows的API函数,Windows编程中的内容。Windows API是一套用来控制Windows的各个部件的外观和行为的预先定义的Windows函数,对Windows系统中的东西进行操作都会用到API,比如我移动个鼠标,点击个键盘都会有相对于的API函数

花指令

一段无意义的代码,用来迷惑杀软或则其它的反汇编工具,例如在汇编里:add eax, 1; sub eax, 1
就这种添加了代码,但对整体并无影响的代码就是花指令,当然我这里只是简单的示范,真正的花指令没有这么简单

输入表(导入表)

输入表就相当于EXE文件与DLL文件沟通的钥匙,形象的可以比喻成两个城市之间交流的高速公路,所有的导入函数信息都会写入输入表中,在PE 文件映射到内存后,Windows 将相应的DLL文件装入,EXE 文件通过“输入表”找到相应的DLL 中的导入函数,从而完成程序的正常运行,这一动态连接的过程都是由“输入表”参与的。

区段

PE结构中的区段,.data .text等等,保存代码,数据等等

加壳

加壳分为加压缩壳和保护壳〔加密壳〕压缩壳是目的是使程序变小,但没有防止被反破解的作用。保护壳恰恰相反,保护壳的目的是使程序尽量防止被反汇编,但好的保护壳会给程序植入大量垃圾代码,以干扰破解版者,所以程序会变大。

反启发

即加入对杀软的启发式干扰的代码

隐藏输入表

通过自定义API的方式隐藏导入表中的恶意API

混淆

这是一种将代码转换为难以理解的形式的技术,使得分析者难以从字节码中理解程序的逻辑。混淆可以应用于源代码、编译后的代码或二进制文件

代码注入

将恶意代码注入到合法程序中,使得恶意代码在合法程序的执行过程中被执行,从而避开杀毒软件的检测。

内存执行

恶意代码不在磁盘上留下痕迹,而是直接在内存中执行,这样可以减少被杀毒软件扫描到的机会

文件加密

将恶意文件加密存储,只有在执行时才解密,这样可以避免杀毒软件通过文件内容进行检测。

多态

生成多个变种的恶意代码,每种变种都有不同的特征,使得杀毒软件难以通过单一的特征码来识别。

行为混淆

通过改变程序的行为模式,使得恶意行为看起来像是正常行为,从而避开基于行为分析的检测

0day

利用操作系统或应用程序的0day漏洞来执行恶意代码,杀毒软件无法检测到

签名

使用合法的数字证书签名恶意软件,以欺骗用户和杀毒软件,使其看起来像是可信的软件

沙箱逃逸

沙箱是一种检测恶意软件的环境,它模拟了一个安全的执行环境。沙箱逃逸技术是指恶意软件能够检测到自己是否在沙箱中运行,并在检测到沙箱时改变行为,以避免被检测。

利用系统服务

通过操作系统服务来执行恶意行为,因为系统服务通常具有较高的权限,可以绕过一些安全措施

利用云服务

将恶意代码或数据存储在云服务上,通过云服务来分发或执行恶意行为,这样可以分散风险并增加检测难度

杀软报毒命名规则

杀毒软件的报毒基本遵循一套原则,就是CARO原则,由反病毒专家联盟 CARO提出,遵循以下格式:
<威胁类型>.<平台>.<恶意软件系列>.<变体>.<其他信息*>
卡巴斯基在此基础上添加了前缀:

[前缀:]<威胁类型/行为>.<平台>.<恶意软件家族><.变体><其他信息>

前缀

该前缀标识检测到该对象的子系统。
前缀HEUR:用于表示启发式分析器检测到的对象;
前缀PDM:用于表示主动防御模块检测到的对象。
前缀不是全名的必需部分,并且可能不存在。

行为

威胁类型/行为代表主要威胁类别,描述威胁的主要行为是什么

  1. 对于恶意软件:Trojan(木马)、Worm(蠕虫)、Virus(病毒)、Ransomware(勒索软件)、Coinminer(挖矿) 和Backdoor(后门)是我们最常见的威胁类型。
  2. 对于灰色软件:Adware广告软件、Spyware间谍软件和 PUA 是最常见的威胁类型。


平台

通常指win32,x64,linux,mac os

家族

用于表示一组具有相同来源(作者、源代码)、操作原理或有效负载的检测到的对象。每个家族都是根据其表现的行为来命名的。常见的就是:Generic、Infector、AntiAV、KillFiles等。

变体

为了识别一个家族中不同恶意软件的变体,字母按顺序使用并称为变体,从“.a”开始:“.a”-“.z”、“.aa”-“.zz”等

报毒案例

HEUR:Worm.[Platform].Generic
此分类涵盖的对象在远程计算机上运行搜索,并尝试将自身复制到读/写可访问目录、使用操作系统功能搜索可访问网络目录和/或对计算机进行随机搜索。
[Platform] 字段可以是“Script”或“Win32”。


HEUR:Virus.[Platform].Generic
此分类涵盖的对象会在受害计算机的本地资源上创建自身的副本。
[Platform] 字段可以是“Script”或“Win32”。


HEUR:Email-Worm.[Platform].Generic
此分类涵盖的对象尝试以电子邮件附件的形式发送自身的副本,或者作为位于网络资源上的自身文件的链接。
[Platform] 字段可以是“Script”或“Win32”。


HEUR:Virus.[Platform].Infector
此分类涵盖的对象在计算机中搜索文件并将一系列信息写入这些文件。例如,这样的对象可以将其主体写入可执行文件或写入包含指向具有 .html、.php、.asp 和其他扩展名的文件的链接的 HTML 代码。
[Platform] 字段可以是“Script”或“Win32”。


PDM:Worm.Win32.Generic
此分类涵盖的对象搜索远程计算机网络并尝试将自身复制到读/写可访问目录、使用操作系统功能搜索可访问网络目录和/或对计算机进行随机搜索。
From:https://www.cnblogs.com/F12-blog/p/18362694
本文地址: http://shuzixingkong.net/article/1153
0评论
提交 加载更多评论
其他文章 Linux/Go环境搭建, HelloWorld运行
package main import &quot;fmt&quot; func main() { fmt.Printf(&quot;Hello,World!!!\n&quot;) } 以上是Go语言的经典HelloWorld程序源代码。 Linux/GO 环境搭建 作者初学Linux/Go时,是通
Linux/Go环境搭建, HelloWorld运行 Linux/Go环境搭建, HelloWorld运行 Linux/Go环境搭建, HelloWorld运行
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程 Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程 Xinference实战指南:全面解析LLM大模型部署流程,携手Dify打造高效AI应用实践案例,加速AI项目落地进程
.NET 轻量化定时任务调度 FreeScheduler
前言 在平时项目开发中,定时任务调度是一项重要的功能,广泛应用于后台作业、计划任务和自动化脚本等模块。 FreeScheduler 是一款轻量级且功能强大的定时任务调度库,它支持临时的延时任务和重复循环任务(可持久化),能够按秒、每天/每周/每月固定时间或自定义间隔执行(CRON 表达式)。 此外
.NET 轻量化定时任务调度 FreeScheduler .NET 轻量化定时任务调度 FreeScheduler .NET 轻量化定时任务调度 FreeScheduler
首次在WebAPI中写单元测试
xUnit 这次我使用的是xUnit测试框架,而不是VS自带的MSTest框架。在添加新建项目时选择xUnit测试项目就行了。 目前只体验到了一个差别,即xUnit可以使用特性向测试方法传参,而不用在测试方法中一个赋值语句一个个去定义参数,这是比较方便的。 单元测试有一个好处,就是一次性可以获得所测
首次在WebAPI中写单元测试 首次在WebAPI中写单元测试
如何做一个优雅的提问者
最近加了很多新人朋友,大部分都是初级开发者。都想要加入开发者群交流讨论平时遇到的问题。新人朋友有这种想法其实蛮好的,但是很多人似乎都不知道如何有效提出自己的问题,他们往往一张图或者一句话就往群里一扔,并且希望能有群友给自己解答。 大部分情况这种问题都会石沉大海,少部分情况下会有一些热心肠的群友会指出
如何做一个优雅的提问者 如何做一个优雅的提问者 如何做一个优雅的提问者
如何判断数据库和对象存储是否被 JuiceFS 使用?
随着使用 JuiceFS 的时间越来越长,一些用户已经用多种数据库和对象存储创建了很多的 JuiceFS 文件系统。有些是纯云端的,有些是纯本地的,有些则是本地与云端结合的。它们当中有一些是存储了文件的,而有一些则只是测试目的临时创建的。多个文件系统混合在一起使用难免会混淆,特别是在同一个数据库实例
如何判断数据库和对象存储是否被 JuiceFS 使用? 如何判断数据库和对象存储是否被 JuiceFS 使用? 如何判断数据库和对象存储是否被 JuiceFS 使用?
AvaloniaChat:一个基于大语言模型用于翻译的简单应用
简介 一个使用大型语言模型进行翻译的简单应用。 A simple application using a large language model for translation. 使用指南 访问GitHub地址:https://github.com/Ming-jiayou/AvaloniaChat
AvaloniaChat:一个基于大语言模型用于翻译的简单应用 AvaloniaChat:一个基于大语言模型用于翻译的简单应用 AvaloniaChat:一个基于大语言模型用于翻译的简单应用
我是如何使用 vue2+element-ui 处理负责表单,避免单文件过大的问题
引言 在工作中我经常需要处理一些复杂、动态表单,但是随着需求不断迭代,我们也许会发现曾经两三百行的.vue文件现在不知不觉到了两千行,三千行,甚至更多... 这对于一个需要长期维护的项目,无疑是增加了很多难度。 因此,为了减小文件大小,优化表单组织的结构,我在日常的开发中实践出一种基于组件的表单拆分