# 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](https://www.ionos.it/digitalguide/server/know-how/presentazione-dei-protocolli-tcpip/ "Presentazione dei protocolli TCP/IP") e [UDP](https://www.ionos.it/digitalguide/server/know-how/udp-user-datagram-protocol/ "UDP - User Datagram Protocol"). 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.**

## 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:

1. Premete la combinazione di tasti \[Windows\] + \[R\]
2. Digitate “cmd” (1) nel box di ricerca
3. Premete il tasto OK (2)

[![Immagine: Avvio del prompt dei comandi dalla finestra di dialogo “Esegui”](https://www.ionos.it/digitalguide/fileadmin/_processed_/e/d/csm_netcat-1_b81562a44f.webp "Avvio del prompt dei comandi dalla finestra di dialogo “Esegui”")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/netcat-1.png) Avvio della riga di comando per l’inserimento dei comandi di Netcat.       Infine si aprirà il *cmd.exe* che apparirà così:

[![Immagine: Schermata principale del prompt dei comandi](https://www.ionos.it/digitalguide/fileadmin/_processed_/3/0/csm_netcat-2_545779cf02.webp "Schermata principale del prompt dei comandi")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/netcat-2.png) Schermata principale del prompt dei comandi; “USERNAME” è un carattere jolly: in quella posizione di solito si trova il nome utente dell’account attivo.       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:

```none
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:

[![Immagine: Modifica di directory nella riga di comando](https://www.ionos.it/digitalguide/fileadmin/_processed_/d/6/csm_netcat-3_c2c956f2f7.webp "Modifica di directory nella riga di comando")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/netcat-3.png) Modifica di directory di Netcat digitando il comando “cd”.       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:

1. Cliccate con il tasto destro del mouse sull’icona di Windows nella barra delle applicazioni oppure premete la combinazione di tasti \[Windows\] + \[X\]
2. Nel menu contestuale selezionate la voce “Windows PowerShell (amministratore)”:

[![Immagine: Avvio di Netcat con diritti da amministratore](https://www.ionos.it/digitalguide/fileadmin/_processed_/3/3/csm_netcat-4_72604693e5.webp "Avvio di Netcat con diritti da amministratore")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/netcat-4.png) Apertura del prompt dei comandi con diritti da amministratore attraverso il menu contestuale della barra delle applicazioni di Windows.       ---

### N.B.

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:

<table>
  <tbody>
    <tr>
      <td><strong>Opzioni</strong></td>
      <td><strong>Descrizione</strong></td>
    </tr>
    <tr>
      <td>-4</td>
      <td>Forza l’utilizzo dell’IPv4 (GNU-Netcat)</td>
    </tr>
    <tr>
      <td>-6</td>
      <td>Forza l’utilizzo dell’IPv6 (GNU-Netcat)</td>
    </tr>
    <tr>
      <td>-d</td>
      <td>Rimuove Netcat dalla console (operazione in background; disponibile con Windows e con le versioni aggiornate di GNU-Netcat)</td>
    </tr>
    <tr>
      <td>-D</td>
      <td>Abilita le opzioni per il debugging di sockets (GNU-Netcat)</td>
    </tr>
    <tr>
      <td>-h (display help)</td>
      <td>Mostra la guida (comandi/opzioni con breve descrizione)</td>
    </tr>
    <tr>
      <td>-i (secs)</td>
      <td>Ritardo in secondi per le righe inviate o le port scansionate</td>
    </tr>
    <tr>
      <td>-k</td>
      <td>Netcat attende una nuova connessione dopo la fine della precedente (possibile solo con GNU-Netcat e solo in combinazione con “-l”)</td>
    </tr>
    <tr>
      <td>-l (listen mode)</td>
      <td>Modalità ascolto/listen e server per le richieste di connessione in entrata (attraverso la porta specificata)</td>
    </tr>
    <tr>
      <td>-L Listen harder</td>
      <td>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)</td>
    </tr>
    <tr>
      <td>-n (numeric-only)</td>
      <td>Solo indirizzo IP numerico senza nome DNS</td>
    </tr>
    <tr>
      <td>-o (file)</td>
      <td>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</td>
    </tr>
    <tr>
      <td>-p (port)</td>
      <td>Indica a Netcat la porta locale da utilizzare per le connessioni in uscita</td>
    </tr>
    <tr>
      <td>-r</td>
      <td>Utilizza porte casuali per la scansione (per porte locali e remote)</td>
    </tr>
    <tr>
      <td>-s (adress)</td>
      <td>Imposta l’indirizzo sorgente utilizzato (indirizzo IP o nome)</td>
    </tr>
    <tr>
      <td>-t</td>
      <td>Comunicazione Telnet (permette ad esempio al server di comunicare tramite Telnet); richiede una compilazione particolare da parte di Netcat, altrimenti l’opzione non è disponibile.</td>
    </tr>
    <tr>
      <td>-u</td>
      <td>Utilizzo della modalità UDP (al posto di quella TCP)</td>
    </tr>
    <tr>
      <td>-U (gateway)</td>
      <td>Netcat utilizza il protocollo Unix Domain Sockets (GNU-Netcat)</td>
    </tr>
    <tr>
      <td>-v</td>
      <td>Informazioni dettagliate (è ad esempio responsabile per la visualizzazione e l’estensione delle notifiche di errore)</td>
    </tr>
    <tr>
      <td>-w (secs)</td>
      <td>Imposta il tempo di timeout dopo il quale terminare la connessione (unità:secondi)</td>
    </tr>
    <tr>
      <td>-z</td>
      <td>Modalità postscanner: (modalità zero-I/O; scansione solo per servizi di ascolto (senza invio di dati)</td>
    </tr>
  </tbody>
</table>

Un esempio semplice di applicazione di sintassi di Netcat è la richiesta della guida con il parametro “-h”:

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

[![Immagine: Lancio della guida di Netcat](https://www.ionos.it/digitalguide/fileadmin/_processed_/7/3/csm_netcat-5_a109c6c588.webp "Lancio della guida di Netcat")](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/Screenshots_2020/netcat-5.png) Con la richiesta della guida nel prompt dei comandi di Windows si otterrà un elenco di tutte le opzioni di Netcat disponibili.       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):

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

Modalità server (listen for inbound):

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

Lo schema di base per **eseguire un port scanning** è:

```none
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:

1. Comunicate l’indirizzo IP del computer B (PC target)
2. **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).
3. Digitate la sintassi di Netcat nella riga di comando

Computer B (agisce come server destinatario)

```none
nc -l -p 6790 > filediprova.txt
ENTER
```

Computer A (agisce come client del mittente)

```none
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.

```none
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:

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

Se trova una porta aperta, Netcat lo comunicherà con la notifica “succeeded!”

```none
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*:

```none
nc -l -p 1605
ENTER
```

Il computer locale (PC mittente) stabilisce un **collegamento con il destinatario dei messaggi** tramite il comando seguente:

```none
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):

```none
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](https://www.ionos.it/digitalguide/server/sicurezza/riconoscere-e-rimuovere-i-malware/ "Riconoscere e rimuovere i 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](https://www.ionos.it/digitalguide/server/tools-o-strumenti/ssh/ "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](https://www.ionos.it/digitalguide/server/know-how/sctp/ "SCTP"), lavora con i [proxy server](https://www.ionos.it/digitalguide/server/know-how/che-cose-un-proxy/ "Che cos’è un proxy?") 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.


This is a markdown version of: [https://www.ionos.it/digitalguide/server/tools-o-strumenti/netcat/](https://www.ionos.it/digitalguide/server/tools-o-strumenti/netcat/) for AI/LLM consumption.