Go: il linguaggio di programmazione preferito dai pirati informatici

Da quando Google ha sviluppato il linguaggio Go per risolvere le mostruose esigenze computazionali di concorrenza ed efficienza nella gestione di migliaia e migliaia di tera byte di informazioni su sistemi distribuiti, io sono stato tra i primi a capirne le potenzialità e a imparare questo linguaggio velocemente e dopo aver scritto alcuni software concorrenti e paralleli per alcuni esigenze di elaborazione dati ne ho subito intravisto le grandi potenzialità per il settore della pirateria informatica per scrivere nuovi e più sofisticati malware.

Go è un linguaggio di programmazione open source creato da Google nel 2009 e i fondatori del linguaggio sono stati i grandi Rob Pike, Robert Griesemer e Ken Thompson quest’ultimo uno degli hacker e scienziati più grandi di tutti i tempi.

Molti sviluppatori professionisti sono entusiasti del linguaggio Go ed affermano esso è molto più facile e semplice di Python sotto molti aspetti, per semplicità non intendo banalità per neofiti bensì eleganza, coerenza ed efficienza soprattutto nella implementazione degli algoritmi per gestire una concorrenza efficiente e sicura ed un parallelismo di calcolo robusto.

Sebbene Go sia un linguaggio compilato, a differenza dei linguaggi classici e storici come ad esempio il C e C++, Go può essere compilato in un singolo binario. Go è in grado di collegare staticamente le sue librerie di dipendenze in un singolo file binario, quindi invece di scaricare dalla rete le dipendenze necessarie all’applicazione è possibile caricare in un singolo file eseguibile tutto il necessario per permettere all’applicazione di funzionare.

Inoltre, Go mette a disposizione molteplici strumenti di sviluppo e codifica che eliminano il compito di cercare librerie di terze parti, allo stesso tempo Go offre un ambiente di sviluppo integrato all’avanguardia e snello con strumenti di debug e plug-in avanzati, garantendo così che la velocità di programmazione sia condotta senza ostacoli relativi alle molteplici configurazioni come accade per i linguaggi più classici.

La sintassi di Go chiara e senza componenti non necessari consente agli sviluppatori di concentrarsi sullo sviluppo elegante e pulito del codice piuttosto che perdersi nella struttura rigida del linguaggio, questo è un ulteriore vantaggio non di poco conto che permette ai pirati informatici di concentrarsi sulle funzionalità creative e stealth nella progettazione di software malware.

Per questo motivo la comunità di sviluppatori di malware (di cui ho avuto modo di conoscere per studio e analisi sul darkweb da svariati anni), fa uso di Go sempre più e negli ultimi anni il tasso di utilizzo di Go è in costante aumento. Il motivo per cui i pirati informatici utilizzano Go per lo sviluppo di malware è dovuto a tutta una serie di ragioni: innanzitutto il linguaggio consente di compilare una applicazione in una singola base di codice per tutti i principali sistemi operativi e piattaforme anche quelle che sfruttano i container come Docker e Kubernetes quest’ultimi presi di mira da software maligni negli ultimi anni proprio grazie alle innumerevoli capacità di Go.

E’ possibile sviluppare software capace di infiltrarsi nei sistemi in modalità stealth senza essere rilevati, è relativamente più semplice;il malware scritto in Go è solitamente di grandi dimensioni e con opportune accortezze è possibile fare in modo che i software antivirus non siamo in grado di eseguire la scansione di file di grandi dimensioni o meglio, durante la scansione di file di grandi dimensioni è possibile ingannare l’antivirus con trigger che si auto attivano inserendo codice a run-time di disturbo.

Inoltre Go grazie al suo ricco ecosistema di librerie semplifica il processo di creazione di malware molto sofisticati capaci di attivarsi con triggers e sensori attivi su specifiche syscall del sistema operativo, questo permette di eludere molte protezioni e/o parallelamente poter generare “figli” software capaci di uccidere i processi padre al verificarsi di eventi importanti quindi cambiare vestito per confondere i software di analisi e scansione di malware anche di ultima generazione.

Altra interessante caratteristica è che ogni pirata informatico e hacker di alto livello (che io definisco insanity o pirata hard-core) possiede un poderoso archivio personale di programmi scritti in C, C++, Assembly, etc. per svolgere le funzioni di mascheramento, infezione, caricamento payload, funzioni dormiente, funzione di osservazione attività utente, elusione di antivirus, etc. il che significa che tale conoscenza profonda e accumulata in anni e anni di esperienza nel saper scrivere software intelligenti e multi-forma può essere usata senza alcun problema nel codice Go inserendo il codice C o Assembly direttamente nel codice dell’applicazione scritta in Go.

Tutto questo si traduce in applicazioni malware terribilmente sofisticate difficilmente rilevabili.

Le applicazioni compilate con Go naturalmente possono essere decompilate per il reverse enginnerging come accade con altri linguaggi come Python o C, però l’eseguibile Go rende più difficile per i ricercatori analizzare e separare il codice dalle librerie.

Faccio un esempio, nel 2019 fu scoperto che un malware trojan diverso rivolto a siti di e-commerce scritto in Go difficile da rilevare, oppure la campagna di mining di criptovalute scoperta nel luglio 2019 in cui è stato scoperto che il malware Go prendeva di mira anche server basati su GNU/Linux e fu difficile farne una analisi se non dopo molto tempo di studio. Il malware GoBotKR si è diffuso attraverso i siti torrent ed ha permesso agli aggressori di accedere da remoto a moltissimi sistemi rimanendo per sufficiente tempo non rilevabile.

Sempre nel 2019 il gruppo FancyBear è tornato all’attacco con un payload riscritto in Go introducendo una nuova backdoor difficile da rilevare. Ancora, il malware Glupteba è stato creato con Go ed è stato dotato di un miner di criptovaluta capace di lavorare silentemente sui sistemi infettati senza essere scoperto.

In luglio 2019 alcuni ricercatori di sicurezza hanno confermato che circa 11.000 dei malware intercettati e studiati erano scritti in Go.

E’ evidente quindi che le innovative caratteristiche del linguaggio creato da Google sta guadagnando molta popolarità e importanza tra i pirati informatici che sviluppano malware più sofisticati e creativi di tipo stealth rispetto al passato rendendo più difficile il rilevamento. Per questo motivo ho sempre affermato che un esperto di sicurezza deve saper sviluppare software in modalità insanity e con grandi capacità di analisi multidisciplinari che non possono essere acquisite e imparate dai tanti corsi cyber che si trovano in giro.

3 commenti su “Go: il linguaggio di programmazione preferito dai pirati informatici”

  1. Post molto interessante e costruttivo, che fornisce tanti spunti di riflessione: davvero ben fatto ed articolato.
    P.S: Potresti pubblicare un articolo sul programma ResEdit, utilizzato sui vecchi Apple Macintosh?
    Grazie mille per il tuo lavoro.

    Rispondi

Lascia un commento