Nel mondo dell’informatica odierna il dibattito tra ciò che etico e ciò che rappresenta una minaccia criminale, è costantemente aperto.
Il punto cardine della questione è legato alle tecniche di hacking che possono essere sfruttate sia per condurre attacchi malevoli, che per verificare effettivamente la robustezza delle misure di sicurezza implementate nei sistemi informatici.

La distinzione principale tra i due gruppi di hacker solitamente è basata sui colori neutri: bianco per chi agisce in maniera benevola e nero per chi agisce con intenzioni malevole. Tuttavia, la prima possiede anche un altro nome: ethical hacking.

Reverse Shell e Blind Shell

Questo termine è spesso associato a due tecniche che vengono condotte sia per fini bianchi, che neri, ovvero bind shell e reverse shell.
La ragione dietro a questa idea è legata proprio alla loro efficacia sia per valutare la sicurezza di un’organizzazione, che per ottenere l’accesso remoto completo di un sistema preso di mira.

Tuttavia, per poterle comprendere appieno e avere un’idea completa della situazione, come sempre dobbiamo andare con ordine e trattare gli argomenti per gradi.

  1. Cosa si intende per ethical hacking?
  2. Due parole sulla shell
  3. Bind Shell
  4. Reverse Shell

Cosa si intende per ethical hacking?

Prima di discutere dell’argomento cardine di questo articolo, è doveroso fare un’introduzione al contesto in cui esse sono impiegate. Quando si parla di ethical hacking, si indica l’insieme delle attività di analisi di un sistema informatico che ha il preciso scopo di identificare i punti critici della sua sicurezza. Per valutare quest’ultima, un gruppo di hacker etici esegue una serie di simulazioni di attacco, definite azioni di red team, al fine di testare la sua robustezza. Quando queste giungono al termine, viene redatto un rapporto, in cui viene esposto dettagliatamente quanto si è scoperto.
In particolare sono indicati:

  • Numero di attacchi totali;
  • Numero di attacchi andati a segno;
  • Criticità individuate nella sicurezza del sistema informatico bersaglio;
  • Strumenti impiegati;

Gli hacker etici sono prima di tutto esperti di sicurezza informatica.
Sono molteplici i casi di freelance e semplici appassionati che scoprono falle e criticità nella sicurezza informatica di un’organizzazione, in quanto formatisi in proprio e spinti dalla loro passione per la branca.

Affinché le simulazioni di attacco vadano a segno, gli hacker etici pensano e ragionano esattamente come farebbero i cybercriminali. Gli strumenti e le strategie impiegate da ambedue le parti sono quasi sempre gli stessi. Ciò che cambia è il fine. Se il cybercriminale ha come obiettivo la compromissione e l’esfiltrazione dei dati, per l’hacker etico questo è la protezione dell’organizzazione che lo ha ingaggiato e la prevenzione dei furti.

Due parole sulla shell

Affinché si possa discutere delle tecniche di ethical hacking proposte, si deve introdurre lo strumento principale con cui queste vengono principalmente effettuate: la shell.

Nell’ambito informatico una shell è un’interfaccia che permette all’utente di interagire direttamente con il sistema operativo. Di fatto rappresenta un ponte di comunicazione tra l’essere umano e la macchina, in quanto interpreta i comandi che l’utente gli fornisce in input.

Tra gli esempi più noti di shell si ricordano:

  • Microsoft PowerShell (presente nei sistemi operativi Windows 10 e 11);
  • Prompt dei comandi o cmd.exe (presente nei sistemi operativi DOS e Windows NT);
  • Bash (presente sia nei sistemi operativi GNU/Linux, che in quelli Unix);
  • Debian Almquist Shell (presente in Debian e nei suoi derivati);

Bind Shell

Conosciuta anche come server-side shell, si tratta di una tecnica largamente impiegata sia nell’ambito dell’hacking criminale, che per scopi etici di penetration test.

Nello scenario tipico, una Bind Shell prevede l’apertura di una connessione da parte di un software malevolo sul computer della vittima.
In questo modo è possibile per l’attaccante accedere al sistema compromesso e prenderne il controllo.

Il concetto essenziale è che il sistema attaccante agisca come client, mentre quello vittima sia di fatto il server.
Affinché l’attacco vada in porto, è necessario che la macchina bersaglio possegga un indirizzo IP pubblico, altrimenti l’attaccante e l’host remoto dovrebbero trovarsi sulla stessa sottorete IP o su una sottorete direttamente instradata l’una verso l’altra senza alcuna forma di traduzione degli indirizzi tra loro (NAT).

Tale requisito esiste in quanto gli attori malevoli devono essere in grado di indirizzare il loro software malevolo direttamente all’indirizzo IP del sistema vittima, in modo da ottenere una risposta.

Vediamo nel dettaglio come funziona un attacco di tipo Bind Shell.

  1. Gli attori malevoli accedono al sistema preso di mira e vi iniettano un software malevolo. Solitamente questo avviene sfruttando vulnerabilità intrinseche o delle tecniche di ingegneria sociale.
  2. Il software iniettato apre una porta di rete e resta in ascolto. Solitamente quest’ultima è una nota e predefinita, come la 80 o la 443.
  3. Gli attaccanti si collegano alla porta aperta, sfruttando un software di connessione remota.
    Il più gettonato in questo caso è Netcat.
  4. Nel momento in cui la connessione di rete viene stabilita, gli attori malevoli ottengono l’accesso al prompt dei comandi o alla shell presente sul sistema della vittima.

Reverse Shell

La tecnica di Reverse Shell è l’esatto opposto di Bind Shell, in quanto si basa sullo stabilire una connessione di rete dal sistema vittima alla macchina dell’attaccante. Molto spesso gli attacchi sono eseguiti attraverso il protocollo TCP, sebbene siano documentati casi in cui si è fatto uso dei protocollo ICMP e UDP.

L’obiettivo principale del reverse shell è garantire all’attore malevolo il controllo remoto e incondizionato del sistema vittima, reindirizzando le connessioni in uscita dalla rete dell’host remoto. In tal modo chi compie l’attacco è in grado di appropriarsi dei dati sensibili, iniettare malware oppure, scalare la gerarchia dei privilegi amministrativi di sistema e di rete.

Come funziona un attacco Reverse Shell?

Proprio come accade per gli attacchi basati su shell, anche reverse shell prevede l’iniezione diretta di comandi vulnerabili.
Questi avvengono in tre fasi ben distinte:

  • Avvio della connessione;
  • Reverse shell;
  • Iniezione di comandi;

Vediamo nel dettaglio le fasi che portano alla sua esecuzione.

  1. Gli attori malevoli compromettono il sistema preso di mira con l’esecuzione di codice remoto che sfrutta le vulnerabilità intrinseche. Un esempio è l’inoltro di porte aperte, in quanto le regole di firewall sono più facilmente aggirabili se si conoscono le porte di rete aperte. Solitamente le più comuni sono la 80 e la 443, poiché aperte di default.
  2. Gli attaccanti effettuano il deploy di un payload, che stabilisce una connessione diretta tra la macchina della vittima e il loro sistema. Questo si mette in ascolto e in seguito accetta la richiesta, garantendo agli attori malevoli un accesso amministrativo. Poiché la connessione è in uscita, i meccanismi di sicurezza che rilevano solo le connessioni in entrata possono essere aggirati.
  3. In modo da preservare una certa persistenza all’interno del sistema, gli attaccanti aggirano il filtro di rete attraverso l’inoltro di porta.
    Tuttavia, questa non è l’unica via percorribile, in quanto solitamente sono impiegate come alternative i server proxy e le tecniche di tunneling per oscurare le origini della loro connessione. A ciò si aggiunge la crittografia, che ha lo scopo di nascondere le comunicazioni malevole e aggiungere un ulteriore handshake. In tal modo il flusso di comunicazione diviene ancora più difficile da rilevare.

Tra gli esempi pratici di reverse shell si citano:

  • Bash reverse shell: molto comune sui sistemi Unix-like, viene condotta con un singolo comando a riga unica, come ad esempio: /dev/tcp/attackers_ip/attackers_port;
  • Java reverse shell: questo tipo di attacco avviene stabilendo una connessione di socket al server degli attori malevoli. Viene condotto con l’implementazione della libreria java.net.Socket;
  • Perl reverse shell: in questa variante viene sfruttato il modulo IO::Socket, per stabilire una comunicazione bilaterale tra gli attaccanti e la vittima;
  • PHP reverse shell: questa variante prevede l’uso delle funzioni di socket del PHP, in modo da aprire una connessione tra il sistema vittima e quello degli attaccanti;

In conclusione

Bind Shell e Reverse Shell rappresentano il dualismo perfetto del mondo odierno: due facce della stessa medaglia, due tecniche che possono essere sfruttate sia per fini etici, e quindi benigni, che per fini criminali.

Poiché estremamente efficaci e relativamente semplici da attuare, non stupisce che siano tra le prime scelte nel momento in cui viene condotto un penetration test, un azione di red team, o un attacco informatico in piena regola.

Tale dualità non deve però essere associata solo ed esclusivamente al mondo della criminalità informatica, ma rappresentare una fonte di conoscenza della disciplina, specialmente per spingere ad investire maggiormente nell’ethical hacking. Un esperto che riesce a identificare in anticipo le vulnerabilità nei sistemi di un’organizzazione, può fare una grande differenza, pur sapendo che anche questa disciplina possiede limitazioni e richiede aggiornamenti costanti.


    Dichiaro di aver letto e compreso l'Informativa sul trattamento dei dati