Rilevamento e classificazione dei malware con Amazon Rekognition PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Rilevamento e classificazione del malware con Amazon Rekognition

Secondo un articolo di Cybersecurity Ventures, il danno causato dal Ransomware (un tipo di malware che può impedire agli utenti di accedere ai propri dati a meno che non paghino un riscatto) è aumentato di 57 volte nel 2021 rispetto al 2015. Inoltre, si prevede che costerà alle sue vittime 265 miliardi di dollari ( USD) ogni anno entro il 2031. Al momento in cui scriviamo, il costo finanziario degli attacchi ransomware scende appena sopra i 50th posizione in un elenco di paesi classificati in base al loro PIL.

Data la minaccia rappresentata dal malware, sono state sviluppate diverse tecniche per rilevare e contenere gli attacchi di malware. Le due tecniche più comuni utilizzate oggi sono il rilevamento basato sulla firma e sul comportamento.

Il rilevamento basato sulla firma stabilisce un identificatore univoco su un oggetto dannoso noto in modo che l'oggetto possa essere identificato in futuro. Potrebbe trattarsi di un modello univoco di codice allegato a un file o potrebbe essere l'hash di un codice malware noto. Se durante la scansione di nuovi oggetti viene rilevato un identificatore di modello noto (firma), l'oggetto viene contrassegnato come dannoso. Il rilevamento basato sulla firma è rapido e richiede una potenza di calcolo ridotta. Tuttavia, lotta contro i tipi di malware polimorfici, che cambiano continuamente la loro forma per eludere il rilevamento.

Il rilevamento basato sul comportamento giudica gli oggetti sospetti in base al loro comportamento. Gli artefatti che possono essere presi in considerazione dai prodotti anti-malware sono interazioni di processo, query DNS e connessioni di rete dall'oggetto. Questa tecnica ha prestazioni migliori nel rilevare malware polimorfico rispetto a quella basata su firme, ma presenta alcuni aspetti negativi. Per valutare se un oggetto è dannoso, deve essere eseguito sull'host e generare artefatti sufficienti affinché il prodotto antimalware possa rilevarlo. Questo punto cieco può consentire al malware di infettare l'host e diffondersi attraverso la rete.

Le tecniche esistenti sono tutt'altro che perfette. Di conseguenza, la ricerca continua con l'obiettivo di sviluppare nuove tecniche alternative che miglioreranno le nostre capacità di combattere il malware. Una nuova tecnica emersa negli ultimi anni è il rilevamento del malware basato su immagini. Questa tecnica propone di addestrare una rete di deep learning con binari di malware noti convertiti in immagini in scala di grigi. In questo post, mostriamo come eseguire il rilevamento di malware basato su immagini con Rekognition di Amazon Etichette personalizzate.

Panoramica della soluzione

Per addestrare un modello multi-classificazione e un modello di rilevamento malware, prepariamo prima i set di dati di addestramento e test che contengono diversi tipi di malware come flooder, adware, spyware e così via, nonché oggetti benigni. Quindi convertiamo gli oggetti eseguibili portatili (PE) in immagini in scala di grigi. Successivamente, addestriamo un modello utilizzando le immagini con Amazon Rekognition.

Amazon Rekognition è un servizio che semplifica l'esecuzione di diversi tipi di analisi visiva sulle tue applicazioni. Rekognition Image ti aiuta a creare potenti applicazioni per cercare, verificare e organizzare milioni di immagini.

Amazon Rekognition Custom Labels si basa sulle capacità esistenti di Rekognition, che sono già state addestrate su decine di milioni di immagini in molte categorie.

Amazon Rekognition Custom Labels è un servizio completamente gestito che consente agli utenti di analizzare milioni di immagini e di utilizzarle per risolvere diversi problemi di machine learning (ML), tra cui la classificazione delle immagini, il rilevamento dei volti e la moderazione dei contenuti. Dietro le quinte, Amazon Rekognition si basa su una tecnologia di deep learning. Il servizio utilizza una rete neurale di convoluzione (CNN), che è preaddestrata su un set di dati etichettato di grandi dimensioni. Essendo esposto a tali dati di verità di base, l'algoritmo può imparare a riconoscere i modelli nelle immagini da molti domini diversi e può essere utilizzato in molti casi d'uso del settore. Poiché AWS si occupa della creazione e della manutenzione dell'architettura del modello e della selezione di un metodo di addestramento appropriato per l'attività da svolgere, gli utenti non devono dedicare tempo alla gestione dell'infrastruttura richiesta per le attività di addestramento.

Architettura della soluzione

Il diagramma dell'architettura seguente fornisce una panoramica della soluzione.

La soluzione è costruita utilizzando Batch AWS, AWS Fargatee Rekognition di Amazon. AWS Batch ti consente di eseguire centinaia di processi di calcolo in batch su Fargate. Fargate è compatibile con entrambi Servizio Amazon Elastic Container (Amazon ECS) ed Servizio Amazon Elastic Kubernetes (Amazon EKS). Le etichette personalizzate di Amazon Rekognition ti consentono di utilizzare AutoML per la visione artificiale per addestrare modelli personalizzati per rilevare malware e classificare varie categorie di malware. Le AWS Step Functions vengono utilizzate per orchestrare la pre-elaborazione dei dati.

Per questa soluzione, creiamo le risorse di preelaborazione tramite AWS CloudFormazione. Il modello di stack CloudFormation e il codice sorgente per le funzioni AWS Batch, Fargate e Step sono disponibili in a GitHub Repository.

dataset

Per addestrare il modello in questo esempio, abbiamo utilizzato i seguenti set di dati pubblici per estrarre i dati dannosi e benigni Eseguibile portatile (PE):

Ti invitiamo a leggere attentamente la documentazione dei set di dati (Sophos/Reversing Labs LEGGIMI, Set di dati di apprendimento automatico del malware PE) per gestire in modo sicuro gli oggetti malware. In base alle tue preferenze, puoi anche utilizzare altri set di dati purché forniscano malware e oggetti innocui in formato binario.

Successivamente, ti guideremo attraverso i seguenti passaggi della soluzione:

  • Preelaborare gli oggetti e convertirli in immagini
  • Distribuisci le risorse di pre-elaborazione con CloudFormation
  • Scegli il modello
  • Allena il modello
  • Valuta il modello
  • Costo e prestazioni

Preelaborare gli oggetti e convertirli in immagini

Utilizziamo Step Functions per orchestrare il flusso di lavoro di pre-elaborazione dell'oggetto che include i seguenti passaggi:

  1. prendere la meta.db database sqllite da sorel-20m bucket S3 e convertirlo in un file .csv. Questo ci aiuta a caricare il file .csv in un contenitore Fargate e a fare riferimento ai metadati durante l'elaborazione degli oggetti malware.
  2. Prendi gli oggetti dal bucket S20 sorel-3m e crea un elenco di oggetti nel formato csv. Eseguendo questo passaggio, creiamo una serie di file .csv che possono essere elaborati in parallelo, riducendo così il tempo necessario per la pre-elaborazione.
  3. Converti gli oggetti dal bucket sorel-20m S3 in immagini con una serie di lavori. I processi di array di AWS Batch condividono parametri comuni per la conversione degli oggetti malware in immagini. Vengono eseguiti come una raccolta di processi di conversione delle immagini distribuiti su più host ed eseguiti contemporaneamente.
  4. Scegli un numero predeterminato di immagini per l'addestramento del modello con una serie di lavori corrispondenti alle categorie di malware.
  5. Analogamente al passaggio 2, prendiamo gli oggetti benigni dal bucket S160 benign-3k e creiamo un elenco di oggetti in formato csv.
  6. Analogamente al passaggio 3, convertiamo gli oggetti dal bucket S160 benigno-3k in immagini con una serie di lavori.
  7. A causa della quota predefinita di Amazon Rekognition per l'addestramento delle etichette personalizzate (250 immagini), scegli un numero predeterminato di immagini innocue per l'addestramento del modello.
  8. Come mostrato nell'immagine seguente, le immagini vengono archiviate in un bucket S3 partizionato prima da malware e cartelle innocue, quindi successivamente il malware viene partizionato in base ai tipi di malware.
    Benna da addestramento S3
    Set di dati di formazione

Distribuisci le risorse di pre-elaborazione con CloudFormation

Prerequisiti

Prima di continuare sono richiesti i seguenti prerequisiti:

Distribuzione delle risorse

Lo stack CloudFormation creerà le seguenti risorse:

parametri

  • STACK_NAME – Nome dello stack CloudFormation
  • REGIONE_AWS – Regione AWS in cui verrà distribuita la soluzione
  • PROFILO_AWS – Profilo denominato che verrà applicato al comando AWS CLI
  • ARTEFATTO_S3_BUCKET – Bucket S3 in cui verrà archiviato il codice dell'infrastruttura. (Il bucket deve essere creato nella stessa regione in cui risiede la soluzione).
  • ACCOUNT_AWS – ID account AWS.

Utilizzare i seguenti comandi per distribuire le risorse

Assicurarsi che l'agente docker sia in esecuzione sulla macchina. Le distribuzioni vengono eseguite utilizzando script bash e in questo caso utilizziamo il seguente comando:

bash malware_detection_deployment_scripts/deploy.sh -s '' -b 'malware-
detection--artifacts' -p  -r "" -a

Questo crea e distribuisce gli artefatti locali a cui fa riferimento il modello CloudFormation (ad esempio, cloudformation.yaml).

Allena il modello

Poiché Amazon Rekognition si occupa della formazione dei modelli per te, non è richiesta la visione artificiale o una conoscenza ML altamente specializzata. Tuttavia, dovrai fornire ad Amazon Rekognition un bucket pieno di immagini di input opportunamente etichettate.

In questo post addestreremo due modelli di classificazione delle immagini indipendenti tramite la funzione delle etichette personalizzate:

  1. Modello di rilevamento del malware (classificazione binaria): identifica se l'oggetto specificato è dannoso o innocuo
  2. Modello di classificazione del malware (classificazione multiclasse): identifica la famiglia di malware per un determinato oggetto dannoso

Procedura dettagliata per l'addestramento del modello

I passaggi elencati nella procedura dettagliata seguente si applicano a entrambi i modelli. Pertanto, dovrai eseguire i passaggi due volte per addestrare entrambi i modelli.

  1. Accedi al Console di gestione AWS e apri Amazon Rekognition consolle.
  2. Nel riquadro di sinistra, scegli Usa etichette personalizzate. Viene visualizzata la pagina di destinazione delle etichette personalizzate di Amazon Rekognition.
  3. Dalla pagina di destinazione delle etichette personalizzate di Amazon Rekognition, scegli Inizia.
  4. Nel riquadro di sinistra scegliere Scegli Progetti.
  5. Scegli Crea progetto.
  6. In Nome del progetto, inserisci un nome per il tuo progetto.
  7. Scegli Crea progetto per creare il tuo progetto
  8. Nel Progetti scegliere il progetto a cui si desidera aggiungere un set di dati. Viene visualizzata la pagina dei dettagli del progetto.
  9. Scegli Crea set di dati. Crea set di dati viene mostrata la pagina.
  10. In Configurazione inizialescegli Inizia con un singolo set di dati per consentire ad Amazon Rekognition di suddividere il set di dati in addestramento e test. Tieni presente che potresti ritrovarti con campioni di test diversi in ogni iterazione di addestramento del modello, con risultati e metriche di valutazione leggermente diversi.
  11. Scegli Importa immagini dal bucket Amazon S3.
  12. In URI S3, inserisci la posizione del bucket S3 e il percorso della cartella. Lo stesso bucket S3 fornito dalla fase di pre-elaborazione viene utilizzato per creare entrambi i set di dati: rilevamento malware e classificazione malware. Il set di dati di rilevamento del malware punta alla radice (ovvero, s3://malware-detection-training-{account-id}-{region}/) del bucket S3, mentre il set di dati di classificazione del malware punta alla cartella del malware (ovvero, s3://malware-detection-training-{account-id}-{region}/malware) del secchio S3. Dati di allenamento
  13. Scegli Allega automaticamente etichette alle immagini in base alla cartella.
  14. Scegli Crea set di dati. Si apre la pagina dei set di dati per il progetto.
  15. Sulla Modello di treno pagina, scegli Modello di treno. L'Amazon Resource Name (ARN) per il tuo progetto dovrebbe essere nel file Scegli il progetto casella di modifica. In caso contrario, inserisci l'ARN per il tuo progetto.
  16. Nel Vuoi addestrare il tuo modello? finestra di dialogo, scegliere Modello di treno.
  17. Al termine dell'addestramento, scegli il nome del modello. L'addestramento è terminato quando lo stato del modello è TRAINING_COMPLETATO.
  18. Nel Modelli sezione, scegli il file Usa il modello scheda per iniziare a utilizzare il modello.

Per maggiori dettagli, controlla le etichette personalizzate di Amazon Rekognition Per iniziare guida.

Valuta il modello

Una volta completati i modelli di addestramento, è possibile accedere alle metriche di valutazione selezionando Controlla le metriche nella pagina del modello. Amazon Rekognition fornisce i seguenti parametri: punteggio F1, precisione media e richiamo complessivo, comunemente utilizzati per valutare le prestazioni dei modelli di classificazione. Questi ultimi sono metriche medie rispetto al numero di etichette.

Nel Prestazioni per etichetta sezione, puoi trovare i valori di queste metriche per etichetta. Inoltre, per ottenere i valori per Vero positivo, Falso positivo e Falso negativo, selezionare il Visualizza i risultati dei test.

Metriche del modello di rilevamento malware

Sul set di dati bilanciato di 199,750 immagini con due etichette (benigni e malware), abbiamo ricevuto i seguenti risultati:

  • Punteggio F1 – 0.980
  • Precisione media – 0.980
  • Richiamo complessivo - 0.980

Metriche del modello di rilevamento malware

Metriche del modello di classificazione del malware

Sul set di dati bilanciato di 130,609 immagini con 11 etichette (11 famiglie di malware), abbiamo ricevuto i seguenti risultati:

  • Punteggio F1 – 0.921
  • Precisione media – 0.938
  • Richiamo complessivo - 0.906

Metriche del modello di classificazione del malware

Per valutare se il modello sta funzionando bene, consigliamo di confrontarne le prestazioni con altri benchmark del settore che sono stati addestrati sullo stesso set di dati (o almeno simile). Sfortunatamente, al momento della stesura di questo post, non esistono corpi di ricerca comparativi che risolvano questo problema utilizzando la stessa tecnica e gli stessi set di dati. Tuttavia, all'interno della comunità della scienza dei dati, si ritiene che un modello con un punteggio F1 superiore a 0.9 funzioni molto bene.

Costo e prestazioni

A causa della natura serverless delle risorse, il costo complessivo è influenzato dalla quantità di tempo in cui ogni servizio viene utilizzato. D'altra parte, le prestazioni sono influenzate dalla quantità di dati elaborati e dalla dimensione del set di dati di addestramento che viene inviata ad Amazon Rekognition. Per il nostro esercizio di stima dei costi e delle prestazioni, consideriamo il seguente scenario:

  • 20 milioni di oggetti vengono catalogati ed elaborati dal set di dati Sorel.
  • 160,000 oggetti vengono catalogati ed elaborati dal set di dati di apprendimento automatico del malware di PE.
  • Nel bucket S240,000 di addestramento vengono scritti circa 3 oggetti: 160,000 oggetti malware e 80,000 oggetti benigni.

In base a questo scenario, il costo medio per pre-elaborare e distribuire i modelli è di $ 510.99 USD. Ti verranno addebitati ulteriori $ 4 USD/h per ogni ora di utilizzo del modello. È possibile trovare la ripartizione dettagliata dei costi nel stima generato tramite il Calcolatore prezzi AWS.

Per quanto riguarda le prestazioni, questi sono i risultati della nostra misurazione:

  • ~2 h per il completamento del flusso di pre-elaborazione
  • ~40 ore per il completamento dell'addestramento del modello di rilevamento del malware
  • ~40 ore per il completamento dell'addestramento del modello di classificazione del malware

Pulire

Per evitare di incorrere in addebiti futuri, Stop ed delete i modelli di Amazon Rekognition ed eliminare le risorse di pre-elaborazione tramite il file distruggere.sh sceneggiatura. Per eseguire correttamente lo script sono necessari i seguenti parametri:

  • STACK_NAME – Il nome dello stack CloudFormation
  • REGIONE_AWS – La regione in cui viene distribuita la soluzione
  • PROFILO_AWS – Il profilo denominato che si applica al comando AWS CLI

Utilizzare i seguenti comandi per eseguire il ./malware_detection_deployment_scripts/destroy.sh sceneggiatura:

bash malware_detection_deployment_scripts/destroy.sh -s  -p
 -r 

Conclusione

In questo post, abbiamo dimostrato come eseguire il rilevamento e la classificazione del malware utilizzando Amazon Rekognition. Le soluzioni seguono un modello serverless, sfruttando i servizi gestiti per la pre-elaborazione dei dati, l'orchestrazione e la distribuzione del modello. Ci auguriamo che questo post ti aiuti nei tuoi continui sforzi per combattere il malware.

In un post futuro mostreremo un caso d'uso pratico del rilevamento di malware utilizzando i modelli distribuiti in questo post.


Circa gli autori

Edvin HallvaxhiuEdvin Hallvaxhiu è un Senior Global Security Architect con AWS Professional Services ed è appassionato di sicurezza informatica e automazione. Aiuta i clienti a creare soluzioni sicure e conformi nel cloud. Fuori dal lavoro, gli piace viaggiare e fare sport.

Raul ShauryaRaul Shaurya è Principal Data Architect con AWS Professional Services. Aiuta e lavora a stretto contatto con i clienti creando piattaforme di dati e applicazioni analitiche su AWS. Al di fuori del lavoro, Rahul ama fare lunghe passeggiate con il suo cane Barney.

Bruno DeftoBruno Defto è un Global Security Architect con AWS Professional Services. Si concentra sull'aiutare i clienti a creare architetture sicure e affidabili in AWS. Al di fuori del lavoro, è interessato agli ultimi aggiornamenti tecnologici e ai viaggi.

Nadim MajedNadim Majed è un architetto di dati all'interno dei servizi professionali AWS. Lavora fianco a fianco con i clienti che costruiscono le loro piattaforme di dati su AWS. Al di fuori del lavoro, Nadim gioca a ping pong e ama guardare il calcio.

Timestamp:

Di più da Apprendimento automatico di AWS