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.