ZeroLogon(CVE-2020-1472) 漏洞的攻击与防御策略(下)
2020-10-03 11:30:00 Author: www.4hou.com(查看原文) 阅读量:623 收藏

photo-1600065621656-889fe211b7c8.jpg

上文我们介绍了攻击原理,本文我们将详细介绍可以发起的攻击种类和防御措施。

攻击种类

计算机/设备帐户本质上与用户帐户相同,如果配置错误,可能同样危险。因此,可以利用计算机帐户密码/哈希值进行一些其他攻击:

1.银票攻击;

2.金票攻击;

3.过时的DNS条目;

4.攻击的替代方法

金票和银票攻击通过利用Kerberos票据授予服务(TGS)来伪造票据。金票和银票攻击的主要区别在于银票只允许攻击者伪造特定服务的TGS票。这两者都可以被利用,因为Zerologon允许攻击者更改计算机帐户密码。

一旦攻击者可以访问计算机帐户密码哈希,该帐户就可以用作“用户”帐户来查询Active Directory,但是更有趣的用例是创建银票以管理员身份访问计算机托管的服务。默认情况下,即使计算机帐户的密码多年来未更改,Active Directory也不会阻止计算机帐户访问AD资源。

什么银票攻击?

构成一张银票攻击的关键要素如下:

1.KRBTGT帐户哈希;

2.目标用户;

3.帐户SID;

4.域名;

5.目标服务;

6.目标服务器。

如果攻击者已转储Active Directory数据库或了解域控制器的计算机帐户密码,则攻击者可以使用银票以管理员身份将DC的服务作为目标并保留在Active Directory中。

18+.png

我们可以通过Pass-The-Hash在DC上运行CME来获得SID,显然其他方法也可以使用whoami /user。

下面是在Mimikatz中使用的命令行,一旦我们有了SID,它就会执行攻击:

kerberos::golden /domain:purplehaze.defense /user:zephr /sid:S-1-5-21-2813455951-1798354185-1824483207 /rc4:9876543210abcdef9876543210abcdef /target:DC2.purplehaze.defense /service:cifs /ptt /id:500

针对CIFS服务的银票攻击

还有其他方法可以执行银票攻击,但是mimikatz可以通过传递票据标志和kerberos :: golden函数使其变得如此简单。

金票攻击

与银票相似,可以使用krbtgt帐户哈希,KRBTGT帐户所属域的域名和SID生成黄金票。可以为有效的域帐户或不存在的帐户创建金票,这对攻击者更具吸引力!

kerberos::golden /domain:purplehaze.defense /user:zephr /sid:S-1-5-21-2813455951-1798354185-1824483207 /rc4:9876543210abcdef9876543210abcdef /target:DC2.purplehaze.defense /ptt

金票攻击命令

虽然攻击的主要焦点一直放在AD环境中的域控制器周围,但很少关注基于DNS的攻击,在这种攻击中,攻击者可以发现较旧的DC DNS条目的陈旧DNS条目,并更改这些条目的计算机密码而不影响操作。比如,你要扫描主机网络,并找到一个不再存在的DNS条目,就可以发起攻击。

21.png

陈旧的DNS条目!

启动选择的PoC,在此示例中,我将使用mimikatz:

lsadump::zerologon /server:stream-dc.purplehaze.defense /account:stream-dc$ /exploit

22.png

我们针对AD中不存在的域控制器(也称为过时的DNS条目)进行了有效的利用!现在,上面的内容看起来与第一轮PoC完全相同,这是因为它基本上是一个警告,DNS条目具有一个AD帐户,但是没有与之关联的计算机,因此我刚刚设法做的就是更改一个计算机的密码。网络上没有关联计算机的AD对象,因此在具有潜在权限的域上建立了攻击立足点。

强大的攻击,让防御者无法招架

以上讲的都是如何利用该漏洞的,下面就具体讲讲攻击工程。

目前受Zerologon漏洞的系统有Windows Server 2019、Windows Server 2016、Windows Server 2012 R2、Windows Server 2012、Windows Server 2008 R2、Windows Server 2008

、Windows Server 2003 R2、Windows Server 2003。

Zerologon漏洞的修复

首先,修复此漏洞需要几个步骤,并且还没有完整的解决方案。

缓解措施包括在所有DC和RODC上安装更新,监控新事件以及解决使用易受攻击的Netlogon安全通道连接的不兼容设备。可以允许不兼容设备上的计算机帐户使用易受攻击的Netlogon安全通道连接。但是,应更新它们以支持Netlogon的安全RPC,并尽快执行该帐户,以消除遭受攻击的风险。

应用Microsoft的2020年8月11日补丁,就可以得到每个操作系统的KB编号的完整列表。

此外,MS将于2021年2月9日发布更新,这将打开DC强制执行模式。解决方法是可以将组策略与注册表项结合设置以临时解决此问题:

1.策略路径:“计算机配置”>“ Windows设置”>“安全设置”>“安全选项”;

2.设置名称:域控制器:允许易受攻击的Netlogon安全通道连接;

应当注意,Microsoft警告:部署更新时,应将此策略用作第三方设备的临时安全措施。

添加以下注册表项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\FullSecureChannelProtection

1 –这将启用强制模式。除非“域控制器:允许易受攻击的Netlogon安全通道连接”组策略中的“创建易受攻击的连接”列表允许该帐户,否则DC将拒绝易受攻击的Netlogon安全通道连接。

0 – DC将允许来自非Windows设备的易受攻击的Netlogon安全通道连接。在执行阶段发行版中将不赞成使用此选项。

这可以通过以下命令来实现:

REG add "HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters" /v FullSecureChannelProtection /t REG_DWORD /d 1/f

除了增加工作解决方案,Microsoft还发不了特定事件ID的指南,以监控针对你的设备的可疑活动是否存在漏洞。

安装了2020年8月或更高版本进行更新后,请在域控制器中的事件日志中查看系统事件日志中的以下事件:

1.如果连接被拒绝,则记录事件ID 5827和5828;

2.如果“域控制器:允许易受攻击的Netlogon安全通道连接”组策略允许连接,则记录事件ID 5830和5831;

3.只要允许存在漏洞的Netlogon安全通道连接,就记录事件ID 5829。

这些事件应在配置DC强制模式之前或在2021年2月9日开始强制阶段之前解决。

检测与响应:监控攻击

如上所述,可以编写查询来监控异常活动,以在事件日志中发现漏洞利用活动。

目前已有很多工具可以执行事件监控,不过我只介绍一些开源工具的搜寻查询,这些工具结合了可转换为其他平台的sigma规则。我还收集了其他人收集的数据,这些数据有望帮助你缩小搜索范围。

1.由https://twitter.com/james_inthe_box创建的Snort规则;

2.CoreLight的Zeek检测包;

另外,阅读有关splunk查询的文章,可以在各种工具中监控以下事件日志和sysmon的事件ID。

1.事件ID-4742:更改了计算机帐户,特别是该操作可能是由匿名登录事件执行的。

2.事件ID-5805,计算机帐户身份验证失败,这通常是由相同计算机名称的多个实例或计算机名称没有复制到每个域控制器造成的。

3.事件代码4624:请注意,如果在主机上利用此漏洞,则成功登录计算机,特别是事件代码4624,然后触发事件代码4724。

4.Sysmon事件ID 3:网络连接事件记录计算机上的TCP / UDP连接,Zerologon事件发生时,从攻击者计算机到受害域控制器再到LSASS进程建立传入的网络连接。

5.Sysmon事件ID 1和13:如果重置了设备密码,很可能将使用以下参数来生成Powershell的系统进程。注意,serviceName是zer0dump.py的唯一属性,默认情况下它是'fucked',实际上serviceName可以是任何东西:

powershell.exe -c Reset-ComputerMachinePassword'

24.png

25.png

6.系统事件代码ID 3210:如果主机已被利用,并且计算机密码已更改,则事件日志将填充3210个事件ID,这些ID表示NETLOGON错误,特别是如果主机在复制对中。

7.事件ID-4662:如果在上述事件ID之后执行了DCSync攻击,则将使用三个GUID中的任何一个生成事件ID 4662:

7.1:“DS-Replication-Get-Changes”扩展权限;

7.2:CN:DS复制获取更改;

7.3:GUID:1131f6aa-9c07-11d1-f79f-00c04fc2dcd2

7.4:“复制目录全部更改”扩展权限;

7.5;CN:DS复制获取更改全部

7.6:GUID:1131f6ad-9c07-11d1-f79f-00c04fc2dcd2

7.7:扩展了“在过滤集中复制目录更改”的权限(并非总是需要此权限,但为防万一,我们可以添加它);

7.8:CN:DS复制获取更改后的过滤设置;

7.9:GUID:89e95b76-444d-4c62-991a-0facbeda640c;

这是成功利用事件日志中记录的攻击链的示例(请注意,事件日志已清除以显示成功利用事件所生成的事件):

26.png

系统日志

27.png

安全日志,身份验证失败,GUID为空

28.png

攻击尝试时生成的Sysmon日志

Sigma防御规则

还可以利用一些sigma规则来寻找ZeroLogon,第一个是SOC Prime的Adam Swan编写的规则:

title: Possible CVE-2020-1472 (zerologon)
description: CVE-2020-1472 (Netlogon Elevation of Privilege Vulnerability) may create thousands of NetrServerReqChallenge & NetrServerAuthenticate3 requests in a short amount of time.
author: SOC Prime Team
date: 2020/09/11
references:
- https://github.com/SecuraBV/CVE-2020-1472
tags:
- attack.lateral_movement
- attack.T1210
logsource:
  product: zeek
  service: dce_rpc
detection:
  selection:
    endpoint: 'netlogon'
    operation: 'NetrServerReqChallenge'
  selection2:
    endpoint: 'netlogon'
    operation: 'NetrServerAuthenticate3'
  timeframe: 1m
  condition: selection or selection2 | count() by src_ip > 100
falsepositives:
- 'unknown'
level: high
DC-Sync
title: Mimikatz DC Sync
id: 611eab06-a145-4dfa-a295-3ccc5c20f59a
description: Detects Mimikatz DC sync security events
status: experimental
date: 2018/06/03
modified: 2020/09/11
author: Benjamin Delpy, Florian Roth, Scott Dermott
references:
    - https://twitter.com/gentilkiwi/status/1003236624925413376
    - https://gist.github.com/gentilkiwi/dcc132457408cf11ad2061340dcb53c2
tags:
    - attack.credential_access
    - attack.s0002
    - attack.t1003.006
logsource:
    product: windows
    service: security
detection:
    selection:
        EventID: 4662
        Properties:
            - '*Replicating Directory Changes All*'
            - '*1131f6ad-9c07-11d1-f79f-00c04fc2dcd2*'
        EventID: 4662
        Properties:
            - '*DS-Replication-Get-Changes*'
            - '*1131f6aa-9c07-11d1-f79f-00c04fc2dcd2*'
    filter1:
        SubjectDomainName: 'Window Manager'
    filter2:
        SubjectUserName:
            - 'NT AUTHORITY*'
            - '*$'
            - 'MSOL_*'
    condition: selection and not filter1 and not filter2
falsepositives:
    - Valid DC Sync that is not covered by the filters; please report
level: high

安全查询

VQL匿名登录自定义工件:

name: Custom.Windows.EventLogs.AnonymousLogon-ZL
description: |
  Parse Security Event Log for Anonymous Logon events that could be ZeroLogon attempts
  
precondition: SELECT OS From info() where OS = 'windows'
 
parameters:
  - name: dateFrom
    default: ""
    type: timestamp
  - name: securityLogFile
    default: C:/Windows/System32/Winevt/Logs/Security.evtx
 
sources:
  - queries:
      - SELECT System.EventID.Value,
               EventData.SubjectUserSid,
               EventData.SubjectUserName,
               EventData.SubjectDomainName,
               EventData.SubjectLogonId,
               EventData.TargetUserSid,
               EventData.TargetUserName,
               EventData.TargetDomainName,
               EventData.TargetLogonId,
               EventData.LogonType,
               EventData.WorkstationName,
               EventData.Properties,
               EventData.LogonGuid,
               EventData.TransmittedServices,
               EventData.ProcessId,
               EventData.ProcessName,
               EventData.IpAddress,
               EventData.IpPort,
               EventData.ImpersonationLevel,
               EventData.RestrictedAdminMode,
               EventData.TargetOutboundUserName,
               EventData.TargetOutboundDomainName,
               EventData.VirtualAccount,
               EventData.TargetLinkedLogonId,
               EventData.ElevatedToken,
               timestamp(epoch=System.TimeCreated.SystemTime) as Time,
               System.TimeCreated.SystemTime AS TimeUTC
        FROM parse_evtx(filename=securityLogFile)
        WHERE System.EventID.Value = 4742
        AND timestamp(epoch=System.TimeCreated.SystemTime) >= dateFrom

与ZeroLogon VQL相关的所有事件ID:

32.png

name: Custom.Windows.EventLogs.ZeroLogonHunt
description: |
  Parse Security Event Log for ZeroLogon Events;  4662, 4672, 5805, 4624, 4742
 
precondition: SELECT OS From info() where OS = 'windows'
 
parameters:
  - name: dateFrom
    default: ""
    type: timestamp
  - name: securityLogFile
    default: C:/Windows/System32/Winevt/Logs/Security.evtx
 
sources:
  - queries:
      - SELECT System.EventID.Value,
               EventData.SubjectUserSid,
               EventData.SubjectUserName,
               EventData.SubjectDomainName,
               EventData.SubjectLogonId,
               EventData.TargetUserSid,
               EventData.TargetUserName,
               EventData.TargetDomainName,
               EventData.TargetLogonId,
               EventData.Properties,
               EventData.LogonType,
               EventData.LogonProcessName,
               EventData.AuthenticationPackageName,
               EventData.WorkstationName,
               EventData.LogonGuid,
               EventData.TransmittedServices,
               EventData.LmPackageName,
               EventData.KeyLength,
               EventData.ProcessId,
               EventData.ProcessName,
               EventData.IpAddress,
               EventData.IpPort,
               EventData.ImpersonationLevel,
               EventData.RestrictedAdminMode,
               EventData.TargetOutboundUserName,
               EventData.TargetOutboundDomainName,
               EventData.VirtualAccount,
               EventData.TargetLinkedLogonId,
               EventData.ElevatedToken,
               timestamp(epoch=System.TimeCreated.SystemTime) as Time,
               System.TimeCreated.SystemTime AS TimeUTC
        FROM parse_evtx(filename=securityLogFile)
        WHERE System.EventID.Value = 4662 OR System.EventID.Value = 4672 OR System.EventID.Value = 5805 OR System.EventID.Value = 4624 OR System.EventID.Value = 4742  
        AND timestamp(epoch=System.TimeCreated.SystemTime) >= dateFrom

可以通过缩短第二次查询来创建与上述事件ID相关的详细信息,从而进一步创建VQL查询。

凯文·博蒙特(Kevin Beaumont)编写了一个怪异的Azure查询程序,使你能够在Azure环境中查询ZeroLogon:

Dce_Rpc | where (endpoint == "netlogon" and (operation == "NetrServerReqChallenge" or operation == "NetrServerAuthenticate3")) | summarize var = count() by SourceIp | where var > 100

此外,Azure ATP检测称为“可疑的Netlogon权限提升尝试(CVE-2020-1472利用)”,如果你安装了Azure ATP,将自动触发报警系统。

本文翻译自:https://blog.zsec.uk/zerologon-attacking-defending/如若转载,请注明原文地址:


文章来源: https://www.4hou.com/posts/kDvY
如有侵权请联系:admin#unsafe.sh