密碼噴洒調查

本文提供識別和調查組織內密碼噴洒攻擊的指引,並採取必要的補救動作來保護資訊,並將進一步的風險降到最低。

本文包含下列章節:

  • 必要條件: 涵蓋開始調查之前,您需要完成的特定需求。 例如,應該開啟的記錄、所需的角色和許可權等等。
  • 工作流程: 顯示您應該遵循的邏輯流程,以執行此調查。
  • 檢查清單: 包含流程圖中每個步驟的工作清單。 此檢查清單在高度管制的環境中很有説明,以驗證您所做的或只是作為您自己的品質網關。
  • 調查步驟: 包含此特定調查的詳細逐步指引。
  • 復原: 包含如何從密碼噴洒攻擊中復原/減輕的高階步驟。
  • 參考: 包含更多閱讀和參考數據。

必要條件

開始調查之前,請確定您已完成記錄和警示和其他系統需求的設定。

針對 Microsoft Entra 監視,請遵循 Microsoft Entra SecOps 指南中的 建議和指引

設定 AD FS 記錄

ADFS 2016 上的事件記錄

根據預設,Windows Server 2016 中的 Microsoft Active Directory 同盟服務 (ADFS) 已啟用基本層級的稽核。 透過基本稽核,系統管理員可以看到單一要求的五個或更少事件。 將記錄設定為最高層級,並將AD FS(& security) 記錄傳送至 SIEM,以與 AD 驗證和 Microsoft Entra ID 相互關聯。

若要檢視目前的稽核層級,請使用下列 PowerShell 命令:

Get-AdfsProperties

Example of the Get-AdfsProperties PowerShell command

下表列出可用的稽核層級。

稽核層級 PowerShell 語法 描述
None Set-AdfsProperties -AuditLevel None 稽核已停用,且不會記錄任何事件
基本 (預設值) Set-AdfsProperties -AuditLevel Basic 單一要求不會記錄超過五個事件
詳細資訊 Set-AdfsProperties -AuditLevel Verbose 會記錄所有事件。 此層級會記錄每個要求的大量資訊。

若要提高或降低稽核層級,請使用下列 PowerShell 命令:

Set-AdfsProperties -AuditLevel <None | Basic | Verbose>

設定 ADFS 2012 R2/2016/2019 安全性記錄

  1. 按兩下 [開始],流覽至 [程式 > 管理員 工具],然後按兩下 [本機安全策略]。

  2. 流覽至 [安全性 設定\本機原則\用戶版權管理] 資料夾,然後按兩下 [產生安全性稽核]。

  3. 在 [ 本機安全性設定 ] 索引標籤上,確認已列出 ADFS 服務帳戶。 如果不存在,請按兩下 [新增使用者群組 ],並將其新增至清單,然後按兩下 [ 確定]。

  4. 若要啟用稽核,請使用提高的許可權開啟命令提示字元,然後執行下列命令:

    auditpol.exe /set /subcategory:"Application Generated" /failure:enable /success:enable
    
  5. 關閉 本機安全策略

  6. 接下來,開啟 ADFS 管理嵌入式管理單元,按兩下 [開始],流覽至 [程式>] 管理員 istrative Tools,然後按兩下 [ADFS 管理]。

  7. 在 [ 動作] 窗格中,按兩下 [ 編輯同盟服務屬性]。

  8. 在 [ 同盟服務屬性 ] 對話框中,按兩下 [ 事件] 索引標籤。

  9. 選取 [成功稽核] 和 [失敗稽核] 核取方塊。

  10. 按兩下 [ 確定 ] 以完成並儲存組態。

安裝ADFS的 Microsoft Entra 連線 Health

適用於ADFS代理程式的 Microsoft Entra 連線 Health 可讓您更瞭解同盟環境。 它提供數個預先設定的儀錶板,例如使用量、效能監視和具風險的IP報告。

若要安裝 ADFS 連線 Health,請完成使用 Microsoft Entra 連線 Health 的需求,然後安裝 Azure ADFS 連線 Health 代理程式

使用 ADFS具風險IP報告活頁簿設定具風險的IP警示

設定ADFS的 Microsoft Entra 連線 健全狀況之後,您應該使用ADFS風險IP報告活頁簿和 Azure 監視器來監視和設定警示。 使用此報表的優點包括:

  • 偵測超過密碼型登入失敗閾值的IP位址。
  • 支援因為密碼錯誤或外部網路鎖定狀態而失敗的登入。
  • 支援透過 Azure 警示啟用警示。
  • 符合組織安全策略的可自定義閾值設定。
  • 可自定義的查詢和展開的視覺效果,以進行進一步分析。
  • 自 2022 年 1 月 24 日起,已淘汰先前 Risky IP 報告的擴充功能。

在 Microsoft Sentinel 上設定 SIEM 工具警示

若要設定 SIEM 工具警示,請瀏覽現用警示的教學課程。

SIEM 與 適用於雲端的 Microsoft Defender Apps 整合

連線 安全性資訊和事件管理 (SIEM) 工具來 適用於雲端的 Microsoft Defender 應用程式,其目前支援 Micro Focus ArcSight 和一般事件格式 (CEF)。

如需詳細資訊,請參閱 泛型 SIEM 整合

SIEM 與圖形 API 整合

您可以使用下列任一選項,將 SIEM 與 Microsoft Graph 安全性 API 連線:

  • 直接使用支援的整合選項 – 請參閱支援的整合選項 清單,例如撰寫程式代碼以直接連接您的應用程式來衍生豐富的深入解析。 使用範例來開始使用。
  • 使用 Microsoft 合作夥伴所建置的原生整合和連接器 – 請參閱 Microsoft Graph 安全性 API 合作夥伴解決方案來使用這些整合。
  • 使用 Microsoft 所建置的連接器 – 請參閱連接器清單,您可以透過各種安全性事件與事件管理(SIEM)、安全性回應和協調流程(SOAR)、事件追蹤和服務管理 (ITSM)、報告等解決方案來與 API 連線。

如需詳細資訊,請參閱使用 Microsoft Graph 安全性 API 的安全性解決方案整合。

使用 Splunk

您也可以使用 Splunk 平台來設定警示。

工作流程

[Password spray investigation workflow]

您也可以:

  • 將密碼噴灑和其他事件回應劇本工作流程下載為 PDF
  • 將密碼噴灑和其他事件回應劇本工作流程下載為 Visio 檔案

檢查清單

調查觸發程式

  • 從 SIEM、防火牆記錄或 Microsoft Entra ID 接收觸發程式
  • Microsoft Entra ID Protection 密碼噴灑功能或具風險的 IP
  • 大量失敗的登入 (事件識別碼 411)
  • ADFS 的 Microsoft Entra 連線 健康情況尖峰
  • 另一個安全性事件(例如網路釣魚)
  • 無法解釋的活動,例如從不熟悉的位置登入,或使用者收到非預期的 MFA 提示

調查

  • 正在收到哪些警示?
  • 您是否可以確認此攻擊是密碼噴灑?
  • 判斷攻擊的時間軸。
  • 判斷攻擊的IP位址。
  • 篩選此期間和IP位址的成功登入,包括成功密碼但 MFA 失敗
  • 檢查 MFA 報告
  • 帳戶上是否有任何不一般專案,例如新裝置、新OS、使用的新IP位址? 使用 適用於雲端的 Defender Apps 或 Azure 資訊保護 來偵測可疑活動。
  • 通知地方當局/第三方尋求協助。
  • 如果您懷疑遭到入侵,請檢查數據外洩。
  • 檢查相關聯的帳戶是否有可疑行為,並尋找與其他可能的帳戶和服務以及其他惡意IP位址相互關聯。
  • 檢查在相同辦公室/委派存取中工作的任何人的帳戶 - 密碼衛生 (請確定他們未使用與遭入侵帳戶相同的密碼)
  • 執行ADFS說明

風險降低

如需如何啟用下列功能的指引,請參閱參考一節:

復原

  • 在 適用於雲端的 Defender Apps、SIEM、ADFS 和 Microsoft Entra 識別符中標記不正確的 IP 位址
  • 檢查其他類型的信箱持續性,例如轉送規則或其他新增的委派
  • MFA 作為主要驗證
  • 設定 SIEM 與 Cloud 整合
  • 設定警示 - Identity Protection、ADFS 健全狀況 連線、SIEM 和 適用於雲端的 Defender Apps
  • 學到的經驗(包括主要項目關係人、第三方、溝通小組)
  • 安全性狀態檢閱/改善
  • 規劃執行一般攻擊模擬器

您也可以將密碼噴灑和其他事件劇本檢查清單下載為 Excel 檔案

調查步驟

密碼噴灑事件回應

讓我們先瞭解一些密碼噴灑攻擊技術,再繼續進行調查。

密碼入侵: 攻擊者猜到用戶的密碼,但由於多重要素驗證(MFA)等其他控制而無法存取帳戶。

帳戶入侵: 攻擊者猜測用戶的密碼,並取得帳戶的存取權。

環境探索

識別驗證類型

在第一個步驟中,您必須檢查要調查之租使用者/已驗證網域所使用的驗證類型。

若要取得特定功能變數名稱的驗證狀態,請使用 Get-MgDomain PowerShell 命令。 以下是範例:

Connect-MgGraph -Scopes "Domain.Read.All"
Get-MgDomain -DomainId "contoso.com"

驗證是否同盟或受管理?

如果驗證是同盟的,則成功登入會儲存在 Microsoft Entra ID 中。 失敗的登入位於其識別提供者 (IDP) 中。 如需詳細資訊,請參閱 AD FS疑難解答和事件記錄

如果驗證類型是受控雲端、密碼哈希同步處理 (PHS)或傳遞驗證 (PTA),則成功和失敗的登入會儲存在 Microsoft Entra 登入記錄中。

注意

分段 推出 功能可讓租使用者功能變數名稱同盟,但要管理特定的使用者。 判斷任何使用者是否為此群組的成員。

是否已啟用ADFS的 Microsoft Entra 連線 Health?

ADFS 中是否已啟用進階記錄?

記錄是否儲存在 SIEM 中?

若要檢查您要在安全性資訊和事件管理 (SIEM) 或任何其他系統中儲存和關聯記錄:

  • Log Analytics - 預先建置的查詢
  • Sentinel - 預先建置的查詢
  • Splunk – 預先建置的查詢
  • 防火牆記錄
  • UAL 如果 > 30 天

瞭解 Microsoft Entra 識別碼和 MFA 報告

請務必瞭解您看到能夠判斷入侵的記錄。 以下是瞭解 Microsoft Entra 登入和 MFA 報告的快速指南:

事件觸發程式

事件觸發程式是事件或一系列事件,導致預先定義的警示觸發。 例如,錯誤的密碼嘗試次數已超過您預先定義的閾值。 以下是可在密碼噴灑攻擊中警示的觸發程式,以及這些警示浮出水面的進一步範例。 事件觸發程式包括:

  • 使用者

  • IP

  • 使用者代理程式字串

  • 日期時間

  • 異常

  • 密碼嘗試不正確

    pwdattempts描述錯誤密碼嘗試次數的圖表

活動的異常尖峰是透過 Microsoft Entra Health 連線(假設已安裝此元件)的重要指標。 其他指標如下:

  • 當您定序記錄時,透過 SIEM 發出警示會顯示尖峰。
  • ADFS 失敗登入的記錄大小大於一般記錄大小,這可以是SIEM工具中的警示。
  • 增加 342/411 事件識別碼的數量 – 使用者名稱或密碼不正確。 或 516 用於外部網路鎖定。
  • 命中失敗的驗證要求閾值 – Microsoft Entra ID 或 SIEM 工具警示中具風險的 IP/342 和 411 錯誤(若要能夠檢視這項資訊,應開啟進階記錄。

Microsoft Entra Health 連線 入口網站中具風險的 IP

在一小時內達到不良密碼的自定義閾值和一天中的錯誤密碼計數和外部網路鎖定時,就會發生有風險的IP警示。

Example of risky IP report data

具風險的IP報告數據

失敗嘗試的詳細數據可在索引 標籤IP位址外部網路鎖定中取得。

ipaddresstable

風險IP報告中的IP位址和外部網路鎖定

在 Azure Identity Protection 中偵測密碼噴灑

Azure Identity Protection 是 Microsoft Entra ID P2 功能,具有密碼噴洒偵測風險警示和搜尋功能,可提供更多資訊或自動補救。

Example of password spray attack

密碼噴洒攻擊的詳細數據

低和緩慢的攻擊指標

低和緩慢的攻擊指標是當帳戶鎖定的閾值或不正確的密碼未受到攻擊時。 您可以透過下列方式偵測這些指標:

  • GAL 順序失敗
  • 重複屬性失敗(UA、目標 AppID、IP 區塊/位置)
  • 計時 – 自動噴灑在嘗試之間往往有更定期的時間間隔。

調查與緩和措施

注意

您可以在持續/持續的攻擊期間同時執行調查和緩和措施。

  1. 如果ADFS尚未開啟,請開啟進階記錄。

  2. 判斷攻擊開始的日期和時間。

  3. 從防火牆、ADFS、SIEM 或 Microsoft Entra ID 判斷攻擊者 IP 位址(可能是多個來源和多個 IP 位址)。

  4. 一旦密碼噴灑確認,您可能必須通知當地機構(員警、第三方等)。

  5. 定序並監視ADFS的下列事件識別碼:

    ADFS 2012 R2

    • 稽核事件 403 – 提出要求的使用者代理程式
    • 稽核事件 411 – 驗證要求失敗
    • 稽核事件 516 – 外部網路鎖定
    • Audit Event 342 – 驗證要求失敗
    • 稽核事件 412 - 成功登入
  6. 若要收集 Audit Event 411 - 失敗的驗證要求, 請使用下列 腳本

    PARAM ($PastDays = 1, $PastHours)
    #************************************************
    #ADFSBadCredsSearch.ps1
    #Version 1.0
    #Date: 6-20-2016
    #Author: Tim Springston [MSFT]
    #Description: This script will parse the ADFS server's (not proxy) security ADFS
    #for events which indicate an incorrectly entered username or password. The script can specify a
    #past period to search the log for and it defaults to the past 24 hours. Results >#will be placed into a CSV for
    #review of UPN, IP address of submitter, and timestamp.
    #************************************************
    cls
    if ($PastHours -gt 0)
    {$PastPeriod = (Get-Date).AddHours(-($PastHours))}
    else
    {$PastPeriod = (Get-Date).AddDays(-($PastDays))}
    $Outputfile = $Pwd.path + "\BadCredAttempts.csv"
    $CS = get-wmiobject -class win32_computersystem
    $Hostname = $CS.Name + '.' + $CS.Domain
    $Instances = @{}
    $OSVersion = gwmi win32_operatingsystem
    [int]$BN = $OSVersion.Buildnumber
    if ($BN -lt 9200){$ADFSLogName = "AD FS 2.0/Admin"}
    else {$ADFSLogName = "AD FS/Admin"}
    $Users = @()
    $IPAddresses = @()
    $Times = @()
    $AllInstances = @()
    Write-Host "Searching event log for bad credential events..."
    if ($BN -ge 9200) {Get-Winevent -FilterHashTable @{LogName= "Security"; >StartTime=$PastPeriod; ID=411} -ErrorAction SilentlyContinue | Where-Object{$_.Message -match "The user name or password is incorrect"} | % {
    $Instance = New-Object PSObject
    $UPN = $_.Properties[2].Value
    $UPN = $UPN.Split("-")[0]
    $IPAddress = $_.Properties[4].Value
    $Users += $UPN
    $IPAddresses += $IPAddress
    $Times += $_.TimeCreated
    add-member -inputobject $Instance -membertype noteproperty -name >"UserPrincipalName" -value $UPN
    add-member -inputobject $Instance -membertype noteproperty -name "IP Address" ->value $IPAddress
    add-member -inputobject $Instance -membertype noteproperty -name "Time" -value >($_.TimeCreated).ToString()
    $AllInstances += $Instance
    $Instance = $null
    }
    }
    $AllInstances | select * | Export-Csv -Path $Outputfile -append -force ->NoTypeInformation
    Write-Host "Data collection finished. The output file can be found at >$outputfile`."
    $AllInstances = $null
    

ADFS 2016/2019

除了上述事件標識碼,請定序 Audit Event 1203 – Fresh Credential Validation Error

  1. 在ADFS上將這一次的所有成功登入定序 (如果同盟)。 快速登入和註銷(在同一秒)可能是攻擊者成功猜測和嘗試密碼的指標。
  2. 針對同盟與受控案例,針對此期間,將任何 Microsoft Entra 成功或中斷的事件定序。

從 Microsoft Entra ID 監視和定序事件識別碼

瞭解如何尋找 錯誤記錄的意義。

下列來自 Microsoft Entra ID 的事件識別符相關:

  • 50057 - 用戶帳戶已停用
  • 50055 - 密碼已過期
  • 50072 - 使用者提示提供 MFA
  • 50074 - 需要 MFA
  • 50079 - 用戶必須註冊安全性資訊
  • 53003 - 條件式存取封鎖的使用者
  • 53004 - 由於可疑活動而無法設定 MFA
  • 530032 - 安全策略上的條件式存取封鎖
  • 登入狀態成功、失敗、中斷

從 Sentinel 劇本定序事件標識碼

您可以從 GitHub可用的 Sentinel 劇本取得所有事件識別碼。

隔離並確認攻擊

隔離 ADFS 和 Microsoft Entra 成功且中斷的登入事件。 這些是您感興趣的帳戶。

封鎖IP位址ADFS 2012R2和更新版本以進行同盟驗證。 以下是範例:

Set-AdfsProperties -AddBannedIps "1.2.3.4", "::3", "1.2.3.4/16"

收集ADFS記錄

在時間範圍內收集多個事件標識碼。 以下是範例:

Get-WinEvent -ProviderName 'ADFS' | Where-Object { $_.ID -eq '412' -or $_.ID -eq '411' -or $_.ID -eq '342' -or $_.ID -eq '516' -and $_.TimeCreated -gt ((Get-Date).AddHours(-"8")) }

在 Microsoft Entra ID 中定序 ADFS 記錄

當您使用 Microsoft Entra 連線 Health 時,Microsoft Entra 登入報告包含 ADFS 登入活動。 依令牌簽發者類型 「同盟」篩選登入記錄。

以下是擷取特定IP位址登入記錄的範例 PowerShell 命令:

Get-AzureADIRSignInDetail -TenantId b446a536-cb76-4360-a8bb-6593cf4d9c7f -IpAddress 131.107.128.76

此外,搜尋 Azure 入口網站 的時間範圍、IP 位址和成功和中斷的登入,如這些影像所示。

timeframe

在特定時間範圍內搜尋登入

ipaddress

搜尋特定IP位址上的登入

status

根據狀態搜尋登入

然後,您可以將此數據下載為 .csv 檔案進行分析。 如需詳細資訊,請參閱 Microsoft Entra 系統管理中心的登入活動報告。

排定結果的優先順序

請務必能夠回應最重要的威脅。 此威脅可能表示攻擊者已成功取得帳戶的存取權,因此可以存取/外泄數據;攻擊者具有密碼,但可能無法存取帳戶。 例如,他們具有密碼,但未通過 MFA 挑戰。 此外,攻擊者無法正確猜測密碼,但會繼續嘗試。 在分析期間,排定這些結果的優先順序:

  • 已知攻擊者IP位址成功登入
  • 已知攻擊者IP位址中斷登入
  • 已知攻擊者IP位址的登入失敗
  • 其他未知的IP位址成功登入

檢查舊版驗證

大部分的攻擊都會使用舊版驗證。 有許多方式可以判斷攻擊的通訊協定。

  1. 在 Microsoft Entra ID 中,流覽至 [登入] 並篩選 [用戶端應用程式]。

  2. 選取所有列出的舊版驗證通訊協定。

    authenticationcheck

    舊版通訊協議清單

  3. 或者,如果您有 Azure 工作區,您可以使用預先建置的舊版驗證活頁簿,位於 [監視和活頁簿] 下的 Microsoft Entra 系統管理中心。

    workbook

    舊版驗證活頁簿

封鎖受控案例的 IP 位址 Microsoft Entra 識別碼 (PHS 包括預備)

  1. 流覽至 [ 新增具名位置]。

    Example of a new named location

  2. 建立 CA 原則,以鎖定所有應用程式,並僅封鎖此具名位置。

使用者之前是否已使用此作業系統、IP、ISP、裝置或瀏覽器?

如果他們尚未這麼做且此活動不尋常,請為使用者加上旗標並調查其所有活動。

IP 是否標示為「具風險」?

請確定您記錄成功密碼但 MFA 回應失敗,因為此活動指出攻擊者正在取得密碼,但未通過 MFA。

請保留任何看似正常登入的帳戶,例如,傳遞的 MFA、位置和 IP 並非不一般。

MFA 報告

請務必同時檢查 MFA 記錄,以判斷攻擊者是否已成功猜測密碼,但 MFA 提示失敗。 當系統提示用戶進行多重要素驗證時,Microsoft Entra 多重要素驗證記錄會顯示事件的驗證詳細數據。 檢查並確定 Microsoft Entra ID 中沒有大型可疑的 MFA 記錄。 如需詳細資訊,請參閱 如何使用登入報告來檢閱 Microsoft Entra 多重要素驗證事件

其他檢查

在 適用於雲端的 Defender Apps 中,調查遭入侵帳戶的活動和檔案存取。 如需詳細資訊,請參閱

檢查使用者是否可以存取更多資源,例如虛擬機(VM)、網域帳戶許可權、記憶體等。 如果有數據外洩,您應該通知更多機構,例如警方。

立即補救動作

  1. 變更您懷疑已遭入侵的任何帳戶密碼,或探索到帳戶密碼。 此外,請封鎖使用者。 請確定您遵循撤銷緊急存取的指導方針
  2. 將任何遭入侵的帳戶標示為 Azure Entra ID Identity Protection 中的「入侵」。
  3. 封鎖攻擊者的IP位址。 在執行此動作時請小心,因為攻擊者可以使用合法的 VPN,而且在變更 IP 位址時可能會產生更多風險。 如果您使用雲端驗證,請封鎖 適用於雲端的 Defender Apps 或 Microsoft Entra 識別碼中的 IP 位址。 如果同盟,您必須封鎖ADFS服務前方防火牆層級的IP位址。
  4. 如果正在使用舊版驗證,請封鎖舊版驗證 (不過,此動作可能會影響業務)。
  5. 如果尚未完成,請啟用 MFA
  6. 為用戶風險和登入風險啟用 Identity Protection
  7. 檢查遭入侵的數據(電子郵件、SharePoint、OneDrive、應用程式)。 請參閱如何在 適用於雲端的 Defender Apps 中使用活動篩選。
  8. 維護密碼衛生。 如需詳細資訊,請參閱 Microsoft Entra 密碼保護
  9. 您也可以參考 ADFS 說明

復原

密碼保護

啟用自定義禁用密碼清單,在 Microsoft Entra 識別碼和內部部署上實作密碼保護。 此設定可防止使用者設定與貴組織相關聯的弱式密碼或密碼:

pwdprotection

啟用密碼保護

如需詳細資訊,請參閱 如何防禦密碼噴灑攻擊

標記IP位址

標記 適用於雲端的 Defender Apps 中的 IP 位址,以接收與未來使用相關的警示:

Example of tagging an IP address

標記IP位址

在 適用於雲端的 Defender Apps 中,IP 範圍的「標記」IP 位址,並為此 IP 範圍設定警示,以供日後參考和加速回應。

Example of setting up an IP address alert

設定特定IP位址的警示

設定警示

視組織需求而定,您可以設定警示。

在您的 SIEM 工具 中設定警示,並查看改善記錄差距。 整合 ADFS、Microsoft Entra ID、Office 365 和 適用於雲端的 Defender Apps 記錄。

在ADFS健康情況 連線和具風險IP入口網站中設定閾值和警示。

Example of configuring threshold settings

設定臨界值設定

Example of configuring notifications

設定通知

請參閱如何在 Identity Protection 入口網站中設定警示。

使用條件式存取或 Identity Protection 設定登入風險原則

  • 教育終端使用者、重要項目關係人、前線作業、技術小組、網路安全與通訊小組
  • 檢閱安全性控制,並進行必要的變更,以改善或強化組織內的安全性控制
  • 建議 Microsoft Entra 設定評估
  • 執行一般 攻擊模擬器 練習

參考資料

必要條件

風險降低

復原

其他事件回應劇本

檢查識別和調查這些額外攻擊類型的指引:

事件回應資源