Cos'è una shell inversa?
Sommario
- Cos'è una conchiglia
- Che cos'è un guscio inverso
- Perché gli aggressori/hacker hanno bisogno di una shell inversa
- Differenza tra attaccare su WAN e LAN
- impedendo il guscio inverso
Innanzitutto, dobbiamo sapere cos'è una shell prima di passare alla shell inversa. È un guscio come quello sul dorso di una tartaruga? non è così, ma è chiamato shell perché è lo strato più esterno attorno al sistema operativo. Cosa fa una conchiglia? Una shell è un programma che traduce i nostri comandi nel sistema operativo. Questa è un'interfaccia tra il sistema operativo e un utente. Prende l'input che è comandi o parole chiave dalla tastiera e lo dà al sistema operativo, e il terminale/CLI (interfaccia della riga di comando) ti consente di digitare comandi e interagire con la shell. Ci sono pensieri più profondi sulla shell, ma non li esporrò poiché questo blog si concentrerà principalmente sulla shell inversa.
Cos'è una shell inversa?
Scommetto che hai sentito parlare molto di questo termine nei video tutorial e nei CTF, ma non ne conosci ancora il significato. Questo è il posto giusto per te. Il significato di una shell inversa è nel nome. Fa l'opposto di ciò che fa una normale connessione remota: l'utente che è un client che connette il server che è principalmente un bersaglio per gli aggressori. Il server ascolta le connessioni degli utenti su porte specifiche. Ad esempio, un server Web ascolterà sulla porta 443 per la connessione in entrata in modo che possa fornire il servizio che l'utente desidera, ovvero un sito Web. In che modo la shell inversa lo fa al contrario? nei casi di shell inversa, il server avvia una connessione remota e l'utente che è un utente malintenzionato ascolterà sulla porta a cui il server tenterà di connettersi. Ad esempio, un payload della shell inversa viene iniettato nel server web. In quel carico utile, potresti vedere l'indirizzo IP del tuo laptop o PC e il numero di porta a cui desideri connettere il server. diciamo 192.168.1.1 e la porta è 4444 nel payload. Prima ancora di iniettare il payload, dovrai ascoltare su quella porta utilizzando strumenti come Netcat. Dopo averlo iniettato, otterrai la connessione dal server al tuo dispositivo.
Perché gli aggressori hanno bisogno di una shell inversa?
Perché gli aggressori ne hanno bisogno? In generale, è a causa del firewall. Il firewall limita il traffico in entrata inviato dall'attaccante al server, ma non limita il traffico in uscita che il server invia agli utenti/aggressori. I server attaccati di solito consentono connessioni solo su porte specifiche. Ad esempio, un server Web dedicato accetterà solo connessioni sulle porte 80 e 443. Ciò significa che non è possibile stabilire uno shell listener sul server attaccato.
D'altra parte, i firewall di solito non limitano affatto le connessioni in uscita. Pertanto, un utente malintenzionato può creare la connessione inversa impostando il listener e in questo caso il server agirà come un utente, quindi invierà il traffico all'utente malintenzionato. Tutto ciò di cui l'attaccante ha bisogno è una macchina che abbia l'indirizzo IP e uno strumento come Netcat per creare il listener e vincolare l'accesso shell ad esso.
Differenza tra attaccare su WAN e LAN
Stabilire la shell inversa sulla LAN è piuttosto semplice. Hai solo bisogno di conoscere il tuo indirizzo IP privato e l'indirizzo IP privato della vittima. Diciamo che sei nella rete 192.168.1.0 e il tuo indirizzo IP è 192.168.1.10; l'indirizzo IP della vittima è 192.168.1.20. Ora otterrai la connessione iniettando un payload con il tuo indirizzo IP e la porta a cui vuoi che la vittima si connetta.
Che ne dici di WAN? È qui che diventa un po 'complicato. Quello che dobbiamo fare è sostituire il nostro IP privato con IP pubblico che puoi trovare su google cercando così: “qual è il mio indirizzo IP pubblico”. Abbiamo finito qui? Non proprio, ma siamo un passo avanti. Diciamo che hai già un modo o trovi una vulnerabilità per iniettare un payload di reverse shell nel server. Il server vittima/attaccato proverà a connettersi al tuo indirizzo IP pubblico perché hai inserito il tuo IP pubblico nel tuo payload. La richiesta inviata dalla vittima arriverà al tuo router prima del tuo ascoltatore sulla tua macchina. Il router deve sapere dove inoltrare tale richiesta ai dispositivi connessi al router. Può essere fatto abilitando il Port Forwarding sul tuo router,
Questo attacco ha un carico di lavoro inferiore se il tuo indirizzo IP pubblico è statico, il che non è necessario e non comune. L'IP pubblico per il tuo router fornito dal tuo ISP può o non può essere statico. L'indirizzo IP dinamico è ciò che di solito abbiamo in comune con l'IP pubblico. IP dinamico significa che il tuo IP pubblico cambierà ogni volta che ristabilisci la connessione a Internet (riavvio del router, ecc.). In questo caso, il tuo precedente IP scritto nel payload è inutile. Ma ci sono ancora modi più creativi e altri modi per farlo in modo diverso da questo metodo.
ecco un cheat sheet della shell inversa per tutti voi.
Come prevenirlo?
Il modo migliore per evitare le shell inverse è proteggersi dagli attacchi che consentono agli impostori di ottenere l'accesso alla shell in primo luogo. Puoi disabilitare la maggior parte degli strumenti che consentono di creare una shell inversa. Come puoi vedere sopra dal cheat sheet, le shell inverse possono essere create utilizzando diversi strumenti e linguaggi. Pertanto, potresti renderlo più difficile per l'attaccante, ma non impossibile.
Riferimento
Collaboratori di Wikipedia. (2022, 18 ottobre). codice shell . Wikipedia.https://en.wikipedia.org/wiki/Shellcode
Nidecki. (2019, 26 agosto). Che cos'è una shell inversa . Acunetix.https://www.acunetix.com/blog/web-security-zone/what-is-reverse-shell/
Geek per Geek. (2022, 27 settembre). Differenza tra Bind Shell e Reverse Shellhttps://www.geeksforgeeks.org/difference-between-bind-shell-and-reverse-shell/

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































