共用方式為


與密碼噴射攻擊相關的可疑 IP 位址警示分類

威脅行為者會利用密碼猜測技術來取得使用者帳號的存取權。 在密碼噴射攻擊中,威脅者可能會對多個不同帳號使用幾個最常用的密碼。 攻擊者會利用密碼噴射成功入侵帳號,因為許多用戶仍使用預設且弱密碼。

這本手冊幫助你調查 IP 位址被標記為風險或與密碼噴射攻擊有關,或偵測到可疑且無法解釋的行為,例如使用者從陌生地點登入,或收到意外多重驗證 (多重驗證(MFA)) 提示。 本指南針對安全團隊,例如安全作業中心 (SOC) ,以及負責審查、處理/管理及分類警示的IT管理員。 本指南協助快速將警示分類為 TP) (真陽性或FP () 誤報 ,並在TP情況下採取建議措施以修復攻擊並降低安全風險。

使用本指南的預期結果包括:

  • 你已經辨識出與密碼噴灑 IP 位址相關的警示,是惡意的 (TP) 或 FP) 活動 (誤報。

  • 如果 IP 位址一直在執行密碼噴射攻擊,你已經採取了必要的行動。

調查警報

本節包含逐步指引,協助你回應警示並採取建議行動,保護組織免受進一步攻擊。

1. 審查警報

以下是警示佇列中密碼噴射警示的範例:

Microsoft Defender 365 警示截圖。

這表示根據威脅情報來源,可能與暴力破解或密碼噴射嘗試有關的 IP 位址,存在可疑用戶活動。

2. 調查 IP 位址

  • 看看從 IP 衍生的 活動

    • 大多是登入失敗嗎?

    • 簽到嘗試之間的間隔看起來可疑嗎? 自動密碼噴射攻擊通常會有固定的間隔。

    • 有沒有成功嘗試過使用者或多個用戶用 多重驗證(MFA )登入? 這些嘗試的存在可能表示該知識產權並非惡意。

    • 有使用舊有協定嗎? 使用像 POP3、IMAP 和 SMTP 等協定,可能暗示有人試圖執行密碼噴射攻擊。 在活動日誌中尋找Unknown(BAV2ROPC)使用者代理 (裝置類型) ,表示使用了舊有協定。 你可以參考下方的範例,查看活動日誌。 這項活動必須與其他活動進一步相關聯。

      Microsoft Defender 365 介面的截圖,顯示裝置類型。

      圖 1: 裝置類型欄位顯示Unknown(BAV2ROPC)的是 Microsoft Defender 全面偵測回應的使用者代理。

    • 檢查匿名代理或 Tor 網路的使用情況。 威脅行為者常利用這些替代代理來隱藏資訊,使其難以被追蹤。 然而,並非所有這些代理的使用都與惡意行為相關聯。 你必須調查其他可疑活動,這些行為可能提供更好的攻擊指標。

    • IP 位址是來自虛擬私人網路 (VPN) ? VPN 值得信賴嗎? 檢查 IP 是否來自 VPN,並使用 RiskIQ 等工具檢視背後的組織。

    • 檢查同一子網/ISP 的其他 IP。 有時候密碼噴射攻擊會來自同一子網/ISP 內多個不同的 IP。

  • 租戶的 IP 位址是共用的嗎? 查看活動日誌,看看租戶過去 30 天內是否看到過該 IP 位址。

  • 搜尋租戶中是否有其他可疑活動或來自該 IP 的警示。 需要注意的活動範例包括電子郵件刪除、轉寄規則建立,或成功登入後的檔案下載。

  • 使用像 RiskIQ 這類工具來檢查 IP 位址的風險分數

3. 登入後調查可疑用戶活動

一旦辨識出可疑 IP,你可以查看登入的帳號。 有可能有一群帳號被入侵,並成功用來從該 IP 或其他類似 IP 登入。

過濾所有在警報發生前後的 IP 位址登入嘗試。 登入後再搜尋這些帳號是否有惡意或異常活動。

  • 使用者帳號活動

    確認密碼噴灑前帳戶的活動不具可疑性。 例如,檢查是否有基於共同地點或 ISP 的異常活動,帳號是否使用之前沒用過的使用者代理,是否有其他訪客帳號被建立,帳號登入後是否有其他憑證,等等。

  • 警示

    檢查使用者在密碼噴灑活動前是否收到其他警示。 這些警示表示使用者帳號可能遭到入侵。 例如無法旅行的警示、來自罕見國家/地區的活動,以及可疑的電子郵件刪除活動等。

  • 事件

    檢查警示是否與表示事件的其他警示相關聯。 如果是,請檢查事件是否包含其他確判為真的警示。

進階搜捕查詢

進階狩獵 是一種基於查詢的威脅狩獵工具,讓你能檢查網路中的事件並定位威脅指標。

利用此查詢找出來自惡意 IP 的最高風險分數登入嘗試登入的帳號。 此查詢同時會過濾所有成功登入嘗試與相應的風險分數。

let start_date = now(-7d);
let end_date = now();
let ip_address = ""; // enter here the IP address
AADSignInEventsBeta
| where Timestamp between (start_date .. end_date)
| where IPAddress == ip_address
| where isnotempty(RiskLevelDuringSignIn)
| project Timestamp, IPAddress, AccountObjectId, RiskLevelDuringSignIn, Application, ResourceDisplayName, ErrorCode
| sort by Timestamp asc
| sort by AccountObjectId, RiskLevelDuringSignIn
| partition by AccountObjectId ( top 1 by RiskLevelDuringSignIn ) // remove line to view all successful logins risk scores

利用這個查詢來檢查可疑 IP 是否使用舊有協定來嘗試登入。

let start_date = now(-8h);
let end_date = now();
let ip_address = ""; // enter here the IP address
AADSignInEventsBeta
| where Timestamp between (start_date .. end_date)
| where IPAddress == ip_address
| summarize count() by UserAgent

使用此查詢來檢視過去七天內與可疑 IP 相關的所有警示。

let start_date = now(-7d);
let end_date = now();
let ip_address = ""; // enter here the IP address
let ip_alert_ids = materialize ( 
        AlertEvidence
            | where Timestamp between (start_date .. end_date)
            | where RemoteIP == ip_address
            | project AlertId);
AlertInfo
| where Timestamp between (start_date .. end_date)
| where AlertId in (ip_alert_ids)

使用此查詢以檢視帳戶活動,尋找疑似被入侵帳戶。

let start_date = now(-8h);
let end_date = now();
let ip_address = ""; // enter here the IP address
let compromise_users = 
    materialize ( AADSignInEventsBeta
                    | where Timestamp between (start_date .. end_date)
                    | where IPAddress == ip_address
                    | where ErrorCode == 0
                    | distinct AccountObjectId);
CloudAppEvents
    | where Timestamp between (start_date .. end_date)
    | where AccountObjectId in (compromise_users)
    | summarize ActivityCount = count() by AccountObjectId, ActivityType
    | extend ActivityPack = pack(ActivityType, ActivityCount)
    | summarize AccountActivities = make_bag(ActivityPack) by AccountObjectId

使用此查詢來檢視所有疑似被盜帳號的警示。

let start_date = now(-8h); // change time range
let end_date = now();
let ip_address = ""; // enter here the IP address
let compromise_users = 
    materialize ( AADSignInEventsBeta
                    | where Timestamp between (start_date .. end_date)
                    | where IPAddress == ip_address
                    | where ErrorCode == 0
                    | distinct AccountObjectId);
let ip_alert_ids = materialize ( AlertEvidence
    | where Timestamp between (start_date .. end_date)
    | where AccountObjectId in (compromise_users)
    | project AlertId, AccountObjectId);
AlertInfo
| where Timestamp between (start_date .. end_date)
| where AlertId in (ip_alert_ids)
| join kind=innerunique ip_alert_ids on AlertId
| project Timestamp, AccountObjectId, AlertId, Title, Category, Severity, ServiceSource, DetectionSource, AttackTechniques
| sort by AccountObjectId, Timestamp
  1. 封鎖攻擊者的 IP 位址。
  2. 重設使用者帳號的憑證。
  3. 撤銷被入侵帳號的存取權。
  4. 封鎖舊有認證。
  5. 若可能,要求用戶多重身份驗證(MFA),以提升帳號安全,並透過密碼噴射攻擊讓攻擊者難以入侵帳號。
  6. 如果需要,封鎖被入侵的使用者帳號登入。

另請參閱

提示

想要深入了解? 請到我們的技術社群中與 Microsoft 安全性社群互動: Microsoft Defender 全面偵測回應技術社群