Discussione La fase PIÙ IMPORTANTE di ogni attacco hacker

0xbro

Super Moderatore
24 Febbraio 2017
4,461
179
3,762
1,825
Ultima modifica:


L'enumerazione del target è la fase più importante di ogni attacco hacker e ne può decretare il successo o il fallimento ancora prima dell'inizio dell'attività.​

hacker-earned-1-5-million-providing-backdoor-access-to-hundreds-of-corporate-networks_1500.jpg


Nell'immaginario comune, forse a causa dell'influenza hollywoodiana, forse a causa della classica rappresentazione giornalistica, un attacco hacker non è niente di più che indossare una maschera o un cappuccio, individuare il proprio target, inserire qualche strano comando in qualche terminale nero di un qualche laptop, premere tanti tasti velocemente e concludere con la solita, classica, frase:​

"siamo dentro!"

giphy.gif


...

Ma la verità è ben altra.​



Restando sul tema dell'immaginario collettivo e delle metafore popolari, un attacco hacker, così come un'attività di red teaming, è simile a una rapina in banca: l'attacco è paragonabile al colpo, gli attaccanti sono i rapinatori, il server/target è la banca, gli amministratori di sistema sono le guardie e i dati contenuti nel server la refurtiva. Così come un colpo in banca, però, anche un attacco hacker ha bisogno di un piano. Non si può rapinare una banca senza sapere quali siano le entrate, dove siano le telecamere e quali siano i punti deboli della catena di sicurezza. Allo stesso modo, non si può iniziare un attacco senza prima conoscere quali siano le porte e i servizi esposti, le loro versioni, gli utenti interessati, le inter-connessioni tra utenti e macchine, le tecnologie utilizzate, ecc.

Ecco perchè l'enumerazione è la fase più importante di ogni attacco! Come disse Abraham Lincoln:​
Dammi sei ore per abbattere un albero e spenderò le prime quattro ore per affilare l’ascia​
E' questa la mentalità che sta dietro ad un attacco con alte probabilità di successo rispetto invece a uno fallimentare: la ricerca di quante più informazioni possibili.

L'obiettivo principale durante la fase di information gathering, e più in particolare nella sotto-fase dell'enumerazione, è quello di ampliare il più possibile la superficie d'attacco: ogni nuova informazione, ogni nuovo minimo dettaglio è un potenziale nuovo tassello nel nostro piano finale.
La maggior parte dei corsi professionali insiste molto su questa fase poichè è il punto crucciale tra riuscire a bucare una macchina oppure fallire. A volte basta non aver trovato una specifica pagina web o uno specifico utente per mandare in fumo l'intero piano.
IuyG3Ev.gif


Quali sono gli step per eseguire una corretta enumerazione?​

Data l'esistenza di numerosi servizi, programmi e sistemi operativi, tutti differenti tra di loro, è impossibile indicare con precisione la maniera corretta per enumerare ognuno di questi. Al contrario però è possibile delineare una metodologia in grado di permetterci di aumentare esponenzialmente le possibilità di successo.

I principali controlli che accomunano una corretta e approfondita enumerazione sono:​
  1. Identificare tutte le porte aperte (1-65535) sui propri target, sia TCP che UDP, in modo da identificare tutte le possibili entrate​
  2. Identificare quali servizi siano in esecuzione sulle rispettive porte e cercare di individuare la loro versione
  3. Eseguire il banner grabbing di ogni servizio, ove possible​
  4. Verificare se è possibile accedere al servizio tramite credenziali di default o addirittura senza credenziali
  5. Identificare tutte le cartelle e i file pubblicamente accessibili
  6. Identificare le tecnologie in utilizzo (PHP? .NET? Oracle? Vecchie versioni SMB? ecc.)​
  7. Abbiamo permessi di scrittura da qualche parte?​
  8. Sono presenti indirizzi email o nomi utente? Potremmo usarli per attacchi di phishing, ricerche mirate o cercare di accedere ai loro account​
  9. Sono presenti interconnessioni tra i vari servizi? (es. cartelle FTP il cui contenuto è richiamabile tramite HTTP, etc.)​

Una volta identificate tutte queste informazioni, mettere assieme i pezzi e trovare una possibile entrata risulterà molto più facile rispetto a cercare di penetrare un sistema andando alla cieca. Inoltre metterà a disposizione anche diverse alternative, in modo da avere un piano B in caso il piano principale non andasse in porto!​

Automatizzazione del processo​

Siccome l'attività di enumeration è molto lunga e dispendiosa, nel corso del tempo sono stati ideati diversi tools con lo scopo di automatizzare e velocizzare le attività più comuni di ricerca delle informazioni. Tra i più famosi e degni di nota ci sono:​
L'Nmap Scripting Engine (NSE) è una delle feature più potenti e flessibili di Nmap. Permette agli utenti di scrivere (e condividere) semplici script (utilizzando il linguaggio di programmazione Lua) per automatizzare un gran varietà di networking task. Questi script vengono eseguito in parallelo con la velocità e l'efficienza che ci si aspetta da Nmap. Gli utenti possono fare affidamento sui crescenti e diversi set di script distribuiti da Nmap, oppure scriverli loro stessi in base alle proprie necessità.
The main goal for this script is to automate the process of enumeration & recon that is run every time, and instead focus our attention on real pentesting.
AutoRecon is a multi-threaded network reconnaissance tool which performs automated enumeration of services. It is intended as a time-saving tool for use in CTFs and other penetration testing environments (e.g. OSCP). It may also be useful in real-world engagements.

Risorse tecniche specifiche:​

Poichè ongni sistema funziona in maniera differente, per effettuare una corretta enumerazione occorre conoscere come interagire propriamente con il servizio in questione. Se col tempo tutto ciò verrà spontaneo, all'inizio (o per servizi non comuni) non è così e avere dei cheatsheet o delle piccole guide può fare la differenza.​

Di seguito dunque potete trovare un elenco delle risorse più complete e utili disponibili sul web:



Made with ❤ for Inforge
 
hacker-earned-1-5-million-providing-backdoor-access-to-hundreds-of-corporate-networks_1500.jpg

Nell'immaginario comune, forse a causa dell'influenza hollywoodiana, forse a causa della classica rappresentazione giornalistica, un attacco hacker non è niente di più che indossare una maschera o un cappuccio, individuare il proprio target, inserire qualche strano comando in qualche terminale nero di un qualche laptop, premere tanti tasti velocemente e concludere con la solita, classica, frase:​

"siamo dentro!"

giphy.gif


...

Ma la verità è ben altra.​



Restando sul tema dell'immaginario collettivo e delle metafore popolari, un attacco hacker, così come un'attività di red teaming, è simile a una rapina in banca: l'attacco è paragonabile al colpo, gli attaccanti sono i rapinatori, il server/target è la banca, gli amministratori di sistema sono le guardie e i dati contenuti nel server la refurtiva. Così come un colpo in banca, però, anche un attacco hacker ha bisogno di un piano. Non si può rapinare una banca senza sapere quali siano le entrate, dove siano le telecamere e quali siano i punti deboli della catena di sicurezza. Allo stesso modo, non si può iniziare un attacco senza prima conoscere quali siano le porte e i servizi esposti, le loro versioni, gli utenti interessati, le inter-connessioni tra utenti e macchine, le tecnologie utilizzate, ecc.

Ecco perchè l'enumerazione è la fase più importante di ogni attacco! Come disse Abraham Lincoln:

E' questa la mentalità che sta dietro ad un attacco con alte probabilità di successo rispetto invece a uno fallimentare: la ricerca di quante più informazioni possibili.

L'obiettivo principale durante la fase di information gathering, e più in particolare nella sotto-fase dell'enumerazione, è quello di ampliare il più possibile la superficie d'attacco: ogni nuova informazione, ogni nuovo minimo dettaglio è un potenziale nuovo tassello nel nostro piano finale.
La maggior parte dei corsi professionali insiste molto su questa fase poichè è il punto crucciale tra riuscire a bucare una macchina oppure fallire. A volte basta non aver trovato una specifica pagina web o uno specifico utente per mandare in fumo l'intero piano.
IuyG3Ev.gif


Quali sono gli step per eseguire una corretta enumerazione?​

Data l'esistenza di numerosi servizi, programmi e sistemi operativi, tutti differenti tra di loro, è impossibile indicare con precisione la maniera corretta per enumerare ognuno di questi. Al contrario però è possibile delineare una metodologia in grado di permetterci di aumentare esponenzialmente le possibilità di successo.

I principali controlli che accomunano una corretta e approfondita enumerazione sono:​
  1. Identificare tutte le porte aperte (1-65535) sui propri target, sia TCP che UDP, in modo da identificare tutte le possibili entrate​
  2. Identificare quali servizi siano in esecuzione sulle rispettive porte e cercare di individuare la loro versione
  3. Eseguire il banner grabbing di ogni servizio, ove possible​
  4. Verificare se è possibile accedere al servizio tramite credenziali di default o addirittura senza credenziali
  5. Identificare tutte le cartelle e i file pubblicamente accessibili
  6. Identificare le tecnologie in utilizzo (PHP? .NET? Oracle? Vecchie versioni SMB? ecc.)​
  7. Abbiamo permessi di scrittura da qualche parte?​
  8. Sono presenti indirizzi email o nomi utente? Potremmo usarli per attacchi di phishing, ricerche mirate o cercare di accedere ai loro account​

Una volta identificate tutte queste informazioni, mettere assieme i pezzi e trovare una possibile entrata risulterà molto più facile rispetto a cercare di penetrare un sistema andando alla cieca. Inoltre metterà a disposizione anche diverse alternative, in modo da avere un piano B in caso il piano principale non andasse in porto!​

Automatizzazione del processo​

Siccome l'attività di enumeration è molto lunga e dispendiosa, nel corso del tempo sono stati ideati diversi tools con lo scopo di automatizzare e velocizzare le attività più comuni di ricerca delle informazioni. Tra i più famosi e degni di nota ci sono:​




Risorse tecniche specifiche:​

Poichè ongni sistema funziona in maniera differente, per effettuare una corretta enumerazione occorre conoscere come interagire propriamente con il servizio in questione. Se col tempo tutto ciò verrà spontaneo, all'inizio (o per servizi non comuni) non è così e avere dei cheatsheet o delle piccole guide può fare la differenza.​

Di seguito dunque potete trovare un elenco delle risorse più complete e utili disponibili sul web:



Made with ❤ for Inforge
Sempre super duper interessante e coinvolgente leggere le tue release o articoli, good job!
 
  • Love
Reazioni: 0xbro
Ultima modifica:
scusa cos'è il banner grabbing?
Il "Banner" nel gergo ICT è il primo messaggio (in genere il messaggio di benvenuto) che un servizio mostra quando ci si collega
Bash:
$ ftp 10.11.1.8
Connected to 10.11.1.8.
220 (vsFTPd 2.0.1)
Name (10.11.1.8:kali): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
In questo caso il Banner è "220 (vsFTPd 2.0.1)"

Bash:
$ nc -nvC 10.11.1.115 25
(UNKNOWN) [10.11.1.115] 25 (smtp) open
220 subdomain.spoiler.com ESMTP Sendmail 8.12.8/8.12.8; Wed, 10 Mar 2021 15:42:19 +0200
helo server
250 subdomain.spoiler.com Hello [192.168.119.209], pleased to meet you
help

in questo caso "220 subdomain.spoiler.com ESMTP Sendmail 8.12.8/8.12.8; Wed, 10 Mar 2021 15:42:19 +0200"

Il banner grabbing non è nient'altro che raccogliere tutti questi banner e cercare informazioni in essi (nome del software, versione, dns ecc)
 
ti
Il "Banner" nel gergo ICT è il primo messaggio (in genere il messaggio di benvenuto) che un servizio mostra quando ci si collega
Bash:
$ ftp 10.11.1.8
Connected to 10.11.1.8.
220 (vsFTPd 2.0.1)
Name (10.11.1.8:kali): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
In questo caso il Banner è "220 (vsFTPd 2.0.1)"

Bash:
$ nc -nvC 10.11.1.115 25
(UNKNOWN) [10.11.1.115] 25 (smtp) open
220 subdomain.spoiler.com ESMTP Sendmail 8.12.8/8.12.8; Wed, 10 Mar 2021 15:42:19 +0200
helo server
250 subdomain.spoiler.com Hello [192.168.119.209], pleased to meet you
help

in questo caso "220 tophat.acme.com ESMTP Sendmail 8.12.8/8.12.8; Wed, 10 Mar 2021 15:42:19 +0200"

Il banner grabbing non è nient'altro che raccogliere tutti questi banner e cercare informazioni in essi (nome del software, versione, dns ecc)
tisei comunque dimenticato di dire che prima ci vuole accesso alla retw wifi, comunque se io avessi acceso al wifi di unicredit banca che cosa potrei vedere?
 
ti
tisei comunque dimenticato di dire che prima ci vuole accesso alla retw wifi, comunque se io avessi acceso al wifi di unicredit banca che cosa potrei vedere?

Il Wi-Fi non c'entra nulla, il banner grabbing puo' essere fatto su qualunque host che espone un servizio di cui si conosce "l'hello" per farla semplice, puoi raggiungerlo in locale, dalla lan, internet, tor eccetera.
Non capisco cosa c'entri il wifi della banca e ho notato che tendi sempre a fare domande un po' pericolose, comunque ritengo improbabile che una banca esponga servizi dal wi-fi, sara' tutto cablato con ulteriori sistemi di sicurezza.
 
Il Wi-Fi non c'entra nulla, il banner grabbing puo' essere fatto su qualunque host che espone un servizio di cui si conosce "l'hello" per farla semplice, puoi raggiungerlo in locale, dalla lan, internet, tor eccetera.
Non capisco cosa c'entri il wifi della banca e ho notato che tendi sempre a fare domande un po' pericolose, comunque ritengo improbabile che una banca esponga servizi dal wi-fi, sara' tutto cablato con ulteriori sistemi di sicurezza.
ciao, cosa intendi con ''l'hello'' ?
 
Ultima modifica:
ciao, cosa intendi con ''l'hello'' ?

A volte per servizi basati su TCP basta una Connect, sotto avverra' l'handshake a tre vie di tcp e il servizio remoto e' poi il primo a scrivere, pero' prendiamo per esempio un servizio HTTP, si aspetta che dopo l'handshake sia tu ad inviare per primo un header composto in un certo modo "HTTP.... GET /...", allo stesso modo altri servizi con altri protocolli potrebbero ignorare la tua richiesta e non risponderti o chiudere la connessione se non invii prima un "saluto" descritto dal protocollo in questione. Poi non e' detto che basti, il servizio remoto puo' sempre decidere di non risponderti comunque (e quindi non darti nemmeno un banner) in base a IP o altre informazioni ma quest'ultimo caso e' piu' raro, in quanto di solito se il blocco e' all' application layer ormai il banner e' gia' partito e viene mostrato un errore, nel caso invece fosse un firewall o qualcosa del genere e' assai probabile che la richiesta non arrivi affatto al servizio.
 

Quali sono gli step per eseguire una corretta enumerazione?​

Data l'esistenza di numerosi servizi, programmi e sistemi operativi, tutti differenti tra di loro, è impossibile indicare con precisione la maniera corretta per enumerare ognuno di questi. Al contrario però è possibile delineare una metodologia in grado di permetterci di aumentare esponenzialmente le possibilità di successo.

I principali controlli che accomunano una corretta e approfondita enumerazione sono:​
  1. Identificare tutte le porte aperte (1-65535) sui propri target, sia TCP che UDP, in modo da identificare tutte le possibili entrate​
  2. Identificare quali servizi siano in esecuzione sulle rispettive porte e cercare di individuare la loro versione
  3. Eseguire il banner grabbing di ogni servizio, ove possible​
  4. Verificare se è possibile accedere al servizio tramite credenziali di default o addirittura senza credenziali
  5. Identificare tutte le cartelle e i file pubblicamente accessibili
  6. Identificare le tecnologie in utilizzo (PHP? .NET? Oracle? Vecchie versioni SMB? ecc.)​
  7. Abbiamo permessi di scrittura da qualche parte?​
  8. Sono presenti indirizzi email o nomi utente? Potremmo usarli per attacchi di phishing, ricerche mirate o cercare di accedere ai loro account​
Mi piace molto questa tua "scaletta" é sicuramente molto utile, dall'idea che mi sono fatto in questo periodo di studio e parlando con tecnici non del settore cybersecurity, spesso la preoccupazione principale delle aziende é la spesa (almeno qui in Veneto) e il "saper cosa fare" puó velocizzare molto i tempi e ridurre i costi.
La cosa che mi interessa qui, oltre ai tool che hai elencato é il come essere meno rumorosi poissibili, mi spiego meglio:

Da quando ho iniziato a studiare, ogni tutor dice di usare diversi tool in modo da garantire una maggiore affidabilitá del risultato, la domanda é:
come faccio a non fare rumore usando i tool? Loro fanno miriadi di richieste, ping e tentativi di connessione, un normale ids si accorgerebbe subito di questa cosa, ho notato che un null scan di nmap abbatte un po' il rumore, ma sono curioso di sapere se si puó fare di meglio
 
Mi piace molto questa tua "scaletta" é sicuramente molto utile, dall'idea che mi sono fatto in questo periodo di studio e parlando con tecnici non del settore cybersecurity, spesso la preoccupazione principale delle aziende é la spesa (almeno qui in Veneto) e il "saper cosa fare" puó velocizzare molto i tempi e ridurre i costi.
La cosa che mi interessa qui, oltre ai tool che hai elencato é il come essere meno rumorosi poissibili, mi spiego meglio:

Da quando ho iniziato a studiare, ogni tutor dice di usare diversi tool in modo da garantire una maggiore affidabilitá del risultato, la domanda é:
come faccio a non fare rumore usando i tool? Loro fanno miriadi di richieste, ping e tentativi di connessione, un normale ids si accorgerebbe subito di questa cosa, ho notato che un null scan di nmap abbatte un po' il rumore, ma sono curioso di sapere se si puó fare di meglio
Metto le mani avanti: non mi sono mai interessato alla questione (nel mio lavoro day-by-day non mi serve essere silenzioso), ma sono abbastanza sicuro che "tool automatici" ed "essere stealth" non possono stare nella stessa frase ahah Per fare poco rumore immagino che si usino automazioni molto snelle e molto lente, in modo da diluire i vari pacchetti su tempistiche molto dilatate, ma soprattutto che si faccia molta recon passiva utilizzando informazioni pubbliche e OSINT. Credo che si prediliga l'enumerazione "a mano" rispetto a quella automatizzata, proprio perchè è meno rumorosa e meno verbosa.

Generalmente però "l'anonimato" e l'essere stealth è richiesto per le attività di Red Team/Adversary Simulation - cioè attività che spesso durano mesi e che appunto richiedono di agire come un APT. Durante un Penetration Test o un Vulnerability Assesment non è praticamente mai richiesto di seguire un approccio stealth
 
  • Mi piace
Reazioni: J.A.R.V.I.S.
Grazie delle info, penso che allora dopo aver fatto la certificazione ejpt e eccpt ( e forse anche oscp ) mi butterò sul red teaming

Ultima cosa, secondo te è possibile essere un "pentester freelance"? Io non vivo in una grande città quindi non ho mai visto cose del genere
 
eccpt ( e forse anche oscp )
Queste due cert sono abbastanza simili tra loro, ti consiglio di farne una sola delle due (la OSCP, possibilmente) ;)

secondo te è possibile essere un "pentester freelance"? Io non vivo in una grande città quindi non ho mai visto cose del genere
Ti redirigo su un altra discussione in cui ho dato il mio punto di vista proprio su questo argomento: