Prima di affrontare il tema devo fare una premessa. Non penso che gli LLM siano strumenti miracolosi che cambieranno la storia dell’umanità, penso siano strumenti che possono dare una mano se usati in modo strutturato da persone ben consapevoli del loro funzionamento, quindi da pochissime persone. Detto questo posso scrivere l’articolo.
All’interno del progetto eg0n abbiamo integrato una componente honeypot utile per rastrellare informazioni da analizzare e trasformare in IoC qualificati. Il funzionamento che avevo pensato per gli honeypot è abbastanza semplice: simulo un servizio e gestisco una serie di richieste al fine di dare l’impressione al bot o al threat actor che il servizio sia effettivamente attivo così da invogliarlo ad interagire. Ciò che viene fatto dal software è ovviamente registrare tutte le interazioni in un LOG che da qualche settimana è analizzabile dall’interfaccia di eg0n.
Discutendone con più persone è emersa l’idea, già utilizzata da progetti come Beelzebub, di utilizzare un LLM per generare risposte per il threat actor. La meccanica potrebbe essere qualcosa tipo:
Tutti i passaggi verrebbero registrati sul database di eg0n, compresi gli eventuali payload che il threat actor tenterà di utilizzare. A noi interessano proprio questi elementi.
L’utilizzo del LLM è limitato alla generazione di finte risposte da inviare al threat actor sfruttando la capacità statistica di riprodurre qualcosa di coerente con la domanda. Eventuali errori, normali per un sistema che riproduce testo sulla base di una coerenza statistica e non sulla base di una comprensione del contesto, non compromettono il funzionamento del sistema in se, alla peggio il threat actor potrebbe insospettirsi e smettere di interagire con il sistema.
Ieri sera, durante una live di puro coding che trovate su YouTube, ho implementato la componente di servizio telnet che è quasi funzionante (ci sono ancora un paio di errori che vorrei sistemare).
Il prossimo step è quindi quello di creare una funzione per gestire il dialogo con il LLM, fare qualche test funzionale e poi inserire la funzione nel comportamento del servizio che al momento si limita a non dare risposta ad eventuali comandi (le video della live si vede abbastanza bene il comportamento di base).
Ho pensato di iniziare con telnet per sperimentare e misurare la funzionalità, se da risultati interessanti si può ragionare anche su altri servizi.