1. 程式人生 > 實用技巧 >ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

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中。

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

我們可以通過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條目,就可以發起攻擊。

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

陳舊的DNS條目!

啟動選擇的PoC,在此示例中,我將使用mimikatz

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

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

我們針對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安全通道連線。在執行階段發行版中將不贊成使用此選項。

這可以通過以下命令來實現:

REGadd"HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters"/vFullSecureChannelProtection/tREG_DWORD/d1/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'

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

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;

這是成功利用事件日誌中記錄的攻擊鏈的示例(請注意,事件日誌已清除以顯示成功利用事件所生成的事件):

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

系統日誌

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

安全日誌,身份驗證失敗,GUID為空

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

攻擊嘗試時生成的Sysmon日誌

Sigma防禦規則

還可以利用一些sigma規則來尋找ZeroLogon,第一個是SOC Prime的Adam Swan編寫的規則:

title:PossibleCVE-2020-1472(zerologon)
description:CVE-2020-1472(NetlogonElevationofPrivilegeVulnerability)maycreatethousandsofNetrServerReqChallenge&NetrServerAuthenticate3requestsinashortamountoftime.
author:SOCPrimeTeam
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:selectionorselection2|count()bysrc_ip>100
falsepositives:
-'unknown'
level:high
DC-Sync
title:MimikatzDCSync
id:611eab06-a145-4dfa-a295-3ccc5c20f59a
description:DetectsMimikatzDCsyncsecurityevents
status:experimental
date:2018/06/03
modified:2020/09/11
author:BenjaminDelpy,FlorianRoth,ScottDermott
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:
-'*ReplicatingDirectoryChangesAll*'
-'*1131f6ad-9c07-11d1-f79f-00c04fc2dcd2*'
EventID:4662
Properties:
-'*DS-Replication-Get-Changes*'
-'*1131f6aa-9c07-11d1-f79f-00c04fc2dcd2*'
filter1:
SubjectDomainName:'WindowManager'
filter2:
SubjectUserName:
-'NTAUTHORITY*'
-'*$'
-'MSOL_*'
condition:selectionandnotfilter1andnotfilter2
falsepositives:
-ValidDCSyncthatisnotcoveredbythefilters;pleasereport
level:high

安全查詢

VQL匿名登入自定義工件:

name:Custom.Windows.EventLogs.AnonymousLogon-ZL
description:|
ParseSecurityEventLogforAnonymousLogoneventsthatcouldbeZeroLogonattempts

precondition:SELECTOSFrominfo()whereOS='windows'

parameters:
-name:dateFrom
default:""
type:timestamp
-name:securityLogFile
default:C:/Windows/System32/Winevt/Logs/Security.evtx

sources:
-queries:
-SELECTSystem.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)asTime,
System.TimeCreated.SystemTimeASTimeUTC
FROMparse_evtx(filename=securityLogFile)
WHERESystem.EventID.Value=4742
ANDtimestamp(epoch=System.TimeCreated.SystemTime)>=dateFrom

與ZeroLogon VQL相關的所有事件ID:

ZeroLogon(CVE-2020-1472) 漏洞的攻擊與防禦策略(下)

name:Custom.Windows.EventLogs.ZeroLogonHunt
description:|
ParseSecurityEventLogforZeroLogonEvents;4662,4672,5805,4624,4742

precondition:SELECTOSFrominfo()whereOS='windows'

parameters:
-name:dateFrom
default:""
type:timestamp
-name:securityLogFile
default:C:/Windows/System32/Winevt/Logs/Security.evtx

sources:
-queries:
-SELECTSystem.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)asTime,
System.TimeCreated.SystemTimeASTimeUTC
FROMparse_evtx(filename=securityLogFile)
WHERESystem.EventID.Value=4662ORSystem.EventID.Value=4672ORSystem.EventID.Value=5805ORSystem.EventID.Value=4624ORSystem.EventID.Value=4742
ANDtimestamp(epoch=System.TimeCreated.SystemTime)>=dateFrom

可以通過縮短第二次查詢來建立與上述事件ID相關的詳細資訊,從而進一步建立VQL查詢。

凱文·博蒙特(Kevin Beaumont)編寫了一個怪異的Azure查詢程式,使你能夠在Azure環境中查詢ZeroLogon:

Dce_Rpc|where(endpoint=="netlogon"and(operation=="NetrServerReqChallenge"oroperation=="NetrServerAuthenticate3"))|summarizevar=count()bySourceIp|wherevar>100

此外,Azure ATP檢測稱為“可疑的Netlogon許可權提升嘗試(CVE-2020-1472利用)”,如果你安裝了Azure ATP,將自動觸發報警系統。