WannaCry勒索病毒:DFIR与SOC监控实验室实战演练
实验室核心概念
亲爱的防御者们,大家好!在本文中,我将展示如何免费搭建一个网络安全家庭实验室,涵盖在Windows端点上执行WannaCry勒索病毒并执行数字取证和安全监控的全过程。
实验室主要步骤:
- 设置Elastic SIEM
- 在Windows 10虚拟机上配置Sysmon(推荐使用VirtualBox作为虚拟机管理器)
- 从GitHub下载WannaCry勒索病毒(是的,有一个包含各类恶意软件样本的仓库!)
- 执行病毒并进行威胁狩猎
- 使用Autopsy和Volatility进行磁盘和内存取证
WannaCry的静态与动态分析
静态分析
在本实验室中,我们首先通过检查WannaCry样本(SHA-256:ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa)进行静态分析,使用Hybrid Analysis等工具在不执行文件的情况下识别入侵指标(IoCs)。这种安全的初步评估帮助我们为Elastic SIEM制作KQL检测规则,但会错过运行时行为,如网络活动或文件加密,这些我们需要在实际执行中观察。
动态分析
接下来,我们在隔离的Windows 10虚拟机中执行WannaCry进行动态分析,观察实时行为,如文件加密和检查终止开关域(hxxp://www.iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea.com)。这个风险较高的步骤在禁用互联网和共享文件夹后执行,验证我们的静态IoCs并捕获Sysmon日志,以便在Elastic SIEM中进行威胁狩猎,全面了解WannaCry的影响以完善检测规则。
设置Elastic SIEM
-
访问 https://cloud.elastic.co/login 并注册14天免费试用。选择Elastic Cloud Serverless作为部署类型——它轻量级且非常适合本实验室。
-
在设置向导中,选择Security作为您的用例。如果被问及"您将如何使用Elastic for Security?",选择Something else——这使我们的TTP模拟设置保持灵活。
-
验证您是否在无服务器项目中:登录后,检查Elastic Cloud仪表板的左上角。它应该在您的项目名称下显示"Serverless"。如果没有,点击Create Project,选择Serverless,并命名(例如"TTP-Lab")。
-
添加SIEM数据:导航到Integrations > Elastic Defend > Add Elastic Defend。设置集成名称(例如"Windows-TTP-Defend")并选择Complete EDR以进行全面端点监控。
-
安装Elastic Agent:在Elastic Defend的设置中,点击Add Agent,选择Windows x86-64,并复制提供的PowerShell命令。在您的Windows虚拟机上打开提升的PowerShell(以管理员身份运行)并粘贴命令以安装代理。这将设置从您的虚拟机收集日志。
-
点击Assets -> Agents
-
点击Agent Policies -> 点击您当前的策略,然后点击add integration。
-
搜索Windows并添加集成,但确保Symon监控选项已打开!
完成!现在您将能够在ELK SIEM上看到Sysmon日志。
专业提示: 如果代理安装失败,请检查虚拟机的互联网连接并确保PowerShell以管理员身份运行。您可以通过检查服务(services.msc)中的"Elastic Agent"来验证代理是否正在运行。
安装Sysmon
Sysmon是一种系统监控工具,与经典的Windows事件日志不同,它为分析员提供了更好的进程启动、注册表修改、访问敏感系统文件、网络活动等的可见性,使其特别适用于检测可疑活动。
-
从Microsoft Sysinternals下载Sysmon。滚动到底部并下载zip文件。
-
将zip解压缩到虚拟机上的文件夹(例如C:\Tools\Sysmon)。
-
从SwiftOnSecurity的GitHub下载Sysmon配置文件。该配置在真实场景中经过测试,捕获关键事件如进程创建、网络连接和注册表修改,同时过滤噪音。
-
在提升的PowerShell中,导航到Sysmon文件夹(例如cd C:\Tools\Sysmon)并运行:
.\sysmon64.exe -accepteula -i ./path/to/your/config-file/sysmonconfig-export.xml
为什么选择这个特定配置? SwiftOnSecurity的XML针对威胁检测进行了优化,捕获关键事件如进程注入和可疑网络活动,而不会淹没您的日志。如果您想调整它,请检查XML的<EventFiltering>
部分以调整Sysmon记录的内容(例如添加<FileCreate>
用于文件创建事件)。
完成后,转到您的Elastic Security仪表板并前往Discover选项卡,点击"*logs"。这被称为索引,您可以将其视为存储所有不同类型日志的表。
为虚拟机创建快照
创建快照是一个非常重要的步骤,因为它将根据NIST SP 800-61的IR(事件响应过程)在执行后将我们的虚拟机恢复到原始状态。要创建一个,点击Take按钮。
下载勒索病毒
从这个GitHub仓库下载勒索病毒:https://github.com/ytisf/theZoo
下载Autopsy和Volatility
注意: 将这两个工具安装在您的主机系统上(您的主操作系统——例如,如果您的主操作系统是Windows 11,并且您在其中运行Windows 10虚拟机,那么将工具安装在Windows 11上)。
-
从此链接下载Autopsy:https://www.autopsy.com/download/
-
按照以下步骤安装Volatility进行内存分析:
- 从此网站下载最新版本的Python:https://www.python.org/downloads/
- 下载此wheel包以获取最新版本的volatility(Volatility是使用Python构建的,这就是我告诉您先下载最新版本Python的原因!):https://github.com/volatilityfoundation/volatility3/releases/download/v2.26.0/volatility3-2.26.0-py3-none-any.whl
- 现在使用pip通过执行以下命令安装volatility 3:
pip install path\to\volatility3-2.7.0-py3-none-any.whl
- 如果您能看到以下输出,意味着到目前为止一切顺利!
- 现在通过键入以下命令验证安装:
vol -h
- 如果您能看到以下内容,意味着您已成功安装volatility!
编写自定义检测规则以检测WannaCry勒索病毒
我们可以使用开源情报获取更多关于勒索病毒执行时创建哪些进程的信息。这可以通过获取样本的哈希值并使用Hybrid Analysis或Any.run等网站进行检查来完成。我们已经有了样本的SHA-256哈希值,因为它发布在theZoo的GitHub仓库中。
ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa
现在让我们将其粘贴到Hybrid Analysis中,以查看可能发生的情况的更大图景。分析像这样的恶意软件样本的过程通常被称为静态分析。
静态分析涉及在不运行文件的情况下检查文件,例如检查二进制文件的结构、字符串或导入。Hybrid Analysis确实提供静态分析,但它也包括动态分析(在沙箱中执行时的行为)。对于纯静态分析,考虑使用PEStudio或字符串提取等工具来补充Hybrid Analysis数据。
识别创建的进程(例如taskdl.exe、taskse.exe、@WanaDecryptor@.exe)是一个关键的IoC(入侵指标)。此哈希的Hybrid Analysis报告显示多个生成的进程(例如cmd.exe、cscript.exe、attrib.exe),这些对于检测规则很有价值,但我们也需要将这些与已知的合法进程进行交叉检查以避免误报。
-
转到rules,然后点击Detection Rules开始。
-
点击Create new rule。
-
选择custom query作为您的选项,并编写以下KQL查询:
|
|
然后点击continue并填写以下信息:about rule和schedule rule。
我将警报严重性设置为critical,风险评分为100。schedule rule每分钟运行一次,并根据我们上面创建的自定义查询检查警报。
下一步,在rule actions下点击Elastic Defend,response action选择isolate。点击create and enable rule。
执行勒索病毒(如果您不习惯,请跳过以下部分)
在执行勒索病毒之前,有一些要点需要记住:
- 关闭虚拟机上的互联网连接
- 禁用共享文件夹访问,以免感染传播到您的主机操作系统
- 暂时禁用Windows Defender
- 以管理员身份打开PowerShell或命令提示符,然后使用powershell关闭实时保护:
Set-MpPreference -DisableRealtimeMonitoring $true
- 上述命令禁用Windows Defender的实时保护
- 现在打开Windows Security > Virus & Threat Protection > Manage Settings。关闭所有病毒和威胁保护设置,以便进行有效的动态分析。
- 以管理员身份打开PowerShell或命令提示符,然后使用powershell关闭实时保护:
现在让我们执行勒索病毒!
双击theZoo文件夹中的可执行文件。给它一些时间,您应该看到以下屏幕。如果您仔细注意,有一些扩展名为".WNCRY"的文件。这意味着虚拟机已感染WannaCry勒索病毒。
如果您尝试打开桌面上的常规文本文件(如果您为测试创建了它们,也就是它们是否在您的ELK SIEM上可见),您会看到类似以下内容,表明文件已加密:
将日志传输回您的ELK SIEM
执行后,在虚拟机的网络设置中打开NAT模式,并打开您的电缆连接选项:
这将确保日志由您的fleet agent转发到您的SIEM。
第二种选择是在执行勒索病毒时打开互联网,同时确保网络设置处于NAT模式且电缆已连接。这将确保日志在攻击实时发生时正确传输到您的SIEM。这太冒险了,为避免主机机器感染的机会,请向您的防火墙设置添加规则,阻止端口445和139上的出站SMB连接。
现在日志应该已经转发到您的SIEM。输入一个已知恶意进程的KQL查询,您知道该进程是通过运行WannaCry勒索病毒生成的。以下是我的示例KQL查询:
process.name:"attrib.exe"
我们还可以看到我们的检测规则在索引security solution alerts下被触发,并在我们的仪表板上获得了20个警报:
这应该确认日志已摄入您的SIEM(只需确保过滤事件发生的时间)!
开始威胁狩猎!
威胁狩猎方法以威胁情报为起点,并对系统基线有一般理解。对于这种情况,我们将使用分析员在日常工作中使用的两个最常用的威胁情报源:MITRE ATT&CK和Cyber Kill Chain Framework(您绝对可以使用任何其他高级框架,但在本文中,我将使用CKC!)。
让我们开始将我们现在拥有的所有信息与CKC映射。以下是该框架的实际样子:
该模型识别对手必须完成什么才能实现其目标。
侦察: WannaCry专门查找Windows操作系统内的SMB版本1漏洞。如果条件与恶意软件中设置的条件匹配,则开始利用Eternal Blue漏洞。参考:https://helpdesk.kaseya.com/hc/en-gb/articles/4407526903953-CVE-2017-0143-Windows-SMB-RCE-Vulnerability-WannaCry。映射到漏洞扫描TTP ID:T1595.002,MITRE ATT&CK链接:https://attack.mitre.org/techniques/T1595/002/
武器化: DoublePulsar是勒索病毒在受感染计算机上安装的后门。DoublePulsar攻击通过在您的PC上静默安装危险的后门植入物工作,攻击者可以使用它绕过您的PC安全并无检测地访问您的系统。在获得对您系统的访问权限后,攻击者可以植入恶意软件或窃取您的个人数据。这意味着您容易受到进一步的恶意软件攻击,包括"WannaCry"勒索病毒。参考:https://support.avast.com/en-ca/article/eternalblue-vulnerability/#pc。所以我们现在可以尝试将信息映射到MITRE ATT&CK。技术ID:T1055。参考:https://attack.mitre.org/techniques/T1055/
利用: 正如我们所知,勒索病毒利用已知漏洞,目标主要是面向公众的应用程序。所以我们可以映射MITRE ATT&CK技术ID是T1190。参考MITRE上的技术:https://attack.mitre.org/techniques/T1190/。
交付: 据我们所知,WannaCry利用SMB服务器并在网络上横向移动以利用其他设备。CKC的交付阶段在我们的案例中没有正确映射,因为我们从github仓库自行下载二进制文件。
安装: 我们可以通过仅观察执行后的桌面来确认这一点。运行可执行文件会安装恶意软件,加密用户系统上的所有文件。安装后,它执行以下操作:
- WannaCry将自己安装为Windows服务,因此在重启后自动启动。T1543.003 — 创建或修改系统进程:Windows服务
- 一旦注册,WannaCry使用Windows服务控制管理器(services.exe)运行。T1569.002 — 系统服务:服务执行
- 服务名称看起来合法或随机以避免怀疑(例如,隐藏在类似系统的名称下)。T1036 — 伪装
- 最终有效负载加密文件并要求赎金。T1486 — 数据加密影响
命令和控制(C2): 如果我们做一点研究,我们可以发现WannaCry除了终止开关域外不进行任何C2连接:hxxp[://]www[.]iuqerfsodp9ifjaposdfjhgosurijfaewrwergwea[.]com。
目标行动: 在攻击生成并存储加密密钥后,它们使用它来加密所有类型的文件,除了系统关键文件如.exe、.dll、.sys。原因是如果勒索病毒加密这些文件,机器可能无法启动,它们将无法收到赎金!
结构化的威胁狩猎方法要求我们在开始狩猎实际威胁之前做出假设。在我们的场景中,一个端点感染了勒索病毒。大多数勒索病毒建立持久性以在重启后保持访问,加密本地和网络文件 targeting specific extensions,投放带有支付说明的勒索笔记,并可能删除影子副本、日志或备份以防止恢复。
让我们一步一步来:
-
查找恶意软件持久性: 它主要涉及更改注册表键(Sysmon id 13):
- 正如我们所看到的,进程tasksche.exe伪装成windows任务调度程序,即一个恶意进程,并映射到MITRE ATT&CK上的T1036和T1112。KQL查询:
event.code: 13
- 正如我们所看到的,进程tasksche.exe伪装成windows任务调度程序,即一个恶意进程,并映射到MITRE ATT&CK上的T1036和T1112。KQL查询:
-
加密本地和网络文件:
- 这里我们可以查找Sysmon事件id 11用于文件创建事件,并查找扩展名为"WNCRYT"的文件。KQL查询:
event.code:11 and (file.path:*\\*.WNCRYT or file.name:*.WNCRYT) and event.dataset:”windows.sysmon_operational”
。MITRE ATT&CK技术:T1486 — 数据加密影响。
- 这里我们可以查找Sysmon事件id 11用于文件创建事件,并查找扩展名为"WNCRYT"的文件。KQL查询:
-
投放带有支付说明的勒索笔记:
- 这里我们可以再次查找Sysmon事件ID 11,并查找以".txt"结尾的文件,因为勒索病毒不会加密它为向受害者要求赎金而创建的文本文件。KQL查询:
event.code:11 and file.name:*.txt
- 这里我们可以再次查找Sysmon事件ID 11,并查找以".txt"结尾的文件,因为勒索病毒不会加密它为向受害者要求赎金而创建的文本文件。KQL查询:
-
影子副本删除:
- 这里我们可以使用Sysmon事件ID 1检查是否有任何新进程创建。查找影子副本删除的KQL查询:
event.code:”1" and process.name:”vssadmin.exe”
- 这里我们可以使用Sysmon事件ID 1检查是否有任何新进程创建。查找影子副本删除的KQL查询:
有趣的是,在此WannaCry执行中,没有删除影子副本,确认此变体专注于文件加密和传播,而不是系统恢复破坏。
我们在Windows虚拟机上的任务现在完成了,所以我们可以关闭它,并使用我们在攻击前拍摄的快照将其恢复到原始状态。
点击您想要在攻击后恢复到的快照上的restore。
从我们的虚拟机克隆虚拟硬盘
转到安装VirtualBox的主目录。然后键入以下命令:
VBoxManage clonehd "C:\Path\Windows10.vdi" "C:\Path\Windows10.raw" --format RAW
命令中的第一个位置参数是您的Windows 10虚拟磁盘所在的位置。此路径应类似于:“C:\Users\your_username\VirtualBox VMs\Windows10\Snapshots\the_snapshot_which_is_infected_but_not_saved”。第二个路径是您想要保存原始磁盘的位置。
此命令将以RAW格式逐字节复制您的Windows虚拟机中的虚拟硬盘。确保您的设备上至少有55-65 GB的空间用于从Windows 10虚拟机提取的原始虚拟硬盘!
为分析获取虚拟机的内存转储
转到存储VirtualBox的位置。在该文件夹中打开终端并键入以下命令:.\VBoxManage.exe debugvm "Your VM's Name" dumpvmcore --filename="Folder Location where you want to store the file to\VM_Name.raw"
内存转储的存储需求可能约为5 GB。这将取决于您在虚拟机上执行了多少任务。
Autopsy分析
以管理员模式打开autopsy,点击new case并填写案例信息:
输入一个随机案例编号,然后点击next/finish。
现在您将看到在autopsy中打开了一个新窗口。
点击next,在下一个选项中选择Disk Image / VM file的选项,然后添加我们刚才创建的RAW磁盘文件的位置:
将您的虚拟机磁盘的位置添加到其中,然后点击next。在下一个屏幕上,选择您想要分析并感兴趣的字段。在我们的案例中,Recent Activity、Hash Lookup、Encryption Decryption等等!
在Autopsy处理磁盘中的工件后,我们应该看到类似以下内容:
让我们点击File Size选项,看看autopsy在取证过程中找到了什么类型的文件:
正如我们所看到的,有一些扩展名为.WNCRY的文件,表明文件已加密。
如果我们排序并查看images部分,我们可以在那里观察到勒索图像:
另一个值得注意的部分是Autopsy中的Score部分。
我们可以看到有970个可疑项目,表明磁盘映像100%感染了勒索病毒。
现在让我们查找注册表键以寻找潜在持久性机制的证据,我找到了"@WannaDecryptor@.exe"可执行文件:
让我们查找NTUSER.DAT以查看持久性的迹象:
计划任务和持久性的明显迹象(MITRE ATT&CK T1112)。
使用Volatility进行内存分析
让我们查看帮助菜单,看看哪些参数对于分析内存有用。
让我们查看Volatility的帮助菜单,看看我们可以执行哪些类型的操作。
有四个插件对于查找恶意进程有用:windows.pslist.PsList、windows.psscan.PsScan、windows.pstree.PsTree和windows.psxview.PsXView。
让我们一个一个地使用它们,看看我们可以从它们那里得到什么信息:
vol -f win10_memdump_wannacry.raw windows.pslist
初始内存分析后的两个未知进程。如果我们在谷歌上搜索它们,会出现以下内容:
我们可以清楚地观察到该进程与WannaCry勒索病毒相关。进程ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa.exe,PID 11444和进程@WannaDecryptor,PID 10160。
插件windows.psscan.PsScan:
没有发现其他恶意进程。
插件windows.pstree.PsTree:
输出在终端上无法正确读取,因此,我通过以下命令将输出传输到CSV文件:vol -f win10_memdump_wannacry.raw windows.pstree.PsTree > output.csv
我们可以看到一些进程的位置。
结论
这个动手实验室引导您构建一个网络安全家庭实验室来分析WannaCry勒索病毒,从设置Elastic SIEM和Sysmon到执行静态和动态分析。通过首先使用静态分析识别IoCs如taskdl.exe并制作KQL检测规则,然后动态执行WannaCry以观察行为如.WNCRY文件加密,您已经获得了威胁狩猎和DFIR的实践技能。像Autopsy和Volatility这样的工具进一步揭示了持久性机制(例如MITRE ATT&CK T1112)和伪装的进程,显示了攻击者如何逃避防御。将这些技术应用于其他恶意软件样本,完善您的检测规则,并继续探索MITRE ATT&CK和Cyber Kill Chain以磨练您的网络安全专业知识!