Giuseppe Longobardi : 4 Aprile 2023 09:10
Autore: Giuseppe Longobardi Cybersecurity Manager di WorkersBadge.
Nell’articolo precedente, disponibile a questo link, abbiamo visto come l’intelligenza artificiale può essere usata per generare in automatico delle mail di phishing volte ad attaccare i sistemi di milioni di utenti senza il minimo sforzo da parte degli hacker.
Oggi vedremo come possiamo contrastare ad armi pari questa inarrestabile forza esplosiva. Salteremo le premesse sull’intelligenza artificiale e tutti i concetti propedeutici, già ampiamente discussi nell’articolo precedente, progetteremo la soluzione difensiva e proporremo alcuni casi d’uso concreti.
Sei un Esperto di Formazione?
Entra anche tu nel Partner program!
Accedi alla sezione riservata ai Creator sulla nostra Academy e scopri i vantaggi riservati ai membri del Partner program.
Per ulteriori informazioni, scrivici ad [email protected] oppure su Whatsapp al 379 163 8765
Supporta RHC attraverso:
Tutti sappiamo bene cos’è CHAT GPT, tutti ne abbiamo ampiamente capito le potenzialità e buona parte dei casi d’uso. Pochi conoscono a fondo questo potente motore e tutte le funzionalità che si celano al suo interno. Oggi vedremo come sfruttare una funzionalità nascosta di CHAT GPT, che permette agli utenti di interrogare la rete neurale sulla paternità di un contenuto. In sostanza possiamo chiedergli se è o meno responsabile della scrittura di un determinato contenuto. Vediamo qualche Esempio!
1)Chiediamo a CHAT GPT di scriverci una storia:
2)Chiediamo a CHAT GPT se è stata lei a scrivere questa storia:
Come vediamo l’ha riconosciuta!
3)Adesso proviamo a chiedergli se ha scritto un passo della bibbia.
Grandioso! Come vediamo ci ha dato esattamente la risposta che ci aspettavamo. Però io sono un po’ diffidente, ed ho pensato che riuscisse a riconoscere il contenuto solo se interrogato sulla paternità dallo stesso account dai cui ha creato il contenuto, così ho creato un altro account per verificare questa ipotesi. Vediamo!
4)Creiamo un altro account e da quello chiediamo se la storia di Luca ,che abbiamo scritto da un altro account, è stata scritta da CHAT GPT
Ecco confermate le mie ipotesi! Come possiamo vedere dal nostro reverse engineering ad ogni account è associata un’area di memoria che limita lo scope (con scope si intende insieme di esistenza, ambito di ricerca) ai soli contenuti prodotti dall’account. In sostanza possiamo verificare la paternità solo di contenuti che sono stati scritti da CHAT GPT usando il nostro account. Questo non ci permette di usare la funzionalità di Self Content Reconnaissance integrata a CHAT GPT per identificare mail di phishing prodotte con la soluzione precedente. Non Demordiamo, cerchiamo una strada alternativa!
Per poter cercare qualcosa o identificare qualcosa dobbiamo definire una chiave primaria strutturata che ci permette di distinguere mail di phishing da mail standard. In sostanza una serie di caratteristiche comuni. Ad esempio riconosciamo una Ferrari dal tipico colore rosso, dal rombo dei mitici motori benzina e dalle inconfondibili linee aerodinamiche. Per questo elenchiamo le caratteristiche comuni alle e-mail di phishing:
Queste caratteristiche sono state individuate dopo un attenta ricerca empirica ed analisi che ho condiviso nel mio corso di “Cyber Security Awareness”, disponibile su WorkersBadge.
Analizziamo adesso un esempio di mail di phishing mirato che ho ricevuto qualche tempo fa alla ricerca dei parametri che abbiamo appena analizzato ,metto in grassetto quelli riscontrati.
La mail che sto per mostrarvi è un reale tentativo di attacco!
In questa mail come vediamo l’attaccante si finge una persona che io conosco, l’amministratore di una società per cui curo alcuni progetti di consulenza ICT. Come potete vedere, sta provando a chiedermi di acquistare delle carte regalo, il cui riscatto non è tracciabile.
In sostanza:
Come vedete abbiamo trovato 5 attributi su 7, più 1 dalla lista di parametri generali. Quindi diciamo che possiamo prendere quella lista per buona ed iniziare a progettare il nostro algoritmo basato su AI per riconoscere mail di phishing.
In sostanza gli attributi che andiamo a verificare per identificare una mail di phishing sono:
Nel mondo della CyberSecurity Esistono le CVE (common vulnerabilities and exposures) che non sono altro che dei documenti tecnici pubblici che descrivono delle vulnerabilità scoperte dai ricercatori di sicurezza informatica. Ogni CVE ha un punteggio che viene calcolato con il sistema CVSS (Common Vulnerabilities Scoring System). Quello che proveremo a fare adesso è creare un nostro sistema di punteggio per le mail di phishing ed in base al punteggio ottenuto si definirà una scala di indicatori che permetteranno agli utenti di regolare il loro livello di allerta in base all’analisi automatica del tool AI Based. Si tenga presente che l’algoritmo appena descritto è altamente sperimentale e in futuro sarà sicuramente ottimizzato.
L’algoritmo porterà al calcolo del CPSS 1.0 (Common Phishing Scoring System), che viene presentato per la prima volta in questo articolo tecnico.
Prima di presentare la matematica dietro questo algoritmo, ci tengo a dire che non sono un maestro della scrittura matematica formale!
Indicatore | VariabilePresenza(x) | ParametroPeso | Punteggio(z) |
Autorevolezza | AUT | K1 | AUTp |
Intimidazione | INTIM | K2 | INTIMp |
Consensus-based (social proof) | SOCIAL | K3 | SOCIALp |
Scarsità | SCARC | K4 | SCARCp |
Familiarity-based | FAM | K5 | FAMp |
Fiducia | TRUST | K6 | TRUSTp |
Urgenza | URG | K7 | URGp |
Grammatica | GRAM | K8 | GRAMp |
Definiamo un C.E. (Campo di esistenza per le variabili)
C.E. : ∀x∈I1, t.c. I1=-1,1
C.E. : ∀z∈I2, t.c. I2={ z | z ∈N , 0 ≤z≤10 }
C.E. : ∀KiI3, t.c. I3={ Ki | Ki ∈R , 1 ≤Ki≤2 }
In sostanza le variabili presenza AUT, INTIM, etc. sono equiparabili alla nostra x e quindi queste ultime avranno un valore o pari a -1 o pari a 1. In altre parole, se viene riscontrata la presenza di autorevolezza a variabile presenza viene posta a 1, se non viene riscontrata allora viene posta a -1
Il Parametro peso definisce il peso dell’indicatore, questo viene definito staticamente una sola volta. Secondo me questi potrebbero essere dei valori intelligenti ma successivamente a questo articolo apriremo un dibattito per vedere cosa ne pensa la community (Tabella Sotto)
ParametroPeso | Valore |
K1 | 1,2 |
K2 | 1,5 |
K3 | 1,1 |
K4 | 1,1 |
K5 | 1,1 |
K6 | 1,3 |
K7 | 1,5 |
K8 | 1,7 |
Più è alto il valore del parametro, maggiore sarà il peso che l’indicatore associato avrà. Quindi praticamente se viene riscontrata “intimidazione”, parametro K2 questa avrà un punteggio finale (la nostra y) maggiore a parità di punteggio. Il punteggio finale è diverso dal punteggio.
Le variabili Presenza (AUTp, INTIMp, etc) avranno dei valori generati da CHAT GPT. Chiederemo all’intelligenza artificiale di stampare “-1” se pensa non ci sia la presenza di un indicatore, viceversa stamperà “1” se pensa ci sia l’indicatore nel testo somministrato.
Le variabili Punteggio (AUTp, INTIMp, etc) avranno dei valori generati da CHAT GPT. Chiederemo all’intelligenza artificiale di dare un punteggio ai nostri indicatori.
Definiamo adesso la funzione che porta al punteggio finale:
y= yp+Smax
y ∈ I4, I4=[0,2Smax]
yp è un punteggio parziale totale, frutto della sommatoria di tutti i punteggi parziali, calcolati in base ai valori delle variabili presenza (x)
P0 è un punteggio di default assegnato nel caso in cui si rilevi la non presenza di un indicatore
Smax è il valore massimo di yp con i valori di xi tutti a 1 e i valori di zi tutti a 10
La y costituisce il valore finale per il CPSS 1.0, Common Phishing Scoring System
Range valori CPSS 1.0 | Probabilità Phishing |
0 – 31 | Low |
31,5 – 62 | Medium |
62,5 – 93 | High |
93,5 – 124 | Critical |
Si invita a ricordare che i range variano significativamente in base alla scelta dei Parametri Peso, quindi la tabella che si sta visualizzando è un esempio numerico che comunque permette di definire una legge matematica lineare atta a definire i vari scaglioni. In questa prima elaborazione ho deciso di definire gli scaglioni con la seguente formula:
FondoScalaScaglione= SmaxNScaglioni
In questo caso gli scaglioni sono 4 come per il CVSS, con la stessa nomenclatura, l’Smax è descritto sopra.
In questa sezione proveremo a definire dei prompt da passare a CHAT GPT per poi ottenere i valori desiderati.
Indicatore | Prompt | Output Desiderato | Variabile |
Autorevolezza | Dato il seguente testo “$TESTO” Restituisci “1” se pensi che il contenuto sia scritto in modo autoritario, Restituisci “-1” se invece pensi che non sia autoritario. Rispondi solo con “1” o “-1” senza fornire spiegazioni. | ∀x∈I1, t.c. I1=-1,1 | X1 |
Intimidazione | Dato il seguente testo ”$TESTO” Restituisci “1” se pensi che il contenuto sia scritto in modo intimidatorio, Restituisci “-1” se invece pensi che non sia intimidatorio. Rispondi solo con “1” o “-1” senza fornire spiegazioni. | ∀x∈I1, t.c. I1=-1,1 | X2 |
Consensus-based (social proof) | Dato il seguente testo “$TESTO” Restituisci “1” se si fa riferimento al fatto che altre persone hanno fatto quello che viene richiesto, altrimenti Restituisci “-1”. Rispondi solo con “1” o “-1” senza fornire spiegazioni. | ∀x∈I1, t.c. I1=-1,1 | X3 |
Scarsità | Da Implementare | ∀x∈I1, t.c. I1=-1,1 | X4 |
Familiarity-based | Da Implementare | ∀x∈I1, t.c. I1=-1,1 | X5 |
Fiducia | Dato il seguente testo “$TESTO” Restituisci “1” se sono presenti parole e/o frasi volte a forzare l’incremento della fiducia di chi legge, altrimenti Restituisci “-1”. Rispondi solo con “1” o “-1” senza fornire spiegazioni. | ∀x∈I1, t.c. I1=-1,1 | X6 |
Urgenza | Dato il seguente testo “$TESTO” Restituisci “1” se chi scrive ha dettato delle scadenze entro cui effettuare una certa azione, altrimenti Restituisci “-1”. Rispondi solo con “1” o “-1” senza fornire spiegazioni. | ∀x∈I1, t.c. I1=-1,1 | X7 |
Grammatica | Dato il seguente testo “$TESTO” Restituisci “1” se il testo contiene errori grammaticali o risulta poco fluido, o ci siano parole troppo ripetute Restituisci “-1” se invece pensi che il testo sia corretto grammaticalmente e fluido | ∀x∈I1, t.c. I1=-1,1 | X8 |
Prompt 1
Quindi non rileva autorevolezza, ci siamo, x1 = -1
Prompt 2
Quindi non rileva intimidazione, corretto. X2 = -1
Prompt 3
Ottimo, nessuna social proof. X3 = -1
Prompt 4
Si è vero, niente che possa farci pensare ad un raggiro psicologico specifico (al di là della pratica di phishing stessa). X6 = -1
Prompt 5
Bingo! Come vediamo abbiamo il primo 1, ci siamo! X7=1
Prompt 6
Bingo! Bingo! Bingo! Come vediamo ha riconosciuto che il testo è sgrammaticato! X8 = 1!
Benissimo Adesso abbiamo lo stato delle Variabili Presenza, che riportiamo qui di seguito:
Indicatore | Alias | Valore |
Autorevolezza | X1 | -1 |
Intimidazione | X2 | -1 |
Consensus-based (social proof) | X3 | -1 |
Scarsità | X4 | -1 |
Familiarity-based | X5 | -1 |
Fiducia | X6 | -1 |
Urgenza | X7 | 1 |
Grammatica | X8 | 1 |
Per le variabili X3 ed X4 abbiamo assegnato il valore momentaneo -1. Stiamo ancora lavorando ad un prompt che funzioni e dia risultati coerenti. Dato che nella formula che abbiamo presentato prima, quando la variabile presenza è “-1” il punteggio non necessità di essere calcolato perché è definito staticamente dalla variabile P0. Che di Default abbiamo impostato a “-3”.
Prompt 1
Perfetto quindi Z7 = 10, ci siamo!
Prompt 2
Perfetto, quindi Z8 = 10
Facendo un riepilogo delle variabili Z quindi abbiamo:
Indicatore | Punteggio | Punteggio Parziale |
Autorevolezza | Z1 | 8.333333333 |
Intimidazione | Z2 | 6.666666667 |
Consensus-based (social proof) | Z3 | 9.090909091 |
Scarsità | Z4 | 9.090909091 |
Familiarity-based | Z5 | 9.090909091 |
Fiducia | Z6 | 7.692307692 |
Urgenza | Z7 | 6.666666667 |
Grammatica | Z8 | 5.882352941 |
Questo ci porta a:
Quindi in generale il punteggio di questa mail è 34.4490, arrotondiamo a 35. Il rischio quindi è “Medium”. Ovviamente se riceviamo più mail dallo stesso soggetto con alert sempre crescenti, allora questo genererà sicuramente un pericolo molto maggiore
L’algoritmo appena descritto è in grado di analizzare e-mail generiche, tuttavia potrebbe non essere in grado di riconoscere attacchi molto più evidenti come questo illustrato sotto.
Infatti sarebbe bene raccogliere tutti gli esempi possibili di questo tipo di attacchi ed inserirli in un database di “firme” note, laddove la soluzione IT analizzi una mail e non ritrovi un occorrenza può fare riferimento al nostro algoritmo per il calcolo del CPSS 1.0 (Common Phishing Scoring System).
Nel flow chart appena illustrato si mostra come possiamo ingegnerizzare una soluzione di riconoscimento per le mail di phishing adoperando un integrazione con CHAT GPT e l’algoritmo che abbiamo appena presentato. In sostanza funziona così:
1)Ho una mail di phishing nota, segnala subito all’utente
2)Ho una mail che non corrisponde ad una mail di phishing nota, uso l’algoritmo di scoring e mostro all’utente il grado di probabilità che quella sia una mail di phishing