4 4 !
gli occhi: è su昀케ciente provare a cliccare due volte sull’icona del昀椀le V D WV W perch si avvii il browser e mostri una pagina praticamente priva di qualsiasi contenuto. 2 meglio, che pu apparire tale a un esame sommario: ma osservandola con la giusta attenzione, possiamo notare l’inconfondibile icona mostrata tipicamente dai browser quando non riescono ad accedere a un’immagine linkata.
Trattandosi di pagina HTML, disponiamo per fortuna di un metodo immediato per indagare sulle cause di questa strana visualizzazione: esaminare il codice. Dal browser, clicchiamo con il tasto destro in un punto qualsiasi della pagina e selezioniamo, dal menu che comparirà, la voce Vie page source. In questo modo possiamo accedere al codice della pagina che, tuttavia, in questo caso non è esattamente di facile comprensione: piuttosto che basarsi come sarebbe stato lecito aspettarsi su tag
Metasploitable3 è pensata per un uso addestrativo, al 昀椀ne di consentire ai penetration tester in erba di migliorare le proprie skill. A tal riguardo, costituisce un importante upgrade rispetto alla sorella maggiore (Metasploitable2), introducendo novità di rilievo come il ricorso a:
•
•
:indo s,
che consente di ampliare la nostra esperienza (sin qui formatasi esclusivamente in ambiente GNU/Linux, essendo Metasploitable2 una VM basata su una distro Linux) alla trattazione di vulnerabilità e di problematiche di sicurezza peculiari di quello che è uno dei sistemi operativi pi di昀昀usi in ambito desktop e server;
appositi 昀椀le utilizzati nei contest T) per simboleggiare quegli asset aziendali obiettivo tanto degli attaccanti che dei penetration tester (i quali, a dimostrazione del lavoro svolto e dell’eventuale esistenza di una o pi vulnerabilità in grado di compromettere la sicurezza della
lag,
HTML facilmente interpretabili, il contenuto della pagina è affidato a del codice - D D6F SW piuttosto oscuro.
M
4uella di affidare parte del contenuto della pagina a funzioni ava6cript adeguatamente offuscate, in effetti è una tecnica abbastanza comune. Lo stesso Web offre innumerevoli esempi di pagine scritte proprio in ava6cript, o
•
• rete testata, ne marcano / segnalano la presenza nel report昀椀nale);
Tecniche aggiuntive (come l’o昀昀uscamento, l’utilizzo di contenuti embedded nei 昀椀le...) a protezione delle 昀氀ag, per rendere pi realistico l’accesso alle carte, simulando quanto avviene nel mondo reale (in cui le informazioni pi importanti sono generalmente protette da misure di sicurezza aggiuntive);
Approccio di tipo in cui al pari di quanto avviene in molte piattaforme per aspiranti pentester la VM ci o昀昀re la possibilità di s昀椀dare noi stessi (e magari gli amici) nella ricerca del “mazzo di carte” nascosto al suo interno, che costituisce il formato speci昀椀co con cui gli sviluppatori di Metasploitable3 hanno voluto rappresentare le 昀氀ag da catturare (mettendoci letteralmente la faccia, giacch ogni carta è dedicata a uno di loro).
gami昀椀cation,
in un qualsiasi linguaggio server side in grado di ricevere in input codice “comprensibile” (o quantomeno comprensibile dal suo creatore) e restituire in output un insieme di istruzioni ava6cript che pu apparire quasi “magico”, perch pur riuscendo a replicare W W il funzionamento del codice di partenza risulta del tutto incomprensibile a un qualsiasi lettore umano “sano di mente”.
Per fortuna, è vero anche il contrario: accanto a questi
“offuscatori”, sono sorti con altrettanta velocità una serie di siti “deoffuscatori”, in grado ( se le cose girano nel verso giusto, ovvero se il codice è stato reso “opaco” attraverso tecniche e pattern riconoscibili) di togliere il velo di disordine introdotto per nascondere i meccanismi di funzionamento di un codice ben realizzato. Possiamo rendercene conto con una rapida ricerca: se accediamo al nostro motore di ricerca preferito, e inseriamo come chiave di ricerca le parolearole “- D D6F SW VFDW VFDW ” oppure “- D D6F SW
•
•
limitati a un esame decisamente superficiale, affidandoci a quella che, purtroppo, si è rivelata un’intuizione errata in merito alle modalità di offuscamento del codice.
Apriamo nuovamente la pagina e proviamo a dare un’occhiata pi approfondita utilizzando gli strumenti per sviluppatori: dal browser, selezioniamo il pulsante per accedere al menu, scegliamo la voce More tools e, infine, :eb e eloper 7ools. In questo modo avremo accesso a una rappresentazione della pagina pi “interattiva”, da cui è possibile non solo leggere il sorgente della pagina, ma anche individuare a quale porzione di codice sia imputabile la visualizzazione di un certo elemento.
Ma non è tutto: il sorgente non è lo stesso a cui siamo abituati. Il codice ava6cript “illeggibile” è stato infatti eseguito all’interno del contesto del browser, e quello che viene visualizzato nella schermata dei “ S 7 V” è il suo output, ben pi comprensibile del codice di partenza. Le tante righe di così difficile interpretazione hanno infatti prodotto un “semplice” tag J, ovvero quell’elemento delle pagine HTML pensato per il caricamento e la visualizzazione delle immagini: in altre parole, l’esecuzione dello script si limita (o almeno dovrebbe limitarsi) a inserire un’immagine nella pagina, sebbene il browser come ci avvisa mirabilmente l’interfaccia dei tools non riesca a caricarla correttamente.
In realtà il link dell’immagine (per intenderci quello che segue l’attributo src del tag img) si presenta in maniera quanto meno singolare: oltre a essere lunghissimo decisamente troppo ha un aspetto che a un occhio esperto sembra decisamente familiare. Prima di scendere a conclusioni che potrebbero
sembrare affrettate, tuttavia, è opportuna una verifica pi approfondita: provvediamo quindi a salvare il codice HTML del tag, in modo da poterlo esaminare (e manipolare) con maggiore comodità. Dalla schermata degli strumenti per sviluppatori poniamo il mouse sul tag LP , quindi clicchiamo con il tasto destro del mouse e selezioniamo le voci WHU 7 / . Terminata questa operazione, apriamo un editor di testo (Mousepad la scelta di default di Kali andrà benissimo) e incolliamo il tutto al suo interno (abbiate pazienza, potrebbe volerci un pochino...), quindi salviamo il file con il nome tagBimg.txt.
Diamo un’occhiata alle dimensioni del file appena creato con il comando di shell:
#
ls
-lh
tag_img.txt
stiamo parlando di quasi 800 KB, una dimensione adatta piuttosto che a un link a un’immagine vera e propria. (saminiamo con maggiore attenzione allora questo link: possiamo esaminarlo nella sua interezza con il comando less:
#
ma l’output, vista la mole di caratteri visualizzati, potrebbe apparire decisamente poco chiaro. (videnziamone, piuttosto, l’inizio e la 昀椀ne (porzioni ampiamente su昀케cienti per i nostri scopi), con i comandi:
#
e#
less
head tail
tag_img.txt
-c -c
300 300
tag_img.txt tag_img.txt
L’output di questi comandi non vi sembra in qualche modo familiare? (saminiamolo con attenzione: i caratteri utilizzati nel “link” sono esclusivamente quelli alfanumerici (ovvero le lettere maiuscole e minuscole, nonch le cifre decimali) con l’aggiunta dei simboli ’ e / ’. ( questa caratteristica viene mantenuta anche se estendiamo la nostra analisi a una porzione maggiore del file WDJ J W W (provarerovare per credere, è sufficiente ampliare il numero che segue l’opzione F’ dei comandi KHD e/o WDLO). Non pu certo trattarsi di una coincidenza: piuttosto, siamo di fronte a una codifica apposita.
6tiamo parlando della celebre codi昀椀ca DVH , de昀椀nita nel documento R) 4648 e che utilizza, per la rappresentazione dei dati in formato A6 II, proprio il set di caratteri che abbiamo riscontrato nel “link”. Per chi non la conoscesse a fondo, è su昀케ciente sapere che si tratta di una codi昀椀ca decisamente matura, nata per consentire la conservazione e il trasferimento di dati in ambienti (come ad esempio il World Wide Web, o i sistemi di posta elettronica basati su protocollo 6MTP e P2P) in cui questi sono rappresentati in formato testuale, piuttosto che binario. Una codi昀椀ca che, tra l’altro, si presta particolarmente bene anche per integrare (se preferite, rendere “embedded”) un 昀椀le (o un’immagine…) all’interno di una pagina HTML: esattamente quanto a questo punto della nostra indagine sembrerebbe essere avvenuto nella pagina V D WV W
M
In altri termini, se la nostra ipotesi dovesse essere corretta, allora quello che sin qui abbiamo considerato un semplice link alla carta “sette di cuori” sarebbe, in realtà, la rappresentazione in Base64 dell’intera immagine: il che ci consentirebbe di spiegare tra l’altro le dimensioni (quasi 800 KB, ricordate?) del 昀椀le WDJ
J W W al cui interno abbiamo inserito il tag LP .
Non è di昀케cile veri昀椀care la correttezza delle nostre congetture: è su昀케ciente ricorrere al comando base64, in grado di e昀昀ettuare la codi昀椀ca e la decodi昀椀ca di un 昀椀le in Base64 e che troviamo già disponibile in Kali al pari della stragrande maggioranza delle distribuzioni GNU/Linux.
L’utilizzo del comando per la decodi昀椀ca richiede l’utilizzo del 昀氀ag ed è decisamente semplice:
#
cat
tag_img.txt
|
base64
-d
sebbene, al momento, restituisca l’errore “D S W”, chiaramente dovuto alla presenza in aggiunta del codice Base64 del tag LP . Andiamo ora a rimuovere il tag dal file, del comando VH :
# cat tag_img.txt | sed src=”//g’ > link.txt
‘s/
• sostituisce l’unica occorrenza del tag LP VUF con una stringa vuota, di fatto rimuovendola; salva in OL W W il contenuto del file così modificato.
•
Possiamo verificare il buon esito dell’operazione andando a esaminare i primi caratteri del nuovo file, mediante ricorso a comando KHD :
#
head
link.txt
-c
100
Prima di invocare il comando DVH , dobbiamo occuparci anche della chiusura del tag. Per la rimozione possiamo ricorrere a VH , con il comando:
# cat link.txt base64.txt
|
sed
‘s/”>//g’
>
il cui risultato viene salvato DV W W ed è quindi veri昀椀cabile con la seguente sintassi:
# tail base64.txt -c 100
CC ! C K
A questo punto possiamo procedere con la conversione base64:
# cat base64.txt 7dicuori.png
|
base64
-d da >
6e avviamo 7K DU ( il file manager utilizzato da Kali) e clicchiamo sull’immagine LF UL , finalmente potremo avere la soddisfazione di osservare la nostra carta: ecco a voi il 7 di cuori in tutto suo splendore il