7° Corso Newbies |
|
|
18/10/2000 |
by " Pincopall " |
5/09/2000 |
|
Published by Quequero |
|
|
Bravo pinco, buon tute, anche questo discretamente sintentico ma cmq ben spiegato |
Se un programma è inutile dovrà essere documentato. |
| UIC's form |
|
UIC's form |
Difficoltà |
(X )NewBies ()Intermedio ( )Avanzato ( )Master |
La soluzione di questo corso consiste nello sniffare un keyfile, ovvero carpirne il nome ed il contenuto, i keyfile però non saranno uno solo ma 4, uno per ogni livello di difficoltà .
Introduzione |
Tools usati |
URL o FTP del programma |
Notizie sul programma |
Essay |
* Possible StringData Ref from Data Obj ->"C:\KeyFile.And"
|
:0040158D push 00404154
* Reference To: KERNEL32.CreateFileA, Ord:0031h
|
:00401592 Call dword ptr [004052AC]
:00401598 mov dword ptr [ebp-3C], eax
:0040159B cmp dword ptr [ebp-3C], FFFFFFFF
:0040159F je 00401661 ------- Se il file non è presente salta ad errore
:004015A5 push 00000000
:004015A7 mov eax, dword ptr [ebp-3C]
:004015AA push eax
* Reference To: KERNEL32.GetFileSize, Ord:00EDh
|
:004015AB Call dword ptr [004052A8]
:004015B1 mov dword ptr [ebp+FFFFFF54], eax
:004015B7 cmp dword ptr [ebp+FFFFFF54], FFFFFFFF
:004015BE je 0040164F---- Se salta compare la stringa "Errore nel filesize"
:004015C4 push 00000000
:004015C6 lea ecx, dword ptr [ebp+FFFFFF58]
:004015CC push ecx
:004015CD mov edx, dword ptr [ebp+FFFFFF54]
:004015D3 push edx
:004015D4 lea eax, dword ptr [ebp+FFFFFF60]
:004015DA push eax
:004015DB mov ecx, dword ptr [ebp-3C]
:004015DE push ecx
* Reference To: KERNEL32.ReadFile, Ord:01D6h
|
:004015DF Call dword ptr [004052A4]
:004015E5 test eax, eax ----- Controlla ke il keyfile non sia vuoto ...
:004015E7 je 0040163D ----- .... se lo è salta ad errore
:004015E9 cmp dword ptr [ebp+FFFFFF58], 00000000
:004015F0 je 0040163D
:004015F2 mov edx, dword ptr [ebp+FFFFFF58]
:004015F8 mov byte ptr [ebp+edx-000000A0], 00
:00401600 xor ecx, ecx
:00401602 lea esi, dword ptr [ebp+ecx-000000A0]-- muove in esi il nostro codice
:00401609 lea edi, dword ptr [ebp+ecx-00000038]-- muove in edi il giusto codice
:00401610 mov ecx, 0000002B
:00401615 repz
:00401616 cmpsb
:00401617 je 0040162B --- Salta se sono uguali, sennò.....
* Possible StringData Ref from Data Obj ->" Codice sbagliato"
|
:00401619 push 00404140
:0040161E lea ecx, dword ptr [ebp+FFFFFF5C]
Okkei, eccoci dunque al secondo livello, AndreaGeddon ci dice che è un po' come il primo, solo ke stavolta ci sono un po' più di calcoli da fare, bene, partiamo, rifacciamo partire FileMon e vediamo ke, clikkando il pulsante "KeyFile Two" questa volta il proggy cerca il file andrewz.uic nella dir di Windowz, bene, andiamo nell'editor esadecimale e creiamoci il nostro bel file andrewz.uic salvandolo nella dir di Win. Anke stavolta mettiamo un bpx createfilea nel SoftIce e dopo aver clikkato sul pulsante ecco ke salta fuori il nostro debuggerino ke ci porta all'indirizzo 00401771, bene ma guargate un po' cosa c'è un po' più sopra, ci sono un mucchio di spostamenti di byte ke vi riporto qui:
:004016F8 sub esp, 00000088 :004016FE push ebx :004016FF push esi :00401700 push edi :00401701 mov dword ptr [ebp+FFFFFF6C], ecx :00401707 mov [ebp-1C], DF :0040170B mov [ebp-1B], C3 :0040170F mov [ebp-1A], C9 :00401713 mov [ebp-19], F8 :00401717 mov [ebp-18], FF :0040171B mov [ebp-17], E6 :0040171F mov [ebp-16], EF :00401723 mov [ebp-15], F0 :00401727 mov [ebp-14], CC :0040172B mov [ebp-13], C5 :0040172F mov [ebp-12], D8 :00401733 mov [ebp-11], CF :00401737 mov [ebp-10], DC :0040173B mov [ebp-0F], CF :0040173F mov [ebp-0E], D8 :00401743 xor eax, eax :00401745 mov byte ptr [ebp-0D], al :00401748 lea ecx, dword ptr [ebp+FFFFFF78]
Qui nella sezione "info" Andrew ci dice di non fidarci di Filemon, che stavolta bisogna stare attentia dove si mette il file (oltre ke a quello ke ci si mette nel file), vabbè, noi lanciamo Filemon e vediamo ke il prog " settimo" cerca un file chiamato "avelletri.fra", ma ke lo cerca nella directory in cui abbiamo messo il programma (nel mio caso c:\pinco\corsi), in c:\windows\system, in c:\windows\system32, in c:\windows\command ed in c:\windows, bene, proviamo a mettere il nostro file in c:\pinco\corsi, dopo averlo ovviamente creato con l'editor esadecimale (ma non serve ke ve lo dica più no?), e vediamo ke , pigiando il pulsante "Keyfile three" il proggy mi dice: "Errore nell'apertura del keyfile", mannaggia, come mai? bene , stavolta usiamo il WDasm, e cerchiamo tale stringa che troveremo nella finestra "String Data References", è la stringa con la parola "keyfile" scritta con la "k" minuscola. Ora che ci siamo, guardiamo in alto e vediamo la API a cui brekkare, ovvero GetSystemDirectory, dunque entriamo in SIce (^D) e mettiamo un bpx su quell'API; ma prima di fare questo, notiamo ancora un po' in alto, una scritta , e quella è la stringa da inserire nel nostro keyfile, ovvero "La mia mente controlla la mia realtà", e se andate a vedere anke per gli altri livelli, troverete lo stesso la stringa lì pronta ad aspettare di essere carpita da voi, mettiamo dunque la stringa nel keyfile e cerkiamo ora di capire dove è ke va messo 'sto keyfile:
Questa è la sintassi dell'API GetSystemDirectory:
UINT GetSystemDirectory(
LPTSTR lpBuffer, // address of buffer for system directory
UINT uSize // size of directory buffer
);
Ecco il codice prima di GetSystemDirectory allora:
:00401929 push 00000104
:0040192E lea eax, dword ptr [ebp+FFFFFEC8]
:00401934 push eax
* Reference To: KERNEL32.GetSystemDirectoryA, Ord:0131h
|
:00401935 Call dword ptr [004052B4]
:0040193B push 00000000
Guardiamo allora cosa viene pushato all'adress 00401934, lì si ha infatti un push eax, e facendo "d eax" si trova "C:\Windows\system", il file avelletri.fra, contenente la stringa "La mia mente controlla la mia realtà va dunque messo lì dentro. Ah, se mettevate il file con dentro la stringa giusta in un 'altra dir veniva fuorti la scritta "Te l'avevo detto di non fidarti di Filemon"
EVVAI ANKE IL TERZO E' FINITO!!
LIVELLO 4
Dunque eccoci al quarto livello, avviamo di nuovo Filemon e vediamo ke cerca il file papero.que, e ke mi dice ke l'ha trovato, cosa? l'ha trovato ? ma io non l'ho creato, già ma il programma lo crea da solo come si pigia il pulsante e mi dice "codice sbagliato", bene allora, andiamolo a vedere 'sto codice. Mettiamo nel file una stringa a caso tipo 123456789 e vediamo usando Sice che succede, anke se AndreaGeddon stavolta mi dice ke è un po' più difficile seguire il programma sotto SIce...dunque, metto un bpx su CreateFileA, esco dal Sice con F5, e clikko sul quarto pulsante, SoftIce poppa e premo F12 pensando di ritrovarmi ,come prima, subito in "Settimo" , ed invece sorpresa delle sorprese, mi ritrovo in MSVCRT prima ed in MSVCIRT per due volte dopo, prima di arrivare in Settimo, bene, ecco a kosa sono:
:00401BB0 Call dword ptr [00405444]
:00401BB6 lea edx, dword ptr [esp+08]
:00401BBA lea ecx, dword ptr [esp+0C]
:00401BBE push edx
* Reference To: MSVCIRT.??5istream@@QAEAAV0@AAH@Z, Ord:0076h
|
:00401BBF Call dword ptr [00405440]
:00401BC5 lea ecx, dword ptr [esp+0C]
* Reference To: MSVCIRT.?close@fstream@@QAEXXZ, Ord:00FEh
|
:00401BC9 Call dword ptr [00405448]
:00401BCF cmp dword ptr [esp+08], 08311809
:00401BD7 jne 00401BE0
:00401BD9 push 0040412C
:00401BDE jmp 00401BE5
Bene dunque , quello ke attira la mia attenzione è quel compare seguito da un jump condizionale ke se non salta mi fa andare alla risposta "-REGISTERED-", e per vederlo basta vedere il contenuto della locazione 0040412C ke viene pushata se il salto non salta :-) ; dunque mi viene un sospetto, ovvero, ke verròà confrontato in quel compare??? faccio un "? 08311809" tanto per vedere il valore in decimale di questo numero e vedo ke è 0137435145, wow, piccolino eh!, allora guardo con cosa confronta sto numerone e faccio "d esp+08" e trovo ke la prima DWord in esso contenuta è 075BCD15, ma guardiamo questo in decimale a ke numero corrisponde... facciamo "? 075BCD15" e voilà il numero è 0123456789 ovvero il mio codice, dunque se il valore esadecimale del mio codice deve essere 8311809, vuoi vedere ke il mio codice deve proprio essere 137435145?? Bene, mettiamo questa stringa nel nostro keyfile papero.que, salviamo, incrociamo le dita, clikkiamo ed eccola lì, appare la stringa "-REGISTERED-". EVVAIIIII AVEMO FINITOOO !!!
Okkey that's the end guyzzz
Se vedemu alla prossima (oppure allo SMAU, se c bekkiamo ;-))
Pincopall
|
Okkey, allora ringrazio AndreaGeddon per avermi dato una frase su cui mettermi a pensare stasera prima di addormentari ovvero:"La Follia Governa Il Vento Che Scende Dalle Stelle" ;-)
Un saluto a tutta la ML,a tutti quelli del canale #crack-it e #hackit99 ed un particolare saluto al mio amico C1CC10 con il quale, insieme a Nio e B3bos , ke saluto , stò fondando l'hacklab della mia città :-)), Ciauzzzz ci vediamo allo SMAU!!
Disclaimer |