Il ncat
comando fa parte della suite nmap ed è stato scritto appositamente per esso. È vero che ncat
ha tanti usi quanto il famoso coltellino svizzero, ma può essere altrettanto pericoloso se usato in modo errato o se usato da attori malintenzionati. Uno dei suoi punti di forza è che ncat
può essere sia client che server. Questo articolo si concentra su un aspetto di quella relazione. Ti mostro come aprire una shell bash in ascolto con ncat
a cui chiunque può accedere con ncat
come cliente. Nel mio articolo, Risoluzione dei problemi di Linux:configurazione di un listener TCP con ncat, descrivo come configurare ncat
come listener o server in ascolto su una porta specifica. Questo esempio è simile, ma penso che rimarrai colpito dalla potenza assoluta di ncat
ti dà. Dovrebbe anche spaventarti, molto.
Installa ncat
Controlla il tuo sistema in /usr/bin
prima per vedere se è necessario installare ncat
. In genere è incluso in qualsiasi distribuzione basata su Red Hat Enterprise Linux. Se trovi che devi installarlo, il nome del pacchetto è nmap-ncat
. Puoi installare ncat
da solo o installa nmap
e il nmap-ncat
il pacchetto viene installato come dipendenza.
Usa ncat
Non emettere ncat
comandi come root, specialmente per gli esempi in questo articolo. Ciò consentirà a chiunque di avere l'accesso come root al tuo sistema senza autenticazione. Qualsiasi utente può emettere ncat
comandi, che è una delle sue caratteristiche oltre che uno dei suoi pericoli. Ti suggerisco di creare un account di servizio e lavorare con ncat
utilizzando quell'account. Credimi, ho sentito ogni argomento a favore e contro gli account di servizio, ma una volta che vedi ncat
in azione, ti consigliamo di utilizzare l'account di servizio per le interazioni con esso.
Consegna una shell bash
Questa è la parte divertente (e pericolosa) dell'utilizzo di ncat
. Passa l'utente al tuo nuovo account di servizio. Ho chiamato il mio schivo .
[ken@server1 ~] $ su - bashful
Password:
[bashful@server1 ~] $
Ora che hai cambiato account utente, è ora di aprire quella shell. Dà accesso non autenticato al tuo sistema tramite una shell per lo più interattiva. Vedrai cosa intendo per "principalmente" interattivo una volta che ti connetti. Il prossimo comando usa ncat
per eseguire una shell bash in ascolto su una porta TCP. Per questo esempio, sto usando la porta 9922 sul server1 (192.168.1.50). Il -l
l'opzione imposta una porta di ascolto. Il -k
opzione è un flag keepalive, che mantiene il socket. Se non emetti il -k
opzione, il socket si interrompe dopo aver disconnesso la sessione e non è possibile effettuare altre connessioni.
[bashful@server1 ~] $ ncat -e "/bin/bash" -l 9922 -k &
Il -e
opzione esegue il comando tra virgolette, che nel nostro caso è la shell bash (/bin/bash
). Uso la e commerciale (&
) dopo il comando per rilasciare il mio prompt e inserire il ncat
ascoltatore in modalità background. Se non usi il &
, il tuo terminale si "bloccherà" e non ti permetterà di interagire con esso. Se questo non è un problema per te, lascialo così com'è.
Emissione del netstat
comando mostra che l'ascoltatore è a posto.
[bashful@server1 ~]$ netstat -an |grep 9922
tcp 0 0 0.0.0.0:9922 0.0.0.0:* LISTEN
tcp6 0 0 :::9922 :::* LISTEN
[bashful@server1 ~]$
Per connetterti alla porta di ascolto da un sistema remoto, devi anche aprire un'eccezione nel firewall basato su host per la porta 9922.
[ken@server1 ~]$ sudo firewall-cmd --add-port=9922/tcp
success
Vedi il failsafe qui? È l'eccezione del firewall che ho dovuto creare usando il mio account e sudo
. Se hai un firewall basato su host o IPTables in esecuzione (e faresti meglio a farlo), allora questo servizio non funzionerà finché non consentirai quella porta, il che significa che nessun utente ordinario può farlo funzionare senza accesso amministrativo. Altrimenti, gli utenti istruiti da ncat aprirebbero porte ovunque e ti farebbero impazzire nel processo. Per non parlare dei problemi di sicurezza che avresti. Sto divagando.
Accedi alla shell da un sistema remoto
Ora puoi accedere alla shell bash da un sistema remoto sulla porta 9922.
[ken@server2 ~]$ ncat 192.168.1.50 9922
Da server2 , emetti il ncat
comando con l'indirizzo IP di destinazione di server1 e la porta di ascolto 9922. Una volta connesso, non succede nulla, o almeno così potresti credere perché il terminale sembra bloccarsi. Ma quello che sta realmente accadendo è che stai comunicando con il socket grezzo e quindi non vedrai un prompt. Dimostralo emettendo il who
comando.
[ken@server2 ~]$ ncat 192.168.1.50 9922
who
ken pts/0 2020-08-26 13:39 (server2)
Puoi impartire qualsiasi comando desideri a quell'utente schivo ha accesso a. Se emetti un comando che richiede l'accesso come root, probabilmente non vedrai una risposta. Il terminale sembrerà rimanere nello stato "appeso". La tua risposta apparirà effettivamente sul terminale di server1 . Ad esempio, se immetti il seguente comando:
firewall-cmd --list-all
Non vedi nulla su server2 lo schermo. Su server1 schermata di , appare quanto segue:
[bashful@server1 ~]$ Authorization failed.
Make sure polkit agent is running or run the application as superuser.
Per disconnettersi dal server2 shell clandestina di, emetti Ctrl+C combinazione e il tuo prompt locale ritorna.
Non provarlo al lavoro
Solo per divertimento, o se non mi credi, uccidi l'attuale ncat
processo utilizzando il tuo account di servizio o come root. Quindi emettere nuovamente lo stesso comando dell'utente root per eseguire quella shell bash come root. Connettiti di nuovo da un sistema remoto ed emetti nuovamente il comando del firewall. Questa volta vedrai i risultati. Puoi inviare qualsiasi comando come root, motivo per cui non vuoi mai configurare questo tipo di servizio come utente root.
E ora vedi il vero pericolo di usare ncat
come radice. Gli attori malintenzionati installeranno una tale shell su una porta clandestina che non è stata rilevata da una scansione delle porte e avranno accesso root completo senza autenticazione.
Concludi
L'utilissimo e potenzialmente molto pericoloso ncat
il comando è il tuo migliore amico e il tuo peggior nemico. Come ogni altro strumento nel capannone, non ha intento diverso da quello che gli dai. Dovresti studiare ncat
comando, i suoi usi e le sue limitazioni nel tuo ambiente. Ricordati di uccidere qualsiasi ncat
processo che non si desidera eseguire continuamente una volta terminato e rimuovere l'eccezione del firewall che ne consente l'accesso. Inoltre, ricorda che con un grande potere deriva la capacità di rovinare davvero le cose.
[ Vuoi testare le tue capacità di amministratore di sistema? Fai una valutazione delle abilità oggi. ]