Configurare la correzione automatica per il rilevamento di malware

Defender per Archiviazione supporta diversi modi per gestire file dannosi. Selezionare l'opzione di correzione adatta allo scenario:

  • Funzionalità di correzione predefinite
  • Flussi di lavoro automatizzati per spostare o rimuovere file dannosi
  • Flussi di lavoro automatizzati per spostare o inserire file puliti in un'altra destinazione

Usando l'analisi malware, è possibile creare la correzione automatizzata usando queste opzioni di risultato dell'analisi:

  • Defender per il cloud avvisi di sicurezza
  • eventi di Event Grid
  • Tag indice BLOB

Tip

Per esplorare l'analisi di malware in Defender per archiviazione, provare l'esercitazione pratica. Il modulo di training Ninja fornisce istruzioni dettagliate su:

  • Configurare l'analisi malware
  • Testare la funzionalità dall'inizio alla fine
  • Configurare le risposte di correzione

Questo lab fa parte della serie di training di Microsoft Defender per il cloud e offre un'esperienza pratica con le funzionalità di sicurezza.

Opzioni di correzione per il rilevamento di malware

Rimozione automatica di malware integrata per BLOB dannosi

Defender per Storage Malware Protection offre una funzionalità predefinita che semplifica e automatizza il processo di correzione per i BLOB dannosi, riducendo così il rischio di distribuzione di malware. Quando Defender per l'archiviazione rileva un BLOB dannoso durante l'analisi di malware al caricamento o su richiesta, avvia automaticamente un'eliminazione temporanea per mettere in quarantena il BLOB in modo sicuro e mantenerlo recuperabile per ulteriori analisi.

Se non è stata abilitata l'eliminazione temporanea per i BLOB nell'account di archiviazione, Defender per Archiviazione lo abilita quando si attiva la funzionalità di eliminazione temporanea di BLOB dannosi. La funzione di eliminazione soft dei blob dannosi riduce i passaggi di configurazione e migliora immediatamente la risposta di sicurezza.

Screenshot della pagina delle impostazioni avanzate di Microsoft Defender per Archiviazione.

Casi d'uso

  • Correggere automaticamente la distribuzione di malware in base a:

    • Eliminazione temporanea del BLOB per impedirne l'accesso
    • Conservazione del BLOB per l'analisi e il ripristino
    • Rimozione della necessità di automazione esterna o passaggi manuali
  • Consentire agli amministratori della sicurezza o agli analisti SOC di mantenere l'archiviazione pulita con un lavoro manuale minimo

  • Consentire alle organizzazioni di correggere rapidamente le minacce senza flussi di lavoro complessi

Note sulla funzionalità

  • L'eliminazione temporanea di BLOB dannosi funziona solo per i BLOB dannosi. È disattivato per impostazione predefinita.

  • È possibile attivare l'eliminazione temporanea di BLOB dannosi a livello di sottoscrizione o di account di archiviazione.

  • Quando si effettua un'eliminazione soft di un blob, rimane nello stesso contenitore blob. È possibile ripristinare il BLOB entro il periodo di conservazione. Per altre informazioni, consultare Eliminazione temporanea di BLOB.

  • Se si attiva il controllo delle versioni dei BLOB nell'account di archiviazione, vedere Gestire e ripristinare l'eliminazione temporanea per i BLOB per informazioni su come ripristinare un BLOB eliminato temporaneamente.

  • I blob rilevati come dannosi e eliminati temporaneamente verranno sempre contrassegnati con tag di indice. Se è stato scelto di non archiviare i risultati dell'analisi nei tag indice, quando si ripristina il BLOB eliminato temporaneamente tali tag vengono rimossi.

  • Il periodo di conservazione per impostazione predefinita è sette giorni se si attiva la funzionalità di eliminazione temporanea di BLOB dannosi, ma è possibile modificarlo (intervallo: 1-365 giorni). È possibile modificare il periodo di conservazione predefinito nelle impostazioni dell'account di archiviazione.

  • Se si disattiva l'impostazione della proprietà di soft delete nell'account di archiviazione dopo l'attivazione, i blob dannosi non vengono eliminati. In questo caso, Defender per l'archiviazione non riattiva l'eliminazione temporanea e genera un avviso.

  • L'eliminazione può avere esito negativo a causa di errori di configurazione o di autorizzazioni mancanti. L'avviso mostra il motivo dell'errore.

  • L'archiviazione del BLOB eliminato temporaneamente durante il periodo di conservazione ha lo stesso costo dei dati attivi. Per altre informazioni, consultare Eliminazione temporanea di BLOB.

  • Se si ripristina un BLOB, Azure lo conta come transazione di scrittura. Per ulteriori informazioni, consultare Mappare ciascuna operazione REST a un prezzo.

Configurazione di correzioni personalizzate per i BLOB dannosi

Puoi automatizzare la bonifica bloccando l'accesso a file non scansionati o dannosi, eliminando o spostando blob dannosi, o instradando file puliti in base ai risultati della scansione:

Bloccare l'accesso a file non analizzati o a file dannosi usando il controllo degli accessi in base agli attributi

Usando l'accesso basato su attributi (ABAC - Attribute-Based Access Control) di Microsoft Entra, è possibile bloccare l'accesso a file dannosi e non sottoposti a scansione. È possibile impostare l'accesso condizionale ai BLOB in base ai risultati dell'analisi e consentire alle applicazioni e agli utenti di accedere solo ai file analizzati puliti.

Per configurare l'autorizzazione ABAC per l'accesso ai blob basandosi sui risultati della scansione, segui le istruzioni nella guida di configurazione ABAC per il controllo di accesso ai blob basato sulla scansione (video).

Eliminare o spostare un BLOB dannoso

Usare l'automazione del codice o del flusso di lavoro per eliminare o spostare file dannosi in quarantena.

Preparare l'ambiente per l'eliminazione o lo spostamento

  • Eliminare il file dannoso : prima di configurare l'eliminazione automatica, abilitare l'eliminazione temporanea nell'account di archiviazione. Consente di annullare l'eliminazione dei file se sono presenti falsi positivi o nei casi in cui i professionisti della sicurezza vogliono analizzare i file dannosi.

  • Spostare il file dannoso in quarantena : spostare i file in un contenitore di archiviazione dedicato o in un account di archiviazione considerato come "quarantena". È possibile che solo determinati utenti, ad esempio un amministratore della sicurezza o un analista SOC, dispongano dell'autorizzazione per accedere a questo contenitore o account di archiviazione dedicato.

Configurare l'automazione

Opzione 1: App per la logica basata sugli avvisi di sicurezza di Microsoft Defender per il cloud

Le risposte basate su Logic App sono un approccio semplice e senza codice per configurare risposte automatizzate di bonifica. Tuttavia, il tempo di risposta è più lento rispetto a una Function App basata su eventi basati su eventi Event Grid.

  1. Distribuire il modello DeleteBlobLogicApp Azure Resource Manager (ARM) usando il portale di Azure.

  2. Selezionare l'App per la logica distribuita.

  3. Per consentire all'App per la logica di eliminare i BLOB dall'account di archiviazione, aggiungere un'assegnazione di ruolo:

    1. Passare a Identità nel menu laterale e selezionare Assegnazioni di ruolo di Azure.

      Screenshot che mostra come configurare un'assegnazione di ruolo per l'automazione del flusso di lavoro per rispondere ai risultati dell'analisi.

    2. Aggiungere un'assegnazione di ruolo a livello di sottoscrizione con il ruolo Collaboratore ai dati del BLOB di archiviazione.

    3. Creare l'automazione del flusso di lavoro per gli avvisi di Microsoft Defender per il cloud:

      1. Nel portale di Azure passare a Microsoft Defender per il cloud.
      2. Passare a Automazione del flusso di lavoro nel menu laterale.
      3. Aggiungere un nuovo flusso di lavoro: nel campo Il nome dell'avviso contiene immettere File dannoso caricato nell'account di archiviazione e scegliere l'app per la logica nella sezione Azioni.
      4. Fare clic su Crea.

      Screenshot che mostra come configurare l'automazione del flusso di lavoro per rispondere ai risultati dell'analisi.

Opzione 2: App per le funzioni basata sugli eventi di Griglia di eventi

Un'app per le funzioni offre prestazioni elevate con un tempo di risposta a bassa latenza.

Passaggio 1: Creare un argomento personalizzato di Griglia di eventi

Prima di connettere una Function App, configura un argomento personalizzato di Event Grid per ricevere i risultati della scansione.

  1. Nel portale di Azure cercare Argomenti di Griglia di eventi e selezionare Crea.
  2. Imposta l'area geografica sulla stessa area geografica del tuo account di archiviazione. Il recapito tra aree geografiche non è supportato per gli eventi di analisi del malware.
  3. Selezionare Schema griglia di eventi come tipo di schema.
  4. In Rete consentire l'accesso da indirizzi IP pubblici. I topic con solo endpoint privato non possono ricevere eventi da Defender for Storage.
  5. Dopo aver creato il topic, copia il Topic Endpoint e la chiave di accesso: ti servono per configurare Defender for Storage.

Per configurare Defender for Storage per inviare i risultati della scansione all'argomento personalizzato della Griglia Eventi che hai creato, consulta Configura Griglia Eventi per la scansione malware.

Passaggio 2: Creare e configurare l'app per le funzioni
  1. Creare un'app per le funzioni nello stesso gruppo di risorse dell'account di archiviazione protetto.

  2. Aggiungere un'assegnazione di ruolo all'identità della Function App.

    1. Passare a Identità nel menu laterale, assicurarsi che lo stato dell'identità Assegnato dal sistema sia Attivato e selezionare Assegnazioni di ruolo di Azure.
    2. Aggiungere un'assegnazione di ruolo a livello di sottoscrizione o di account di archiviazione con il ruolo Collaboratore ai dati del BLOB di archiviazione.
  3. Nell'argomento Event Grid, seleziona + Sottoscrizione di eventi, imposta il tipo di endpoint su Funzione di Azure e seleziona la tua app per le funzioni come endpoint.

Passaggio 3: Scegliere un modello di app per le funzioni

Selezionare il modello che corrisponde all'obiettivo di correzione:

Obiettivo Template
Spostare i blob dannosi in quarantena MoveMaliciousBlobEventTrigger
Eliminazione automatica dei blob maligni Usa il modello di spostamento come base; sostituisci la logica di copia+eliminazione con una chiamata diretta a Delete Blob dopo aver controllato scanResultType == "Malicious". Attivare prima l'eliminazione temporanea così da consentire il ripristino in caso di falsi positivi.
Inviare un avviso o una notifica Aggiungere una chiamata HTTP al proprio endpoint di avviso, ad esempio webhook di Teams, PagerDuty o ServiceNow, quando scanResultType == "Malicious". Per dettagli, vedere il binding di output HTTP di Funzioni di Azure.

In alternativa, usa le operazioni di copia del blob di Archiviazione di Azure per copiare il blob altrove, poi elimina il blob dalla sorgente.

Per ogni risultato dell'analisi, viene inviato un evento in base allo schema seguente.

Struttura dei messaggi di evento

Il messaggio di evento è un oggetto JSON che contiene coppie chiave-valore che forniscono informazioni dettagliate su un risultato di analisi malware. Ecco una suddivisione di ogni chiave nel messaggio dell'evento:

  • id: identificatore univoco per l'evento.

  • subject: stringa che descrive il percorso della risorsa del BLOB analizzato (file) nell'account di archiviazione.

  • data: oggetto JSON che contiene informazioni aggiuntive sull'evento:

    • correlationId: identificatore univoco che è possibile usare per correlare più eventi correlati alla stessa analisi.

    • blobUri: URI del BLOB analizzato (file) nell'account di archiviazione.

    • eTag: l'ETag del BLOB analizzato (file).

      • scanFinishedTimeUtc: timestamp UTC al termine dell'analisi.

      • scanResultType: risultato dell'analisi, ad esempio Dannoso o Nessuna minaccia trovata.

      • scanResultDetails: oggetto JSON contenente dettagli sul risultato dell'analisi:

        1. malwareNamesFound: matrice di nomi malware trovati nel file analizzato.

        2. sha256: hash SHA-256 del file analizzato.

  • eventType: stringa che indica il tipo di evento, in questo caso Microsoft.Security.MalwareScanningResult.

  • dataVersion: numero di versione dello schema dei dati.

  • metadataVersion: numero di versione dello schema dei metadati.

  • eventTime: timestamp UTC in cui è stato generato l'evento.

  • topic: percorso della risorsa dell'argomento Griglia di eventi a cui appartiene l'evento.

Ecco un esempio di messaggio di evento:

{
  "id": "aaaa0000-bb11-2222-33cc-444444dddddd",
  "subject": "storageAccounts/<storage_account_name>/containers/app-logs-storage/blobs/EICAR - simulating malware.txt",
  "data": {
    "correlationId": "aaaa0000-bb11-2222-33cc-444444dddddd",
    "blobUri": "https://<storage_account_name>.blob.core.windows.net/app-logs-storage/EICAR - simulating malware.txt",
    "eTag": "0x000000000000000",
    "scanFinishedTimeUtc": "2023-05-04T11:31:54.0481279Z",
    "scanResultType": "Malicious",
    "scanResultDetails": {
      "malwareNamesFound": [
        "DOS/EICAR_Test_File"
      ],
      "sha256": "AA11BB22CC33DD44EE55FF66AA77BB88CC99DD00"
    }
  },
  "eventType": "Microsoft.Security.MalwareScanningResult",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-05-04T11:31:54.048375Z",
  "topic": "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.EventGrid/topics/<event_grid_topic_name>"
}

Comprendendo la struttura del messaggio di evento, è possibile estrarre informazioni pertinenti sul risultato dell'analisi malware ed elaborarlo di conseguenza.

Payload di esempio per i test

Utilizza questi payload di esempio per testare la logica del gestore di eventi prima di collegarti ai risultati di scansione in tempo reale.

Nessuna minaccia trovata:

{
  "id": "bbbb1111-cc22-3333-44dd-555555eeeeee",
  "subject": "storageAccounts/<storage_account_name>/containers/uploads/blobs/clean-document.pdf",
  "data": {
    "correlationId": "bbbb1111-cc22-3333-44dd-555555eeeeee",
    "blobUri": "https://<storage_account_name>.blob.core.windows.net/uploads/clean-document.pdf",
    "eTag": "0x111111111111111",
    "scanFinishedTimeUtc": "2023-05-04T11:32:00.0000000Z",
    "scanResultType": "No threats found",
    "scanResultDetails": {
      "malwareNamesFound": [],
      "sha256": "BB22CC33DD44EE55FF66AA77BB88CC99DD00EE11"
    }
  },
  "eventType": "Microsoft.Security.MalwareScanningResult",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-05-04T11:32:00.0000000Z",
  "topic": "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.EventGrid/topics/<event_grid_topic_name>"
}

Non sottoposto a scansione (blob troppo grande):

{
  "id": "cccc2222-dd33-4444-55ee-666666ffffff",
  "subject": "storageAccounts/<storage_account_name>/containers/uploads/blobs/large-archive.zip",
  "data": {
    "correlationId": "cccc2222-dd33-4444-55ee-666666ffffff",
    "blobUri": "https://<storage_account_name>.blob.core.windows.net/uploads/large-archive.zip",
    "eTag": "0x222222222222222",
    "scanFinishedTimeUtc": "2023-05-04T11:32:10.0000000Z",
    "scanResultType": "Not Scanned",
    "scanResultDetails": {
      "notScannedReason": "SAM259206: Not scanned - blob exceeded the maximum allowed size of 50 GB."
    }
  },
  "eventType": "Microsoft.Security.MalwareScanningResult",
  "dataVersion": "1.0",
  "metadataVersion": "1",
  "eventTime": "2023-05-04T11:32:10.0000000Z",
  "topic": "/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/Microsoft.EventGrid/topics/<event_grid_topic_name>"
}
Lettura dei codici di errore SAM dai messaggi di Griglia di eventi

Quando Griglia di eventi non riesce a analizzare un BLOB, usa il tipo di risultato Non analizzato e include un codice di errore SAM nel notScannedReason campo.

Se scanResultType è impostato su Not Scanned, il codice di errore SAM viene visualizzato come parte del data.scanResultDetails.notScannedReason valore . Il codice di errore è il prefisso prima dei due punti (:).

Per esempio:

"scanResultType": "Not Scanned",
"scanResultDetails": {
  "notScannedReason": "SAM259206: Not scanned - blob exceeded the maximum allowed size of 50 GB."
}

Rendere le applicazioni e i flussi di dati consapevoli dei risultati dell'analisi malware

L'analisi malware viene eseguita quasi in tempo reale e in genere è presente un breve intervallo di tempo tra il caricamento di un file e la scansione. Poiché l'archiviazione non è elaborazione, i file dannosi non possono essere eseguiti nel sistema di archiviazione. Il rischio è che gli utenti o le applicazioni usino file dannosi e li distribuisca in tutta l'organizzazione.

È possibile rendere le applicazioni e i flussi di dati consapevoli dei risultati dell'analisi malware. Questi metodi assicurano che i file non vengano usati o elaborati fino a quando:

  • La scansione è terminata
  • Sono disponibili i risultati dell'analisi
  • Si intraprendono azioni appropriate in base ai risultati

Le applicazioni inseriscono i dati in base al risultato dell'analisi

Usa questi pattern per permettere alle applicazioni a valle di elaborare i blob solo dopo che la scansione del malware da Defender for Storage ha riportato un risultato pulito.

Opzione 1: App che controllano il "Tag indice" prima dell'elaborazione

Aggiornare tutte le applicazioni che usano l'account di archiviazione. Ogni applicazione controlla il risultato dell'analisi per ogni file e se il risultato dell'analisi dei tag indice del BLOB è nessuna minaccia trovata, l'applicazione legge il BLOB.

Opzione 2: Connettere l'applicazione a un webhook negli eventi di Griglia di eventi

Connettere l'applicazione a un webhook negli eventi di Event Grid e usare tali eventi per attivare processi pertinenti per i file con risultati di analisi senza minacce trovate. Altre informazioni sull'uso del recapito di eventi webhook e sulla convalida dell'endpoint.

Usare un account di archiviazione intermedio come rete perimetrale

Configurare un account di archiviazione intermedio per il contenuto non attendibile (DMZ) e indirizzare il traffico di caricamento alla rete perimetrale. Nell'account di archiviazione non attendibile, abilitare la scansione malware e connettere Event Grid e Function App per spostare solo i BLOB analizzati con il risultato nessuna minaccia trovata nell'account di archiviazione di destinazione.

Diagramma che mostra come configurare un account di archiviazione intermedio come rete perimetrale.

Risolvere i problemi di recapito degli eventi

Se gli eventi relativi ai risultati della scansione non arrivano al tuo endpoint, utilizza le verifiche seguenti per identificare e risolvere il problema.

Gli eventi non vengono recapitati all'app per le funzioni o al webhook

Sintomo Possibile causa Resolution
Nessun evento ricevuto dopo il caricamento di un file Argomento di Griglia di eventi non configurato nell'account di archiviazione Verificare che l'argomento personalizzato di Griglia di eventi sia impostato nelle impostazioni di Microsoft Defender per il cloud dell'account di archiviazione. Vedere Configurare Griglia di eventi per l'analisi di malware.
Nessun evento ricevuto dopo il caricamento di un file Sottoscrizione di eventi non creata Verifica che nel topic personalizzato esista una sottoscrizione di eventi che abbia come endpoint la tua Function App o il webhook.
Gli eventi vengono recapitati ma la Function App non si attiva Convalida dell'endpoint per la sottoscrizione di eventi in sospeso Griglia di eventi invia un evento di convalida quando si crea una sottoscrizione. Se l'endpoint non risponde con il codice di convalida, il recapito viene sospeso. Consulta Distribuzione degli eventi webhook.
Gli eventi smettono di essere consegnati Endpoint che restituisce errori HTTP 4xx o 5xx Griglia di eventi ritenta la consegna con backoff esponenziale per un massimo di 24 ore. Controllare i log dell'app per le funzioni in Application Insights o nella scheda Monitoraggio per informazioni dettagliate sull'errore.

Errori di autorizzazione

  • Event Grid non può pubblicare nel topic personalizzato: verificare che il service principal di Microsoft Defender for Storage disponga del ruolo EventGrid Data Sender nel topic di Event Grid oppure che il topic consenta la pubblicazione anonima. Defender per l'archiviazione usa la propria identità di servizio per pubblicare gli eventi.
  • La Function App non può eliminare o spostare i blob: confermare che l'identità gestita assegnata dal sistema della Function App abbia il ruolo Storage Blob Data Contributor nell'account di archiviazione di origine (e nell'account di destinazione, se si usa la quarantena). Verificare la presenza di assegnazioni di negazione che potrebbero bloccare l'identità.

Problemi di rete e firewall

  • Argomento di Griglia di eventi dietro un endpoint privato: Defender for Storage non può recapitare eventi agli argomenti di Griglia di eventi che accettano solo connessioni tramite endpoint privato. L'argomento personalizzato deve consentire l'accesso da indirizzi IP pubblici.
  • Function App in una rete virtuale: se la Function App è in esecuzione in una rete virtuale con restrizioni del traffico in uscita, assicurarsi che la Function App possa raggiungere l'account di archiviazione e qualsiasi altro servizio che deve contattare (ad esempio un endpoint di notifica).

Convalida della sottoscrizione

Quando si crea o si aggiorna una sottoscrizione di eventi che usa un endpoint webhook, Griglia di eventi invia un evento di convalida della sottoscrizione. L'endpoint deve restituire il validationCode presente nel corpo della richiesta. Motivi comuni per cui la convalida ha esito negativo:

  • L'endpoint non è ancora stato distribuito o non è in ascolto al momento della creazione della sottoscrizione.
  • L'endpoint restituisce un codice di stato HTTP diverso da 200.
  • L'endpoint non restituisce il valore validationCode nel corpo della risposta.

Per riattivare la convalida, eliminare e ricreare la sottoscrizione di eventi oppure usare l'opzione Revalidate nel portale di Azure.

Verificare il recapito degli eventi nel portale di Azure

  1. Passare all'argomento personalizzato di Griglia di eventi.
  2. Seleziona Metriche e verifica i conteggi di Eventi pubblicati, Eventi corrispondenti e Consegna non riuscita.
  3. Selezionare Sottoscrizioni eventi e controllare lo stato di integrità della sottoscrizione.
  4. Per le consegne non riuscite, selezionare Dead Letter (se configurato) per controllare gli eventi non recapitati.

Passo successivo