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注册表, 威胁情报, 安全运维, 库, 应急响应, 开发者工具, 恶意软件, 攻击防御, 无文件恶意软件, 日志收集, 计划任务, 防御加固