androide

Comando Netcat (nc) con esempi

[RETE] - Corto #33 Mettere in ascolto una porta tcp senza applicazione o server

[RETE] - Corto #33 Mettere in ascolto una porta tcp senza applicazione o server

Sommario:

Anonim

Netcat (o nc) è un'utilità della riga di comando che legge e scrive i dati attraverso le connessioni di rete, utilizzando i protocolli TCP o UDP. È uno degli strumenti più potenti della rete e dell'arsenale degli amministratori di sistema ed è considerato un coltellino svizzero di strumenti di rete.

Netcat è multipiattaforma ed è disponibile per Linux, macOS, Windows e BSD. È possibile utilizzare Netcat per eseguire il debug e monitorare le connessioni di rete, cercare porte aperte, trasferire dati, come proxy e altro. Il pacchetto Netcat è preinstallato su macOS e distribuzioni Linux popolari come Ubuntu.

Sintassi Netcat

La sintassi più semplice dell'utilità Netcat ha la forma seguente:

nc host port

Su Ubuntu, puoi usare netcat o nc . Sono entrambi collegamenti simbolici alla versione openBSD di Netcat.

Per impostazione predefinita, Netcat tenterà di avviare una connessione TCP all'host e alla porta specificati. Se desideri stabilire una connessione UDP, usa l'opzione -u :

nc -u host port

Scansione delle porte

Scansione delle porte è uno degli usi più comuni per Netcat. È possibile eseguire la scansione di una singola porta o di un intervallo di porte.

Ad esempio, per cercare porte aperte nell'intervallo 20-80, utilizzare il comando seguente:

nc -z -v 10.10.8.8 20-80

L'opzione -z dirà a nc di cercare solo le porte aperte, senza inviare loro alcun dato e l'opzione -v per fornire informazioni più dettagliate.

L'output sarà simile al seguente:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused Connection to 10.10.8.8 22 port succeeded! nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused… nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused Connection to 10.10.8.8 80 port succeeded!

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded

Connection to 10.10.8.8 22 port succeeded! Connection to 10.10.8.8 80 port succeeded!

È inoltre possibile utilizzare Netcat per trovare il software del server e la sua versione. Ad esempio, se si invia un comando "EXIT" al server sulla porta SSH predefinita 22:

echo "EXIT" | nc 10.10.8.8 22

L'output sarà simile al seguente:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4 Protocol mismatch.

Per cercare le porte UDP è sufficiente aggiungere l'opzione -u al comando come mostrato di seguito:

nc -z -v -u 10.10.8.8 20-80

Nella maggior parte dei casi, Nmap è uno strumento migliore di Netcat per la scansione di porte complesse.

Invio di file tramite Netcat

Netcat può essere utilizzato per trasferire dati da un host a un altro creando un modello client / server di base.

Funziona impostando Netcat per l'ascolto su una porta specifica (usando l'opzione -l ) sull'host ricevente e quindi stabilendo una normale connessione TCP dall'altro host e inviando il file su di esso.

Alla ricezione eseguire il comando seguente che aprirà la porta 5555 per la connessione in entrata e reindirizzerà l'output al file:

nc -l 5555 > file_name

Dall'host di invio connettersi all'host di ricezione e inviare il file:

nc receiving.host.com 5555 < file_name

Per trasferire una directory è possibile utilizzare tar per archiviare la directory sull'host di origine ed estrarre l'archivio sull'host di destinazione.

Sull'host ricevente impostare lo strumento Netcat per l'ascolto di una connessione in entrata sulla porta 5555. I dati in arrivo vengono reindirizzati al comando tar che estrae l'archivio:

nc -l 5555 | tar xzvf -

Sull'host mittente comprimere la directory e inviare i dati connettendosi al processo di ascolto nc sull'host ricevente:

tar czvf - /path/to/dir | nc receiving.host.com 5555

Puoi vedere l'avanzamento del trasferimento su entrambe le estremità. Una volta completato, digitare CTRL+C per chiudere la connessione.

Creazione di un server di chat semplice

La procedura per la creazione di una chat online tra due o più host è la stessa del trasferimento di file.

Sul primo host avviare un processo Netcat per l'ascolto sulla porta 5555:

nc -l 5555

Dal secondo host, eseguire il comando seguente per connettersi alla porta di ascolto:

nc first.host.com 5555

Ora se si digita un messaggio e si preme ENTER questo verrà mostrato su entrambi gli host.

Per chiudere la connessione, digitare CTRL+C

Esecuzione di una richiesta HTTP

Sebbene esistano strumenti molto migliori per le richieste HTTP come l'arricciatura, è anche possibile utilizzare Netcat per inviare varie richieste ai server remoti.

Ad esempio, per recuperare la pagina man Netcat dal sito Web OpenBSD, digitare:

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

La risposta completa, comprese le intestazioni HTTP e il codice HTML, verrà stampata nel terminale.

Conclusione

In questa esercitazione, è stato appreso come utilizzare l'utilità Netcat per stabilire e testare connessioni TCP e UDP.

Per maggiori informazioni visita la pagina man di Netcat e leggi tutte le altre potenti opzioni del comando Netcat.

terminale netcat