Come utilizzare lo strumento di rete netcat

Sommario

In questo tutorial parleremo di a strumento di rete Netcat molto potente, comunemente abbreviato in nc. Questo strumento viene utilizzato tramite la riga di comando e la sua sintassi è molto semplice. Ci consentirà di scrivere e ricevere dati tramite socket (TCP o UDP). Ha molte caratteristiche e quindi possiamo usarlo in molti modi. È importante conoscerne il funzionamento, poiché ci consentirà di eseguire il debug, testare e indagare sulla rete.

Netcat può funzionare in 2 modalità:

ClienteIn questa modalità sarà responsabile della connessione con l'ascoltatore (che è in ascolto a un indirizzo e IP specifici e che dovremo conoscere).

Server o ascoltatoreAttendi le connessioni dai client su una determinata porta.

Stiamo andando a scopri come funziona Netcat o nc attraverso esempi pratici, che è il modo migliore per imparare. Per questo userò il sistema operativo Ubuntu 16.04.

La prima cosa che vedremo è la sintassi di netcat:

 nc [opzioni] [destinazione] [porta]
Netcat hai molte opzioni, vediamone alcune:

Alcune opzioni netcar

  • -l: Dice a netcat di ascoltare.
  • -P: Per indicare il porto di provenienza.
  • -S: Per indicare l'indirizzo di origine.
  • -K: Per consentire connessioni "infinite" all'ascoltatore (utilizzato con -l).
  • -o: Netcat apre la porta come UDP invece di TCP (che è per impostazione predefinita).
  • -v: Con questa opzione ci mostrerà le informazioni sulla connessione.
  • -io: Per indicare il ritardo per l'invio e la ricezione. (In secondi).
  • -4: consente a Netcat di utilizzare solo IPv4.
  • -6: Come il precedente ma obbliga a usare IPv6.

Ci sono più opzioni che possiamo vedere eseguendo il seguente comando:

 nc -h
Di seguito puoi vedere nella foto:

Inizieremo con gli esempi, i più semplici andranno per primi, per complicarli, ma solo un po', vedrai che è molto facile da usare.

Esempio 1
Metti la mia macchina in ascolto sulla porta 87:

 sudo nc -l -p 87
NotaFunzionerebbe allo stesso modo rimuovendo -P.

Ora stabiliremo una connessione da un altro terminale, poiché lo eseguo sulla stessa macchina, utilizzo localhost come indirizzo:

 nc localhost 87
Se scriviamo qualcosa dal client che abbiamo appena aperto, lo vedremo anche nel terminale che sta ascoltando, e quindi verificheremo che la connessione funzioni correttamente. Ma se scriviamo al listener, il primo terminale, raggiunge anche il client. Successivamente lascio un'immagine dell'ascoltatore e un'altra del cliente:

Vediamo che comunicano come volevamo in questo esempio, andiamo per un altro.

Esempio 2
Possiamo far salvare al server o al listener i dati inviati dal client in un file, per questo il comando da eseguire non differisce molto da quello visto nel primo esempio:

 sudo nc -l 87> test
Notatest è il nome del file in cui salverai le informazioni che arrivano.

Sul lato client il comando sarà lo stesso di prima:

 nc localhost 87
L'immagine seguente mostra cosa viene eseguito sul client (l'ascoltatore è in ascolto prima di connettersi, altrimenti non avrebbe alcun effetto):

E lato server possiamo vedere che apparentemente non viene ricevuto nulla, ma l'unica certezza è che non viene visualizzato sullo schermo e viene salvato nel file di test:

Continuiamo con un altro esempio.

Esempio 3
Verificheremo se un intervallo di porte, per sapere se sono aperte o meno, in questo esempio l'intervallo sarà 80-90. Per prima cosa apriamo un server sulla porta 80 come abbiamo fatto nel primo esempio (quindi vedremo come funziona quando è aperto e quando non lo è):

 sudo nc -l 87
E sul client eseguiremo:
 nc -z -v localhost 80-90
Parametro -z viene utilizzato per la scansione e il -v Come abbiamo visto prima per mostrare le informazioni (se non lo mettiamo, non mostrerà quale porta è aperta e quale no), quindi l'immagine del client:

Vedremo un esempio in UDP.

Esempio 4
Anche questo esempio è semplice, ascolteremo UDP sulla porta 2016 e lo forzeremo a essere un indirizzo IPv4:

 sudo nc -l -u -4 2016
E ora facciamo connettere il client:
 nc -u -4 2016
Non fornisco un'immagine, poiché la cattura sarà la stessa dell'esempio 1, cambiando ovviamente la parte del comando. Passiamo a un esempio in cui utilizziamo codice Python.

Esempio 5
Metteremo un codice il più semplice possibile in Python in modo che ascolti una connessione, riceva dati e termini.

 import socket s = socket.socket () s.bind (("192.168.56.1", 1987)) s.listen (1) conn, addr = s.accept () data = conn.recv (1024) .decode (" utf-8") stampa (dati) 
Eseguirò questo codice su Windows e poi da Linux mi collegherò ad esso tramite netcat, l'immagine seguente mostra il lato client su Linux:

E come sarebbe su Windows:

Se modifichiamo qualcosa al codice, possiamo fargli eseguire un comando e inviarci il suo contenuto, ma possiamo anche restituire una shell, che ci permetterà di fare molte cose, quindi passiamo al prossimo esempio.

Esempio 6
In questo esempio ho intenzione di eseguire un codice pitone Sulla stessa macchina Linux, e mi collegherò con netcat, controlleremo che una Shell (/bin/bash) ci restituisca. Di seguito lascio il codice Python, il più semplice e breve possibile, solo per l'esempio.

 import socket, subprocess s = socket.socket (socket.AF_INET) s.setsockopt (socket.IPPROTO_IP, socket.SO_REUSEADDR, 1) s.bind (("", 1987)) s.listen (1) conn, addr = s .accept() p = subprocess.Popen (["/ bin / bash"], stdin = conn, stdout = conn, stder = conn) 
Il codice Python viene eseguito e si vede quanto segue (l'immagine mostra come appare quando ci si connette da netcat):

Vediamo che ascolta quando lo eseguiamo, ma quando un client si connette, la connessione si chiude e abbiamo una Shell per noi.

Potremmo anche fare un codice che si colleghi alla nostra macchina, che lo metteremo in ascolto su una certa porta, in generale ci sono molte possibilità, ora devi indagare e "giocare" con netcat, che come hai visto può aiutare noi in tanti momenti.

Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave