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

43

La maggior parte degli antivirus ha centinaia di migliaia o addirittura milioni di firme di malware e tuttavia analizza 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 protezione efficace contro le minacce. In che modo gli scanner possono raggiungere questo tipo di prestazioni?

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

    
posta Koorosh Pasokhi 06.02.2013 - 06:32
fonte

2 risposte

46

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

Un'ottima analogia è il 20 domande gioco in cui l'obiettivo è identificare un oggetto arbitrario chiedendo 20 sì apparentemente estranei /niente domande. L'idea alla base del gioco è che ogni risposta eliminerebbe metà degli oggetti, quindi è teoricamente possibile descrivere 2 ^ 20 (1.048.576) oggetti con solo 20 caratteristiche binarie.

Un'analogia diversa è come la cortex 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 a 140 milioni) vengono utilizzati per estrarre caratteristiche progressivamente più complesse e trasferirle allo strato successivo. Gli strati interagiscono tra loro avanti e indietro per produrre nozioni astratte che possono essere verificate rispetto alla memoria.

I motori antivirus memorizzano molte funzionalità di malware noto nel file di definizione e quando eseguono la scansione di un nuovo file ottimizzano l'estrazione e la classificazione (corrispondenza) di tali funzionalità. La memorizzazione delle funzionalità rende anche il rilevamento più robusto, in modo che le piccole modifiche di un malware non ostacolino il rilevamento. Anche l'estrazione delle feature viene eseguita in parallelo, in modo tale 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 la dimensione del file e la dimensione del testo stampabile. Queste caratteristiche prive di senso o non intuitive vengono generate e testate casualmente mediante il data mining di grandi quantità di file. Alla fine il file è descritto e classificato dalla combinazione di funzionalità. Come nota a margine, il miglior predittore per le domande che vengono chiuse su Stack Exchange è se la prima lettera della domanda è in minuscolo.

Quindi, quando un nuovo file viene scansionato, viene rapidamente classificato in categorie più fini e più fini e quindi viene confrontato con un piccolo gruppo di firme. Ogni passaggio escluderebbe un gran numero di file puliti e detterebbe quali altre funzionalità dovrebbero essere estratte in seguito. I primi passi sono molto piccoli in termini di risorse di calcolo, ma dettano quali passi più costosi dovrebbero essere presi in seguito.

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

La scansione in accesso ha lo stesso principio, ma funziona anche come un gatekeeper. Quindi ogni azione (solitamente chiamata API) eseguita da un processo viene controllata e autorizzata o negata. Allo stesso modo, ogni azione sospetta attiva più filtri e più controlli. Durante i controlli, il processo o il thread è in attesa di completamento dell'operazione, ma a volte l'intero processo viene sospeso attivamente. Questo 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 degrado delle prestazioni simile a quello di avere una macchina un paio di punti percentuali più lenti. Controlla i punteggi PCMark di 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 lavoro di sollevamento pesante viene eseguito solo su file di malware sospetto per i quali l'AV potrebbe impiegare secondi per emulare il processo o persino inviarlo al cloud per l'analisi.

La magia è nella classificazione progressiva.

    
risposta data 06.02.2013 - 10:22
fonte
17

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

Il calcolo di un singolo hash di un file e il confronto con un elenco di milioni di hash è molto più semplice rispetto alla ricerca di ciascuna 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 venditore AV lo fa in modo un po 'diverso.

Di solito ci sono impostazioni per le "prestazioni e 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 sulle prestazioni sono ciò che rende l'AV notevolmente più veloce di quello che erano in passato.

Garantito, se esegui l'AV nella sua ispezione più dettagliata contro l'unità del sistema operativo principale, noterai un impatto sulle prestazioni man mano che i file vengono elaborati. Di solito non è una perdita di prestazioni della CPU, ma piuttosto una perdita di prestazioni del disco (ovviamente gli SSD hanno un vantaggio qui).

Alcune tecniche di risparmio di tempo utilizzate da AV

  • Ignora i file non eseguibili
  • Ignorando file di grandi dimensioni (ad es. > 500 MB)
  • Ignorare i file con un checksum corrispondente a un file "legittimo" noto
  • Leggere determinate parti di file e ignorare il resto
  • Facilmente concedendo l'utilizzo delle risorse quando rileva un utente presente sul computer
  • Ricerca di chiamate di sistema specifiche che rappresentano un comportamento rischioso
  • Generazione di una linea di base all'inizio e quindi scansione solo di file nuovi / modificati
  • ecc.

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

  • Metodo di scansione delle stringhe: ricerca la sequenza di byte (stringhe) che sono tipico di un virus specifico ma non probabile in altri programmi.
  • Metodo caratteri jolly: consente di saltare byte o intervalli di byte. Per esempio "?" il carattere viene saltato e il carattere jolly% indica che lo scanner proverà a farlo corrisponde al byte successivo.
  • Metodo di disallineamento: consente di ottenere un numero qualsiasi di byte in una stringa valore arbitrario, indipendentemente dalla loro posizione.
  • Metodo di rilevamento generico: questa tecnica utilizza una stringa comune da rilevare diverse o tutte le varianti conosciute di una famiglia di virus.
  • Metodo segnalibri: calcola la distanza tra l'inizio del virus corpo e la stringa di rilevamento.
  • Smart Scanning: la scansione intelligente può saltare le istruzioni spazzatura, come i NOP, nel file host e inoltre non li ha memorizzati nella firma del virus. Per migliorare la probabilità di rilevare varianti correlate di virus, un'area del corpo del virus è stato selezionato che non aveva riferimenti a dati o altre subroutine.
  • Rilevazione scheletro: lo scanner analizza le dichiarazioni del virus riga per riga e cancella tutte le affermazioni non essenziali. Ciò che rimane è lo scheletro del corpo che ha solo il codice macro essenziale comune nel macro virus.
  • Analisi euristica: l'analisi euristica è un'analisi basata su esperti che determina la suscettibilità di un sistema verso particolari rischi / rischi utilizzando varie regole decisionali o metodi di pesatura. L'analisi di MultiCriteria (MCA) è uno dei mezzi per pesare.
  • Rilevamento specifico del virus: ci sono casi in cui l'algoritmo standard del scanner antivirus non può gestire un virus. In casi come questo, un nuovo codice di rilevamento deve essere introdotto per implementare un algoritmo di rilevamento specifico del virus. Questo Il metodo include Filtering, Decryptor Detection e X-Ray scanning. Fonte: Strategie di virus del computer e metodi di rilevamento

Spero che ti aiuti!

Letture aggiuntive: Wikipedia

    
risposta data 06.02.2013 - 07:47
fonte

Leggi altre domande sui tag