Cos'è Netcat e come funziona?
Netcat è uno strumento a riga di comando, responsabile della scrittura e della lettura dei file in rete. Per lo scambio di dati, Netcat utilizza i protocolli di rete TCP/IP e UDP. Lo strumento ha origine dal mondo Unix; ora è diventato disponibile per tutte le piattaforme.
Per la sua usabilità universale, Netcat si è guadagnato la definizione di “coltellino svizzero delle reti TCP/IP”: vi consente ad esempio di eseguire la diagnosi di errori e problemi che mettono a rischio la funzionalità e la sicurezza di una rete. Altre funzioni di Netcat sono il port scanning, lo streaming dei dati o le trasmissioni di dati più semplici. Inoltre si possono impostare anche server web e di chat e avviare richieste tramite e-mail. Il software semplificato, sviluppato già alla fine degli anni 90, può operare in modalità server e in modalità client.
- Certificato SSL Wildcard incluso
- Registrazione di dominio sicura
- Indirizzo e-mail professionale da 2 GB
Come usare Netcat?
Netcat si può usare su tutte le piattaforme tramite la riga di comando. Su Linux e macOS lo trovate quasi sempre preinstallato, mentre gli utenti di Windows devono scaricare il programma da Internet. Non è necessaria una particolare installazione perché, per usarlo con Windows, basta scaricare il file eseguibile (nc.exe). È possibile installare 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:
- Premete la combinazione di tasti [Windows] + [R]
- Digitate “cmd” (1) nel box di ricerca
- Premete il tasto OK (2)
Infine si aprirà il cmd.exe che apparirà così:
Per avviare il file eseguibile (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 operazioni Netcat richiede diritti di accesso elevati. Con Windows 10 bastano pochi passaggi per avviare il prompt dei comandi con privilegi da amministratore:
- Cliccate con il tasto destro del mouse sull’icona di Windows nella barra delle applicazioni oppure premete la combinazione di tasti [Windows] + [X]
- Nel menu contestuale selezionate la voce “Windows PowerShell (amministratore)”:
L’utilizzo di Netcat comporta dei rischi di sicurezza precisi. Perciò questo strumento dovrebbe essere utilizzato solo da utenti o amministratori di rete esperti, soprattutto nella modalità con diritti di accesso elevati.
Sintassi di Netcat: quali sono i comandi e le opzioni disponibili?
La sintassi di Netcat è composta da due componenti principali: al comando identico “nc” seguono le diverse “opzioni”. Il comando indirizza il file eseguibile nc.exe, le opzioni definiscono le funzionalità concrete di una versione di Netcat. Le possibilità disponibili variano in base al sistema operativo e alla versione di Netcat utilizzata.
La tabella seguente contiene solo le opzioni più importanti disponibili nella maggior parte delle versioni di Linux, macOS e Windows. Sono inoltre elencate alcune opzioni utili, in particolare estensioni disponibili nella versione molto diffusa GNU-Netcat per Linux, Unix e macOS:
Opzioni | Descrizione |
-4 | Forza l’utilizzo dell’IPv4 (GNU-Netcat) |
-6 | Forza l’utilizzo dell’IPv6 (GNU-Netcat) |
-d | Rimuove Netcat dalla console (operazione in background; disponibile con Windows e con le versioni aggiornate di GNU-Netcat) |
-D | Abilita le opzioni per il debugging di sockets (GNU-Netcat) |
-h (display help) | Mostra la guida (comandi/opzioni con breve descrizione) |
-i (secs) | Ritardo in secondi per le righe inviate o le port scansionate |
-k | Netcat attende una nuova connessione dopo la fine della precedente (possibile solo con GNU-Netcat e solo in combinazione con “-l”) |
-l (listen mode) | Modalità ascolto/listen e server per le richieste di connessione in entrata (attraverso la porta specificata) |
-L Listen harder | A Netcat è richiesto di continuare a operare nella modalità di ascolto anche dopo l’interruzione della connessione lato client (utilizzando gli stessi parametri; supportata 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 è rappresentato con modalità esadecimale); esegue la ricerca dell’errore (debugging di applicazioni di rete); possibile registrazione della comunicazione (sniffing) per i pacchetti in entrata e in uscita |
-p (port) | Indica a Netcat la porta locale da utilizzare per le connessioni in uscita |
-r | Utilizza porte casuali per la scansione (per porte locali e remote) |
-s (adress) | Imposta l’indirizzo sorgente utilizzato (indirizzo IP o nome) |
-t | Comunicazione Telnet (permette ad esempio al server di comunicare tramite Telnet); richiede una compilazione particolare da parte di Netcat, altrimenti l’opzione non è disponibile. |
-u | Utilizzo della modalità UDP (al posto di quella TCP) |
-U (gateway) | Netcat utilizza il protocollo Unix Domain Sockets (GNU-Netcat) |
-v | Informazioni dettagliate (è ad esempio responsabile per la visualizzazione e l’estensione delle notifiche di errore) |
-w (secs) | Imposta il tempo di timeout dopo il quale terminare la connessione (unità:secondi) |
-z | Modalità postscanner: (modalità zero-I/O; scansione solo per servizi di ascolto (senza invio di dati) |
Un esempio semplice di applicazione 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 trasmissione di dati nella rete, bisogna prestare attenzione 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 caratteristiche usate più spesso con Netcat è la copia di file che consente di trasmettere anche grandi quantità di dati, partizioni singole o interi dischi rigidi clonati. Nel nostro esempio, il file filediprova.txt dovrà essere copiato attraverso la porta 6790 dal computer A (client) al computer B (server). A tal fine occorre seguire i passaggi seguenti:
- Comunicate l’indirizzo IP del computer B (PC target)
- Aprite il file di testo filediprova.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 destinatario B il file copiato andrà a finire sempre nella cartella di Netcat (altri percorsi di file devono essere adeguati di conseguenza).
- Digitate la sintassi di Netcat nella riga di comando
Computer B (agisce come server destinatario)
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 trasferimento non viene però confermato nel prompt dei comandi. Basta controllare nella directory del computer destinatario per verificare che il trasferimento sia andato a buon fine.
Effettuare il port scanning
Per rintracciare errori o problemi di sicurezza, si può effettuare 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 intervallo (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 collegamento con le porte”). L’opzione "-z” indica a Netcat di cercare esclusivamente servizi in ascolto e non inviare dati.
Aggiungendo l’opzione “-v”, riceverete informazioni più precise per lo scan:
nc -v -w 2 -z 192.168.11.1 1-1024
Se trova una porta aperta, Netcat lo comunicherà con la notifica “succeeded!”
Connection to 192.168.11.1 25 port [tcp/smtp] succeeded!
Sulle porte 1-1024 scansionate 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 collegamento TCP o UDP tra due computer e aprire un canale di comunicazione. Nell’esempio seguente il destinatario è installato su un sistema remoto distante e impostato nella modalità listening. Agisce allora come parte “in ascolto” utilizzando la porta 1605 per ricevere i messaggi. È raggiungibile all’indirizzo IP 192.168.11.1:
nc -l -p 1605
ENTER
Il computer locale (PC mittente) stabilisce un collegamento con il destinatario dei messaggi tramite il comando seguente:
nc 192.168.11.1 1605
ENTER
Se la connessione è 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 originario non è più raggiungibile per problemi tecnici, si può reagire almeno alle richieste con una notifica di errore preimpostata (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 notificadierrore.html. L’opzione “-L” permette di mantenere il processo di Netcat per più di una richiesta singola. Il parametro “-w” termina il collegamento dopo 10 secondi (timeout). Il parametro “-v” fornisce al provider del server informazioni sulle richieste e documenta attraverso messaggi il sistema operativo e il tipo di browser del computer del client che effettua la richiesta.
Netcat rappresenta un rischio per la sicurezza?
Sicuramente Netcat è uno strumento universale nella rete e può svolgere tanti compiti utili. Perciò non c’è affatto da meravigliarsi se è particolarmente amato in particolare dagli amministratori di rete e di sistema, considerando soprattutto la relativa semplicità di creazione di codice Netcat dopo una certa formazione.
Attenti a non sottovalutare l’altra faccia della medaglia: Netcat è anche uno strumento per gli hacker, in quanto si adatta allo spionaggio 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 attraverso una compilazione speciale, permette di eseguire l’opzione “-e”.
Con la -e nel codice si può avviare un’interfaccia interattiva (backdoor shell) su un computer remoto. Chi riesce ad accedere liberamente al cmd.exe di Windows può provocare danni notevoli. Attraverso una backdoor shell si possono caricare anche altri malware. Spesso, nel codice, gli hacker utilizzano anche il parametro di Netcat “-d” che rende l’utilità della riga di comando invisibile all’utente, permettendo agli hacker di agire in background e provocare danni a distanza.
Per evitare versioni hackerate, bisognerebbe scaricare Netcat esclusivamente da fonti sicure su Internet. In particolare gli esperti di sicurezza consigliano di valutare in modo preciso se uno strumento come Netcat debba trovarsi nell’installazione di sistemi (in particolare di sistemi front end).
Un altro rischio per la sicurezza è rappresentato dal fatto che Netcat trasmette i file principalmente in forma leggibile non codificata. Perciò lo strumento andrebbe utilizzato solo per le reti particolarmente sicure o, ancora meglio, separate da internet. Per il trasferimento di dati su internet è più adatto Cryptcat, successore di Netcat, che codifica i dati. Per la trasmissione di dati importanti per la sicurezza, si possono crittografare le connessioni anche tramite SSH.
I vantaggi e i rischi possibili rendono evidente che Netcat è uno strumento adatto esclusivamente ai responsabili IT, agli utenti esperti e agli amministratori di sistemi. Chi ne conosce i vantaggi può approfittare della versatilità e dell’efficienza di questo strumento di amministrazione remota. Se si è in grado di valutare i pericoli per la sicurezza della propria rete e di definirli con precisione, sarà possibile prevenire gli attacchi informatici o per lo meno tenerne sotto controllo i danni.
Per di più questo strumento, nato più di 20 anni fa negli ambienti hacker, oggi è considerato già datato e in parte anche superato. Ora esistono strumenti migliori per svolgere diversi compiti in rete. Accanto a Cryptcat bisogna menzionare anche Socat, che oltre al TCP e UDC può usare anche il protocollo di rete SCTP, lavora con i proxy server e supporta la crittografia. Inoltre, proprio come Netcat, funziona su tutte le piattaforme comuni.
Eppure, poiché è prima di tutto un tuttofare semplice e veloce da installare, 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 amministrazione remota Netsh, offre numerose possibilità in più per una diagnosi e un’amministrazione efficiente della rete.