点击上方蓝字“Ots安全”一起玩耍
6 月 21 日星期一,Microsoft更新了先前报告的漏洞 ( CVE-2021-1675 ),将其严重性从“低”提高到“严重”,并将其对远程代码执行的影响提高。6 月 29 日,星期二,一名安全研究人员发布了一个名为PrintNightmare的有效概念验证,几乎影响所有版本的 Windows 系统。昨天,也就是 7 月 1 日,微软为这个漏洞分配了一个新的 CVE,CVE-2021-34527。
该漏洞会影响 Windows 系统上默认启用的 Print Spooler 服务,并允许攻击者使用低特权用户帐户欺骗此服务安装远程托管的打印驱动程序。成功的利用有效地允许攻击者在以系统权限(特权升级)运行的打印后台处理程序服务的上下文中执行目标系统中的代码(远程代码执行)。
成功利用的先决条件包括:
-
在目标系统上启用打印后台处理程序服务
-
与目标系统的网络连接(已获得初始访问权限)
-
低权限用户(或计算机)帐户的哈希或密码
影响
在最具影响力的情况下,攻击者将能够利用此漏洞,通过在域控制器上执行恶意代码,将其在 Active Directory 环境中的权限从低权限域用户提升到完全域管理员权限,如下所示。
成功利用以在域控制器上获取反向 Meterpreter shell
由于尚未发布官方补丁,Splunk 威胁研究团队建议立即采取行动,使用记录的变通方法来缓解此漏洞。如果您想要一种非常快速的方式来了解您对这个漏洞的暴露程度,您可以在您的服务器群中部署通用转发器的情况下这样做。只需启用适用于 Windows的Splunk 附加组件的WinHostMon输入,即可报告每台服务器上的服务状态(以下突出显示):
####### 主机监控#######
[WinHostMon://Service]
interval = 600
disabled = 0
type = Service
然后,在 WinHostMon 数据中执行搜索以轻松显示哪些服务器启用或运行了 Print Spooler 服务。这可用于跟踪缓解进度:
index=<your index> sourcetype=WinHostMon source=service
DisplayName="Print Spooler"
| stats values(DisplayName) as
Disp_Name,values(StartMode) as Start_mode,values(Started) as Started,values(State) as State by host
我们还鼓励采用纵深防御方法,通过检测和监控控制来补充预防工作。这篇博文描述了网络防御者可以利用的检测机会来识别其环境中 CVE-2021-34527 的成功利用。
这些检测是在攻击范围环境中开发的,在该环境中,一些已发布的 POC 重现了漏洞利用。该分析侧重于 3 个数据源:
-
XmlWinEventLog:Microsoft-Windows-Sysmon/Operational
-
WinEventLog:Microsoft-Windows-PrintService/Admin
-
WinEventLog:Microsoft-Windows-PrintService/Operational
我们还发布了使用针对受害者端点的公开漏洞利用生成的attack_data 数据集。安全团队可以利用这些数据集来验证或增强检测安全态势,而无需实际复制攻击。
默认情况下可能未启用打印服务日志。要将它们摄取到 Splunk,可以在 input.conf 中使用如下类似的配置。
[WinEventLog://Microsoft-Windows-PrintService/Operational]
disabled = 0
start_from = oldest
current_only = 0
checkpointInterval = 5
renderXml=false
index = win
[WinEventLog://Microsoft-Windows-PrintService/Admin]
disabled = 0
start_from = oldest
current_only = 0
checkpointInterval = 5
renderXml=false
index = win
PrintNightmare 的检测
Splunk 威胁研究团队正在发布一个名为“ PrintNightmare CVE-2021-34527 ”的新分析故事,以帮助安全运营中心 (SOC) 分析师检测成功的利用场景。这个故事包括七个新的和两个现有的检测分析。
在这篇博文中,我们将尽可能提供源类型和数据模型 SPL 搜索。请注意,数据模型搜索需要符合 CIM。
您可以在GitHub和Splunkbase上找到此内容以及其他安全分析故事。在Splunk的安全基础应用程式也有现在都通过推送更新可用这些检测。
Spoolsv 生成 Rundll32
使用 rundll32.exe 的子进程检测 Spoolsv。
系统门:
sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR source=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventID=1 parent_process_name=spoolsv.exe process_name=rundll32.exe
| stats count min(_time) as firstTime max(_time) as lastTime by Computer, User,
parent_process_name, process_name, OriginalFileName, process_path, CommandLine
数据模型:
| tstats count min(_time) as firstTime max(_time) as lastTime from datamodel
=Endpoint.Processes where
Processes.parent_process_name=spoolsv.exe
Processes.process_name=rundll32.exe by Processes.dest Processes.user
Processes.parent_process Processes.process_name Processes。process
Processes.process_id Processes.parent_process_id
Spoolsv 可疑进程访问
识别来自 Spoolsv.exe 的可疑进程访问事件,并授予对目标进程的高权限访问权限。
系统门:
sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR
source=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventCode=10
SourceImage = "*\spoolsv.exe" CallTrace = "*\Windows\system32\spool DRIVERS\x64\*"
TargetImage IN ("*\rundll32.exe", "*\spoolsv.exe") GrantedAccess = 0x1fffff |
stats count min(_time) as firstTime max(_time) as lastTime by Computer SourceImage
TargetImage GrantedAccess CallTrace EventCode
Spoolsv 可疑加载的模块
根据来自 CVE-2021-34527 使用的特定路径的 DLL 加载,识别潜在的可疑模块加载到 Spoolsv.exe。
最小 countImgLoaded 值设置为 3,因为该漏洞将在特定目标文件夹中同时加载 3 个模块(unidrv.dll、kernelbase.dll 和可疑 dll)。
系统门:
sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR
source=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventCode=7 Image ="*\spoolsv.exe" ImageLoaded="*\Windows\System32\spool\drivers\x64\*"
ImageLoaded = "*.dll" | stats dc(ImageLoaded) as countImgloaded values(ImageLoaded)
as ImgLoaded count min(_time) as firstTime max(_time) as lastTime by Image Computer
EventCode | where countImgloaded >= 3
Spoolsv.exe 编写 DLL
检测写入 DLL 的 Spoolsv.exe。
系统门:
sourcetype=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational OR
source=XmlWinEventLog:Microsoft-Windows-Sysmon/Operational EventID=11
process_name=spoolsv.exe file_path="*\spool\drivers\x64\*"
file_name= *.dll | stats count min(_time) as firstTime max(_time) as lastTime by
dest, UserID, process_name, file_path, file_name, TargetFilename
数据模型:
| tstats count FROM datamodel=Endpoint.Processes where
Processes.process_name=spoolsv.exe by _time Processes.process_id Processes.process_name Processes.dest
| rename "Processes.*" as *
| join process_guid _time
[| tstats count min(_time) as firstTime max(_time) as lastTime FROM datamodel=Endpoint.Filesystem where
Filesystem.file_path="*\spool\drivers\x64\*" Filesystem.file_name="*.dll" by _time
Filesystem.dest Filesystem.file_create_time Filesystem.file_name Filesystem.file_path
| rename "Filesystem.*" as *
| fields _time dest file_create_time file_name file_path process_name process_path process]
| dedup file_create_time
| table dest file_create_time, file_name, file_path, process_name
打印后台处理程序无法加载插件
检测新打印机插件加载失败的时间。
source="WinEventLog:Microsoft-Windows-PrintService/Operational"
EventCode=316 category = "Adding a printer driver" Message = "*kernelbase.dll,*" Message = "*UNIDRV.DLL,*" Message = "*.DLL.*"
| stats count min(_time) as firstTime max(_time) as lastTime by OpCode EventCode ComputerName Message
本文始发于微信公众号(Ots安全):【漏洞验证】我同情假脱机:检测 PrintNightmare CVE-2021-34527
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论