ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防御策略(下)
攻擊種類
計算機/設備帳戶本質上與用戶帳戶相同,如果配置錯誤,可能同樣危險。因此,可以利用計算機帳戶密碼/哈希值進行一些其他攻擊:
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中。
我們可以通過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條目,就可以發起攻擊。
啟動選擇的PoC,在此示例中,我將使用mimikatz:
- lsadump::zerologon /server:stream-dc.purplehaze.defense /account:stream-dc$ /exploit
我們針對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'
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;
這是成功利用事件日志中記錄的攻擊鏈的示例(請注意,事件日志已清除以顯示成功利用事件所生成的事件):
系統日志
安全日志,身份驗證失敗,GUID為空
攻擊嘗試時生成的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:
- 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/如若轉載,請注明原文地址: