Premessa
Versione IF - Pub.
Complete version will be soonly posted on d3vblog
Versione IF - Pub.
Complete version will be soonly posted on d3vblog
Titolo lungo uh?
è da tanto che non posto nulla,quindi oggi posterò qualcosina.
Oggi vi rilevo uno dei metodi che uso per fare questa storia.
Il Key Bruteforcer di PadMak o come diamine si chiamava ha usato più o meno lo stesso ragionamento,solo che ha usato la ricerca della sequenza dei bytes (FindPattern) che vi dirò lungo la guida e poi ha usato la libreria ReadProcessMemory (Kernel32).
Sto scrivendo questa guida con spiegazioni dettagliate sugli argomenti che stiamo affrontando,ma lascio la pratica poco dettagliata per evitare che utenti con troppa poca esperienza si permettano di tirarsela pur non sapendo nulla!
Per chi sa cosa altro possa fare questo metodo,è pregato di starsi zitto.
Non ho scritto cosa altro si può fare proprio perché la gente deve imparare a pensare anche con la propria testa e perché dopo andiamo a finire nel chaos più completo.
Prima di cominciare vorrei mostrarvi alcune cose:
Le regole etiche che ci interessano dell'hacking (anche se noi in realtà stiamo praticando cracking).
Be safe. Your safety, the safety of your fellow jackers, and the safety of anyone you hack should never be compromised.
Be subtle. Leave no evidence that you were ever there.
Leave things as you found them (or better).
Leave no damage.
Do not steal anything.
Brute force is the last resort of the incompetent. ("One who breaks a thing to find out what it is has left the path of reason." - John Ronald Reuel Tolkien, "The Lord of the Rings")
Above all, exercise common sense.
Le regole etiche che ci interessano dell'hacking (anche se noi in realtà stiamo praticando cracking).
Be safe. Your safety, the safety of your fellow jackers, and the safety of anyone you hack should never be compromised.
Be subtle. Leave no evidence that you were ever there.
Leave things as you found them (or better).
Leave no damage.
Do not steal anything.
Brute force is the last resort of the incompetent. ("One who breaks a thing to find out what it is has left the path of reason." - John Ronald Reuel Tolkien, "The Lord of the Rings")
Above all, exercise common sense.
Purtroppo non posso obbligarvi di rispettarle,ma dovreste capire che se tutti rispettassero queste regole,il 98% delle guerre tra server privati ora non ci sarebbe.
Forse rispettandole non diventerete famosi come sperate,ma sicuramente non avrete nemici e farete sicuramente la figura dei maturi.
Ognuno commette sbagli,per carità io soprattutto,però sarebbe giusto rispettarle.
Materiale
1. Cheat Engine - Qualsiasi versione.
2. PEiD - Per curiosità,non è obbligatorio
3. Metin2 File Premastering o Metin2 Extractor. M2File Prem.
3.1 Metin2 File Premastering by Tim66613 permette anche la creazione di archivi.
3.2 Metin2 Extractor (presente anche il source su EPvP) by PUSHEDX permette la sola estrazione degli archivi.
4. Un cervello funzionante.
5. Delle basi riguardo questi argomenti.
6. Delle basi riguardanti CE.
7. Maturità: Queste conoscenze sanno esser pericolose,ma solo se in mani sbagliate (Scommetto che qualcuno verrà a dirmi perché ho postato qua,dove di maturità ce n'è veramente poca).
8. Voglia di imparare: Questi argomenti servono per conoscenza e non per lamering.
9. Serietà: Non sono argomenti da prendere per fare il Lamer o sentirsi già esperti.
10. Voglia di non leecharmi la guida.
11. Per cose più avanzate,è raccomandatissima la conoscenza dell'Assembly.
Presentiamo le basi
XTEA
XTEA
XTEA è un algoritmo crittografico,è la versione modificata di TEA e richiede una chiave simmetrica di 16 bytes (16 caratteri).
Progettato come algoritmo per la crifrazione dei blocchi.
LZO
LZO è un algoritmo di compressione,è stato rilasciato nel 1996 sotto Copyright.
L'autore è Markus Oberhumer,ci sono 2 versioni di LZO:
miniLZO (miniLZO.h) che è OpenSource
LZO Professional che è la versione professionale (si paga).
Tempi e prestazioni:
Codice:
memcpy(): ~60 MB/sec
LZO1X decompression in C: ~16 MB/sec
LZO1X decompression in optimized assembler: ~20 MB/sec
LZO1X-1 compression: ~5 MB/sec
Cheat Engine
E' uno scanner di memoria,un editor esadecimale e un debugger sviluppato da Dark Byte.
Da Wikipedia
Il software gira sotto Windows e viene utilizzato per barare utilizzando dei cheat nei videogiochi: il suo funzionamento permette di cercare all'interno della memoria utilizzata dai giochi particolari valori indicanti i parametri della partita (ad esempio i punti ferita) per poi modificarli o forzarli ad essere dei valori specifici.
Packers
I packers sono programmi che incorporano nei loro eseguibili (Stub) il file eseguibile da proteggere,cryptando,comprimendolo e aggiungendo varie protezioni da debuggers (CE,OllyDBG/ICE,SoftICE...),virtualizzazioni (VirtualBox,SandBoxie,VirtualPC,...) e a volte anche per aggiungere un sistema di registrazione delle licenze incorporato.
Quelli attualmente più famosi e stimati attualmente sono Themida e The Enigme Protector.
Un packer famoso,gratuito e universale ma non creato con scopo per proteggere l'eseguibile è UPX,quest'ultimo supporta numerosissime struttura di files,dai PE alle ELF.
Punto debole dei packers
Per quanto essi possano proteggere il file originale,al momento dell'esecuzione il codice (obfuscato o no) è comunque decryptato e decompresso e quindi visualizzabile.
Perché non esiste metodo per cryptare la memoria di Runtime (Ovvero,il programma caricato in memoria dal Loader).
Giusto iOS (Apple) usato negli iPhone,iPod ed iPad hanno un sistema di cryptatura del codice eseguito in memoria,ma anche questo funziona come i packers e quindi facilmente bypassabile.
I file PE
Il file Portable Executable,ovvero quelli con estensione .exe,sono strutturati in modo abbastanza semplice ma le loro proprietà sono tantissime.
Non starò qui a spiegare tutta la struttura di un PE,ma sarebbe giusto conoscerne almeno un poco.
Il file PE è strutturato nel seguente modo:
DOS Header
PE Header
Section Table
Sections
La section table indica le varie sezioni e le relative proprietà.
Dovete immaginare un file PE come un libro diviso in capitoli,ogni capitolo descrive una cosa.
Le sezioni più importanti e che incontreremo spesso sono: .text,.data,.rdata,.rsrc,.idata e altre che potreste incontrare.
Quella che ci interessa è .text,ovvero la sezione dove risiede il codice del programma.
Questa spiegazione era molto generica,per avere un'ottima guida a riguardo studiate Qui,è la stessa che studiai io
HackShield
Hackshield possiamo definirlo come protezione dal reverse engineering come fanno i packers.
Però quest'ultimo è un Engine,molto simile a quelli usati dagli AntiVirus (infatti la casa sviluppatrice,la AhnLab ha sviluppato anche un antivirus con engine simile a questo) mirato a fermare il cheating dai giochi.
Cerca di prevenire la modifica della memoria facendo l'Hooking della funzione WriteProcessMemory e ReadProcessMemory.
Viene creato spesso il processo con diritti allo stesso livello del Kernel (Ring0) in modo da prevenire qualsiasi tipo di accesso,Metin2 non ha questo supporto (Quella funzione,oltre a tante altre,è usata nella licenza Hackshield Pro) ma rimane comunque un'impresa,diciamo,ardua riuscire a bypassarlo.
E' quasi sempre necessario un unpack della libreria e del launcher del gioco per poterlo bypassare.
############################
Si comincia
Si comincia
Spero voi sappiate già come attachare un processo con CE,perché di certo non ve lo spiegherò io.
Bene,usiamo il Memory Edit per la cosa,ma non avremo bisogno principalmente del disassembler anche se invece sarà molto importante per le protezioni avanzate,ma ci serviremo del dump.
Da come potete vedere possiamo leggere liberamente la memoria del programma.
Sono sicuro al 0xFF% che in qualche minuto riceverete un errore del genere
Questo è HackShield (nel caso in cui il launcher ne abbia integrato)
esistono metodi per bypassarlo,ma a noi non ci interessa.
Metin2 ha fatto la cazza*a di far comparire una MessageBox invece di chiudersi immediatamente,in questo modo anche se ci detecta il programma noi potremo continuare tranquillamente a navigare nel codice.
Ora noi sappiamo che la chiave simmetrica XTEA esadecimale è
Codice:
B9 9E B0 02 6F 69 81 05 63 98 9B 28 79 18 1A 00
e la chiave di compressione LZO è
Codice:
22 B8 B4 04 64 B2 6E 1F AE EA 18 00 A6 F6 FB 1C
Ma a noi non ci interessa,perché cercare dei dati che sono stati cambiati ci darà sempre un errore.
Quindi dobbiamo ragionare:
Apriamo un editor esadecimale un launcher unpackato e cerchiamo una delle 2 chiavi.
Ora,sappiamo che le due chiavi sono a 16 bytes.
Analizziamo il dump:
Codice:
00 00 00 00 2E 3F 41 56 43 45 74 65 72 50 61 63 6B 4D 61 6E 61 67 65 72 40 40 00 00 B9 9E B0 02 6F 69 81 05 63 98 9B 28 79 18 1A 00 22 B8 B4 04 64 B2 6E 1F AE EA 18 00 A6 F6 FB 1C D8 F8 75 00
In char
Codice:
.....?AVCEterPackManager@@..¹ž°.oi..c˜›(y..."¸´.d²n.®ê..¦öû.Øøu.
Da come potete vedere le chiavi sono consecutive,quindi trovare una delle due equivale a trovarle tutte.
Il problema è proprio quello: trovarle.
Come le possiamo trovare?
Notiamo bene "AVCEterPackManager"
Questa stringa proviene dalla classe che hanno usato per scrive il codice per cryptare e decryptare gli EPack,proveniente principalmente da Crypto++,ed è la stessa usata dal Key Bruteforcer di quel tizio.
Quindi basterà trovare quella stringa e troveremo facilmente le chiavi
Il resto dovreste esser capaci di farlo

Ovviamente esistono metodi per eludere questo sistema.
Se avete domande fatemele,ma non fatemi domande del tipo "non ci riesco,mi fai vedere tu?","me lo fai tu?","come faccio a...?";
Ricordate che da me non avrete pappa pronta,quindi se volete un aiuto,aspettatevi una risposta generica.
By d3v1l401
d3vblog.com
d3vblog.com
Come potete notare non sono stato dettagliato,e l'ho fatto di proposito onde evitare ultra-lamering e bimbate che sicuramente saranno presenti,ma in modo meno frequente
Pubblicherò altri metodi per prendere dati in questo modo,ma lo farò solo se non vedrò usi scorretti di questo metodo.
Ma soprattutto,verranno pubblicate sul mio blog,dove continuerò ad aggiornare la guida man mano che vado avanti con tecniche di questo tipo che posso rendere pubbliche.
Se dovete proprio pubblicarla altrove vorrei che voi mettiate i miei crediti.


