Netcat è uno strumento a riga di comando, re­spon­sa­bi­le della scrittura e della lettura dei file in rete. Per lo scambio di dati, Netcat utilizza i pro­to­col­li di rete TCP/IP e UDP. Lo strumento ha origine dal mondo Unix; ora è diventato di­spo­ni­bi­le per tutte le piat­ta­for­me.

Per la sua usabilità uni­ver­sa­le, Netcat si è gua­da­gna­to la de­fi­ni­zio­ne di “col­tel­li­no svizzero delle reti TCP/IP”: vi consente ad esempio di eseguire la diagnosi di errori e problemi che mettono a rischio la fun­zio­na­li­tà e la sicurezza di una rete. Altre funzioni di Netcat sono il port scanning, lo streaming dei dati o le tra­smis­sio­ni di dati più semplici. Inoltre si possono impostare anche server web e di chat e avviare richieste tramite e-mail. Il software sem­pli­fi­ca­to, svi­lup­pa­to già alla fine degli anni 90, può operare in modalità server e in modalità client.

Registra il tuo dominio
  • Domain Connect gratuito per una con­fi­gu­ra­zio­ne facile del DNS
  • Cer­ti­fi­ca­to SSL Wildcard gratuito
  • Pro­te­zio­ne privacy inclusa

Come usare Netcat?

Netcat si può usare su tutte le piat­ta­for­me tramite la riga di comando. Su Linux e macOS lo trovate quasi sempre pre­in­stal­la­to, mentre gli utenti di Windows devono scaricare il programma da Internet. Non è ne­ces­sa­ria una par­ti­co­la­re in­stal­la­zio­ne perché, per usarlo con Windows, basta scaricare il file ese­gui­bi­le (nc.exe). È possibile in­stal­la­re Netcat per svolgere diversi compiti in rete con l’aiuto del prompt dei comandi (cmd.exe). Il prompt dei comandi si avvia come indicato di seguito:

  1. Premete la com­bi­na­zio­ne di tasti [Windows] + [R]
  2. Digitate “cmd” (1) nel box di ricerca
  3. Premete il tasto OK (2)

Infine si aprirà il cmd.exe che apparirà così:

Per avviare il file ese­gui­bi­le (nc.exe) dovete cambiarne la posizione. Se con Windows avete salvato il file “nc.exe” sul desktop nella cartella “netcat”, la sintassi sarà la seguente:

cd C:\Users\USERNAME\Desktop\netcat\

Il comando “cd” (change directory) attiva la modifica che indirizza il percorso del programma nella directory di nc.exe e nella riga di comando apparirà quel che segue:

Per alcune ope­ra­zio­ni Netcat richiede diritti di accesso elevati. Con Windows 10 bastano pochi passaggi per avviare il prompt dei comandi con privilegi da am­mi­ni­stra­to­re:

  1. Cliccate con il tasto destro del mouse sull’icona di Windows nella barra delle ap­pli­ca­zio­ni oppure premete la com­bi­na­zio­ne di tasti [Windows] + [X]
  2. Nel menu con­te­stua­le se­le­zio­na­te la voce “Windows Po­wer­Shell (am­mi­ni­stra­to­re)”:
N.B.
L’utilizzo di Netcat comporta dei rischi di sicurezza precisi. Perciò questo strumento dovrebbe essere uti­liz­za­to solo da utenti o am­mi­ni­stra­to­ri di rete esperti, so­prat­tut­to nella modalità con diritti di accesso elevati.

Sintassi di Netcat: quali sono i comandi e le opzioni di­spo­ni­bi­li?

La sintassi di Netcat è composta da due com­po­nen­ti prin­ci­pa­li: al comando identico “nc” seguono le diverse “opzioni”. Il comando indirizza il file ese­gui­bi­le nc.exe, le opzioni de­fi­ni­sco­no le fun­zio­na­li­tà concrete di una versione di Netcat. Le pos­si­bi­li­tà di­spo­ni­bi­li variano in base al sistema operativo e alla versione di Netcat uti­liz­za­ta.

La tabella seguente contiene solo le opzioni più im­por­tan­ti di­spo­ni­bi­li nella maggior parte delle versioni di Linux, macOS e Windows. Sono inoltre elencate alcune opzioni utili, in par­ti­co­la­re esten­sio­ni di­spo­ni­bi­li nella versione molto diffusa GNU-Netcat per Linux, Unix e macOS:

Opzioni De­scri­zio­ne
-4 Forza l’utilizzo dell’IPv4 (GNU-Netcat)
-6 Forza l’utilizzo dell’IPv6 (GNU-Netcat)
-d Rimuove Netcat dalla console (ope­ra­zio­ne in back­ground; di­spo­ni­bi­le con Windows e con le versioni ag­gior­na­te di GNU-Netcat)
-D Abilita le opzioni per il debugging di sockets (GNU-Netcat)
-h (display help) Mostra la guida (comandi/opzioni con breve de­scri­zio­ne)
-i (secs) Ritardo in secondi per le righe inviate o le port scan­sio­na­te
-k Netcat attende una nuova con­nes­sio­ne dopo la fine della pre­ce­den­te (possibile solo con GNU-Netcat e solo in com­bi­na­zio­ne con “-l”)
-l (listen mode) Modalità ascolto/listen e server per le richieste di con­nes­sio­ne in entrata (at­tra­ver­so la porta spe­ci­fi­ca­ta)
-L Listen harder A Netcat è richiesto di con­ti­nua­re a operare nella modalità di ascolto anche dopo l’in­ter­ru­zio­ne della con­nes­sio­ne lato client (uti­liz­zan­do gli stessi parametri; sup­por­ta­ta solo dalla versione di Windows)
-n (numeric-only) Solo indirizzo IP numerico senza nome DNS
-o (file) Esegue il comando hexdump del traffico dati (il contenuto dei file è rap­pre­sen­ta­to con modalità esa­de­ci­ma­le); esegue la ricerca dell’errore (debugging di ap­pli­ca­zio­ni di rete); possibile re­gi­stra­zio­ne della co­mu­ni­ca­zio­ne (sniffing) per i pacchetti in entrata e in uscita
-p (port) Indica a Netcat la porta locale da uti­liz­za­re per le con­nes­sio­ni in uscita
-r Utilizza porte casuali per la scansione (per porte locali e remote)
-s (adress) Imposta l’indirizzo sorgente uti­liz­za­to (indirizzo IP o nome)
-t Co­mu­ni­ca­zio­ne Telnet (permette ad esempio al server di co­mu­ni­ca­re tramite Telnet); richiede una com­pi­la­zio­ne par­ti­co­la­re da parte di Netcat, al­tri­men­ti l’opzione non è di­spo­ni­bi­le.
-u Utilizzo della modalità UDP (al posto di quella TCP)
-U (gateway) Netcat utilizza il pro­to­col­lo Unix Domain Sockets (GNU-Netcat)
-v In­for­ma­zio­ni det­ta­glia­te (è ad esempio re­spon­sa­bi­le per la vi­sua­liz­za­zio­ne e l’esten­sio­ne delle notifiche di errore)
-w (secs) Imposta il tempo di timeout dopo il quale terminare la con­nes­sio­ne (unità:secondi)
-z Modalità postscan­ner: (modalità zero-I/O; scansione solo per servizi di ascolto (senza invio di dati)

Un esempio semplice di ap­pli­ca­zio­ne di sintassi di Netcat è la richiesta della guida con il parametro “-h”:

C:\Users\USERNAME\Desktop\netcat>nc -h

Se volete definire un server o un client per la tra­smis­sio­ne di dati nella rete, bisogna prestare at­ten­zio­ne alla sintassi seguente:

Modalità client (connect to somewhere):

nc [opzioni] [Indirizzo IP/Hostname] [Port]

Modalità server (listen for inbound):

nc -l -p port [options] [hostname] [port]

Lo schema di base per eseguire un port scanning è:

nc [options] [host] [port]

Copiare file con Netcat

Una delle ca­rat­te­ri­sti­che usate più spesso con Netcat è la copia di file che consente di tra­smet­te­re anche grandi quantità di dati, par­ti­zio­ni singole o interi dischi rigidi clonati. Nel nostro esempio, il file fi­le­di­pro­va.txt dovrà essere copiato at­tra­ver­so la porta 6790 dal computer A (client) al computer B (server). A tal fine occorre seguire i passaggi seguenti:

  1. Co­mu­ni­ca­te l’indirizzo IP del computer B (PC target)
  2. Aprite il file di testo fi­le­di­pro­va.txt nella directory di Netcat del computer A; nel nostro esempio il file di testo si trova nella directory Netcat del client e nel computer de­sti­na­ta­rio B il file copiato andrà a finire sempre nella cartella di Netcat (altri percorsi di file devono essere adeguati di con­se­guen­za).
  3. Digitate la sintassi di Netcat nella riga di comando

Computer B (agisce come server de­sti­na­ta­rio)

nc -l -p 6790 > filediprova.txt
ENTER

Computer A (agisce come client del mittente)

nc [indirizzo IP del computer B] 6790 < filediprova.txt
ENTER

Il successo del tra­sfe­ri­men­to non viene però con­fer­ma­to nel prompt dei comandi. Basta con­trol­la­re nella directory del computer de­sti­na­ta­rio per ve­ri­fi­ca­re che il tra­sfe­ri­men­to sia andato a buon fine.

Ef­fet­tua­re il port scanning

Per rin­trac­cia­re errori o problemi di sicurezza, si può ef­fet­tua­re uno scan e trovare le porte rimaste aperte. Nell’esempio seguente, l’indirizzo IP del computer è: 192.168.11.1. Dopo l’indirizzo IP, possono essere indicate porte singole (per es. 1), più porte (per es. 1, 2, 3) o un intero in­ter­val­lo (1-1024) per lo scan.

nc -w 2 -z 192.168.10.1 1-1024

L’opzione “-w” definisce il tempo di timeout (in questo esempio: “Prova per due secondi a creare un col­le­ga­men­to con le porte”). L’opzione "-z” indica a Netcat di cercare esclu­si­va­men­te servizi in ascolto e non inviare dati.

Ag­giun­gen­do l’opzione “-v”, ri­ce­ve­re­te in­for­ma­zio­ni più precise per lo scan:

nc -v -w 2 -z 192.168.11.1 1-1024

Se trova una porta aperta, Netcat lo co­mu­ni­che­rà con la notifica “succeeded!”

Connection to 192.168.11.1 25 port [tcp/smtp] succeeded!

Sulle porte 1-1024 scan­sio­na­te girano i servizi più noti come Mail, FTP o SSH. Nel nostro esempio Netcat ha trovato una porta SMTP aperta di un client e-mail.

Netcat come semplice programma di chat

Netcat riesce a creare un semplice col­le­ga­men­to TCP o UDP tra due computer e aprire un canale di co­mu­ni­ca­zio­ne. Nell’esempio seguente il de­sti­na­ta­rio è in­stal­la­to su un sistema remoto distante e impostato nella modalità listening. Agisce allora come parte “in ascolto” uti­liz­zan­do la porta 1605 per ricevere i messaggi. È rag­giun­gi­bi­le all’indirizzo IP 192.168.11.1:

nc -l -p 1605
ENTER

Il computer locale (PC mittente) sta­bi­li­sce un col­le­ga­men­to con il de­sti­na­ta­rio dei messaggi tramite il comando seguente:

nc 192.168.11.1 1605
ENTER

Se la con­nes­sio­ne è stabilita con successo, si potranno inviare messaggi in entrambe le direzioni.

Creazione di un semplice server web

Netcat può fungere anche per creare un semplice server web. Se il server ori­gi­na­rio non è più rag­giun­gi­bi­le per problemi tecnici, si può reagire almeno alle richieste con una notifica di errore pre­im­po­sta­ta (in forma di file html):

nc -l -v -p 85 -w10 -L < notificadierrore.html

Netcat aspetta le richieste sulla porta 85 e reagisce con il file no­ti­fi­ca­dier­ro­re.html. L’opzione “-L” permette di mantenere il processo di Netcat per più di una richiesta singola. Il parametro “-w” termina il col­le­ga­men­to dopo 10 secondi (timeout). Il parametro “-v” fornisce al provider del server in­for­ma­zio­ni sulle richieste e documenta at­tra­ver­so messaggi il sistema operativo e il tipo di browser del computer del client che effettua la richiesta.

Netcat rap­pre­sen­ta un rischio per la sicurezza?

Si­cu­ra­men­te Netcat è uno strumento uni­ver­sa­le nella rete e può svolgere tanti compiti utili. Perciò non c’è affatto da me­ra­vi­gliar­si se è par­ti­co­lar­men­te amato in par­ti­co­la­re dagli am­mi­ni­stra­to­ri di rete e di sistema, con­si­de­ran­do so­prat­tut­to la relativa sem­pli­ci­tà di creazione di codice Netcat dopo una certa for­ma­zio­ne.

Attenti a non sot­to­va­lu­ta­re l’altra faccia della medaglia: Netcat è anche uno strumento per gli hacker, in quanto si adatta allo spio­nag­gio di rete, riconosce le falle di sicurezza, aggira i firewall e sfrutta i backdoor per entrare in possesso dei computer. I programmi antivirus, per esempio, lanciano un segnale d’allarme quando trovano una versione di Netcat sul computer, che at­tra­ver­so una com­pi­la­zio­ne speciale, permette di eseguire l’opzione “-e”.

Con la -e nel codice si può avviare un’in­ter­fac­cia in­te­rat­ti­va (backdoor shell) su un computer remoto. Chi riesce ad accedere li­be­ra­men­te al cmd.exe di Windows può provocare danni notevoli. At­tra­ver­so una backdoor shell si possono caricare anche altri malware. Spesso, nel codice, gli hacker uti­liz­za­no anche il parametro di Netcat “-d” che rende l’utilità della riga di comando in­vi­si­bi­le all’utente, per­met­ten­do agli hacker di agire in back­ground e provocare danni a distanza.

Per evitare versioni hackerate, bi­so­gne­reb­be scaricare Netcat esclu­si­va­men­te da fonti sicure su Internet. In par­ti­co­la­re gli esperti di sicurezza con­si­glia­no di valutare in modo preciso se uno strumento come Netcat debba trovarsi nell’in­stal­la­zio­ne di sistemi (in par­ti­co­la­re di sistemi front end).

Un altro rischio per la sicurezza è rap­pre­sen­ta­to dal fatto che Netcat trasmette i file prin­ci­pal­men­te in forma leggibile non co­di­fi­ca­ta. Perciò lo strumento andrebbe uti­liz­za­to solo per le reti par­ti­co­lar­men­te sicure o, ancora meglio, separate da internet. Per il tra­sfe­ri­men­to di dati su internet è più adatto Cryptcat, suc­ces­so­re di Netcat, che codifica i dati. Per la tra­smis­sio­ne di dati im­por­tan­ti per la sicurezza, si possono crit­to­gra­fa­re le con­nes­sio­ni anche tramite SSH.

I vantaggi e i rischi possibili rendono evidente che Netcat è uno strumento adatto esclu­si­va­men­te ai re­spon­sa­bi­li IT, agli utenti esperti e agli am­mi­ni­stra­to­ri di sistemi. Chi ne conosce i vantaggi può ap­pro­fit­ta­re della ver­sa­ti­li­tà e dell’ef­fi­cien­za di questo strumento di am­mi­ni­stra­zio­ne remota. Se si è in grado di valutare i pericoli per la sicurezza della propria rete e di definirli con pre­ci­sio­ne, sarà possibile prevenire gli attacchi in­for­ma­ti­ci o per lo meno tenerne sotto controllo i danni.

Per di più questo strumento, nato più di 20 anni fa negli ambienti hacker, oggi è con­si­de­ra­to già datato e in parte anche superato. Ora esistono strumenti migliori per svolgere diversi compiti in rete. Accanto a Cryptcat bisogna men­zio­na­re anche Socat, che oltre al TCP e UDC può usare anche il pro­to­col­lo di rete SCTP, lavora con i proxy server e supporta la crit­to­gra­fia. Inoltre, proprio come Netcat, funziona su tutte le piat­ta­for­me comuni.

Eppure, poiché è prima di tutto un tuttofare semplice e veloce da in­stal­la­re, con una sintassi di comandi davvero semplice, Netcat continua ad occupare una posizione speciale per gli utenti. Se combinato ad esempio con lo strumento di am­mi­ni­stra­zio­ne remota Netsh, offre numerose pos­si­bi­li­tà in più per una diagnosi e un’am­mi­ni­stra­zio­ne ef­fi­cien­te della rete.

Vai al menu prin­ci­pa­le