Karneades/malware-persistence
GitHub: Karneades/malware-persistence
这是一个系统性的恶意软件持久化机制知识库,全面汇总了跨平台的持久化技术、检测方法、响应策略与威胁狩猎资源。
Stars: 186 | Forks: 16
**仅包含链接的超赞列表可以在 [awesome-malware-persistence](https://github.com/Karneades/awesome-malware-persistence) 找到。**
# 恶意软件持久化信息合集
该仓库收集了目前散落在各处的有关
恶意软件持久化机制的检测、响应和日志收集的
信息。
简而言之,我们寻找的是不同恶意软件家族之间的一个共同点:
在目标主机上持久化的能力。此外,与具有误导性的术语
“无文件”相关的恶意软件通常也会在目标上
持久化,尽管不是通过文件系统上的常规文件,而是通过更改
配置文件(如 Windows 注册表或 cron 任务)。
遗憾的是,许多恶意软件博客文章包含了各种 IP 和哈希
信息,但很少有文章从攻击角度强调持久化机制,
尽管从攻击者的角度来看,这是相对静态且难以更改的
信息之一。利用持久化机制来
搜寻恶意软件比使用频繁更改的 IP 地址
或哈希值更稳健。
如果您只想了解持久化技术的概述以及一些
有用资源的链接,请参阅 [常用持久化机制概述](#overview-of-commonly-used-persistence-mechanisms) 和 [检测链接和资源](#links-and-resources-for-detection)。有关一些知名的持久化收集工具,请参阅 [工具](#tools) 部分。
该仓库会定期更新新的检测资源和工具。
如果您有意见,非常欢迎提交 [Pull requests](https://github.com/Karneades/malware-persistence/pulls)!
* [为什么要关注恶意软件持久化?](#why-bothering-with-malware-persistence)
* [检测](#detection)
* [方法](#approach)
* [常用持久化机制概述](#overview-of-commonly-used-persistence-mechanisms)
* [Linux](#linux)
* [MacOS](#macos)
* [Windows](#windows)
* [云](#cloud)
* [所有操作系统及开发者特定更改](#all-oses-and-developer-specific-changes)
* [难以检测的持久化机制概述](#overview-of-difficult-to-detect-persistence-mechanisms)
* [通过 UEFI 恶意软件和 Bootkit 实现持久化](#persistence-through-uefi-malware-and-bootkits)
* [检测链接和资源](#links-and-resources-for-detection)
* [示例](#examples)
* [规避检测](#detection-evasion)
* [测试](#testing)
* [响应](#response)
* [预防](#prevention)
* [工具](#tools)
* [Linux](#linux-1)
* [MacOS](#macos-1)
* [Windows](#windows-1)
* [致谢](#acknowledgement)
## 为什么要关注恶意软件持久化?
如果您是一名事件响应人员,需要分析受感染的主机,
进行常规的入侵评估,或者在您的基础设施中进行
威胁狩猎活动,那么您应该深入了解持久化机制这个
主题,将其作为检测已知或未知恶意软件的一种方法。这是
在 IR(事件响应)活动中需要寻找的线索之一。
让我们从 [MITRE](https://attack.mitre.org/) 使用的 [持久化
技术](https://attack.mitre.org/tactics/TA0003/) 描述开始:
不同恶意软件家族之间的一个共同点是,它们
(通常)试图在目标主机上持久化。与误导性术语
“无文件”相关的恶意软件通常也会在目标上持久化,
尽管不是通过文件系统上的常规文件,而是通过更改
配置文件(如 Windows 注册表或 cron 任务)。
为什么在上面使用“通常”这个词?因为极少数恶意软件会
省略在受害者主机本身设置持久化机制,而是在重启后
从另一个系统(例如 DC,长期运行的系统完全不需要持久化)
重新感染主机。
这座恶意软件持久化信息的金矿在其他
日志源产生的信息中只占一小部分。根据您寻找的内容,
会产生数十到数百个事件,而进程信息则是
数千到数万条。因此,与其他日志源相比,
分析这些事件大大减少了时间和精力。
信噪比也要低得多。
因此,通过成为一名坚持不懈的持久化猎人,您可以利用
这座宝库。虽然不是 [Wikipedia](https://en.wikipedia.org/wiki/Persistence_hunting) 中描述的那种
持久性狩猎...
## 检测
虽然恶意软件可以通过多种方式在主机上持久化,但恶意软件作者
主要依赖少数几种技术。除了这些常用的技术外,
一些恶意软件家族和更具针对性的攻击使用更高级的机制
在系统中隐藏。
请记住,某些持久化技术需要提升的权限,
因此在普通用户下运行的恶意软件(且不考虑权限提升)
只能设置“用户模式”持久化。因此,
如果受感染主机上的用户只使用普通用户帐户,那么首先
关注用户级持久化,其次再寻找系统级
技术。
### 方法
与其他事件响应和威胁狩猎过程一样,分析过程可以包括以下步骤:
1. 使用针对特定技术的单个命令收集持久化机制
(参见 [检测链接和资源](#links-and-resources-for-detection)),或使用工具同时收集
大量机制,参见 [工具](#tools)。
2. 分析命令、文件哈希、文件签名者和文件路径信息,并
通过来自外部服务的更多信息(AV 检出率、与其他文件的关联、
信誉、签名者信息、已知恶意哈希检查)丰富这些信息。
3. 如果输出没有帮助,请对照您基础设施中的其他客户端
检查信息:该条目是否在其他主机上也找到了?
4. 寻找异常情况,例如启动文件夹中的 exe 文件(通常应该
只有 .lnk 文件)是可疑的,或者在 cron 任务中寻找 IP 地址或 Web
请求。请参阅下面的检测思路链接。
5. 在分析过程中,同样重要的是要注意未找到什么
(缺失的证据),而不仅仅是找到了什么,例如根本没有
找到 cron 任务。
### 常用持久化机制概述
使用的技术从用户态持久化机制,到系统级持久化,
从隐藏在常见的二进制名称背后,到将恶意软件
放置在不寻常但鲜为人知的地方。有时在感染后
只发现代理或其他网络配置(包括 DNS 设置)的更改。Retefe 使用了
后者。
请使用 [检测链接和资源](#links-and-resources-for-detection) 部分的信息获取这些
技术的具体信息。
#### Linux
* 常用技术:启动、rc 和 init 脚本、cron 任务、shell 脚本、shell 配置文件。
* 深入分析还应包括较少使用的技术:
恶意库、可加载内核模块 (LKM)、二进制文件替换或网络脚本。
#### MacOS
* 常用技术:launch daemons 和 agents、启动项、shell 脚本、shell 配置文件。
* 深入分析还应包括较少使用的技术:Dylib 劫持。
#### Windows
* 常用技术:注册表运行键、计划任务、服务、启动文件夹。
* 深入分析还应包括较少使用的技术:
例如文件处理程序劫持(检查 HKLM 和 HKCU)、WMI 植入、DLL 侧加载、恶意
驱动程序、LNK 文件、通过 Windows 上的 RDP 连接获取持久化的
隐蔽方式是使用映像劫持,有时被称为
“粘滞键劫持”,或在 ATT&CK 矩阵中被称为技术“辅助功能”,
COM 劫持(检查 HKLM 和 HKCU)。
#### 云
* [Shadow Linking:SaaS 身份威胁的持久化向量](https://www.obsidiansecurity.com/blog/shadow-linking-the-persistence-vector-of-saas-identity-threat/)
* [通过联合凭据在 Entra ID 应用程序和用户托管标识上持久化](https://dirkjanm.io/persisting-with-federated-credentials-entra-apps-managed-identities/)
* 将存储卷映射到外部存储提供商。
* [AWSDoor:AWS 上的持久化](https://github.com/OtterHacker/AWSDoor) - AWS 的访问持久化工具。[相关文章](https://www.riskinsight-wavestone.com/en/2025/09/awsdoor-persistence-on-aws/)描述了对手可以用来在云环境中隐藏自己的技术,以及其 AWSDoor 实现,以简化和自动化 AWS 环境中持久化技术的部署。
#### 所有操作系统及开发者特定更改
* 代理和其他网络配置更改、后门帐户
和快捷方式修改。
* 开发者工作站:例如修改过的 IDE 软件和 git 钩子脚本。
### 难以检测的持久化机制概述
* 完全省略在受害者主机上设置持久化的恶意软件,
而是在重启后从另一个系统(例如 DC,长期运行
且完全不需要持久化的系统)重新感染主机。
* 持久化(例如通过注册表运行键)仅在
关机命令之前短暂设置(关机命令被挂钩)。过去在 Dridex 恶意软件中
使用过。很酷的一点是,如果您知道这一点,您可以冷启动
计算机并“停用” Dridex。
* 滥用被挂钩的文件处理程序。
* DLL 侧加载(文件可以位于系统上的任何位置)。
* 合法的二进制文件替换。
* 固件更改导致无法通过常规补丁清除恶意软件。[示例](https://krebsonsecurity.com/2023/06/barracuda-urges-replacing-not-patching-its-email-security-gateways/)。
* 数据库触发器导致无法通过恢复备份来清除恶意访问:[攻击向量:作为持久化机制的数据库触发器](https://www.trustwave.com/en-us/resources/blogs/spiderlabs-blog/the-attack-vector-database-triggers-as-persistence-mechanisms/)。
### 通过 UEFI 恶意软件和 Bootkit 实现持久化
* (UEFI) 固件恶意软件、Bootkit 或修改过的内核映像。可以通过
检查客户端的签名二进制文件 (Secure Boot) 来检测这些威胁。参见
[MoonBounce:UEFI 固件的黑暗面](https://securelist.com/moonbounce-the-dark-side-of-uefi-firmware/105468)
获取有关某个特定 UEFI Bootkit 的深入剖析。
* _分析表明,受检固件映像中的单个组件
被攻击者修改,使他们能够拦截机器启动序列的
原始执行流程并引入复杂的感染链。_
* 请参阅“重温持久化攻击的最新技术水平”部分,了解 UEFI 恶意软件的简短历史。该部分提到:_在过去的一年中,有几份关于 UEFI 威胁持续趋势的公开报告。
著名的例子包括作为我们报道过的 FinSpy 监控工具集一部分使用的 UEFI Bootkit、
我们 ESET 同事关于 ESPectre Bootkit 的研究成果,以及在中东政府机构内部发现的
一项鲜为人知的威胁活动,该活动使用了自己的 UEFI Bootkit [...] MoonBounce 是后一类基于固件的 Rootkit 植入物中
第三个被公开揭露的案例。之前的案例包括 LoJax 和
MosaicRegressor,我们在 2020 年 10 月曾报道过。_
### 检测链接和资源
以下资源涵盖了大量持久化技术以及有关如何检测这些特定机制的
更多信息。
#### MITRE ATT&CK 战术 "TA0003 - Persistence"
最全面的持久化技术列表之一是
[MITRE ATT&CK 战术 "TA0003 - Persistence"](https://attack.mitre.org/tactics/TA0003/) 中的列表。
除了描述之外,还提供了不同的缓解措施和检测部分。此外,
使用这些技术的参与行为者也列在页面上。
URL: https://attack.mitre.org/tactics/TA0003/
#### Hexacorn 的博客持久化分类
持久化信息的第二座金矿位于 [Hexacorn 的博客](http://www.hexacorn.com/blog/category/autostart-persistence/),那里长期以来定期发布有关持久化机制的
新技术和博客文章,内容非常精彩。您还会在那里找到
传奇系列“Beyond good ol’ Run key”。
URL: http://www.hexacorn.com/blog/category/autostart-persistence/
#### theevilbit 的系列 "Beyond the good ol' LaunchAgents"
关于 macOS 上超越 LaunchDaemons 或 LaunchAgents 目录持久化的
系列文章。在 [介绍](https://theevilbit.github.io/beyond/beyond_intro/) 中
还引用了 Pasquale Stirparo 在 2018 年发表的名为
*Beyond the good ol' LaunchAgent* 的帖子([这里](https://isc.sans.edu/forums/diary/Beyond+good+ol+LaunchAgent+part+0/24230/) 和 [这里](https://isc.sans.edu/forums/diary/Beyond+good+ol+LaunchAgent+part+1/24274/))。
URL: https://theevilbit.github.io/tags/beyond/
#### 取证工件仓库
[取证工件仓库](https://github.com/ForensicArtifacts/artifacts) 涵盖了不同操作系统的有关持久化的
各种工件。请参阅
[data](https://github.com/ForensicArtifacts/artifacts/tree/master/data)
目录中 MacOS、Linux 和 Windows 的 yaml 文件。
URL: https://github.com/ForensicArtifacts/artifacts
#### Sigma 规则
[Sigma 规则](https://github.com/Neo23x0/sigma/tree/master/rules) 也包含
各种有关持久化的规则。[在 Sigma 仓库中搜索持久化规则](https://github.com/Neo23x0/sigma/search?q=persistence&unscoped_q=persistence)
或使用 Sigma 的过滤选项筛选 MITRE ATT&CK 持久化
类别本身或某项特定技术:
```
sigmac --recurse --filter tag=attack.persistence --target splunk --config config/splunk-windows.yml rules
sigmac --recurse --filter tag=attack.t1084 --target splunk --config config/splunk-windows.yml rules
```
URL: https://github.com/Neo23x0/sigma/search?q=persistence&unscoped_q=persistence
#### Autoruns
您可以通过查看自己客户端上 Autoruns 的输出
来了解哪些 Windows 持久化机制是可能的(另请参阅 [工具](#tools))。在
输出中,您可以看到类别和找到它们的不同位置。要查看 Autoruns 到底扫描了哪些条目,
您可以启动反汇编程序并查看二进制文件中的字符串,但这仅涵盖了
一部分。
URL: http://technet.microsoft.com/en-us/sysinternals/bb963902
查找 Windows 持久化信息的另一种方法是查看 [PowerShell 版本的 Autoruns,其位置可以在源代码中找到]( https://github.com/p0w3rsh3ll/AutoRuns/blob/master/AutoRuns.psm1)。额外福利:那里还可以找到 [每个版本涵盖的持久化位置的历史记录](https://github.com/p0w3rsh3ll/AutoRuns/blob/master/AutoRuns.psm1#L2824),非常棒!
URL: https://github.com/p0w3rsh3ll/AutoRuns/blob/master/AutoRuns.psm1
#### KnockKnock
对于 macOS,有 KnockKnock持久化工具可用于寻找持久化机制:https://github.com/objective-see/KnockKnock。特定的持久化位置可以在 [plugins](https://github.com/objective-see/KnockKnock/tree/main/Plugins) 文件夹中找到,例如 [LaunchItems](https://github.com/objective-see/KnockKnock/blob/main/Plugins/LaunchItems.m#L21) 或 [StartupScripts](https://github.com/objective-see/KnockKnock/blob/main/Plugins/StartupScripts.m#L22)。
#### PoisonApple
[PoisonApple](https://github.com/CyborgSecurity/PoisonApple/) 是一款命令行工具,用于在 macOS 上执行各种持久化机制技术。该工具专为威胁猎人进行网络威胁模拟而设计。通过查看 [PoisonApple 的源代码](https://github.com/CyborgSecurity/PoisonApple/blob/master/poisonapple/techniques.py),了解各种 macOS 持久化技术。
#### PANIX
[Panix- Persistence Against *NIX - Features](https://github.com/Aegrah/PANIX?tab=readme-ov-file#features) 是一款高度可定制的 Linux 持久化工具,包含各种持久化技术。
#### 各种博客文章
各种博客文章探讨了持久化机制,有些专门针对某一种
技术,有些则涵盖更广泛的技术集。以下是过去几年的
一些文章,可作为寻找目标的灵感。
有关 macOS 持久化位置,请参阅 [恶意软件如何在 macOS 上持久化](https://www.sentinelone.com/blog/how-malware-persists-on-macos/);通用持久化机制:[常见恶意软件持久化机制](https://resources.infosecinstitute.com/common-malware-persistence-mechanisms/)、[恶意软件持久化技术](https://www.andreafortuna.org/2017/07/06/malware-persistence-techniques/);WMI:[检测和移除攻击者的 WMI 持久化](https://medium.com/threatpunter/detecting-removing-wmi-persistence-60ccbb7dff96);Winlogon:[使用 WinLogon 的 Windows 持久化](https://www.hackingarticles.in/windows-persistence-using-winlogon/);Kovter:[解开 Kovter 的持久化方法](https://blog.malwarebytes.com/threat-analysis/2016/07/untangling-kovter/)、[威胁聚焦:Kovter 恶意软件无文件持久化机制](https://threatvector.cylance.com/en_us/home/threat-spotlight-kovter-malware-fileless-persistence-mechanism.html);Image File Execution Hijacks 中的 GlobalFlags:[在 Image File Execution Options 中使用 GlobalFlags 实现持久化 – 从 Autoruns.exe 中隐藏](https://oddvar.moe/2018/04/10/persistence-using-globalflags-in-image-file-execution-options-hidden-from-autoruns-exe/);Bootloader 持久化:[通过托管检测和响应揭示具有 Bootloader 持久化的 MyKings 变体](https://blog.trendmicro.com/trendlabs-security-intelligence/uncovering-a-mykings-variant-with-bootloader-persistence-via-managed-detection-and-response/);COM 劫持 / CLSID 劫持:[gdatasoftware 2014 年的文章](https://www.gdatasoftware.com/blog/2014/10/23941-com-object-hijacking-the-discreet-way-of-persistence) 或 [pentestlab 2020 年的文章](https://pentestlab.blog/2020/05/20/persistence-com-hijacking/) 或 [Enigma0x3 / Matt Nelson 2016 年关于结合计划任务滥用 COM 劫持的文章](https://enigma0x3.net/2016/05/25/userland-persistence-with-scheduled-tasks-and-com-handler-hijacking/);Linux cron:[使用 Cron 的 Linux 恶意软件持久化](https://www.sandflysecurity.com/blog/linux-malware-persistence-with-cron/);Microsoft Exchange 和 Outlook:[通过 Microsoft Exchange Server 或 Outlook 寻找持久化](https://speakerdeck.com/heirhabarov/hunting-for-persistence-via-microsoft-exchange-server-or-outlook)、[Shadow Linking:SaaS 身份威胁的持久化向量](https://www.obsidiansecurity.com/blog/shadow-linking-the-persistence-vector-of-saas-identity-threat/)、[Linux 检测工程 - 持久化机制入门](https://www.elastic.co/security-labs/primer-on-persistence-mechanisms)、[Linux LKM 持久化 - 利用 Linux 可加载内核模块 (LKM) 的 Rootkit](https://righteousit.com/2024/11/18/linux-lkm-persistence/)、[AWSDoor:AWS 上的持久化](https://github.com/OtterHacker/AWSDoor)、[AWS 访问持久化](https://www.riskinsight-wavestone.com/en/2025/09/awsdoor-persistence-on-aws/)。
### 示例
#### 名为 Local Job Scheduling 的 MITRE ATT&CK 持久化技术
在 [战术页面](https://attack.mitre.org/tactics/TA0003/) 的列表中,
我们可以导航到技术本身,即 [T1168 - local job
scheduling](https://attack.mitre.org/techniques/T1168/) 并获取
描述以及有关所涉及工具和文件的所需信息:
下面提供了检测思路。除了进程监控之外,
我们还可以通过将 cron 文件和命令与其他主机进行比较,或者
仅搜索异常命令来发现恶意任务。
```
% grep -r http /etc/cron.daily/*
```
bleepingcomputer 上关于一个 [Linux 加密货币挖矿机](https://www.bleepingcomputer.com/news/security/cryptominer-uses-cron-to-reinfect-linux-host-after-removal/) 的分析文章展示了
这样一个 cron 条目的示例。IP 会改变,但使用 crontab 和 Web 请求的
持久化技术保留了下来。所以把它们找出来吧!
#### (滥用) Rundll32
第二个例子是 (滥用) rundll32.exe 通过注册表键或其他方式加载库
([T1085 - Rundll32](https://attack.mitre.org/techniques/T1085/))。
Ursnif 是长期以来使用特定 rundll32 命令行的恶意软件家族之一。
因此,搜索命令行中包含 "rundll32" 和 "DllRegisterServer" 的注册表键就能捕获它,或者
直接使用 "rundll32" 作为更通用的搜索模式。
示例摘自 Trendmicro 的 [URSNIF 威胁百科全书](https://www.trendmicro.com/vinfo/us/threat-encyclopedia/malware/trojanspy.win32.ursnif.tiaboecq)
```
In HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
dminsenh = "rundll32 "%Application Data%\Microsoft\Appislad\devrusic.dll",DllRegisterServer"
```
#### 文件处理程序操作
通过操纵 exefile 文件处理程序实现的隐蔽持久化。[MITRE ATT&CK T1546.001 - Event Triggered Execution: Change Default File Association](https://attack.mitre.org/techniques/T1546/001/)。[来自 2021 年 11 月的 Lokibot 样本](https://tria.ge/211119-gs7rtshcfr/behavioral2)。检查 HKLM 和 HKCU。
```
\REGISTRY\MACHINE\SOFTWARE\Classes\exefile\shell\open\command\ = "C:\\Windows\\svchost.com \"%1\" %*"
```
并且恶意软件被投放到了 `C:\Windows\svchost.com`。
## 规避检测
恶意软件作者滥用各种技术来隐藏其恶意软件的持久化
或使检测更加困难:
* Rootkit 隐藏文件或挂钩注册表查询
* 使用与 OS 默认二进制名称相似或拼写抢注的名称
* 通过滥用程序错误(例如注册表键中的空字节)来隐藏条目,这会导致收集时出错,或者在工具输出中丢失条目
* [在 Windows 中滥用 ADS (备用数据流)](https://argonsys.com/microsoft-cloud/library/latest-astaroth-living-off-the-land-attacks-are-even-more-invisible-but-not-less-observable/)
* 使用 DLL 侧加载知名二进制文件
* 使用已签名的二进制文件,然后将其过滤掉(取决于分析)
* 在创建服务时设置了特殊权限的隐藏服务。见于 Talos 的博客文章 [通过聚类安全事件在大型数据集中进行威胁狩猎](https://blog.talosintelligence.com/2021/10/threat-hunting-in-large-datasets-by.html) 的 _Installation stealth and persistence_ 部分。这篇博文引用了 SANS 的另一篇文章,[Red Team Tactics: Hiding Windows Services](https://www.sans.org/blog/red-team-tactics-hiding-windows-services/)。
* _在接下来的步骤中,脚本删除了 PowerShell 日志,并使用带有一些奇怪权限设置的长命令行将最终有效载荷注册为 Windows 服务。Google 快速搜索显示,这些设置用于使服务在使用常规 Windows 管理工具时隐藏且不可移除,除非采取一些额外操作。[Talos]_
* _Windows 的一个鲜为人知的功能允许红队或攻击者隐藏服务不被查看,从而创造了规避常见基于主机的威胁狩猎技术检测的机会。[SANS]_
## 测试
使用 [检测](#detection) 部分资源中的描述和信息来模拟持久化。
此外,不同的工具提供了检查以验证检测是否有效。
[Atomic Red Team](https://github.com/redcanaryco/atomic-red-team) 测试套件
允许检查特定的 MITRE ATT&CK 持久化技术,例如参见 [T1044 "File
System Permissions
Weakness"](https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1044/T1044.yaml)。
[hasherezade 发布了恶意软件使用的各种(也包括非标准的)持久化方法的演示](https://github.com/hasherezade/persistence_demos),比如 COM 劫持。
使用 [PoisonApple](https://github.com/CyborgSecurity/PoisonApple) 在 macOS 上执行各种持久化技术。
使用 [PANIX](https://github.com/Aegrah/PANIX) 在 Linux 系统上(包括 Debian 和 RHEL 等)执行各种持久化技术。
使用 [Diamorphine](https://github.com/m0nad/Diamorphine),这是一个适用于 Linux 内核 (x86/x86_64 和 ARM64) 的可加载内核模块 (LKM) Rootkit,用于测试 LKM 的检测。
使用 [AWSDoor: Persistence on AWS](https://github.com/OtterHacker/AWSDoor) 在 AWS 上添加访问持久化。[相关文章](https://www.riskinsight-wavestone.com/en/2025/09/awsdoor-persistence-on-aws/)描述了对手可以用来在云环境中隐藏自己的技术,以及其 AWSDoor 实现,以简化和自动化 AWS 环境中持久化技术的部署。
### 示例
作为示例,我们使用 [T1183 - "Image File Execution Options Injection"](https://attack.mitre.org/techniques/T1183/) 技术,并滥用“粘滞键”功能来执行命令外壳。这也会在登录前触发。
要测试您的收集工具、现有的预防机制以及
出色的检测能力,请执行以下命令为相应的注册表键添加调试器值:
```
REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "cmd /c tasklist"
```
现在您可以多次点击键盘上的 shift 键以触发 cmd 的执行。
## 响应
如果您响应一起事件并需要清理恶意软件持久化作为
临时对策,您只需移除给定的信息。对于
文件和配置更改,通常使用标准的操作系统命令即可完成。
使用您的 EDR 或其他一些框架(例如在 Windows 上,参见 [PowerSponse](https://github.com/swisscom/PowerSponse))。
在 WMI 等特殊情况下,清理不像其他机制那样直接,
请参阅博客文章 [Removing Backdoors – Powershell Empire Edition](https://www.n00py.io/2017/01/removing-backdoors-powershell-empire-edition/):
1. 使用 `Get-WmiObject __FilterToConsumerBinding -Namespace root\subscription | Where-Object { $_.filter -match 'evil'} | Remove-WmiObject;` 移除绑定
2. 使用 `Get-WmiObject CommandLineEventConsumer -Namespace root\subscription -Filter "name='evil'" | Remove-WmiObject` 移除事件消费者
3. 使用 `Get-WMIObject -Namespace root\Subscription -Class __EventFilter -Filter "Name='evil'" | Remove-WmiObject -Verbose` 移除事件过滤器
此外,Windows 注册表中存在空字节值的问题,攻击者
滥用该问题在运行键等位置隐藏条目。可以使用自定义工具或
[RegDelNull](https://docs.microsoft.com/en-us/sysinternals/downloads/regdelnull)
来移除这些条目。
## 预防
此列表绝不全面,仅列出了一些防止恶意软件持久化的可能性。最重要的事情当然是防止未知程序的执行。
* 尽可能阻止将文件写入异常位置,例如 Windows 的公用用户配置文件。
* 阻止在仅使用有限文件类型的特定文件夹中存放特定文件类型
(例如,应该只放置 .lnk 文件的启动文件夹中的 .exe)。
* 对重要的配置文件(例如 cron 任务)使用文件完整性检查。
* 降低权限,以便更高级的持久化技术因缺少权限而失败。
* 应定期检查文件系统权限,并尽可能严格限制。
* 锁定配置文件(只读),并在 Windows 上对特定的注册表键设置 ACL(例如辅助功能键)。
* 防止滥用第三方身份提供商,参见 [Shadow Linking:SaaS 身份威胁的持久化向量](https://www.obsidiansecurity.com/blog/shadow-linking-the-persistence-vector-of-saas-identity-threat/)。
对于 macOS,有 Patrick Wardle 开发的 BlockBlock 工具,它通过监控持久化位置来提供保护:https://github.com/objective-see/BlockBlock。
## 工具
您可以在发生事件时在(远程)主机上一次性收集所需信息,或者
定期收集信息以进行基线分析和威胁狩猎。
需要提醒的一件事,感谢 windowsir 的 Harlan Carvey 在各种
博客文章中也指出了类似的要点,请参阅 [Deep Knowledge,
and the Pursuit Thereof ](https://windowsir.blogspot.com/2019/05/deep-knowledge-and-pursuit-thereof.html)
和 [Troubleshooting and Deep
Knowledge](https://windowsir.blogspot.com/2019/05/troubleshooting-and-deep-knowledge.html):
对工具的结果要谨慎,并尝试使用不同的
工具进行交叉检查或手动检查。工具仅以其自己的方式提供信息,有时会遗漏恶意条目,或者某些选项被关闭等。例如,Autoruns 可以隐藏 Microsoft 签名的条目,但这样一来就会缺少一些 LOLbin(就地取材,即滥用系统工具)命令。使用它可以减少条目数量,但要知道其局限性。之前存在一个注册表空字节问题,导致收集中也缺少了这些条目。新版本修复了该问题。还有一个:[Persistence using
GlobalFlags in Image File Execution Options – Hidden from Autoruns.exe](https://oddvar.moe/2018/04/10/persistence-using-globalflags-in-image-file-execution-options-hidden-from-autoruns-exe/)。
有关特定技术的收集,请参阅 [检测链接和资源](#links-and-resources-for-detection),其中涵盖了有关不同持久化机制位置的
详细信息。
### Linux
* 我不知道有公开可用的工具可以获取大量持久化机制。但是
有不同的命令,可以放入脚本中以便于
使用。根据发行版的不同,使用 `crontab`、`cat`、`grep`、`md5sum`、`sha1sum`、`sha256sum`、`somethingsum` 的相应命令
以及大多数技术的目录列表。
* [Linux 安全和监控脚本](https://github.com/sqall01/LSMS) - 您可以使用这些安全和监控脚本来监控您的 Linux 安装以防范与安全相关的事件或用于调查。其中包括发现用于恶意软件持久化的 systemd 单元文件。
* 对于持久化机制的定期收集,您可以查看 [osquery](https://osquery.readthedocs.io) 或 [OSSEC](https://github.com/ossec/ossec-hids)。
### MacOS
* [KnockKnock](https://www.objective-see.com/products/knockknock.html)
揭露持久安装的软件,从而通用地
揭示此类恶意软件。另请参阅 [Github 仓库获取源代码](https://github.com/objective-see/KnockKnock)。
* [BlockBlock](https://github.com/objective-see/BlockBlock) 通过监控持久化位置提供持续保护。
* [Dylib Hijack Scanner 或 DHS](https://www.objective-see.com/products/dhs.html) 是一个简单的实用程序,它将扫描您的计算机以查找易于受到 dylib 劫持或已被劫持的应用程序。另请参阅 [Github 仓库获取源代码](https://github.com/objective-see/DylibHijackScanner)。
* 除了 UI 工具 KnockKnock 之外,我不知道有公开可用的命令行工具可以获取大量持久化机制。但是有不同的命令可以放入脚本中以便于使用。使用 `crontab`、`cat`、`grep`、`md5sum`、`sha1`、`sha256sum`、`somethingsum` 的相应命令以及大多数技术的目录列表。
* 对于持久化机制的定期收集,您可以查看 [osquery](https://osquery.readthedocs.io) 或 [OSSEC](https://github.com/ossec/ossec-hids)。
### Windows
* Windows 上一个强大的持久化收集工具是
[Autoruns](http://technet.microsoft.com/en-us/sysinternals/bb963902)。它
从活动系统和[以有限的方式从离线映像](https://www.sans.org/blog/offline-autoruns-revisited-auditing-malware-persistence/)中收集不同的类别和持久化信息。它有一个 UI 和一个命令行程序,
输出格式可以设置为 CSV,然后可以导入到您选择的
日志收集系统中。
* 除了使用 CSV 输出并将这些文件复制到服务器之外,您可以使用脚本 [AutorunsToWinEventLog.ps1](https://github.com/palantir/windows-event-forwarding/blob/master/AutorunsToWinEventLog/AutorunsToWinEventLog.ps1) 将 Autoruns 输出转换为 Windows 事件日志,并依赖标准的 Windows 事件日志转发。
* PowerShell 版本的 [Autoruns](https://github.com/p0w3rsh3ll/AutoRuns)。
* [PersistenceSniper](https://github.com/last-byte/PersistenceSniper) 是一个 Powershell 模块,用于搜寻植入 Windows 机器中的持久化。
* [RegRipper](https://github.com/keydet89/RegRipper2.8) 也可以直接从注册表文件中提取各种持久化机制。
* 使用配置文件 [UserClassesASEPs](https://github.com/EricZimmerman/RECmd/blob/master/BatchExamples/UserClassesASEPs.reb) 的 [RECmd](https://github.com/EricZimmerman/RECmd) 提取用户的 CLSID 信息。
* [KAPE](https://www.kroll.com/en/insights/publications/cyber/kroll-artifact-parser-extractor-kape) 有不同的目标和模块,请参阅 [KapeFiles](https://github.com/EricZimmerman/KapeFiles),其中包含持久化机制,此外还有 [LNK 文件](https://github.com/EricZimmerman/KapeFiles/blob/master/Targets/Windows/LNKFilesAndJumpLists.tkape)、[计划任务文件](https://github.com/EricZimmerman/KapeFiles/blob/master/Targets/Windows/ScheduledTasks.tkape) 和 [计划任务列表](https://github.com/EricZimmerman/KapeFiles/blob/master/Modules/LiveResponse/schtasks.mkape) 或 [WMI 存储库审计](https://github.com/EricZimmerman/KapeFiles/blob/master/Modules/LiveResponse/WMI-Repository-Auditing.mkape) 模块的收集。
* [PyrsistenceSniper](https://github.com/Hexastrike/PyrsistenceSniper) 是一款基于 Python 的离线 Windows 持久化检测工具。将其指向 KAPE 转储、Velociraptor 收集或挂载的磁盘映像,即可获得离线 Windows 持久化检测。可在 Windows、Linux 和 macOS 上运行。
* 不同的 AV 和 EDR 工具也包括持久化机制的检测和预防。
### 云
* [AWSDoor:AWS 上的持久化](https://github.com/OtterHacker/AWSDoor) 用于在 AWS 上添加访问持久化。[相关文章](https://www.riskinsight-wavestone.com/en/2025/09/awsdoor-persistence-on-aws/)描述了对手可以用来在云环境中隐藏自己的技术,以及其 AWSDoor 实现,以简化和自动化 AWS 环境中持久化技术的部署。
### Github 主题搜索持久化
目前使用这些主题找不到太多内容,但如果您搜索 #malware 和 #persistence,就会列出匹配的仓库:https://github.com/search?q=%23malware+%23persistence&type=
## 致谢
感谢我的前雇主 [Swisscom](https://www.swisscom.ch)
([Github](https://github.com/swisscom))允许我发布这些
受过去几年我在 [@swisscom_csirt](https://twitter.com/swisscom_csirt) 工作启发所得出的信息。
标签:macOS安全, PB级数据处理, Windows注册表, 威胁情报, 安全运维, 库, 应急响应, 开发者工具, 恶意软件, 攻击防御, 无文件恶意软件, 日志收集, 计划任务, 防御加固