quequero.org Forum Index quequero.org
UIC Forum
 
 UIC HomeUIC Home FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 
 ProfileProfile   You have no new messagesYou have no new messages   Log out [ Zero_G ]Log out [ Zero_G ]   

Internal keygenning

 
Post new topic   Reply to topic    quequero.org Forum Index -> Reverse Engineering
View previous topic :: View next topic  
Author Message
reveng70
Guest





PostPosted: Thu Feb 10, 2005 11:31 pm    Post subject: Internal keygenning Reply to topic Reply with quote Edit/Delete this post Delete this post

Ciao a tutti,
mi piacerebbe capire qualcosa di piu' sull'argomento...
Ho letto un po' in qua e in la' e se non sbaglio l'idea e' quella di sfruttare l'algoritmo applicato ai dati in ingresso per "rivoltare il programma contro se' stesso" e farci dire da lui cosa si aspetterebbe da noi...
L'idea non e' male ma vorrei capire di piu' sulla sua applicabilita' e in generale se c'e' qualche tute specifico sull'argomento...
Ad esempio una domandina: ma se ho un prog. che chiede un seriale, il quale viene maneggiato fino alla nausea (mixandolo con una firma dipendente dalle caratteristiche del PC) e il risultato confrontato con un valore (che suppongo sia anche lui dipendente dalle caratteristiche del PC), l'idea e' ancora applicabile?
Non riesco a capire come in tal caso potrei espiantare l'algoritmo e farmi dare la risposta: al massimo potrei vedere cosa succedera' ai miei dati, ma come posso ottenere qualcosa che mi permetta di capire cosa inserire per ottenere il valore che superi il confronto?
Ok, forse mi sono spiegato con la chiarezza di un balbuziente ubriaco Wink.. Ma qualcuno mi puo' dire almeno se sono completamente fuori strada?...

Grazie.
Back to top
Zero_G
Moderator
Moderator


Joined: 20 May 2004
Posts: 886
Location: Dark Side of the Moon

PostPosted: Fri Feb 11, 2005 12:16 am    Post subject: Internal keygenning == Keygen Injection ? Reply to topic Reply with quote Edit/Delete this post Delete this post

reveng70 wrote:
Ciao a tutti,
mi piacerebbe capire qualcosa di piu' sull'argomento...
Ho letto un po' in qua e in la' e se non sbaglio l'idea e' quella di sfruttare l'algoritmo applicato ai dati in ingresso per "rivoltare il programma contro se' stesso" e farci dire da lui cosa si aspetterebbe da noi...


quello che dici è più propriamente detto keygen injection, cioè si tratta di sfruttare l'algoritmo interno del programma per beccare il seriale al varco e farlo stampare o scrivere da qualche parte al programma stesso. Twisted Evil

ti fà risparmiare fatica, perché non lo devi fare te il keygen, ma sfrutti direttamente il seriale giusto che lui stesso ha generato per fare il confronto. Mr. Green

reveng70 wrote:
L'idea non e' male ma vorrei capire di piu' sulla sua applicabilita' e in generale se c'e' qualche tute specifico sull'argomento...


se ti può interessare Cool , ne ho scritto due io su alcuni crackme che si prestavano particolarmente a questo tipo di attacco, quindi se vuoi darci un'occhiata li trovi nella UIC Store: http://www.quequero.org/uic/SOARP.htm
http://www.quequero.org/uic/KeygenMe2.htm

reveng70 wrote:
Ad esempio una domandina: ma se ho un prog. che chiede un seriale, il quale viene maneggiato fino alla nausea (mixandolo con una firma dipendente dalle caratteristiche del PC) e il risultato confrontato con un valore (che suppongo sia anche lui dipendente dalle caratteristiche del PC), l'idea e' ancora applicabile?


certo che è ancora applicabile: l'importante è che ci sia un momento in cui il seriale compare da qualche parte per intero e soprattutto in chiaro; il vantaggio del keygen injection è che non ti devi preoccupare dell'algoritmo perché in sostanza il lavoro lo fai fare a lui ed aspetti solo che abbia finito. diciamo che in fondo lo prendi per il c... Wink

reveng70 wrote:
Non riesco a capire come in tal caso potrei espiantare l'algoritmo e farmi dare la risposta: al massimo potrei vedere cosa succedera' ai miei dati, ma come posso ottenere qualcosa che mi permetta di capire cosa inserire per ottenere il valore che superi il confronto?


forse te parli di keygen in generale: fare un keygen significa scrivere un programma che ricalca esattamente l'algoritmo che il programma usa per validare il codice da te immesso; se in origine prendeva i dati del tuo computer e li usava per calcolare un seriale buono, significa che una volta reversato e schematizzato l'intero procedimento devi rimboccarti le maniche e "codare" un piccolo programmetto che replichi questo comportamento per darti il seriale corretto. ovviamente ciò implica che l'hai reversato del tutto e che sai programmare bene... Twisted Evil

reveng70 wrote:
Ok, forse mi sono spiegato con la chiarezza di un balbuziente ubriaco Wink.. Ma qualcuno mi puo' dire almeno se sono completamente fuori strada?...


ho apprezzato molto la figura del balbuziente ubriaco... Devastation

reveng70 wrote:
Grazie.


prego! Evil

-=Zero_G=-
_________________
"To see a World in a grain of Sand,
Hold Infinity in palm of your Hand."
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
reveng70
Guest





PostPosted: Fri Feb 11, 2005 9:57 pm    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

Grazie Zero_G,
ho capito gia' qualcosa in piu' e comunque mi sono scaricato i tuoi tutorial, appena mi arriva la nuova dose di anfetamine provo a leggermeli... Tired
Comunque continuo ad avere dei dubbi legati all'ultimo caso che sto affrontando...
Se hai pazienza provo ad essere un po' meno balbuziente (sul meno ubriaco non posso garantire... Mr. Green ).
Allora, il sw parte con un dialog dove mi mostra in un editbox un numero a 32 bit che e' il machineID (MID).
Sotto c'e' un editbox vuoto dove devo inserire il SERIAL.
Tracciandolo con olly ho ricostruito cosa succede: il MID viene xorato con una costante e il risultato (lo chiamo MIDXOR) viene salvato.
Subito dopo viene chiamata una funzione (chiaramente di stampo "hashing" vista la dose di shift, and, xor presenti) che a partire da MIDXOR e da SERIAL produce alla fine un numeraccio NUM.
A questo punto i 16 bit bassi di NUM vengono confrontati con una KOSTANTE e c'e' il classico bivio test eax,eax + jne.
Ovviamente patchandolo si risolve tutto, ma il mio interesse era nel capire come trovare SERIAL.
Mi sa che il reversing della routine di hashing e' un po' fuori dalla mia portata, quindi ho cominciato a chiedermi se il keygen injection mi potesse aiutare... Il problema che vedo e' che qui non confronta cio' che inserisco con una elaborazione di un nome (tipico esempio che ho trovato nei tute finora), ma confronta il risultato dell'elaborazione di due input (SERIAL e MIDXOR) con qualcosa che sembra una costante...
Ok, credo di essermi spiegato... Se puoi dedicarmi un paio di neuroni te ne saro' grato... Wink
Back to top
Shub-Nigurrath
Intermediate
Intermediate


Joined: 16 Jul 2004
Posts: 89
Location: Oscura Kadath

PostPosted: Sat Feb 12, 2005 1:10 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

Ciao,
sull'argomento ci ho lavorato un po su ed una valida variante del keygen injection o del self-keygen è quella degli oraculum.

Guardati in merito il tutorial su http://tutorials.accessroot.com/ "Oraculum Tutorial With Framework Src V11"

E' un po lungo, ma puoi saltare le cose che già conosci. In pratica l'oraculum non fa altro che andare a pescare le cose che ti servono (fishing diretto o comunque ti peschi quello che ti pare) da dentro al programma, tramite un loader esterno. Il grande vantaggio rispetto al classico injection è che non inietti proprio nulla ed in questo modo la dipendenza fra le differenti versioni del programma si riduce a zero e riesci anche a fare un self-keygen che funzioni con qualsiasi versione del programma (cosa che non era possibile prima,, visto che immettevi del codice non piccolissimo).
_________________
&8~) Ŝħůβ-Ňìĝüŕřāŧħ - W la 1111000111001010
Back to top
View user's profile Send private message Send e-mail
Zero_G
Moderator
Moderator


Joined: 20 May 2004
Posts: 886
Location: Dark Side of the Moon

PostPosted: Sat Feb 12, 2005 3:44 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

reveng, il problema è che non sempre si può fare keygen injection! la lampadina Idea si deve accendere quando ci sono dei confronti in chiaro tra il seriale buono e quello immesso e quando è possibile sfruttare qualche operazione di stampa propria del programma (tipo un ex-NagScreen... Wink )
se il check avviene tramite hashing come mi dici te, ci sta che questa funzione venga calcolata sul seriale immesso e poi confrontata con quello che sembra una costante perché forse tutti i seriali buoni danno quel valore lì di hash. però questo non lo so, perché non posso vedere il codice... Rolling Eyes
cmq se ti leggi il mio tutorial sul SOARP, che è per l'appunto un crackme didatticamente utile, probabilmente riesci a farti meglio un'idea di questo sistema, che in fin dei conti è molto semplice se si sa dove intervenire. Twisted Evil

-=Zero_G=-
_________________
"To see a World in a grain of Sand,
Hold Infinity in palm of your Hand."
Back to top
View user's profile Send private message Send e-mail Visit poster's website MSN Messenger
bender0
Guru
Guru


Joined: 18 Jan 2004
Posts: 390
Location: ~/

PostPosted: Sat Feb 12, 2005 2:52 pm    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

mmmh... se il prog calcola una hash dal tuo nome puoi costruirti un bruteforcer iniettato. inietti poche linee di codice per creare\caricare le stringhe di bruteforce (il metodo di bf lo scegli tu) e per chiamare la funzione che le controlla a ripetizione, oltre ovviamente a segnalarti i serial che trova.
non è semplicissimo ma... è un'esperienza Mr. Green
_________________
b0
Back to top
View user's profile Send private message Send e-mail Visit poster's website
reveng70
Guest





PostPosted: Sat Feb 12, 2005 8:38 pm    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

Ok ragazzi,
qualche nebbia si sta diradando...
Sto finendo i tute di Zero_G, e poi sono rimasto molto colpito dal discorso dell'oraculum...
Ho iniziato a leggerlo e, come dire, sono quasi folgorato, sia per il tema interessante, sia per la professionalita' di Shub...
E proprio per quello mi sono anche affacciato sul forum di arteam... Oddio ma ci vorrebbe un'altra vita per imparare tutta sta roba... Rischio l'overload del sistema... Vado a prendermi una biretta... Wink
Back to top
Shub-Nigurrath
Intermediate
Intermediate


Joined: 16 Jul 2004
Posts: 89
Location: Oscura Kadath

PostPosted: Sun Feb 13, 2005 2:39 am    Post subject: Reply to topic Reply with quote Edit/Delete this post Delete this post

beh, grazie per i complimenti..spero il mio lavoretto sia alla loro altezza.. Wink
_________________
&8~) Ŝħůβ-Ňìĝüŕřāŧħ - W la 1111000111001010
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic    quequero.org Forum Index -> Reverse Engineering All times are GMT + 1 Hour

Page 1 of 1
Watch this topic for replies
 
Delete this topic Move this topic Lock this topic Split this topic 
Jump to:  
You can post new topics in this forum
You can reply to topics in this forum
You can edit your posts in this forum
You can delete your posts in this forum
You can vote in polls in this forum
You can moderate this forum


Powered by -=Quequero=-