
Modulo PowerShell di sola lettura per rilevare UNC2452 e altri artefatti di attori minacciosi in Azure AD, controllare domini federati, service principal, applicazioni e autorizzazioni delle cassette postali per indicatori di compromissione.
Questo repository contiene un modulo PowerShell per rilevare artefatti che possono essere indicatori dell'attività di UNC2452 e di altri attori di minacce. Alcuni indicatori sono indicatori di compromissione ad "alta fedeltà", mentre altri artefatti sono cosiddetti artefatti a "duplice uso". Gli artefatti a duplice uso possono essere correlati all'attività di un attore di minacce, ma anche a funzionalità legittime. Per questi sarà necessaria analisi e verifica. Per una descrizione dettagliata delle tecniche utilizzate da UNC2452, consulta il nostro blog.
Questo strumento è di sola lettura. Non apporta alcuna modifica all'ambiente Microsoft 365.
In sintesi, questo modulo:
Non:
Con il feedback della comunità, lo strumento potrebbe diventare più completo nel rilevamento degli IOC. Si prega di aprire un issue, inviare una PR, o contattare gli autori se si hanno problemi, idee o feedback.
Questo modulo utilizza MS Online PowerShell per cercare e verificare i domini federati in Azure AD. Tutti i domini federati verranno salvati nel file federated domains.csv.
any.sts come URI dell'emittente. Questo indica l'uso dello strumento Azure AD Backdoor. Considera di effettuare un'indagine forense per determinare come sono state apportate le modifiche e identificare altre prove di compromissione.!! Evidence of AAD backdoor found. Consider performing a detailed forensic investigation Domain name: foobar.com Domain federation name: Federation issuer URI: http://any.sts/16B45E3B
:bangbang: Lo script ha identificato un dominio che è stato federato con un URI emittente che è un indicatore di un [Azure AD Backdoor](https://github.com/Gerenios/AADInternals/blob/master/FederatedIdentityTools.ps1). Il backdoor imposta l'URI emittente su hxxp://any.sts per impostazione predefinita. Considerare di svolgere un'indagine forense per determinare come sono state apportate le modifiche e identificare qualsiasi altra evidenza di compromissione.```
!! A token signing certificate has a validity period of more than 365 days.
This may be evidence of a signing certificate not generated by AD FS.
Domain name: foobar.com
Federation issuer uri: http://sts.foobar.com
Signing cert not valid before: 1/1/2020 00:00:00
Signing cert not valid after: 12/31/2025 23:59:59
⚠️ Lo script ha identificato un dominio federato con un certificato di firma token valido per più dei 365 giorni standard. Consulta i tuoi amministratori per verificare se il certificato di firma token è gestito manualmente e se la durata di validità indicata è prevista. Considera di effettuare un'indagine forense se ciò non è previsto.
Questo modulo utilizza Azure AD PowerShell per cercare e verificare i Service Principals in Azure AD.
!! Identified first-party (Microsoft published) Service Principals with added credentials. Only in rare cases should a first-party Service Principal have an added credential. Verify that the added credential has a legitimate use case and consider further investigation if not
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx App ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Display Name : Office 365 Exchange Online Key Credentials :
CustomKeyIdentifier : EndDate : 12/9/2017 2:10:29 AM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/9/2015 1:40:30 AM Type : AsymmetricX509Cert Usage : Verify Value :
:warning: Lo script ha identificato un Service Principal first-party (Microsoft) con credenziali aggiunte. I Service Principal first-party *non* dovrebbero avere credenziali aggiunte, tranne in rari casi. Gli ambienti che sono o sono stati in precedenza in modalità ibrida potrebbero avere credenziali aggiunte per Exchange Online, Skype for Business e i Service Principal di AAD Password Protection Proxy. Potrebbe anche essere un artefatto dell'attività di UNC2452 nel tuo ambiente. Consulta i tuoi amministratori e cerca nei log di controllo per verificare che la credenziale sia legittima. Puoi anche utilizzare la scheda "Accessi del Service Principal" nel pannello "Accessi" di Azure AD per cercare autenticazioni al tuo tenant che utilizzano questo Service Principal.```
!! Identified Service Principals with high-risk API permissions and added credentials.
Verify that the added credential has a legitimate use case and consider further investigation if not
Object ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
App ID : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Display Name : TestingApp
Key Credentials :
CustomKeyIdentifier :
EndDate : 1/7/2025 12:00:00 AM
KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
StartDate : 1/7/2021 12:00:00 AM
Type : Symmetric
Usage : Verify
Value :
Password Credentials :
Risky Permissions : Domain.ReadWrite.All
⚠️ Lo script ha identificato un'entità servizio con autorizzazioni API ad alto rischio e credenziali aggiunte. Ciò potrebbe essere previsto, poiché alcune applicazioni di terze parti o personalizzate richiedono credenziali aggiunte per funzionare. Potrebbe anche essere un artefatto dell'attività di UNC2452 nel tuo ambiente. Consulta i tuoi amministratori e cerca nei log di controllo per verificare che la credenziale sia legittima. Puoi anche usare la scheda "Accessi dell'entità servizio" nel pannello degli accessi di Azure AD per cercare autenticazioni al tuo tenant che utilizzano questa entità servizio.
Questo modulo usa Azure AD PowerShell per cercare e verificare le applicazioni in Azure AD.
!! High-privileged Application with credentials found. Validate that the application needs these permissions. Validate that the credentials added to the application are associated with a legitimate use case.
ObjectID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx AppID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx DisplayName: Acme Test App KeyCredentials: PasswordCredentials:
CustomKeyIdentifier : EndDate : 12/22/2021 4:01:52 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/22/2020 4:01:52 PM Value :
CustomKeyIdentifier : EndDate : 12/21/2021 6:32:54 PM KeyId : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx StartDate : 12/21/2020 6:33:16 PM Value :
Risky Permissions: Mail.Read (Read mail in all mailboxes) Directory.Read.All (Read all data in the organization directory)
:warning: Lo script ha identificato un'applicazione con autorizzazioni API ad alto rischio e ha aggiunto credenziali. Questo potrebbe essere previsto, poiché alcune applicazioni di terze parti o personalizzate richiedono credenziali aggiuntive per funzionare. Potrebbe anche essere un artefatto dell'attività di UNC2452 nel tuo ambiente. Consulta i tuoi amministratori e cerca nei log di controllo per verificare che la credenziale sia legittima.
### Cloud Solution Provider Program (Invoke-MandiantGetCSPInformation)
Questo modulo verifica se il tenant è gestito da un CSP (Cloud Solution Provider) o partner e se l'amministrazione delegata è abilitata. L'amministrazione delegata consente al CSP di accedere a un tenant cliente con gli stessi privilegi di un amministratore globale. Sebbene il programma CSP imponga forti controlli di sicurezza sul tenant del partner, un attaccante che compromette il CSP potrebbe essere in grado di accedere agli ambienti del cliente. Le organizzazioni dovrebbero verificare se il loro partner ha bisogno dei privilegi di amministratore delegato e rimuoverli in caso contrario. Se il partner deve mantenere l'accesso di amministrazione delegata, prendere in considerazione l'implementazione di criteri di accesso condizionale per limitare il loro accesso.
Le organizzazioni possono controllare e gestire le relazioni con i partner accedendo al [Centro di amministrazione](https://admin.microsoft.com) e navigando su `Impostazioni` -> `Relazioni con i partner` nella barra del menu a sinistra.
### Mailbox Folder Permissions (Get-MandiantMailboxFolderPermissions)
Questo modulo controlla tutte le cassette postali nel tenant per verificare l'esistenza di autorizzazioni sospette sulle cartelle. In particolare, esaminerà le cartelle "Top of Information Store" e "Posta in arrivo" in ogni cassetta postale e controllerà le autorizzazioni assegnate agli utenti "Predefinito" e "Anonimo". Qualsiasi valore diverso da "Nessuno" farà sì che la cassetta postale venga segnalata per l'analisi. In generale, gli utenti Predefinito e Anonimo non dovrebbero avere autorizzazioni sulle cassette postali degli utenti, poiché ciò consentirebbe a qualsiasi utente di leggere i loro contenuti. Alcune organizzazioni potrebbero trovare cassette postali condivise con questa autorizzazione, ma non è una pratica consigliata.
### Application Impersonation (Get-MandiantApplicationImpersonationHolders)
Questo modulo restituisce l'elenco di utenti e gruppi che detengono il ruolo ApplicationImpersonation. Qualsiasi utente o membro di un gruppo nell'output di questo comando può utilizzare l'impersonificazione per "agire come" e accedere alla cassetta postale di qualsiasi altro utente nel tenant. Le organizzazioni dovrebbero controllare l'output di questo comando per assicurarsi che siano inclusi solo gli utenti e i gruppi previsti e, ove possibile, limitare ulteriormente l'ambito.
### Purview Audit (Formerly Advanced Audity) (Invoke-MandiantCheckAuditing)
Questo modulo enumererà tutti gli utenti con licenza nel tenant che dispongono della licenza per Purview Audit Mail Items Accessed. Genererà un report CSV che documenta se la funzionalità è stata abilitata su una cassetta postale idonea. Le organizzazioni dovrebbero filtrare le cassette postali idonee per Mail Items Accessed ma con la funzionalità disabilitata e verificare che ciò sia intenzionale.
### Unified Audit Log (Get-MandiantUnc2452AuditLogs)
Questo modulo è uno script di supporto per cercare nel registro di controllo unificato. La ricerca nel registro di controllo unificato presenta molti avvertimenti tecnici che possono essere facili da trascurare. Questo modulo può aiutare a semplificare il processo di ricerca implementando le migliori pratiche per gestire questi avvertimenti e gestire alcuni errori comuni.
Per impostazione predefinita, il modulo cercherà voci di registro che possono registrare tecniche UNC2452. I record del registro potrebbero anche catturare attività legittime degli amministratori e dovranno essere verificati.
* **Update Application** - Registra le azioni intraprese per aggiornare le registrazioni delle app.
* **Set Domain Auth** - Registra quando vengono modificate le impostazioni di autenticazione per un dominio, inclusa la creazione di oggetti realm di federazione. Questi eventi dovrebbero verificarsi raramente in un ambiente e potrebbero indicare un attaccante che configura un backdoor di AAD.
* **Set Federation Settings** - Registra quando l'oggetto realm di federazione per un dominio viene modificato. Questi eventi dovrebbero verificarsi raramente in un ambiente e potrebbero indicare un attaccante che si prepara a eseguire un attacco Golden SAML.
* **Update Application Certificates and Secrets** - Registra quando un segreto o un certificato viene aggiunto a una registrazione dell'app.
* **PowerShell Mailbox Logins** - Registra le operazioni di accesso alla cassetta postale in cui l'applicazione client era PowerShell.
* **Update Service Principal** - Registra quando vengono effettuati aggiornamenti a un'entità servizio esistente.
* **Add Service Principal Credentials** - Registra quando un segreto o un certificato viene aggiunto a un'entità servizio.
* **Add App Role Assignment** - Registra quando viene aggiunto un ruolo dell'app (autorizzazione dell'applicazione).
* **App Role Assignment for User** - Registra quando un ruolo dell'app viene assegnato a un utente.
* **PowerShell Authentication** - Registra quando un utente si autentica in Azure AD utilizzando un client PowerShell.
* **New Management Role Assignments** - Registra quando vengono create nuove assegnazioni di ruoli di gestione. Questo può essere utile per identificare nuove concessioni di ApplicationImpersonation.
## Usage
### Required Modules
Il modulo PowerShell richiede l'installazione di tre moduli PowerShell di Microsoft 365.
* AzureAD
* MSOnline
* ExchangeOnlineManagement
* Microsoft.Graph
Per installare i moduli:
1. Aprire una finestra di PowerShell come amministratore locale (fare clic con il pulsante destro del mouse e selezionare Esegui come amministratore)
2. Eseguire il comando `Install-Module <NOME MODULO QUI>` e seguire le istruzioni
### Required User Permissions
Il modulo PowerShell deve essere eseguito con un account Microsoft 365 a cui sono assegnati privilegi specifici.
* Ruolo di `Global Administrator` o `Global Reader` nel portale di Azure AD
* `View-Only Audit Logs` nel pannello di controllo di Exchange
* Ambiti `User.Read.All` e `Directory.Read.All`. I titolari del ruolo `Global Reader` dovrebbero avere la possibilità di utilizzare automaticamente questi ambiti.
Per concedere a un account `View-Only Audit Logs` nel pannello di controllo di Exchange:
1. Navigare a https://outlook.office365.com/ecp e accedere come amministratore globale o amministratore di Exchange (l'URL esatto potrebbe differire se ci si trova in un cloud alternativo)
2. Fare clic su `admin roles` nel dashboard, oppure espandere la scheda `roles` a sinistra e fare clic su `admin roles` se si è nella nuova interfaccia utente
3. Creare un nuovo ruolo amministratore facendo clic sul segno `+` oppure facendo clic su `add new role group`
4. Assegnare al ruolo un nome e un ambito di scrittura predefinito
5. Aggiungere l'autorizzazione `View-Only Audit Logs` al ruolo
6. Aggiungere l'utente al ruolo
**Nota** possono essere necessarie fino a un'ora affinché questo ruolo venga applicato
### Running the tool
1. Scaricare questo strumento come ZIP e decomprimerlo, o clonare il repository sul sistema
2. Aprire una finestra di PowerShell
3. Cambiare directory nella posizione di questo modulo `cd C:\percorso\del\modulo`
4. Importare questo modulo `Import-Module .\MandiantAzureADInvestigator.psd1` si dovrebbe ricevere questo output```
Mandiant Azure AD Investigator
Focusing on UNC2452 Investigations
PS C:\Users\admin\Desktop\mandiant>
Connect-MandiantAzureEnvironment -UserPrincipalName <your username here>. Dovresti ricevere un prompt di login e un output nella finestra di PowerShell che indica che le connessioni sono state stabilite. Nota: Se incontri problemi potresti dover modificare la tua policy di esecuzione eseguendo Set-ExecutionPolicy -ExecutionPolicy RemoteSigned. Ciò potrebbe richiedere privilegi di amministratore.```The module allows access to all existing remote PowerShell (V1) cmdlets in addition to the 9 new, faster, and more reliable cmdlets.
|--------------------------------------------------------------------------| | Old Cmdlets | New/Reliable/Faster Cmdlets | |--------------------------------------------------------------------------| | Get-CASMailbox | Get-EXOCASMailbox | | Get-Mailbox | Get-EXOMailbox | | Get-MailboxFolderPermission | Get-EXOMailboxFolderPermission | | Get-MailboxFolderStatistics | Get-EXOMailboxFolderStatistics | | Get-MailboxPermission | Get-EXOMailboxPermission | | Get-MailboxStatistics | Get-EXOMailboxStatistics | | Get-MobileDeviceStatistics | Get-EXOMobileDeviceStatistics | | Get-Recipient | Get-EXORecipient | | Get-RecipientPermission | Get-EXORecipientPermission | |--------------------------------------------------------------------------|
To get additional information, run: Get-Help Connect-ExchangeOnline or check https://aka.ms/exops-docs
Account Environment TenantId TenantDomain
[email protected] AzureCloud xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx test.onm...
5. Esegui tutti i controlli `Invoke-MandiantAllChecks -OutputPath <path\to\output\files>`. Puoi anche eseguire controlli individuali usando il cmdlet specifico.
6. Rivedi l'output sullo schermo e i file CSV scritti.
## Ulteriori Letture
Per ulteriori informazioni da Mandiant riguardo UNC2452, consultare:
* [Attaccante Altamente Elusivo Sfrutta la Catena di Fornitura di SolarWinds per Compromettere Numerose Vittime Globali con Backdoor SUNBURST](https://www.mandiant.com/resources/evasive-attacker-leverages-solarwinds-supply-chain-compromises-with-sunburst-backdoor)
* [Strategie di Hardening e Remediation per Microsoft 365 per Difendersi da UNC2452](https://www.mandiant.com/resources/remediation-and-hardening-strategies-for-microsoft-365-to-defend-against-unc2452)
La risposta a UNC2452 è stato uno sforzo significativo in tutta l'industria della sicurezza e questi blog citano ampiamente contributi aggiuntivi che saranno di valore per gli utenti di questo strumento. Raccomandiamo di leggere il materiale collegato da questi post per comprendere al meglio l'attività nel vostro ambiente. Come sempre, il team Mandiant è disponibile per rispondere a domande di follow-up o per ulteriore assistenza su un'indagine [contattandoci qui.](https://www.mandiant.com/report-incident)