Machine Learning Antivirus di cosa stiamo parlando ?

C’è molta confusione ultimamente riguardo al mondo Machine Learning (ML). Vediamo sempre più spesso filmati di computer che vincono giochi complessi, veicoli in grado di guidare in autonomia e tecnologie emergenti come il riconoscimento facciale o vocale, ma esattamente cosa è il Machine Learning e come funziona ?
Visto che giorno dopo giorno le macchine stanno prendendo sempre di più il controllo sulla nostra esistenza, è abbastanza importante capire cosa è e cosa non è il machine learning.

Quindi, cos’è il Machine Learning?

Il machine learning è un ramo dell’intelligenza artificiale (AI), e l’intelligenza artificiale è una disciplina che fa parte dell’informatica. Un modo abbastanza semplice per descrivere come il machine learning funziona potrebbe essere questo:

Nella programmazione tradizionale, viene dato al computer un input – per esempio “1+1”. Il computer utilizza un algoritmo creato da umani che calcola la risposta e ci restituisce un output. Nel nostro caso l’output sarà “2”.

Qui c’è la prima differenza cruciale, la regola della somma è stata inserita da un umano, il computer la sfrutta per ottenere l’output  desiderato.
Nel machine learning al contrario viene dato in pasto al computer l’input e l’output (1+1=2). Poi viene lasciato al computer il compito di creare un algoritmo in grado di generare l’output in base all’input.

In pratica, al computer vengono date tutte le informazioni necessarie per far sì che impari “per conto suo” come estrapolare un output dall’input.
Se fossimo in un’aula di scuola, diremmo che l’obiettivo di educare non è dare tutte le risposte ad un bambino ma insegnargli a pensare per poter rispondere.

Questo è in sostanza quello che fa il machine learning.

Sembra abbastanza semplice no ?

Chiaramente rami più avanzati del machine learning lavorano in un modo molto più complesso, ma essenzialmente la differenza fondamentale tra il “traditional computing” e il “machine learning”  è che con il machine learning è il computer che genera l’algoritmo e non l’uomo. Facciamo un salto nel passato per essere ancora più chiari.

ML: gli albori

Il Machine Learning nasce nel 1959 con un impiegato IBM di nome Arthur Samuel. Arthur voleva insegnare ad un computer a giocare a dama, quindi si mise a programmare la macchina per giocare contro di lui. Il problema che incontrò Arthur era che vinceva sempre contro il computer.

Il problema, in realtà, era che il computer conosceva solamente come fare le mosse “correttamente”, giocava secondo le istruzioni e senza strategia come normalmente un umano farebbe. Di fatto la macchina non era in grado di vedere oltre ogni singola mossa, impostare una strategia e vincere la partita. Quindi Arthur creò un piccolo programma che consentiva al computer di giocare in autonomia. Dopo avergli dato un po’ di tempo per far pratica, Arthur tornò a giocare contro il computer e fu contentissimo quando perse. Poi rigiocò e perse nuovamente. Il programma che aveva scritto raccoglieva i dati della partita e su questi aveva creato un motore “predittivo” costruito sulla conoscenza acquisita. La macchina aveva imparato in autonomia come guardare la scacchiera globalmente e usava le informazioni acquisite per muovere i pezzi della dama da una posizione all’altra aumentando la chance di vittoria.

Se il Machine Learning è stato inventato negli anni 50, perchè ne parliamo solo ora ?

Forse avrete iniziato a sentire la parola Machine Learning più spesso, ma in realtà già utilizzate quotidianamente il Machine Learning. Quando fate un “mi piace” o un “pollice su” su una canzone o su un video, il computer o la rete di computer collegata genera un algoritmo ML solamente per voi, in grado di predirre o consigliare in base ai vostri gusti la prossima canzone o il prossimo video. Magari in prima battuta questo genere di consigli non funzionano benissimo, ma più viene “allenato” il motore (accettando o rifiutando le proposte), migliore diventa la bontà dello stesso. Anche quando state facendo shopping on line e vi vengono proposti degli articoli in base ad acquisti precedenti, anche lì c’è del Machine Learning.

Il Machine learning è dappertutto, ma renderà magicamente il mondo un posto migliore? “Non si tratta di magia,” dice Greg Corrado, Senior Research Scientist di Google. “Si tratta di uno strumento. Ma uno strumento fondamentale.” Un esempio nella vita reale ? Facebook ad esempio utilizza il Machine Learning per predire i suicidi.

Machine Learning e Antimalware: il caso Cylance

Iniziano a farsi spazio nel mondo antivirus alcuni prodotti che sfruttano ML per fare in modo di prevenire l’esecuzione di malware – anche quei tipi di malware che non sono ancora noti anche chiamati zero-days. In questo il ML può mostrare la sua eccellenza. Parliamo di Cylance, una soluzione antivirus predittiva che utilizza ML. L’algoritmo infatti consente di difendere gli endpoint PRIMA che il malware abbia la possibilità di eseguirsi, anziché costantemente monitorare i possibili attacchi, spesso anche dopo che questi abbiano già causato danni. Il termine “post-execution cleanup” sembra molto impressionante ma nel mondo reale assomiglia un po’ a come cercare di chiudere la porta dopo che un ladro è già entrato in casa e scappato con la refurtiva.

Come si crea un motore ML

Per creare il proprio motore ML, Cylance ha dato in pasto al sistema un numero abbastanza impressionante di campioni malware (inizialmente 500.000). Metà di questi campioni erano malevoli e l’altra metà “buoni”. L’algoritmo prodotto inizialmente era abbastanza soddisfacente ma per poter andare sul mercato aveva bisogno di ulteriore “training” . In Cylance, quindi, analisti e matematici hanno continuato a dare in pasto al motore decine di migliaia di file, continuando nel corso dei mesi a far “allenare” il motore per riconoscere la differenza tra un file “buono” e un file “malevolo” analizzando e concependo la natura intrinseca e le intenzioni di ogni file a livello “DNA”.

Più passava il tempo e più l’efficacia del motore migliorava. Il motore ha continuato ad apprendere e crescere. Ad oggi gli algoritmi del motore di Cylance, dopo anni di training intensivo, hanno una efficacia superiore al 99%. I tecnici di Cylance, entrando nello specifico degli algoritmi,si sono accorti che il motore è in grado di considerare 6 milioni di “feature” di un binario. Una “feature” è una caratteristica di un file: il suo nome, la sua icona, le dll che importa, la lingua con cui è compilato, il compilatore che è stato usato etc. Considerando che un reverse engineering umano è in grado normalmente di valutare centinaia di “feature”, questo motore, avendone a disposizione ben 6 milioni è in grado di aumentare l’efficacia e l’accuratezza del file analizzato.

Questo significa che il motore ML di Cylance supera di svariati milioni di datapoints quello che potrebbe essere un’analisi sul malware effettuata da un cervello umano, e lo può fare in una frazione di un secondo.

Quale è la differenza tra il ML di Cylance e i prodotti antivirus che usiamo oggi ?

Chiaramente il motore ML di Cylance non utilizza signature. Una signature è un set di istruzioni scritte da un umano… o meglio, anche una macchina può produrre delle signature ma in base a delle regole dettate da un umano. Una signature dice al prodotto antivirus se un nuovo file corrisponde ad un pattern ben specifico (solitamente l’hash di un file). I tradizionali antivirus utilizzano le signature come sistema principale per difendersi da software malevolo. Ma una signature, non può “fare strategia”, né generalizzare per concetti né prendere decisioni che non risiedano al di fuori del suo set di regole, ed è per questo che il cybercrime la fa da padrona.

Facciamo un esempio

Immaginatevi di svegliarvi durante la notte e trovare uno sconosciuto che sta cercando di entrare in casa vostra. Ora, noi, in quanto esseri umani, necessitiamo di una lista molto corta di punti per riconoscere che probabilmente c’è un’alta probabilità che lo sconosciuto abbia cattive intenzioni:

  • Non abbiamo bisogno di sfogliare un libro di fotografie che ci mostri tutti i volti di tutti che nel mondo sono conosciuti come “sconosciuto”
  • Non abbiamo bisogno di chiedergli di farci vedere un documento per sapere che non lo conosciamo
  • Non abbiamo bisogno di chiedergli perchè sta cercando di entrare in casa nostra
  • Non abbiamo bisogno di andare su internet e chiedere a tutti i nostri amici se hanno mai visto questa persona tentare di entrare nelle loro case

Solitamente ci basta conoscere i seguenti dati (input)

  • Non conosciamo questa persona (A)
  • Questa persona (A) si trova in un luogo inaspettato (B) in un orario inaspettato (C)
  • Sta indossando una maschera (X), ha magari una pistola alla cintura(Y), sta cercando di rompere un vetro (Z)

L’input nuovo è A + B + C (aggiungendo come fattori di rischio X,Y,Z) = output (rapina/pericolo)

Un motore ML effettua questo calcolo in una frazione di secondo. Chiaramente la bontà del motore aumenta tanti più datapoints vengono riconosciuti dal motore e quanto tempo è stato dato al motore per imparare come gestirli. In questo modo il motore potrà “predirre” il futuro (stai per essere rapinato) e può prendere decisioni immediate come fermare la rapina PRIMA che il sospetto entri. Tutto in un istante, senza la necessità di analisi estese o che la situazione degeneri.

Un altro esempio nell’immagine qui sotto… Riesco a riconoscere l’animale nascosto nell’immagine ?

Alcune Feature nel machine learning ci permettono di capire quale è l'animale nell'immagine

Seppure con poche informazioni (ma caratteristiche) riesco ad individuare l’animale nell’immagine.

Grazie ad alcune feature ben specifiche riusciamo a riconoscere l'animale nell'immagine

Zero day ? no problem

Un altro tallone d’Achille dei motori AV tradizionali: affidandosi a signature non possono riconoscere malware non ancora sviluppato o che non sia già noto e riportato come malware. Con le signature deve esserci un agnello sacrificale, un “paziente zero”, che per primo viene infettato dal nuovo malware, proprio per far sì che il nuovo malware venga riconosciuto. Una volta riconosciuto, passa ancora del tempo mentre la signature viene generata e venga poi inserita nel prodotto antivirus e infine distribuita al cliente. Un dato notevole è che ogni giorno mediamente vengono prodotti tra varianti e mutazioni 1.000.000 malware. Avete letto bene 1.000.000 di malware AL GIORNO.
Perchè quindi aspettare che qualcuno venga infettato, o che, tornando all’esempio di prima, qualcuno venga derubato per primo? Con milioni di nuove varianti malware rilasciate ogni anno, perchè non tentare di essere un po’ più avanti nel gioco e fermare il malware PRIMA che possa essere eseguito ?

E riguardo agli aggiornamenti ?

Dato che il motore di Cylance identifica cosa è malevolo e cosa no senza utilizzare le signature, gli unici aggiornamenti sono quelli dell’algoritmo che vengono pubblicati ogni 6/9 mesi.
Questo elimina il bisogno di update giornalieri/orari e il rischio di restare non protetti nel periodo che intercorre tra un update e l’altro.

Inoltre, grazie al motore predittivo, è possibile prevenire gli attacchi prima che questi avvengano, anziché reagire al malware quando viene eseguito.

Anche il mio Antivirus tradizionale ha il ML !

Cylance al momento è l’unico vendor che utilizza 100% un sistema signatureless in ML. Antivirus tradizionali incominciano ad utilizzare ML in aggiunta ai sistemi a signature. Cosa significa ? Il sistema tradizionale PRIMA controlla la signature, poi il comportamento ( a volte spacciato per ML), poi fa sandboxing e alla fine, (se avanza tempo 😀 ) , fa un controllo nel motore di ML. L’approccio resta POST-esecuzione e non PRE-esecuzione. Inoltre..cosa abbiamo detto sul motore ? Ci vogliono anni prima che il motore contenga un numero di campioni sufficienti per poter essere maturo e funzionante. Vendor tradizionali hanno fatto e fanno signature ogni giorno ma non hanno motori ML pronti per essere efficaci. Cylance ha impiegato 4 anni per poter portare un set di 6 milioni di feature ad uso e consumo.

Provatemelo !

Comprereste una macchina senza averla guidata prima ? Certo che no. Non possiamo che dirvi .. provate ! I risultati a volte sono meglio di molte parole. Come fare a provare ? Semplice, contattateci ed insieme vedremo di guidarvi attraverso qualcosa che è veramente next-generation ed è veramente efficace !
Maggiori informazioni e una overview di Cylance la troverete nei nostri webinar di maggio, ai quali potrete iscrivervi partendo da questa pagina

Se l'articolo ti è piaciuto, lascia un like !
Oppure condividi questa pagina

Maurizio Bertaboni

Nato a Milano, vive da sempre sul lago di Garda. Suona il pianoforte, il basso elettrico e da qualche anno si cimenta con il violino. Si è di recente iscritto a un corso di scultura del legno. Ottiene misteriosamente la maturità classica nonostante dedichi interamente le sue giornate al PC, trascurando gli amici Seneca e Cicerone. Nel 1999 si avvicina al mondo Linux, nel 2000 incontra i Macintosh, diventa web designer e infine sistemista. Nel 2006 decide di mettersi in proprio come consulente in ambito enterprise, scoprendosi, ogni giorno di più, programmatore. Dal 2010 è in BeSafe in qualità di socio, dove si butta a capofitto nella programmazione sicura (in ambienti opensource) legata all’erogazione di servizi. Da sempre appassionato di retrocomputing e modding, si sente l’"hacker del gruppo"

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.