Red Hot Cyber

La cybersecurity è condivisione.
Riconosci il rischio, combattilo, condividi le tue esperienze ed 
incentiva gli altri a fare meglio di te.

Cerca

Come CHAT GPT può aiutare nella difesa contro le mail di phishing. Definizione del Common Phishing Scoring System 1.0 (CPSS 1.0)

Giuseppe Longobardi : 4 Aprile 2023 09:10

AutoreGiuseppe 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.

Le funzionalità di CHAT GPT per il self content reconnaissance

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!

Ricerca della soluzione, troviamo la chiave primaria delle mail di phishing

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:

  • Autorevolezza
  • Intimidazione
  • Consensus-based (social proof)
  • Scarsità
  • Familiarity-based
  • Fiducia
  • Urgenza

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: 

  1. Mi chiede di farlo in 15 minuti (Urgenza)
  2. Si finge l’amministratore delegato di un’azienda mia cliente (Autorevolezza, Fiducia ed intimidazione)
  3. Mi contatta direttamente in quanto sa che sono una persona disponibile e che fa affidamento su di me (Familiarity-Based)
  4. Non l’ho inserito nella lista di parametri ma come possiamo osservare lo scrittore è MOLTO sgrammaticato, una caratteristica comune ma non sempre presente nelle mail di phishing 

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:

  • Autorevolezza
  • Intimidazione
  • Consensus-based (social proof)
  • Scarsità
  • Familiarity-based
  • Fiducia
  • Urgenza
  • Grammatica

Progettiamo l’algoritmo per l’identificazione di mail di phishing, CPSS

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!

IndicatoreVariabilePresenza(x)ParametroPesoPunteggio(z)
AutorevolezzaAUTK1AUTp
IntimidazioneINTIMK2INTIMp
Consensus-based (social proof)SOCIALK3SOCIALp
ScarsitàSCARCK4SCARCp
Familiarity-basedFAMK5FAMp
FiduciaTRUSTK6TRUSTp
UrgenzaURGK7URGp
GrammaticaGRAMK8GRAMp

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)

ParametroPesoValore
K11,2
K21,5
K31,1
K41,1
K51,1
K61,3
K71,5
K81,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

Definizione Range CPSS 1.0 (Common Phishing Scoring System 1.0) 

Range valori CPSS 1.0Probabilità Phishing
0 – 31Low
31,5 – 62Medium
62,5 – 93High
93,5 – 124Critical

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.

Definizione dei prompt per ottenimento valori

In questa sezione proveremo a definire dei prompt da passare a CHAT GPT per poi ottenere i valori desiderati. 

IndicatorePromptOutput DesideratoVariabile
AutorevolezzaDato 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,1X1
IntimidazioneDato 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,1X2
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,1X3
ScarsitàDa Implementare∀x∈I1, t.c. I1=-1,1X4
Familiarity-basedDa Implementare∀x∈I1, t.c. I1=-1,1X5
FiduciaDato 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,1X6
UrgenzaDato 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,1X7
GrammaticaDato 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,1X8

Interroghiamo l’intelligenza artificiale applicando l’algoritmo di calcolo del CPSS 1.0 (Common Phishing Scoring System)

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:

IndicatoreAliasValore
AutorevolezzaX1-1
IntimidazioneX2-1
Consensus-based (social proof)X3-1
ScarsitàX4-1
Familiarity-basedX5-1
FiduciaX6-1
UrgenzaX71
GrammaticaX81

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:

IndicatorePunteggioPunteggio Parziale
AutorevolezzaZ18.333333333
IntimidazioneZ26.666666667
Consensus-based (social proof)Z39.090909091
ScarsitàZ49.090909091
Familiarity-basedZ59.090909091
FiduciaZ67.692307692
UrgenzaZ76.666666667
GrammaticaZ85.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

Precisazioni sull’algoritmo

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).

Progettiamo Kassandra, Il software definitivo per il riconoscimento automatico di mail di phishing con il supporto dell’AI.

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

Giuseppe Longobardi
CyberSecurity Manager e ICT Trainer, specializzato in Networking e CyberSecurity. Inventore della web app "OnionCert", registrata alla SIAE con N. Registrazione D000016744, ideatore del "Metodo Longobardi" per il Subnetting ed autore di svariati corsi di formazione in ambito Networking e CyberSecurity. Da sempre seguo progetti di ricerca e sviluppo in ambito Industry 4.0 , Smart City e Blockchain. Credo nello sviluppo continuo di nuove competenze, tecnologie e soluzioni open source. La mia filosofa di vita: "Se i tuoi progetti hanno come obiettivo 1 anno pianta del riso, 20 anni pianta un albero, un secolo insegna a degli uomini"