--==::°-E-t-E-r-N-i-T-y-C-r-E-w-°::==--
Soluzione ragionata del gioco Try2Hack http://www.try2hack.nl/
Autori:Disponibilità:
http://www.zonaitalia.it/test/try2hack.html
(IT)
http://207.44.136.44/membri/Eternity6/hacking/try2hack.html
(IT) mirror
Per distribuire in altri luoghi questo documento *SOLO se riportato nella sua interezza e senza alcuna modifica, compresa questa stessa nota* bisogna mettersi d'accordo con l'autore. Si chiede di fornire all'autore (1)l'url di ogni mirror in modo che possa essere inserito nel paragrafo precedente (2)un indirizzo email in modo che l'autore avvisi i mirror quando aggiorna il documento. Per l'ultima versione disponibile si veda la release ufficiale. E' ovviamente VIETATO fingersi autore di questo documento.
Errata
& Feedback:
gli errori sono corretti direttamente nel testo.
Ultima modifica: 21 settembre 2002 "Computer
science is not about computers any more than astronomy is about telescopes."
EW Dijkstra
Per riportare errori, concordare mirror, creare traduzioni e discutere su questo
documento si faccia riferimento al canale #PCE @ irc.azzurra.org (un membro dello staff di Iron
Bishop, pronto ad ascoltare richieste suggerimenti e critiche costrutive, è
presente dalle 21,00 alle 23,00 circa - se il tempo vi sembra poco prendetevela
con quei **** di Wind-Libero SpA che hanno spostato l'inizio della fascia oraria
di Libero@sogno dalle 18,30 alle 21 - nel caso sia in away lasciare un messaggio
in query e attendere).
Questo
documento vuole essere una soluzione completa ed esaustiva del Try2Hack.
Il Try2Hack è un gioco con 10 livelli (più 1 bonus - attualmente non contemplato)
di difficoltà crescente nel quale bisogna avanzare scoprendo le password nascoste
in script, file, programmi, server e eggrop utilizzando le proprie conoscenze
informatiche. Non è niente di complicato, basta usare la testa.
In questa guida ogni livello viene affrontato in tre tempi: prerequisiti,
suggerimento e soluzione.
Molte persone troveranno sovrabbondanti alcune parti: questo testo è stato creato
per essere comprenso anche da chi ha difficoltà a superare il primo livello.
Nella stesura di questo documento si è cercato di inserire link esterni che rendono possibile l'approfondimento degli argomenti incontrati nei vari livelli.
Parentesi
dell'autore Iron Bishop:
Non avrei mai pensato di trovare tanta ottusità in rete. Io cerco di capire
a fondo i livelli, il loro sviluppo e il metodo di risoluzione... mi trovo di
fronte a tanti pezzenti che fanno i gradassi spandendo password e url a destra
e a manca... questi pezzenti però non sono in grado di dare una spiegazione
esaustiva del metodo da loro utilizzato per la soluzione: e il motivo è semplice:
si son fatti dire login, pass, url... Sono arrivati alla soluzione senza conoscere
il procedimento per raggiungerla. Just Be SOSS: Serietà, Onesta, Sincerità e
Schiettezza. Molti ci aggiungono "umiltà", ma a me non pare giusto.
Dato che nel forum HackerJournal vige la CENSURA di Bismark, io pubblico questa
guida in un altro spazio. A tale proposito sono d'accordo con la cancellazione
dell'account di Patologia (il quale non può permettersi di insultare tutti gli
ignoranti che incontra), ma NON con la cancellazione di TUTTI i suoi post. Per
quanto il suo comportamento fosse schifoso, egli non si è mai fatto cogliere
a dire falsità e dunque non trovo giusta la cancellazione dei suoi post. Questa
è la mia ultima parola sull'argomento 23/06/02.
Tanto per dirla tutta, trovo scorretto il fatto che Bismark abbia inserito in
HJ il gioco Try2Hack come un contenuto INTERNO del sito, mentre nessuno di HJ
ha alcun collegamento con http://www.try2hack.nl/. Poco dopo la prima
stesura di questo testo ho fatto presente la cosa allo stesso Bismark, che ha
detto "il frame è per non far perdere il contatto con il sito HJ"; alla mia
osservazione "per non far perdere il contatto basta un target=_blank" ha risposto
"ci penserò"... infatti si vede come ci ha pensato: ancora oggi ci sono persone
(le quali dovrebbero essere le prime a cui hj dovrebbe andare incontro) che
non riescono a superare il livello 1 perchè vedono solo l'HTML del frameset
creato dal Bismark! Rimane solo da dire: accessibilità per tutti da quelle parti
-_-''
Un redattore di HJ ci ha contattati giudicando questo testo "una guida molto
ben fatta (soprattutto per lo spirito con cui portate il lettore alle conclusioni
indicando tutti i presupposti necessari alla soluzione del livello)."
Per
evitare equivoci chiariamo subito che HackerJournal non ha alcuna connessione
con Try2Hack: per iniziare andate al sito http://www.try2hack.nl/level1.html
Di qualsiasi cosa abbiate bisogno, molto probabilmente qualcuno ha già pensato
a pubblicarla in rete. Per trovarla basta usare www.google.it, attualmente il motore di ricerca
migliore. Se state cercando qualcosa di illegale non meravigliatevi di non
trovarlo da nessuna parte (spesso, nemmeno con Google).
I manuali dei programmi esistono per un motivo
preciso: vanno letti. E' inutile chiedere a qualcuno
di spiegarvi ciò che non capite se esiste già un manuale che risponde esaustivamente
alla domanda. Se il manuale ufficiale è scritto in una lingua a voi sconosciuta
(e non presenta traduzioni ufficiali) cercatene una non ufficiale in una lingua
che conoscete con www.google.it.
RTFM = Read The Fucking Manual (="leggi il fottuto manuale").
BFI www.s0ftpj.org/bfi/ è l'ezine hacking/cracking
migliore d'italia; altre ezine sono OndaQuadra http://www.ondaquadra.org/, NoFlyZone http://www.noflyzone.org/ e un sacco di altre.
Se ti interessa approfondire la conoscenza di Linux ma non sai da dove cominciare,
cerca il LUG (Linux User Group) più vicino a te su http://www.linux.it/. Un'altro sito molto importante
è http://www.pluto.it/, che realizza ILDP
(Italian Linux Documentation Project).
All'indirizzo www.tuxedo.org/~esr/jargon/ si trova
un utile dizionario informatico.
Per chi usa questo gioco come una sorta di "trampolino di lancio" verso l'hacking
(o robe simili), diciamo subito che sta sbagliando tutto. Si veda l'articolo
"How To Become
a Hacker" o la sua traduzione in
italiano.
Le RFC (Request For Comments) sono i documenti
ufficiali di Internet; leggerli è molto importante in quanto ne descrivono
il funzionamento nei minimi particolari (ad esempio i protocolli, oppure le
abitudini); le versioni uficiali si trovano a http://www.rfc-editor.org/ e in molti mirror
sparsi in tutto il mondo.
Per informazioni su OpenOffice.org, la suite
per ufficio opensource sponsorizzata da Sun Mycrosystem, fare riferimento
alle seguenti pagine web (dovrebbero esserci anche traduzioni in italiano
da qualche parte: ma imparare l'inglese toglie un sacco di problemi):
A proposito di OpenOffice.org: www.openoffice.org/about.html
FAQ sulle licenze: www.openoffice.org/FAQs/faq-licensing.html
La Public Documentation License: www.openoffice.org/licenses/pdl.pdf
La Joint Copyright Assignment: www.openoffice.org/licenses/jca.pdf
Per essere informati su quanto accade nel "mondo dell'informatica" non serve
andare in edicola: http://www.slashdot.net/
(inglese, notizie varie), http://www.securityfocus.org/ (inglese,
sicurezza), http://punto-informatico.it/ (italiano,
notizie varie), http://www.portazero.info/ (italiano, sicurezza).
Per quanto riguarda Linux, il Pluto realizza PlutoJournal una Mailing List
sulla quale vengono postati articoli principalmente su Linux, tramite la quale
si possono anche chiedere informazioni: ci si può iscrivere su lists.pluto.linux.it/mailman/listinfo/pluto-journal.
Questi sono solo alcuni dei moltissimi siti che si occupano di informazione.
Parentesi: rubriche come quella di HJ sono totalmente
inutili; le notizie pubblicate sono già vecchie prima ancora di arrivare in
edicola e rubano solo spazio a possibili altri articoli - che d'altro canto,
data la rivista, rimangono solo *ipoteticamente* migliori.
Questa soluzione è stata realizzata utilizzando "MS-Windows 98" e Mozilla
1.0. L'autore ha dato per scontato che si conosca il modo di navigare
e cercare in Internet, di scaricare programmi, di usare programmi da riga
di comando, di copiare e creare file.
Quegli utenti che ancora si ostinano a usare "MS Internet Explorer" farebbero
bene a disfarsene ed a usare Mozilla. Tuttavia inizialmente si troveranno
indicazioni anche per "MS Internet Explorer", indicate con la sigla IE.
NSlPdBN == non sottovalutate la potenza di Blocco Note. Specifichiamo per
quei due o tre marziani che leggono: si trova attraverso il menu "Start",
"Programmi", "Accessori".
I
linguaggi HTML e JavaScript sono linguaggi interpretati:
questo significa che è sempre possibile leggere il codice sorgente di documenti
fatti con questi linguaggi.
Per farlo è suficiente utilizzare il menù "View" (in IE: "Visualizza") e selezionare
"Page Source" (in IE: "HTML"): il testo che vedete è l'HTML della pagina, al
cui interno si trovano tutti gli elementi della pagina indicati dai rispettivi
tag HTML (ad esempio <IMG>
per le immagini). I programmi scritti in JavaScript sono indicati con il tag
<SCRIPT language="JavaScript">
La reference ufficiale del linguaggio HTML si trova all'interno dei documenti
prodotti dal W3C, all'url http://www.w3.org/MarkUp/.
Un ottimo libro sul JavaScript, completo di reference aggiornata alla versione
1.3 è
"JavaScript:
La Guida",
scritto da Brendan Eich, ApoGeoO'Reilly (850 pagine, 40 euro).
Un ottimo libro sull'usabilità (un concetto molto importante all'interno della
progettazione e dello sviluppo di un buon sito web) è "Don't
make me THINK" di Steve Krug, edizioni Hops
(185 pagine, 33 euro).
Anche "Homepage Usability",
di Jacob Nielsen e Marie Tahir, Apogeo (300pagine 45 euro) è un buon libro sull'usabilità.
Appare però troppo costoso in rapporto al contenuto.
Inserendo una password a caso e cliccando, la pagina risponde con un alert() in JavaScript. Quindi la "protezione" si basa su un JavaScript, il cui codice sorgente può essere visualizzato.
SoluzioneVisualizzando
l'HTML della pagina si nota subito il programma in JavaScript, e in particolare
questa parte: if (passwd =="hackerzzz"){
alert("Alright ! On to level 2 ..."); location.href = "levvel2.html"; }
Quel codice significa: "SE la password inserita è hackerzzz
ALLORA comunicalo all'utente e passa al livello successivo di nome levvel2.html".
Non c'è bisogno di dire che inserendo la parola hackerzzz
e cliccando sul tasto "Click here to continue" si passa senza problemi al livello
successivo.
I
file di Macromedia Flash vengono creati a partire da un codice in chiaro e facilmente
modificabile, che in fase di progettazione del filmato viene salvato per comodità
in formato .FLA; questo tipo di file non può essere letto dal Macromedia Flash
Player in quanto è pensato per la progettazione.
Una volta finito, il lavoro viene compresso ed esportato in formato SWF e il
file non è più modificabile direttamente; il file SWF viene letto dal Macromedia
Flash Player e dai relativi Plugin integrati dai browser più diffusi (Mozilla,
Netscape e IE) che visualizzano i filmati riconoscendo i tag <OBJECT>
e <EMBED>
Avendo un file SWF, si può risalire al suo codice sorgente decompilandolo, utilizzando
un decompiler rintracciabile attraverso http://www.google.it/
Il sito della Macromedia è http://www.macromedia.com/; al suo interno
è disponibile sotto forma di shareware il recente Macromedia Flash MX;
tramite l'utilizzo di questo programma è possibile creare filmati in Flash.
Per creare dei semplici filmatini in Flash esiste anche SWiSH disponibile
sotto forma di shareware su http:///.
Un libro su Macromedia Flash che ho letto è "Flash4 - Tutto e oltre",
di Robert Reinhardt e Jon Warren Lentz, Apogeo. E' un po' vecchio, in effetti.
Inserendo un username e una password a caso e cliccando, la pagina NON risponde... la si può saltare ma serve l'url della pagina successiva. La "protezione" si basa sul file SWF. Tale file anche se non è modificabile, è comunque leggibile attraverso un editor testuale (es: blocco note).
SoluzioneVisualizzando
l'HTML della pagina troviamo immediatamente il tag <OBJECT>
che indica la presenza del filmato Flash. Leggendo la proprietà <param
NAME=movie> ricaviamo senza problemi il nome del filmato: FlashLevel2.swf.
Possiamo recuperare il file all'interno della cartella dei file temporanei oppure
scaricarlo inserendo nella barra degli indirizzi il suo url (ovvero http://try2hack.nl/FlashLevel2.swf)
e selezionando dal menu "File" la voce "Save As..." (in IE "Salva con nome...").
A questo punto aprendo Blocco Note e cliccando sul menu "File", "Apri..." e
selezionando il file appena scaricato possiamo leggere la soluzione.
Fra la miriade di caratteri illeggibili spiccano le parole txtUsername, Try2Hack,
txtPassword, NokiaIsGood, LLeVeLL3.html ...il secondo livello è risolto:
per passare al terzo non resta che andare alla pagina LLeVeLL3.html (url completo:
http://try2hack.nl/LLeVeLL3.html).
C'era anche la possibilità di utilizzare un decompiler: una volta trasformato
il file in formato FLA per sapere l'url era sufficiente leggere la proprietà
URL della ACTION getURL relativa all'oggetto "Button". Chi non conosce Flash
si troverà meglio col metodo del Blocco Note.
Per
poter visualizzare una pagina, il browser deve prima trovarla e poi iniziare
a scaricarla; dopo averla scaricata la visualizza. Utilizzando il pulsante "Stop"
(in IE: "Termina") si può fermare il caricamento della pagina e rimanere a quella
attuale.
In JavaScript è possibile caricare uno script "esterno" (ovvero non scritto
nella pagina html in cui deve essere avviato), attraverso la proprietà <SCRIPT
SRC="nome_del.file">. Questa opzione è molto utile se ci si
trova nella necessità di ripetere uno stesso script su più pagine.
Un file può benissimo non avere estensione.
La pagina presenta un alert() JavaScript. Quindi la "protezione" si basa su un JavaScript, il cui codice sorgente può essere visualizzato.
SoluzioneVisualizzando
l'HTML della pagina si nota subito il tag <script src="JavaScript"></SCRIPT> che indica
che lo script esterno risiede in un file di nome "javascript".
Inserendo nella barra degli indirizzi l'url del file (http://www.try2hack.nl/javascript)
possiamo leggere la password esatta (TheCorrectAnswer) e l'url del livello
successivo (thelevel4.html).
Il
Java è un linguaggio sicuro, portabile, semplice, orientato a oggetti, robusto,
multiprocesso (multithread), indipendente dall'architettura, interpretato, distribuito,
dinamico e ad alte prestazioni creato dalla Sun MicroSystem.
Fra i suoi pregi maggiori ci sono la assoluta
portabilità del codice (uno stesso programma può girare su qualsiasi
sistema grazie al bytecode e alle Java Virtual Machine) e la libertà di utilizzo
dei compilatori, distribuiti come freeware dal sito ufficiale java.sun.com. Sul Sito ufficiale si trova anche
una reference completa.
Per chi vuole cominciare a programmare, Java è molto appropriato.
Per poter leggere il codice sorgente di un programma serve un "decompiler" che
trasformi il bytecode in codice leggibile, reperibile attraverso http://www.google.it/.
Un ottimo libro su Java, aggiornato al JDK1.3 è "Java2:
La Guida Completa", scritto da Herbert Shildt, McGrawHill (998 pagine,
60 euro).
"Decompilare" il programma e leggerlo.
SoluzioneLeggendo
il programma decompilato, si nota l'istruzione infile = new String("level4");
(che inizializza una stringa "leve4") seguita da inURL
= new URL(getCodeBase(), infile); (che utilizza tale stringa come
argomento di getCodeBase(), una funzione
che carica il contenuto del file corrispondente all'url).
Di consenguenza, emulando quanto fatto dall'applet e leggendo il file http://www.try2hack.nl/level4
si trova scritto in chiaro l'url del livello successivo: 5_level_5.html
Il
Visual Basic è un linguaggio compilato orientato ad oggetti creato da Microsoft,
che ad intervalli regolari ne sforna una versione nuova per creare un po' di
casino. Per informazioni sulla più recente uscita di Microsoft, la piattaforma
.NET, si veda http://www.microsoft.com/. L'ambiente di
sviluppo Visual Basic, nel caso in cui si volesse usarlo, andrebbe comprato
e non costa neppure poco. I decompiler per alcune versioni di visual basic (principalmente
per la 3) si trovano su http://www.google.it/
Tra i linguaggi di programmazione, l'uso di Visual Basic da parte mia è Fortemente
Sconsigliato. Molto meglio Java.
In questo livello troviamo un file compresso: attualmente il miglior programma
di compressione/decompressione/split di archivi per Windows è WinRAR http://www.rarsoft.com/
Decompilare il file contenuto in level5.zip
SoluzioneDopo
aver scaricato decompresso e decompilato il file (ad esempio attraverso questo decompilatore
o http://www.decompiler.net/) bisogna capire
cosa fa il programma.
Le istruzioni
Const
mc001A = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.,:;-*+=~|&!_$#@()[]{}<\/>"
Const mc001E = "http://www.try2hack.f2s.com/login-level6.html"
If txtUsername <> Mid(mc001A, 56, 1) & Mid(mc001A, 28, 1) & Mid(mc001A, 35, 1) & Mid(mc001A, 3, 1) & Mid(mc001A, 44, 1) & Mid(mc001A, 11, 1) & Mid(mc001A, 13, 1) & Mid(mc001A, 21, 1)
Questo è il punto in cui il programma controlla la password:If txtPassword <> Mid(mc001A, 51, 1) & Mid(mc001A, 31, 1) & Mid(mc001A, 30, 1) & Mid(mc001A, 51, 1) & Mid(mc001A, 16, 1) & Mid(mc001A, 45, 1) & Mid(mc001A, 24, 1) & Mid(mc001A, 29, 1) & Mid(mc001A, 26, 1) & Mid(mc001A, 19, 1) & Mid(mc001A, 28, 1) & Mid(mc001A, 11, 1) & Mid(mc001A, 30, 1) & Mid(mc001A, 19, 1) & Mid(mc001A, 25, 1) & Mid(mc001A, 24, 1)
Questo è il punto in cui il programma crea l'url:l003C$ = Left$(mc001E, 28) & Mid(mc001A, 22, 1) & Mid(mc001A, 67, 1) & Mid(mc001A, 15, 1) & Mid(mc001A, 67, 1) & Mid(mc001A, 32, 1) & Mid(mc001A, 67, 1) & Mid(mc001A, 15, 1) & Mid(mc001A, 67, 1) & Mid(mc001A, 22, 1) & Mid(mc001A, 67, 1) & Mid(mc001A, 7, 1) & Mid(mc001A, 63, 1) & Mid(mc001A, 18, 1) & Mid(mc001A, 30, 1) & Mid(mc001A, 23, 1) & Mid(mc001A, 22, 1)
A
questo punto conosciamo tutte le parti importanti del programma.
La funzioni left$(str, n) restituisce i primi n caratteri della stringa str;
la funzione Mid(str, n, m) restituisce i primi m caratteri della stringa str
a partire dal carattere n. Ad esempio Left$(mc001E, 28)
indica le prime 28 lettere della seconda stringa; Mid(mc001A, 22, 1) indica la ventiduesima lettera della prima
stringa (dunque la "l").
Conoscendo il significato delle funzioni, è banale ricavare la soluzione:
lo username è: Try2Hack
la password è: OutOfInspiration
l'url è: http://www.try2hack.f2s.com/l-e-v-e-l-6.html
Per quanto corretto, quell'url non è valido; se ne sono accorti anche gli autori, che hanno reso disponibile http://www.try2hack.nl/l-e-v-e-l-6.html. F2s.com ha cancellato il loro account.
Un
proxy è un server di transito; usando un proxy per connetterci a un altro server
in pratica noi ci connettiamo al proxy, gli diciamo di connettersi all'altro
server e di rimandarci la risposta. Un proxy può essere usato per nascondere
la propria identità all'altro server (e di conseguenza navigare con una maggiore
anonimità). Per una lista di proxy anonimi fare riferimento a http://www.multiproxy.org/ e cercare attraverso
http://www.google.it/
Esistono programmi detti sniffer che intercettano tutte le comunicazioni che
passano dalle porte di un server. Sono usati principalmente per scoprire cosa
si "dicono" due server. Per trovare uno sniffer è meglio usare neworder.box.sk
I server che scambiano informazioni importanti (ad esempio numeri di carte di
credito) hanno il dovere di prevenire i rischi di sniffing da parte di persone
non autorizzate. Di conseguenza criptano i dati per impedire a terzi di conoscerne
il contenuto. Per maggiori informazioni sulle connessioni criptate si faccia
riferimento a http://www.openssl.org/ e http://www.stunnel.org/; sulla critografia
a doppia chiave numerica http://www.pgpi.org/.
Windows possiede alcuni comandi di rete accessibili da riga di comando (il prompt
di MS-DOS): alcuni di questi sono netstat n (serve a capire quali connessioni
TCP sono in corso; il controllo viene effettuato ogni n secondi e può essere
fermato tramite CTRL+C) e ipconfig (visualizza informazioni sul server
quali l'ip in uso, il dns e il gateway predefiniti).
Usare
uno sniffer per scoprire cosa si dicono client e server.
B*C*N**N significa Francis Bacon.
Cercando
"sniffer" su Neworder, fra gli altri esce lo sniffer dei cDc ("cult of the Dead
cow", i creatori di BackOrifice per interderci). Data l'esperienza e la dimostrata
affidabilità del gruppo, scegliamo il loro sniffer: "Buttsniff".
Molti antivirus segnalano che Buttsniff è un programma dannoso. Se istallato
su una macchina di cui non si è proprietari, può servire per spiare gli utenti.
Per quanto riguarda l'uso necessario alla soluzione di questo livello non dà
nessun problema.
Avviamo level6-VB6.exe e inseriamo un nick e una password a caso. Poi procediamo
a capire quali porte usa per connettersi e a quale host si connette. Avviato
il prompt di MS-DOS si scriva netstat 2; dopo un paio di giri (cliccare
su "Login", attendere il report del netstat, controllare le porte) si riescono
a scartare le connessioni note attualmente in corso (mIRC si connette alle 6667-6669
del server IRC, Mozilla sulle porte 80 dei server HTTP, BNR2
usa il protocollo NNTP per le news...) e rimane una connessione sconosciuta
verso dhammapada.mediamonks.net che altri non è che il server degli autori
del Try2Hack! (il fatto che sia il loro server si capisce dai credits nella
homepage del Try2Hack)
Una volta scoperto l'host remoto serve conoscere le porte locali usate dal programma:
attraverso il netstat troviamo qualcosa tipo 1134, 1165, 1147, 1138... approssimativamente
il range è 1100-1200.
Il Buttsniff si avvia dal prompt di MS-DOS e se eseguito mostra la frase: Usage:
buttsniff -{idl} arguments che ne spiega il funzionamento; dato che per
risolvere il livello dobbiamo sapere cosa si scambiano client e server la cosa
migliore è utilizzare il parametro -d in quanto permette di loggare le
comunicazioni intercettate su un file. Per sapere il numero del device istallato
basta eseguire buttsniff -l: l'autore ha trovato 0. Non serve altro che
cominciare a sniffare: per sapere il contenuto dei pacchetti useremo il filtro
e. Il comando finale risulta buttsniff -d 0 level6log.txt e 1100-1200
Fatto partire lo sniffer non resta che cliccare su "Login" e avviare la connessione
col server (il programma ovviamente dirà ancora che la password è errata). Chiuso
Buttsniff si proceda alla lettura di level6log.txt; le parti da tenere in considerazione
sono:
Content-Type: text/plain (ENCRIPTION
TYPE) B*C*N**N (USERNAME) ababa abbab baaaa aaabb (PASSWORD) ababa aaaaa abbaa
abbba aaaaa baaaa baaba babba (PAGE) ababa aabaa baabb aabaa ababa baaab aabaa
baabb aabaa ab
Risulta evidente che username, password e url sono criptati. Si nota che sono
stringhe di cinque caratteri composte solo da "a" e "b". L'ultima stringa è
incompleta, probabilmente a causa dello sniffer. E' un metodo inventato da Francis
Bacon (1561-1626): un sistema crittografico nel quale gli equivalenti di tale
sistema sono gruppi di cinque lettere e il sistema risultante è monoalfabetico.
Bacon usa un sistema di cifratura a 24 lettere con I e J, U e W usate in modo
intercambiabile:
A = aaaaa I/J = abaaa R = baaaa
B = aaaab K = abaab S = baaab
C = aaaba L = ababa T = baaba
D = aaabb M = ababb U/V = baabb
E = aabaa N = abbaa W = babaa
F = aabab O = abbab X = babab
G = aabba P = abbba Y = babba
H = aabbb Q = abbbb Z = babbb
Bacon descrisse
l'effetto della steganografia su messaggi nascosti in un 'innocuo' messaggio esterno.
Supponiamo che le lettere maiuscole rappresentino l'elemento "a"; e quelle minuscole
rappresentino l'elemento "b";.Il messaggio "All is well with me today" può essere
usato per nascondere il messaggio "Help." Cioè: A L l i s W E l L W I t H m E T o d a Y
a a b b b a a b a a a b a b a a b b b a
H E l P
Bacon
descrive molte altre variazioni del sistema.
Utilizzando la tabella di cui sopra, la soluzione risulta:
username: lord
password: lanparty
url: leuelseue* oppure levelseve*
L'asterisco sta al posto della lettera incompleta. Inserendo "lord" e "lanparty"
nel programma, viene svelata la soluzione: "levelseven.html"; a conferma
si noti che la "n" è una delle lettere il cui codice comincia con "ab".
Attraverso
un linguaggio di programmazione server-side (come ad esempio ASP, PHP, CGI)
è possibile conoscere un gran numero di caratteristiche del browser che visita
la pagina, attraverso una serie di intestazioni appartenenti al protocollo HTTP
che identificano il tipo di browser, il sistema operativo, la presenza di cookies,
la pagina visitata precedentemente, la nazione da quale si connette l'utente
e molti altri.
Per conoscere meglio PHP: http://www.php.net/
Usare il programma Curl.
SoluzioneL'url
"http://www.try2hack.nl/cgi-bin/level7.pl" presenta una pagina che pone tre
condizioni per l'entrata: avere IE 6.72, avere un sistema UNIX/LINUX, provenire
dalla pagina "http://www.microsoft.com/ms.htm". Appare evidente che le condizioni
sono impossibili da realizzare. Dato che lo script analizza le intestazioni
HTTP generate dal nostro browser, per passare il livello dovremo "falsificare"
queste informazioni.
cURL è
un programma Open Source curl.haxx.se che
fa proprio al caso nostro: permette di personalizzare completamente il pacchetto
da mandare al server. Una volta scaricato bisogna capire come funziona. I documenti
sul sito spiegano eccellentemente il suo funzionamento. Per fingere di utilizzare
IE 6.72 basta servirsi del parametro -a che imposta l'USER AGENT, ovvero
la versione del browser in uso. Questo contiene anche la specifica del sistema
operativo. Per fingere di provenire da un url basta servirsi del parametro -e
che imposta il REFERRER ovvero l'url dal quale si arriva. Inoltre bisogna salvare
l'output su un file: basta usare il parametro -o. Il comando da dare
a cURL è quindi:
curl -A "Mozilla/4.0 (compatible; MSIE 6.72; Linux
2.2.15 i686)" -e http://www.microsoft.com/ms.htm http://www.try2hack.nl/cgi-bin/level7.pl
-o livello7.txt
Dal prompt di MS-DOS si incontra un problema: il comando è troppo lungo e non
sta nella riga. Per aggirare l'ostacolo basta dare il comando attraverso "Start"
"Esegui..." tenendo presente che bisogna utilizzare il percorso assoluto del
file (ad esempio c:\downloads\cUrL\curl.exe...).
Dopo aver eseguito il comando, aprendo il file livello7.txt appare:
Url: level-8.html
Password della messageboard: TonyHawk2
I
CGI sono dei veri e propri programmi che girano sul server: di conseguenza un
bug all'interno di uno di questi file può creare una grossa falla di sicurezza
nell'intero server. Nel corso degli anni sono stati scoperti e corretti innumerevoli
bug: solo i più recenti possono permettere di scoprire le password degli utenti,
perchè l'amministratore può essere in ritardo con gli aggiornamenti del sistema.
Per essere informati su bug ed exploit http://www.sikurezza.org/
Nei server *nix le password vengono salvate all'interno del file /etc/passwd
nel formato username:password_criptata; le password sono criptate in
DES oppure "shadowate". Una password shadow è nascosta in un file diverso da
/etc/passwd.
DES significa Data Encryption Standard: cripta un testo privato (o una password)
in un output "scramblato" secondo una chiave segreta. Il testo iniziale è anche
detto "plaintext", e il risultato del criptaggio "ciphertext". L'idea è che
solo il destinatario che conosce la chiave segreta può decriptare il "ciphertext"
e leggere il messaggio originale. Il DES usa una chiave a 56 bit, dunque ci
sono 2^56 possibili chiavi. Nel 1998 la EFF, Electronic Frontier Foundation,
ha pubblicato un documento
nel quale prova la possibilità di crackare tale metodo di criptaggio.
Il più famoso decriptatore di password DES è John The Ripper, reperibile su
http://www.google.it/
Guardare l'HTML. Cercare un exploit.
SoluzioneCome
si nota dall'HTML <form ACTION="cgi-bin/phf.cgi"
...>, lo script che sovrintende il login è il PHF-CGI! Uno
dei più vecchi e famosi bug della storia del web.
Utilizzando http://www.google.it/ in pochi secondi si trova
il modo di sfruttare il bug, attraverso la richiesta http://www.domain.com/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd
il che significa pressappoco "ordina al PHF di eseguire il programma cat sul
file delle password". Cat è un editor: il risultato è il file /etc/passwd in
chiaro.
Rispetto al server T2H: http://www.try2hack.nl/cgi-bin/phf.cgi?Qalias=x%0a/bin/cat%20/etc/passwd
La risposta del server: username BuiZe, password criptata DES Bu3kOx4cCMX2U
Ora serve John The Ripper per decriptare la password.
Avviato John The ripper si proceda a capirne il funzionamento; per poterlo usare
bisogna dargli un file da leggere. Si apra Blocco Note, si scriva BuiZe:Bu3kOx4cCMX2U
e si salvi nella cartella di John col nome pass.txt
Eseguito il comando john pass.txt basta aspettare circa mezz'ora (la
durata dipende anche dalla potenza del computer): il buon "Little John" ci offre
la password arsanik
Livello risolto!
Le istruzioni per il livello 9 sono: entrare nel canale #try2hack @ irc.quakenet.org
e querare il bot'TRY2HACK' (dicendo "perfect-start").
Conoscenza
dell'uso di client IRC. Il client Windows più usato in assoluto è mIRC http://www.mirc.com/.
Per linux è BitchX http://www.bitchx.org/
Si veda www.panservice.it/simplecity/ircfaq.html,
www.panservice.it/simplecity/opguide.html
e www.zonaitalia.it/test/guida.html.
L'algoritmo base64 codifica dei dati in modo tale che essi siano rappresentabili
con un sottoinsieme visualizzabile dei caratteri ASCII. I caratteri usati sono
in tutto 65 (64 per la rappresentazione più uno speciale) e sono i seguenti:
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
lo speciale carattere '=' è usato come "terminatore" in casi particolari.
Gli eggdrop sono dei bot per mIRC scritti in TLC: nelle reti che non dispongono
di servizi come ChanServ, NickServ e simili (ovvero tutte fino a qualche tempo
fa e molte ancora adesso) servono a mantenere il controllo di un canale; sono
programmi che girano su shell. Per informazioni http://www.egghelp.org/, http://www.eggdrop.net/
A simbolo uguale corrisponde lettera uguale.
SoluzioneSeguendo le istruzioni (/msg TRY2HACK perfect-start) troviamo la frase da decriptare:
Wbva
#gel2unpx.yriry9. Gb trg gur xrl lbh arrq gb qrpbqr gur sbyybjvat yvar:
GTI2MJj5YJ15DxVmERy1rQIZ=
Tbbq yhpx, naq frr lbh ba #gel2unpx.yriry9.
Questo
testo è criptato utilizzando il metodo Rot13
(è noto che fu usato anche da Giulio Cesare). Pertanto, per decriptarlo basta
usare un programma apposta (ad esempio www.alliancestudio.com/tk/rot13.html).
Inoltre, partendo dalla chiave #gel2unpx.yriry9
= #TRY2HACK.LEVEL9 (alla quale si arriva facilmente ad intuito)
e sostituendo a simbolo uguale lettera uguale, è semplice arrivare al testo
decriptato:
JOIN #TRY2HACK.LEVEL9. TO GET THE KEY YOU NEED TO DECODE THE FOLLOWING LINE:
GTI2MJj5YJ15DxVmERy1rQIZ=
GOOD LUCK, AND SEE YOU ON #TRY2HACK.LEVEL9.
La lunghezza ma soprattutto il carattere "=" indicano che la stringa è criptata
in base64. Decodandola (ad esempio con www.simtel.net/pub/pd/24229.html)
si trova Level9-myBB3DIux5L. Usando questa chiave per entrare nel canale
#try2hack.level9 si trova la successiva stringa da decodare:
01001110011010010110001101100101001000000110101001101111011000100010111000100000010011100110111 10111011100100000011101000111100101110000011001010010000000100111001011110110110101110011011001 11001000000101010001010010010110010011001001001000010000010100001101001011001000000111001101101 00001101111011101110110001001110101011001110010011100100000011101000110111100100000011100110110 010101100101001000000111010001101000011001010010000001100
Non ci sono dubbi: è linguaggio binario. Utilizzando un programma come www.nickciske.com/binary/index.php, la stringa si traduce in Nice job. Now type '/msg TRY2HACK showbug' to see the . Seguendo le istruzioni il bot risponde
ovaq
pgpe - CVAT pgpe:cvatercyl
cebp pgpe:cvatercyl {avpx hubfg unaq qrfg xrl net} {
frg qhe [rkce [havkgvzr] - $net]
chgfrei "ABGVPR $avpx :Lbhe cvat ercyl gbbx $qhe frpbaqf"}
Bisogna
nuovamente decodare. La chiave è la stessa del primo messaggio, dunque:
BIND CTCR - PING CTCR:PINGREPLY
PROC CTCR:PINGREPLY {NICK UHOST HAND DEST KEY ARG} {
SET DUR [EXPR [UNIXTIME] - $ARG]
PUTSERV "NOTICE $NICK :--YOUR PING REPLAY TOOK $DUR SECONDS"}
Questo script è scritto in TLC; indica che l'eggdrop esegue i comandi che gli
arrivano in risposta ad un ping. Per riuscire a sfruttare questo bug bisogna
simulare la risposta a un ping del bot attraverso il comando /ctcpreply
e usarlo per inserire il proprio nick fra gli user del bot (per potervicisi
loggare in seguito): il comando è
/ctcpreply nomebot PING [adduser
nick host]
Per far funzionare il comando bisogna inserire il nome del bot (che cambia a
intervalli regolari), il proprio nick e il proprio host compreso di ident. Ad
esempio l'utente pippo userebbe il comando /ctcpreply
LEVEL9-777 PING [adduser pippo *!pippo@ppp*]
Le versioni di mIRC che seguono la 5.51 hanno una protezione che impedisce di
floodare attraverso il comando ctcpreply. Questo implica che usando una versione
successiva non è possibile far giungere al bot l'intero comando. Per ovviare
al problema basta scaricare una versione precedente alla 5.51 da www.mircx.com/download.html. Quando
il comando va a buon fine il bot risponde con un notice "your ping reply took
$dur seconds".
Per finire il livello bisogna guadagnare il titolo di owner sul bot. Per farlo
bisogna usare il comando chattr nick +nm attraverso
il ctcpreply. Ad esempio l'utente pippo userebbe il comando
/ctcpreply LEVEL9-777 PING [chattr pippo +nm]
Per potersi loggare sul bot bisogna avere un account completo, quindi una password,
che va settata con /msg nomebot pass password.
Ad esempio l'utente pippo userebbe il comando /msg
LEVEL9-777 pass fenomeno
E' il momento di loggarsi tramite DCC con il comando /dcc chat
nomebot. Ad esempio l'utente pippo userebbe il comando
/dcc chat LEVEL9-777
Dopo essersi loggati basta inserire la password e come per magia il bot risponde:
<level9-777>Connected to LEVEL9-00, running on Linux 2.4.18. <level9-777> <level9-777>Local time is now 14:37 <level9-777>NOT! Welcome in LEVEL9-779, pippo! <level9-777>****************************************************** <level9-777>* AUTO LOG OUT! * <level9-777>****************************************************** <level9-777>-=- poof -=- <level9-777>You've been booted from the bot by LEVEL9-00. <level9-777>pippo finished level 9!
-LEVEL9-777- Go to http://www.try2hack.nl/the_l_e_v_e_l_10.php for level 10 :) -LEVEL9-777- As you finished this level you will now be ignored.
Si
è già parlato di Java al livello 4. Per la soluzione
di questo livello non è necessario sapere niente di più, ma se si è in grado
di compilare un file con javac il compito sarà sicuramente più semplice.
Per istallare il compilatore Java basta scaricare l'ultimo J2SE disponibile
su java.sun.com e istallarlo. Dopodichè basterà
inserire nel file autoexec.bat il comando PATH relativo alla cartella
di lavoro dei programmi dei J2SE. Ad esempio PATH c:\j2se1.4.0_01\bin.
Per poter continuare ad usare il prompt di DOS abitualmente, la stringa che
ho inserito è PATH c:\windows;c:\windows\command;c:\j2se1.4.0_01\bin
Non venitemi a chiedere come istallarlo su sistemi diversi da "MS Windows98"
perchè non lo so e non avrò mai bisogno di saperlo (eccezion fatta per Linux,
del quale parlerò se e quando sarò capace).
Una volta istallato il J2SE, per compilare un programma in Java basta portarsi
nella cartella del file che contiene il codice sorgente del programma e usare
il comando javac nomefile.java (l'estensione del file deve essere per
forza .java, in caso contrario il compilatore restituirà un errore).
La classe StringTokenizer non è fra quelle presentate dal manuale consigliato
poc'anzi (si intende nel livello 4); per conoscerne il funzionamento basta leggere
la reference relativa al costruttore che viene utilizzato all'interno del programma
in questione (su java.sun.com c'è un pratico motore di ricerca)...
java.sun.com/...#StringTokenizer(java.lang.String,%20java.lang.String,%20boolean).
C'è
poco da suggerire, tutte le istruzioni sono autoesplicative.
In ogni caso, imparare Java non fa affatto male. Questo è un buon suggerimento.
Copiando
il programma Java in un file di testo di nome Level10.java (il nome non può
essere diverso, perchè deve essere uguale a quello specificato della classe
principale, quella che chiama main(); Java è case sensitive) si riesce
a compilare senza problemi; eseguendo il programma (che lavora sulla stringa
"String") il risultato è
.6x#5.2x#3.5x#4.4x#2.2x#1.25x#0.9x#
Analizzando il codice: la classe Letter è il fulcro del programma. Per
ogni lettera della stringa str, inserisce la sua posizione all'interno
della stringa x, nell'array b[]. In seguito ogni "posto" vuoto
di b[] viene riempito con un carattere "#". Tali caratteri vengono poi
"raccolti a fattor comune" dalla funzione cut().
Per capire meglio il funzionamento del programma si possono inserire dei comandi
System.out.println(). Ad esempio inserendo System.out.println(rot); prima di return rot;
e compilando il nuovo file, si può notare che prima della chiamata alla funzione
cut() la stringa risulta essere
######5##3#####4####2##1#########################0#########
Risulta evidente che ".nx#" indica il numero
n di "#" tra un carattere e l'altro. Mettiamo a confronto
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ# ######5##3#####4####2##1#########################0#########Ci sono sei caratteri in più. Infatti ogni volta che viene scritta una cifra viene anche aggiunto un "#". Togliendo un "#" dopo ogni cifra:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ# ######5#3####4###2#1########################0########
Si
tenga presente che gli array sono indicizzati a partire da 0, quindi la posizione
di un componente è sempre uguale al suo indice più 1. Il settimo carattere,
"g", è la sesta (5+1) lettera della parola iniziale; il decimo carattere, "i",
è la quarta lettera (3+1) della parola iniziale e così via fino ad "S", che
è la prima lettera. La parola "String" è stata ricomposta.
Le istruzioni chiedono di trovare l'input che genera questo risultato:
.3x#7.5x#6.6x#3.5x#9#4.2x#1.7x#5.5x#8.6x#0.10x#2.3x#.
Il quale corrisponde a:
###7#####6######3#####9#4##1#######5#####8######0##########2###
Con lo stesso procedimento di prima, confrontiamo
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ# ###7#####6######3#####9#4##1#######5#####8######0##########2###La soluzione è formata da 9 caratteri. Togliendo i "#" in eccesso:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ# ###7####6#####3####94#1######5####8#####0#########2##
La
soluzione è: OwYouDidIt
Attualmente la risposta è Please check back with us to see when level 11
is ready, you will have to keep the password in order to come to this page again...
li prendiamo in parola.
© Iron Bishop 2002