Facciamo qualche esercizio di pen testing su www.hackthissite.org – parte 1

Difficoltà articolo (0->10): 4

Girovagando in rete si possono trovare numerosi siti che permettono di mettere alla prova le proprie capacità e intuito di hacker. Alcuni esempi dei più famosi siti che possiamo trovare sono questi:

Ognuno contiene un certo numero di esercizi pratici di penetration testing, ma non solo, ci sono anche casi simil-reali, articoli, forum, curiosità… Nello specifico, ho scelto uno dei siti sopra elencati per studiarlo più a fondo, e in questo e nei prossimi articoli mostrerò come risolvere alcuni esercizi e casi di pen testing.

hacking

Il sito da me scelto è www.hackthissite.org, ma lo definirei più un portale che un sito web, perché al suo interno è possibile accedere ad una grande quantità di informazioni nonché è possibile parlare sul forum con appassionati dell’argomento.

Solo dopo essersi registrati (fornendo una password di accesso sufficientemente robusta, mi raccomando!!!) ed essersi autenticati, possiamo accedere al portale e a tutte le sue sezioni. Molte sono interessanti, ma non lasciamoci distrarre e concentriamo la nostra attenzione sulla sezione “Challanges”, e quindi “Basic missions”. Queste “missioni” sono semplici casi costruiti ad hoc in cui siamo messi difronte ad una pagina web con un form e contenente una o più vulnerabilità da trovare. Solo dopo aver trovato la vulnerabilità e la password nascosta, è possibile sbloccare il livello successivo.

Esaminiamo insieme i primi 5 livelli e le loro vulnerabilità. ATTENZIONE: di seguito mostrerò come risolvere ogni singolo caso, e dove/come trovare indizi e password per il livello successivo ma non indicherò mai le singole password (se proprio non riuscite ad accedere al livello successivo neanche ora scrivetemi pure in privato ;-)).

 

Livello 1

Descrizione: This level is what we call “The Idiot Test”, if you can’t complete it, don’t give up on learning all you can, but, don’t go begging to someone else for the answer, thats one way to get you hated/made fun of. Enter the password and you can continue.

Requisiti: HTML.

Questo è il livello base, e come indicato tra i requisiti è sufficiente avere una conoscenze davvero minima di HTML. Dunque basta visualizzare i sorgenti della pagina spostandosi al form di richiesta password, et voilà, il commento in verde conterrà la password in chiaro:

Level

Inseriamo perciò la password nel form reale della pagina e proseguiamo al secondo livello.

 

Livello 2

Descrizione: Network Security Sam set up a password protection script. He made it load the real password from an unencrypted text file and compare it to the password the user enters. However, he neglected to upload the password file…

Requisiti: buon senso.

Questo livello direi che è banale, e forse addirittura più semplice del precedente. Leggendo attentamente la descrizione è facile intuire quale sia la password, vedendo che il responsabile Sam si è dimenticato di inserire il file, con la password reale, utilizzato per fare il confronto. Se lo script della pagina dunque effettua il confronto con un file vuoto, la password sarà?!

 

Livello 3

Descrizione: This time Network Security Sam remembered to upload the password file, but there were deeper problems than that.

Requisiti: conoscenze base di HTML.

Ancora un livello molto facile, infatti basta leggere la descrizione per capire che anche questa volta la password è racchiusa in un file che viene utilizzato per fare il confronto nel form. Dunque, analizziamo il codice sorgente della pagina:

level3

Intuitivamente possiamo notare un campo input nascosto del form, che punta ad un file chiamato “password.php”. Puntiamo subito al file, per ottenere ciò che vogliamo e proseguire al livello dopo.

 

Livello 4

Descrizione: This time Sam hardcoded the password into the script. However, the password is long and complex, and Sam is often forgetful. So he wrote a script that would email his password to him automatically in case he forgot.

Requisiti: conoscenze di HTML e un indirizzo mail.

Siamo ancora nella fascia entry level per la difficoltà. Leggendo la descrizione, capiamo che ancora una volta la password è scritta all’interno dello script del sito, ma questa volta è codificata con qualche tipo di algoritmo. Quello che ci interessa è che la dichiarazione ci dice che esiste anche uno script che invia una mail all’amministratore Sam con la password, probabilmente in chiaro, e lo script viene richiamato dal pulsante analogo.

level4.1

Passando al codice sorgente:

level4

Possiamo vedere chiaramente che lo script utilizza un campo del form per l’invio della mail, e difatti il campo value contiene l’indirizzo di Sam a cui viene inviata la password. A questo punto per ottenere la password è sufficiente scaricare la pagina in locale, modificare il campo value con quello della propria mail, ricaricare la pagina locale, e richiedere l’invio della password con il pulsante ;-).

Riceveremo presto la mail con la password per proseguire di livello…

 

Livello 5

Descrizione: Sam has gotten wise to all the people who wrote their own forms to get the password. Rather than actually learn the password, he decided to make his email program a little more secure.

Requisiti: conoscenze di HTML, Javascript, e un indirizzo mail.

Da ora inizia a salire leggermente la difficoltà, perché Sam ha inserito nel proprio codice un controllo ulteriore per il form di richiesta password, similmente al caso precedente.

level5

Il codice sorgente della pagina è questo:

level5.1

In particolare non è sufficiente, come nel livello 4, la modifica dell’indirizzo mail manualmente ma bisogna ricorrere allo scripting lato client, cioè  Javascript. La tecnica che permette questo è chiamata Javascript Injection con la quale è possibile iniettare codice arbitrario lato client in una pagina in modo tale da indurre la pagina stessa a fare quello che desideriamo senza impattare direttamente il codice del server. L’inserimento di codice in una pagina può essere fatto istantaneamente dall’URL del browser.

In questo caso, poiché non possiamo appunto modificare l’indirizzo mail “a mano”, facciamo uso di JS Injection con questo comando:

javascript:void(document.forms[0].to.value="mail_address");

A ritroso, il comando permette di modificare il campo value, del form zero (il primo, appunto zero, è quello che ci interessa), del documento attuale. Dopo aver quindi dato il comando, premiamo il pulsante per la richiesta della password via mail… e abbiamo terminato anche questo livello e la prima parte della guida :-)!

Matteo

1000 download per il mio manuale sull’anonimato!!!

Anonimato

E’ stata appena superata la soglia dei 1000 download per il mio manuale sull’anonimato in rete, “Come nascondere l’identità in Rete”! Grazie davvero a tutti!!!!!! Anche se rispetto ai numeri che si trovano solitamente sul web è un valore minimale, è per me una grande soddisfazione :-)!! Per chi fosse interessato, lo può liberamente scaricare da questo link:

Download manuale

Matteo

Hacking/sicurezza – Reati informatici in azienda

locandina_evento

Ecco un interessante seminario gratuito che si svolge ad Empoli, in provincia di Firenze, il giorno 2 marzo 2011 a partire dalle ore 14:30. Di seguito è mostrato il programma dettagliato dell’evento:

La legislazione vigente in tema di reati informatici commessi in azienda
Avv. Valentina Frediani (Studio Frediani) Il D.LGS 231/01 e la responsabilità amministrativa e penale delle aziende
Avv. Valentina Frediani (Studio Frediani)L’Analisi Forense sui sistemi informatici
Ing. Giuseppe Gottardi (Reply)

I modelli organizzativi e architetturali per la prevenzione e la gestione della sicurezza IT:
– i processi di ITIL per la sicurezza
Dott. Gionni Bernardini (Var Group)

– un modello per un’architettura di rete sicura
Dott. Elvino De Luca (Var Group)

Il seminario si rivolge alle seguenti figure professionali: Direzione dell’Organizzazione, Responsabili della Sicurezza, Responsabili della Qualità, Internal Auditor, Direzione IT, Direzione del Personale, Giuristi d’Impresa delle seguenti organizzazioni: Enti pubblici, Banche e Assicurazioni, Imprese industriali.

Il link alla pagina ufficiale dell’evento, con tutte le informazioni dettagliate e il modulo per l’iscrizione, è il seguente:

Matteo

Security ed Anti-Forensic nell’ambito della rete aziendale

Al convegno e-privacy del 28 maggio 2010 mi ha particolarmente interessato una discussione riguardante le tecniche di anti-forensic presentata da Daniele Martini, alias cyrax. Le tecniche di anti-forensic sono tutte quelle tecniche, opposte alle forensic (o investigazioni forensi), che mirano a nascondere le informazioni e a proteggere i dati da potenziali controlli e investigatori.

forensic science

Le tecniche presentate durante la relazione non sono state descritte nei dettagli, ma vogliono essere solo un pretesto per illustrare il panorama attuale in materia, e sono le seguenti:

* Artifact wiping
Questa tecnica prevede la cancellazione dei dati utilizzando ad esempio più riscritture dei blocchi in memoria, da un minimo di 3, arrivando addirittura a 14 o anche molte più riscritture. Tuttavia esistono sistemi che permettono di recuperare i dati anche in seguito a numerose riscritture, e per questo motivo è consigliabile effettuare sempre un elevato numero di riscritture dei blocchi. L’eliminazione definitiva dei dati può passare anche da azioni “definitive” come la rottura fisica del dispositivo di archiviazione, oppure l’utilizzo di campi magnetici in modo da rendere illeggibile il contenuto. Tra le tecniche mostrate che permettono il recupero dei dati c’è stato il Cold Boot Attack (link1 e link2), che, lo ammetto, non avevo mai sentito nominare! E’ un particolarissimo tipo di attacco fisico (ossia l’attaccante deve avere accesso fisico al dispositivo bersaglio), in cui viene congelata la RAM e quindi tolta dal dispositivo. Il congelamento è necessario per permettere ai dati di rimanere in memoria alcuni minuti, dal momento che la RAM per definizione è un tipo di memoria volatile, in cui i dati vanno persi non appena il sistema viene spento.
[…]

Al convegno e-privacy del 28 maggio 2010 mi ha particolarmente interessato una discussione riguardante le tecniche di anti-forensic presentata da Daniele Martini, alias cyrax. Le tecniche di anti-forensic sono tutte quelle tecniche, opposte alle forensic (o investigazioni forensi), che mirano a nascondere le informazioni e a proteggere i dati da potenziali controlli e investigatori.

Le tecniche presentate durante la relazione non sono state descritte nei dettagli, ma vogliono essere solo un pretesto per illustrare il panorama attuale in materia, e sono le seguenti:

  • Artifact wiping
    Questa tecnica prevede la cancellazione dei dati utilizzando ad esempio più riscritture dei blocchi in memoria, da un minimo di 3, arrivando addirittura a 14 o anche molte più riscritture. Tuttavia esistono sistemi che permettono di recuperare i dati anche in seguito a numerose riscritture, e per questo motivo è consigliabile effettuare sempre un elevato numero di riscritture dei blocchi. L’eliminazione definitiva dei dati può passare anche da azioni “definitive” come la rottura fisica del dispositivo di archiviazione, oppure l’utilizzo di campi magnetici in modo da rendere illeggibile il contenuto. Tra le tecniche mostrate che permettono il recupero dei dati c’è stato il Cold Boot Attack (link1 e link2), che, lo ammetto, non avevo mai sentito nominare! E’ un particolarissimo tipo di attacco fisico (ossia l’attaccante deve avere accesso fisico al dispositivo bersaglio), in cui viene congelata la RAM e quindi tolta dal dispositivo. Il congelamento è necessario per permettere ai dati di rimanere in memoria alcuni minuti, dal momento che la RAM per definizione è un tipo di memoria volatile, in cui i dati vanno persi non appena il sistema viene spento.
  • Data Hiding
    Questa è l’arte di nascondere le informazioni all’interno di “luoghi” improbabili, che si suppone non saranno controllati dall’eventuale indagatore. Tra queste tecniche vi è quella di celare i dati in determinati blocchi della memoria, per poi etichettarli come bad block, oppure in spazi riservati del filesystem (come ad esempio la directory /dev sui sistemi Linux), o ancora nello slack space.
  • Encryption
    Il metodo “classico” per nascondere i dati, attraverso la cifratura dell’intero filesystem, o di determinate directory (viene citato come esempio il noto TrueCrypt). Infine viene discussa la tecnica della steganografia, l’arte di nascondere un messaggio in un determinato contesto, come l’occultamento di un testo in una foto o in un video/audio.
  • Trail obfuscation
    Qui sono state discusse le tecniche per offuscare i dati come la modifica dell’hash di un file o degli attributi di un file (data modifica, ultimo accesso, …). Un’azione invece più deplorevole potrebbe essere di installare un po’ di diavolerie sul proprio sistema, come worm, virus o cavalli di troia, al fine di dire “non sono stato io perché ho preso un virus!”. In questo modo è possibile cercare di confondere chi vuole accedere ai dati e controllarli.
  • Attacks against CF
    Questa categoria infine racchiude tutte le azioni che cercano di nascondere e/o rimuovere certi dati al verificarsi di particolari condizioni. Ad esempio potrebbero essere creati degli script che eliminano dei dati se viene effettuato il login da un certo utente, o se si verificano particolari procedure di avvio, o in alternativa potrebbe essere avviata una Virtual Machine. Un’altra tecnica, però molto pericolosa :-P, è anche quella di controllare la rete a cui è collegato il dispositivo, e nel caso cambi effettuare determinate operazioni.

L’intervento è liberamente distribuito e scaricabile dal sito del convegno e-privacy, sia come file pdf che come audio in formato mp3. Ecco il link:

e-privacy.winstonsmith.org/interventi.html#martini

Altrimenti il pdf è scaricabile direttamente dal seguenti link:

download pdf

roghan