遭入侵和惡意的應用程式調查
本文提供識別和調查客戶租使用者中一或多個應用程式的惡意攻擊的指引。 逐步指示可協助您採取必要的補救動作來保護資訊,並將進一步的風險降到最低。
- 必要條件: 涵蓋開始調查之前,您需要完成的特定需求。 例如,應該開啟的記錄、所需的角色和許可權等等。
- 工作流程: 顯示您應該遵循的邏輯流程,以執行此調查。
- 調查步驟: 包含此特定調查的詳細逐步指引。
- 內含專案步驟: 包含如何停用遭入侵應用程式的步驟。
- 復原步驟: 包含如何從遭入侵應用程式的惡意攻擊中復原/緩解的高階步驟。
- 參考: 包含其他讀取和參考數據。
必要條件
開始調查之前,請確定您有正確的工具和許可權可收集詳細資訊。
若要使用 Identity protection 訊號,租用戶必須獲得Microsoft Entra ID P2 的授權。
至少具有安全性系統管理員角色的帳戶。
能夠使用 Microsoft Graph 總 管,並在某種程度上熟悉 Microsoft Graph API。
熟悉應用程式同意授與調查的概念(部分)。https://aka.ms/IRPlaybooks
請確定您瞭解下列Microsoft Entra 許可權:
熟悉工作負載身分識別風險偵測的概念。
您必須擁有完整的 Microsoft 365 E5 授權,才能使用 適用於雲端的 Microsoft Defender Apps。
熟悉下列應用程式管理原則:
熟悉下列應用程式控管原則:
必要工具
若要進行有效的調查,請在您的調查計算機上安裝下列 PowerShell 模組和工具組:
工作流程
調查步驟
針對此調查,假設您有用戶報告形式的潛在應用程式入侵指示,Microsoft Entra 登入記錄範例或身分識別保護偵測。 請務必完成並啟用所有必要的必要步驟。
此劇本的建立目的是並非所有Microsoft客戶及其調查小組都有完整的 Microsoft 365 E5 或 Microsoft Entra ID P2 授權套件可供使用或設定。 此劇本會在適當時醒目提示其他自動化功能。
決定應用程式類型
請務必在調查階段早期判斷應用程式類型(多租使用者或單一租使用者),以取得與應用程式擁有者連絡所需的正確資訊。 如需詳細資訊,請參閱 Microsoft Entra ID 中的租用戶。
多租用戶應用程式
對於多租使用者應用程式,應用程式是由第三方裝載和管理。 識別連絡應用程式擁有者並回報問題所需的程式。
單一租用戶應用程式
尋找組織內應用程式擁有者的聯繫人詳細數據。 您可以在 [企業應用程式] 區段的 [擁有者] 索引標籤下找到它。 或者,您的組織可能有具有這項信息的資料庫。
您也可以執行此Microsoft Graph 查詢:
GET https://graph.microsoft.com/v1.0/applications/{id}/owners
檢查 Identity Protection - 具風險的工作負載身分識別
此功能在撰寫此劇本時處於預覽狀態,且授權需求適用於其使用方式。 具風險的工作負載身分識別可以是調查服務主體的觸發程式,但也可用來進一步調查您已識別的其他觸發程式。 您可以使用 Identity Protection - 具風險的工作負載身分識別索引標籤來檢查服務主體的風險狀態,也可以使用 Microsoft Graph API。
檢查不尋常的登入行為
調查的第一個步驟是尋找服務主體使用方式中異常驗證模式的證據。 在組織選擇的 Azure 入口網站、Azure 監視器、Microsoft Sentinel 或組織選擇的安全性資訊和事件管理 (SIEM) 系統中,尋找服務主體登入一節中的下列內容:
- 位置 - 服務主體是否從您預期的位置\IP 位址進行驗證?
- 失敗 - 服務主體是否有大量驗證失敗?
- 時間戳 - 您預期有時是否成功進行驗證?
- 頻率 - 服務主體的驗證頻率是否增加?
- 外洩認證 - 是否有任何應用程式認證硬式編碼,並在 GitHub 之類的公用來源上發佈?
如果您已部署Microsoft Entra ID Identity Protection - 具風險的工作負載身分識別,請檢查 可疑的登入和認證外洩偵測。 如需詳細資訊,請參閱 工作負載身分識別風險拘留。
檢查目標資源
在服務主體登入內,也請檢查服務主體在驗證期間存取的資源。 請務必從應用程式擁有者取得輸入,因為它們熟悉服務主體應該存取哪些資源。
檢查異常認證變更
使用稽核記錄來取得應用程式和服務主體認證變更的相關信息。 依應用程式管理篩選類別,以及依更新應用程式的活動 – 憑證和秘密管理。
- 檢查是否有新建立或未預期的認證指派給服務主體。
- 使用 Microsoft Graph API 檢查服務主體上的認證。
- 檢查應用程式和相關聯的服務主體物件。
- 檢查您所建立或修改的任何 自定義角色 。 請注意下列標示的權限:
如果您在 適用於雲端的 Microsoft Defender Apps 中部署應用程式控管,請檢查 Azure 入口網站 是否有與應用程式相關的警示。 如需詳細資訊,請參閱 開始使用應用程式威脅偵測和補救。
如果您已部署 Identity Protection,請檢查「風險偵測」報告,並在使用者或工作負載身分識別中檢查「風險歷程記錄」。
如果您已部署 適用於雲端的 Microsoft Defender 應用程式,請確定已啟用「將認證新增至 OAuth 應用程式」原則,並檢查是否有開啟的警示。
如需詳細資訊,請參閱 將認證新增至 OAuth 應用程式異常。
此外,您可以查詢 servicePrincipalRiskDetections 和使用者 riskDetections API 來擷取這些風險偵測。
搜尋異常應用程式組態變更
- 檢查指派給應用程式的 API 許可權,以確保許可權與應用程式預期的許可權一致。
- 檢查稽核記錄(依更新應用程式或更新服務主體篩選活動)。
- 確認 連接字串 是否一致,以及是否已修改註銷 URL。
- 確認 URL 中的網域是否與已註冊的網域一致。
- 判斷是否有人新增未經授權的重新導向 URL。
- 確認您擁有的重新導向 URI 擁有權,以確保其未過期,且遭到敵人宣告。
此外,如果您已部署 適用於雲端的 Microsoft Defender Apps,請檢查 Azure 入口網站,以取得與您目前正在調查的應用程式相關的警示。 並非所有警示原則預設都會針對 OAuth 應用程式啟用,因此請確定這些原則全都已啟用。 如需詳細資訊,請參閱 OAuth 應用程式原則。 您也可以在 [調查>OAuth 應用程式] 索引標籤下檢視應用程式普及率和最近活動的相關信息。
檢查可疑的應用程式角色
- 您也可以使用稽核記錄。 依將應用程式角色指派新增至服務主體來篩選活動。
- 確認指派的角色是否有高許可權。
- 確認是否需要這些許可權。
檢查未驗證的商業應用程式
- 檢查是否使用商業資源庫(已發佈和已驗證的版本)應用程式。
檢查keyCredential屬性資訊洩漏的指示
檢閱您的租使用者,以取得潛在的keyCredential屬性資訊洩漏,如 CVE-2021-42306 中所述。
若要識別並補救受影響的Microsoft與受影響的自動化執行身分帳戶相關聯的 Entra 應用程式,請流覽至 補救指引 GitHub 存放庫。
重要
如果您發現入侵的證據,請務必採取內含專案和復原區段中醒目提示的步驟。 這些步驟有助於解決風險,但執行進一步調查以瞭解入侵來源,以避免進一步影響,並確保移除不良動作專案。
有兩個主要方法可透過使用應用程式來存取系統。 第一個涉及系統管理員或使用者同意的應用程式,通常是透過網路釣魚攻擊。 此方法是系統初始存取的一部分,通常稱為「同意網路釣魚」。
第二種方法涉及已遭入侵的系統管理員帳戶,以建立新的應用程式,以便持續、數據收集及留在雷達下。 例如,遭入侵的系統管理員可以使用看似無害的名稱來建立OAuth 應用程式,避免偵測並允許長期存取數據,而不需要帳戶。 這種方法經常出現在國家/地區攻擊中。
以下是一些可以進一步調查的步驟。
檢查Microsoft 365 統一稽核記錄 (UAL) 是否有過去 7 天的網路釣魚指示
有時候,當攻擊者使用惡意或遭入侵的應用程式作為持續性或外泄數據的手段時,涉及網路釣魚活動。 根據先前步驟的結果,您應該檢閱下列身分識別:
- 應用程式擁有者
- 同意管理員
檢閱身分識別,以取得過去 24 小時內網路釣魚攻擊的指示。 如有需要,請將此時間範圍增加到 7、14 和 30 天,如果沒有立即指示。 如需詳細的網路釣魚調查劇本,請參閱 網路釣魚調查劇本。
搜尋過去七天的惡意應用程式同意
若要讓應用程式新增至租用戶,攻擊者會詐騙使用者或系統管理員同意應用程式。 若要深入瞭解攻擊的跡象,請參閱 應用程式同意授與調查劇本。
檢查已標幟應用程式的應用程式同意
檢查稽核記錄
若要查看該應用程式的所有同意授與,請依同意應用程式篩選活動。
使用 Microsoft Entra 系統管理中心稽核記錄
使用 Microsoft Graph 查詢稽核記錄
a) 篩選特定時間範圍:
GET https://graph.microsoft.com/v1.0/auditLogs/auditLogs/directoryAudits?&$filter=activityDateTime le 2022-01-24
b) 篩選稽核記錄,以取得「同意應用程式」稽核記錄專案:
https://graph.microsoft.com/v1.0/auditLogs/directoryAudits?directoryAudits?$filter=ActivityType eq 'Consent to application'
"@odata.context": "https://graph.microsoft.com/v1.0/$metadata#auditLogs/directoryAudits",
"value": [
{
"id": "Directory_0da73d01-0b6d-4c6c-a083-afc8c968e655_78XJB_266233526",
"category": "ApplicationManagement",
"correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
"result": "success",
"resultReason": "",
"activityDisplayName": "Consent to application",
"activityDateTime": "2022-03-25T21:21:37.9452149Z",
"loggedByService": "Core Directory",
"operationType": "Assign",
"initiatedBy": {
"app": null,
"user": {
"id": "8b3f927e-4d89-490b-aaa3-e5d4577f1234",
"displayName": null,
"userPrincipalName": "admin@contoso.com",
"ipAddress": "55.154.250.91",
"userType": null,
"homeTenantId": null,
"homeTenantName": null
}
},
"targetResources": [
{
"id": "d23d38a1-02ae-409d-884c-60b03cadc989",
"displayName": "Graph explorer (official site)",
"type": "ServicePrincipal",
"userPrincipalName": null,
"groupType": null,
"modifiedProperties": [
{
"displayName": "ConsentContext.IsAdminConsent",
"oldValue": null,
"newValue": "\"True\""
},
c) 使用 Log Analytics
AuditLogs
| where ActivityDisplayName == "Consent to application"
如需詳細資訊,請參閱 應用程式同意授與調查劇本。
判斷應用程式是否有可疑的終端使用者同意
使用者可以授權應用程式存取受保護資源上的某些資料,同時擔任該使用者。 允許此類型存取的許可權稱為「委派許可權」或 使用者同意。
若要尋找使用者同意的應用程式,請使用 LogAnalytics 來搜尋稽核記錄:
AuditLogs
| where ActivityDisplayName == "Consent to application" and (parse_json(tostring(parse_json(tostring(TargetResources[0].modifiedProperties))[0].newValue)) <> "True")
檢查稽核記錄,以找出授與的許可權是否過於廣泛(全租使用者或管理員同意)
檢閱授與給應用程式或服務主體的許可權可能是一項耗時的工作。 從瞭解Microsoft Entra標識符中的潛在 風險許可權 開始。
現在,請遵循如何在應用程式同意授與調查中列舉和檢閱許可權的指引。
檢查使用者身分識別是否授與許可權,而使用者身分識別不應該執行這項操作,或動作是否在奇怪的日期和時間執行
使用稽核記錄檢閱:
AuditLogs
| where OperationName == "Consent to application"
//| where parse_json(tostring(TargetResources[0].modifiedProperties))[4].displayName == "ConsentAction.Permissions"
您也可以使用 Microsoft Entra 稽核記錄,依 同意應用程式進行篩選。 在 [稽核記錄詳細數據] 區段中,按兩下 [修改的屬性],然後檢閱 ConsentAction.Permissions:
內含專案步驟
將一或多個應用程式或工作負載身分識別識別識別為惡意或遭入侵之後,您可能不想立即復原此應用程式的認證,也不想立即刪除應用程式。
重要
執行下列步驟之前,您的組織必須權衡停用應用程式的安全性影響和業務影響。 如果停用應用程式的商務影響太大,請考慮準備並移至此程序的復原階段。
停用遭入侵的應用程式
典型的內含專案策略牽涉到停用已識別之應用程式的登入,以提供事件回應小組或受影響的業務單位時間,以評估刪除或密鑰滾動的影響。 如果您的調查導致您認為系統管理員帳戶認證也遭到入侵,此類型的活動應該與收回事件協調,以確保存取租使用者的所有路由都會同時關閉。
您也可以使用下列 Microsoft Graph PowerShell 程式代碼來停用應用程式的登入:
# The AppId of the app to be disabled
$appId = "{AppId}"
# Check if a service principal already exists for the app
$servicePrincipal = Get-MgServicePrincipal -Filter "appId eq '$appId'"
if ($servicePrincipal) {
# Service principal exists already, disable it
$ServicePrincipalUpdate =@{
"accountEnabled" = "false"
}
Update-MgServicePrincipal -ServicePrincipalId $servicePrincipal.Id -BodyParameter $ServicePrincipalUpdate
} else {
# Service principal does not yet exist, create it and disable it at the same time
$ServicePrincipalID=@{
"AppId" = $appId
"accountEnabled" = "false"
}
$servicePrincipal = New-MgServicePrincipal -BodyParameter $ServicePrincipalId
}
復原步驟
補救服務主體
列出指派給 Risky Service Principal 的所有認證。 若要這樣做,最好的方法是使用 GET ~/application/{id} 執行Microsoft Graph 呼叫,其中傳遞的標識碼是應用程式對象標識碼。
剖析認證的輸出。 輸出可能包含 passwordCredentials 或 keyCredentials。 記錄所有金鑰標識碼。
"keyCredentials": [], "parentalControlSettings": { "countriesBlockedForMinors": [], "legalAgeGroupRule": "Allow" }, "passwordCredentials": [ { "customKeyIdentifier": null, "displayName": "Test", "endDateTime": "2021-12-16T19:19:36.997Z", "hint": "7~-", "keyId": "aaaaaaaa-0b0b-1c1c-2d2d-333333333333", "secretText": null, "startDateTime": "2021-06-16T18:19:36.997Z" } ],
使用應用程式 addKey API 將新的憑證認證新增至應用程式物件。
POST ~/applications/{id}/addKey
立即移除所有舊的認證。 針對每個舊的密碼認證,請使用:
POST ~/applications/{id}/removePassword
針對每個舊的金鑰認證,請使用:
POST ~/applications/{id}/removeKey
補救與應用程式相關聯的所有服務主體。 如果您的租用戶裝載/註冊多租使用者應用程式,以及/或註冊與應用程式相關聯的多個服務主體,請遵循此步驟。 執行與先前所列項目類似的步驟:
GET ~/servicePrincipals/{id}
在響應中尋找 passwordCredentials 和 keyCredentials,記錄所有舊的 keyId
拿掉所有舊的密碼和金鑰認證。 使用:
POST ~/servicePrincipals/{id}/removePassword and POST ~/servicePrincipals/{id}/removeKey for this, respectively.
補救受影響的服務主體資源
以下列優先順序輪替 KeyVault 秘密來補救服務主體可存取的 KeyVault 秘密:
- 使用 GetSecret 呼叫直接公開的秘密。
- 公開 KeyVaults 中的其餘秘密。
- 公開訂閱的其餘秘密。
如需詳細資訊,請參閱 以互動方式移除和變換服務主體或應用程式的憑證和秘密。
如需應用程式的Microsoft Entra SecOps 指引,請參閱 application Microsoft Entra 安全性作業指南。
依優先順序排序,此案例會是:
- 更新 Graph PowerShell Cmdlet (新增/移除 ApplicationKey + ApplicationPassword) 檔,以包含認證變換的範例。
- 將自定義 Cmdlet 新增至Microsoft可簡化此案例的 Graph PowerShell。
停用或刪除惡意應用程式
應用程式可以停用或刪除。 若要停用應用程式,請在 [啟用讓使用者登入] 下,將切換開關移至 [否]。
您可以在 Azure 入口網站 或透過 Microsoft Graph API 暫時或永久刪除應用程式。 當您虛刪除時,應用程式可以在刪除後最多 30 天復原。
DELETE /applications/{id}
若要永久刪除應用程式,請使用此Microsoft Graph API 呼叫:
DELETE /directory/deletedItems/{id}
如果停用或如果您虛刪除應用程式,請在 Microsoft Entra 稽核記錄中設定監視,以了解狀態是否變更為已啟用或復原。
已開啟的記錄:
- 服務 - 核心目錄
- 活動類型 - 更新服務主體
- 類別 - 應用程式管理
- 由 (動作專案) 起始 - 動作專案的 UPN
- 目標 -應用程式識別碼和顯示名稱
- 已修改的屬性 - 屬性名稱 = 帳戶已啟用,新值 = true
已復原的記錄:
- 服務 - 核心目錄
- 活動類型 - 新增服務主體
- 類別 - 應用程式管理
- 由 (動作專案) 起始 - 動作專案的 UPN
- 目標 -應用程式識別碼和顯示名稱
- 已修改的屬性 - 屬性名稱 = 帳戶已啟用,新值 = true
注意
Microsoft全域停用發現違反其服務條款的應用程式。 在這些情況下,這些應用程式會顯示DisabledDueToViolationOfServicesAgreement
disabledByMicrosoftStatus
在 Microsoft Graph 中相關應用程式和服務主體資源類型的 屬性上。 為防止這些物件未來在組織中再次具現化,您無法刪除這些物件。
針對工作負載身分識別實作 Identity Protection
Microsoft偵測到跨登入行為和離線入侵指標的工作負載身分識別風險。
如需詳細資訊,請參閱 使用 Identity Protection 保護工作負載身分識別。
這些警示會出現在 Identity Protection 入口網站中,並可透過 診斷設定 或 Identity Protection API 導出至 SIEM 工具。
具風險工作負載身分識別的條件式存取
條件式存取可讓您封鎖您指定 Identity Protection 何時將其標示為「有風險」的特定帳戶的存取。 透過條件式存取強制執行目前僅限於單一租用戶應用程式。
如需詳細資訊,請參閱 工作負載身分識別的條件式存取。
實作應用程式風險原則
檢閱使用者同意設定
檢閱 [Microsoft Entra ID>Enterprise 應用程式>同意和許可權>使用者同意設定底下的使用者同意設定。
若要檢閱設定選項,請參閱 設定使用者同意應用程式的方式。
實作管理員同意流程
當應用程式開發人員以意圖授與整個租使用者的同意,將用戶導向管理員同意端點時,即稱為管理員同意流程。 為了確保管理員同意流程正常運作,應用程式開發人員必須在應用程式指令清單的 RequiredResourceAccess 屬性中列出所有許可權。
大部分的組織都會停用其使用者同意應用程式的能力。 若要讓使用者仍要求同意應用程式並具備系統管理檢閱功能,建議您實作系統管理員同意工作流程。 請遵循系統管理員 同意工作流程步驟 ,在您的租使用者中加以設定。
針對高特殊許可權作業,例如系統管理員同意,請在我們的 指引中定義特殊許可權存取策略。
檢閱風險型逐步同意設定
以風險為基礎的逐步同意有助於減少使用者對惡意應用程式的風險。 例如,針對未經過發行者驗證 (部分機器翻譯) 且需要非基本權限的新註冊多租用戶應用程式,其同意要求會被視為具有風險。 如果系統偵測到風險性使用者同意要求,其要求會需要「升級」至系統管理員同意。 這項升級功能預設為啟用,但只有在啟用使用者同意時,才會產生行為變更。
請確定已在您的租用戶中啟用,並檢閱此處所述的組態設定。
參考資料
- 事件回應劇本
- 應用程式同意授與
- Microsoft專案標識碼保護風險
- Microsoft Entra 安全性監視指南
- 應用程式稽核概念
- 設定使用者同意應用程式的方式
- 設定管理員同意工作流程
- 將認證新增至 OAuth 應用程式時異常
- 使用身分識別保護來保護工作負載身分識別
- 來自Microsoft的整體遭入侵身分識別訊號
其他事件回應劇本
檢查識別和調查這些額外攻擊類型的指引:
事件回應資源
- 適用於新角色和經驗豐富的分析師Microsoft安全性產品和服務的概觀
- 規劃 您的安全性作業中心 (SOC)
- Microsoft Defender 全面偵測回應 事件回應
- 適用於雲端的 Microsoft Defender (Azure)
- Microsoft Sentinel 事件回應
- Microsoft事件回應小組指南會分享安全性小組和領導者的最佳做法
- Microsoft事件回應指南可協助安全性小組分析可疑活動