it-swarm.dev

In che modo gli antivirus eseguono la scansione per migliaia di firme malware in breve tempo?

La maggior parte degli antivirus ha centinaia di migliaia o addirittura milioni di firme di malware e tuttavia esegue la scansione di molti file in un tempo ragionevole con alti tassi di rilevamento. Anche gli scanner in tempo reale non rallentano notevolmente il computer ma forniscono una forte protezione contro le minacce. In che modo gli scanner possono ottenere questo tipo di prestazioni?

So che potrebbe essere una domanda ampia, ma volevo avere un'idea generale a riguardo.

47
Koorosh Pasokhi

Il rilevamento dell'antivirus è un estrazione delle caratteristiche e un problema di classificazione .

Una grande analogia è il gioco 20 domande in cui l'obiettivo è quello di identificare un oggetto arbitrario ponendo 20 domande sì/no apparentemente non correlate. L'idea alla base del gioco è che ogni risposta eliminerebbe la metà degli oggetti, quindi è teoricamente possibile descrivere 2 ^ 20 (1.048.576) oggetti con solo 20 funzioni binarie.

Un'analogia diversa è il modo in cui corteccia visiva elabora le informazioni visive. Il cervello ha hardware molto semplice e veloce per rilevare e classificare un numero infinito di immagini. Solo sei strati di neuroni (il numero di neuroni è stimato in 140 milioni) vengono utilizzati per estrarre progressivamente caratteristiche più complesse e passarle al livello successivo. I livelli interagiscono avanti e indietro l'uno con l'altro per produrre nozioni astratte che possono essere verificate rispetto alla memoria.

I motori antivirus memorizzano molte funzionalità di malware noti nel file di definizione e quando eseguono la scansione di un nuovo file ottimizzano l'estrazione e la classificazione (corrispondenza) di tali funzionalità. Le funzionalità di archiviazione rendono inoltre il rilevamento più affidabile in modo che piccole modifiche in un malware non ostacolino il rilevamento. L'estrazione delle funzionalità viene eseguita anche in parallelo, in modo che le risorse siano completamente utilizzate.

La maggior parte delle funzionalità sono progettate dagli umani, ma ce ne sono alcune che non hanno senso da sole, come avere un byte nullo alla fine del file o un rapporto tra dimensione del file e dimensione del testo stampabile. Queste funzionalità senza senso o non intuitive vengono generate e testate casualmente dal data mining di enormi quantità di file. Alla fine il file è descritto e classificato dalla combinazione di funzioni. Come nota a margine, il miglior predittore per le domande chiuse su Stack Exchange è se la prima lettera della domanda è in minuscolo.

Quindi, quando un nuovo file viene scansionato, viene rapidamente classificato in categorie sempre più sottili e quindi viene confrontato con un piccolo set di firme. Ogni passaggio escluderebbe un gran numero di file puliti e detterebbe quali altre funzioni dovrebbero essere estratte successivamente. I primi passi sono molto piccoli in termini di risorse informatiche, ma determinano quali passi più costosi dovrebbero essere presi in seguito.

Utilizzando solo alcune letture del disco e cicli della CPU, il motore può determinare il tipo di file. Diciamo che è un file JAR. Utilizzando queste informazioni, inizia a raccogliere funzionalità del file JAR. Se è firmato, la scansione viene interrotta. Se non sta importando alcuna funzione, la scansione viene interrotta (sto semplificando troppo qui). Sta usando qualche funzionalità complicata? quindi dovrebbero essere estratte più funzionalità. Utilizza funzioni vulnerabili conosciute? Quindi dovrebbe essere accuratamente verificato per le firme exploit note Java.

La scansione in accesso ha lo stesso principio, ma funziona anche come un gatekeeper. Pertanto, ogni azione (di solito chiamata API) eseguita da un processo viene controllata e consentita o negata. Allo stesso modo, ogni azione sospetta attiva più filtri e più controlli. Durante i controlli il processo o il thread è in attesa del completamento dell'operazione, ma a volte l'intero processo viene attivamente sospeso. Potrebbe sembrare un sovraccarico significativo ma una volta verificata un'azione specifica, viene successivamente memorizzata nella cache ed eseguita molto rapidamente o non eseguita affatto. Il risultato è un peggioramento delle prestazioni simile ad avere una macchina più lenta di un paio di punti percentuali. Controlla i punteggi PCMark per 20 prodotti AV qui .

Quindi l'ottimizzazione della velocità deriva da pochissimi lavori eseguiti su file dall'aspetto pulito che costituiscono la stragrande maggioranza dei file scansionati. Il pesante lavoro di sollevamento viene svolto solo su file sospetti che sembrano malware per i quali AV potrebbe anche richiedere alcuni secondi per emulare il processo o addirittura inviarlo al cloud per l'analisi.

La magia è nella classificazione progressiva.

47
Cristian Dobre

Le firme malware sono valori univoci che indicano la presenza di codice dannoso. In parole povere, quando un programma antivirus esegue la scansione del computer, calcola la firma di un file (ad esempio un hash), quindi confronta tale firma/hash con un elenco di firme non note.

Calcolare un singolo hash di un file e confrontarlo con un elenco di milioni di hash è molto più semplice che cercare ogni firma di malware in un determinato file.

La firma potrebbe rappresentare una serie di byte nel file. Potrebbe anche essere un hash crittografico del file o delle sue sezioni. Ogni fornitore AV lo fa in modo leggermente diverso.

Di solito ci sono impostazioni per "prestazioni vs profondità" delle scansioni del software antivirus. Queste scansioni stanno essenzialmente esaminando la quantità di codice che elaboreranno prima di concludere che un file è sicuro o meno.

Va notato che le tecniche antivirus sono migliorate e le tecnologie più recenti che non sono solo basate sulla firma. La combinazione di queste tecniche e le ottimizzazioni per ridurre l'impatto delle prestazioni sono ciò che rende gli AV notevolmente più veloci di quanto non fossero in passato.

Garantito, se esegui il tuo AV nella sua ispezione più dettagliata contro il tuo disco rigido primario, noterai un calo delle prestazioni mentre i file vengono elaborati. Di solito non è una perdita delle prestazioni della CPU ma piuttosto una perdita delle prestazioni dell'unità disco (ovviamente gli SSD hanno un vantaggio qui).

Alcune tecniche di risparmio di tempo utilizzate dagli AV

  • Ignorando i file non eseguibili
  • Ignorare file di grandi dimensioni (ovvero> 500 MB)
  • Ignorare i file con un checksum corrispondente a un file "legittimo" noto
  • Leggere alcune parti dei file e ignorare il resto
  • Concedere con garbo l'uso delle risorse quando rileva un utente presente sul computer
  • Alla ricerca di chiamate di sistema specifiche che rappresentano comportamenti rischiosi
  • Generare inizialmente una linea di base e quindi scansionare solo i file nuovi/modificati
  • eccetera..

Inoltre, ulteriori tecniche utilizzate per il rilevamento statico da soluzioni AV comuni:

  • Metodo di scansione delle stringhe: cerca la sequenza di byte (stringhe) tipica di un virus specifico ma che non è probabile trovare in altri programmi.
  • Metodo jolly: consente di saltare byte o intervalli di byte. Per esempio "?" il carattere viene ignorato e il carattere jolly% indica che lo scanner proverà a corrispondere al byte successivo.
  • Metodo di mancata corrispondenza: consente a qualsiasi dato numero di byte in una stringa di avere valore arbitrario, indipendentemente dalla loro posizione.
  • Metodo di rilevamento generico: questa tecnica utilizza una stringa comune per rilevare diverse o tutte le varianti conosciute di una famiglia di virus.
  • Metodo segnalibri: calcola la distanza tra l'inizio del corpo del virus e la stringa di rilevamento.
  • Scansione intelligente: la scansione intelligente potrebbe saltare le istruzioni indesiderate, come NOP, nel file Host e non memorizzarle nella firma del virus. Per aumentare la probabilità di rilevare varianti correlate di virus, è stata selezionata un'area del corpo del virus che non aveva riferimenti a dati o altre subroutine.
  • Rilevamento scheletro: lo scanner analizza le dichiarazioni del virus riga per riga e rilascia tutte le dichiarazioni non essenziali. Ciò che rimane è lo scheletro del corpo che ha solo un codice macro essenziale comune nel macro virus.
  • Analisi euristica: l'analisi euristica è un'analisi basata su esperti che determina la suscettibilità di un sistema a particolari minacce/rischi utilizzando varie regole di decisione o metodi di pesatura. L'analisi MultiCriteria (MCA) è uno dei mezzi di pesatura.
  • Rilevamento specifico di virus: ci sono casi in cui l'algoritmo standard dello scanner antivirus non è in grado di gestire un virus. In casi come questo, è necessario introdurre un nuovo codice di rilevamento per implementare un algoritmo di rilevamento specifico per virus. Questo metodo include filtro, rilevamento decryptor e scansione a raggi X. Fonte: Categorie di virus informatici e metodi di rilevazione

Spero che aiuti!

Ulteriori letture: Wikipedia

18
NULLZ