Toolkit PowerShell di emergenza: tenant Microsoft 365 compromesso (10 script)
Dieci script per le prime ore di una compromissione: contenimento reversibile con blocco degli account e revoca delle sessioni, raccolta dei log di Entra ID e di Exchange prima che scadano, e un report HTML che distingue una fonte non raccolta da un risultato pari a zero.
Formato
PS1
Dimensione
35.9 KB
Tipo
Starter kit
Aggiornato
28 ago 2026
Licenza: Uso libero, anche commerciale. Otto script di sola lettura; due eseguono operazioni di scrittura e sono in simulazione per default. Forniti "as is" senza garanzia: testare in un ambiente di prova.
01 — Contenuto
Cosa contiene
Toolkit in 10 script PowerShell per le prime ore di una compromissione di un tenant Microsoft 365. Otto sono di sola lettura. Due scrivono, e sono in simulazione per default: senza `-Esegui` non toccano nulla.
Il contenimento è reversibile per costruzione. Lo script 02 fotografa lo stato di abilitazione di ogni account *prima* del blocco, e lo script 03 si rifiuta di partire senza quella fotografia. È la differenza che conta al momento del rientro: un «riabilita tutti» rimetterebbe in servizio anche gli ex dipendenti e le utenze chiuse apposta, aprendo un secondo problema di sicurezza mentre si chiude il primo.
Tre protezioni non aggirabili sullo script che blocca: l'account che sta eseguendo non viene mai toccato, i Global Administrator sono esclusi salvo richiesta esplicita, e le utenze di emergenza si passano da parametro. Il blocco revoca anche le sessioni: disabilitare l'account non invalida i token di aggiornamento già emessi, e senza la revoca l'attaccante continua a leggere la posta per ore su un account che nel portale risulta bloccato.
La raccolta delle prove tiene conto dei limiti veri delle fonti, che sono la ragione per cui una raccolta fatta a mano risulta quasi sempre incompleta:
- I sign-in log di Entra ID richiedono Entra ID P1 o P2: su Business Basic e Standard non esistono via API, e la chiamata fallisce con un errore che somiglia a un problema di permessi. Lo script distingue i due casi e lo dice. Business Premium include P1. La finestra è di 30 giorni.
- `Search-UnifiedAuditLog` senza `-SessionCommand` restituisce 100 record e non dà alcun errore: sembra semplicemente che nel periodo ci siano stati cento eventi. Qui la paginazione è quella documentata — `ReturnLargeSet`, stesso `SessionId`, ripetuta fino a zero record — e se si tocca il tetto dei 50.000 lo script lo dichiara invece di far passare quel numero per un totale. La finestra è di 180 giorni con Audit Standard.
- `Get-MessageTrace` è deprecato dal 1° settembre 2025. Si usa `Get-MessageTraceV2`, che vuole il modulo ExchangeOnlineManagement 3.7.0+, accetta al massimo 10 giorni per interrogazione e non ha paginazione: oltre 5.000 messaggi taglia in silenzio. Lo script spezza la finestra da solo e, quando un blocco tocca il tetto, lo rifà giorno per giorno.
Quello che il blocco non chiude. Disabilitare gli utenti non tocca le regole della posta in arrivo, gli inoltri impostati a livello di cassetta e i consensi applicativi: un consenso OAuth concesso a un'app malevola continua a leggere la posta dopo il blocco, dopo il cambio password e dopo la revoca delle sessioni. Due script li cercano e li elencano per gravità, perché vanno rimossi a mano prima del rientro.
Il report HTML finale non interroga il tenant: legge i CSV già raccolti, quindi gira anche su un'altra macchina o a incidente chiuso. Distingue sempre una fonte assente da una fonte vuota e scrive «n.d.» dove un dato non è stato raccolto — perché «nessun accesso sospetto» quando i sign-in log non sono mai stati scaricati è la conclusione più pericolosa che uno strumento come questo possa produrre. Il report raccoglie indizi: non stabilisce se ci sia stata una compromissione.
Gira su Microsoft 365 Business Premium. Ruoli: sola lettura (Global Reader, Security Reader, View-Only Organization Management) per otto script; User Administrator per i due che scrivono.
Guida completa: toolkit di emergenza per un tenant Microsoft 365 compromesso.
Topic
- Sicurezza
- Incident response
- Microsoft 365
- PowerShell
- Entra ID
- Exchange Online
- Emergenza
- PMI
Articoli correlati
Guide e tutorial che approfondiscono il contesto di questo asset.
- guida
Ransomware, i primi 60 minuti: il playbook operativo per le PMI
Quando scatta un ransomware, i primi 60 minuti decidono i danni. Ecco il playbook minuto-per-minuto per le PMI — isolare, preservare, notificare — più un template di Incident Response Plan da scaricare.
Leggi - guida
NIS2: come notificare un incidente all'ACN (24h, 72h, relazione finale)
Runbook operativo della notifica incidenti NIS2 al CSIRT Italia: pre-notifica 24 ore, notifica 72 ore e relazione finale entro un mese. Cosa conta come incidente significativo, chi notifica e cosa preparare prima.
Leggi - guida
Hardening Microsoft 365: la checklist baseline di sicurezza per le PMI
Quali controlli di sicurezza attivare in un tenant Microsoft 365: identità e MFA, Defender, Intune, Purview e monitoraggio. La baseline operativa per le PMI, con checklist Excel scaricabile.
Leggi
Prodotti SynSphere
Altri download correlati
Asset simili per tipo o audience.
- Starter kit
Script PowerShell: la Tassonomia Cyber dell'ACN, consultabile e ricercabile
Script di sola lettura che scarica dalla fonte ufficiale i 219 valori della Tassonomia Cyber dell'ACN, li rende ricercabili, valida un tag e genera una scheda di classificazione dell'evento.
Scarica - Starter kit
Toolkit PowerShell: pre-flight per la migrazione tenant-to-tenant (10 script)
Dieci script di sola lettura per fotografare un tenant Microsoft 365 prima di una migrazione tenant-to-tenant: ExchangeGuid e ArchiveGuid, deleghe, gruppi, licenze, volume SharePoint e OneDrive, canali Teams condivisi, mail flow e oggetti Entra.
Scarica - Starter kit
Toolkit PowerShell: inventario e governance degli agenti AI in Microsoft 365 (11 script)
Undici script di sola lettura per rispondere con dati veri a «quali agenti AI girano nel nostro tenant, chi li ha autorizzati e cosa possono leggere». Con dentro il limite che nessun fornitore dichiara: la correlazione fra agente e permessi effettivi non è automatizzabile, e va detto prima.
Scarica
Vuoi una versione personalizzata?
Possiamo trasformare questo asset in un workflow strutturato con Microsoft 365, Power Apps, Power Automate, Power BI specifico per la tua PMI. Discovery gratuita, business case quantificato.