Sie sind auf Seite 1von 67

El Arte de la Ingenier Inversa a

Ricardo J. Rodr guez

#eCh!2004 - .:[ CrackSLatinoS ]:. www.ech2004.net

23 de Octubre de 2010 HackMeeting 2010 Zaragoza, Spain


R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 1 / 44

Outline

Outline
Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o
1

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

2 / 44

Introduccin a la Ingenier Inversa o a

Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

3 / 44

Introduccin a la Ingenier Inversa o a

Qu es la Ingenier Inversa e a

Introduccin a la Ingenier Inversa (I) o a


Ingenier inversa (reverse engineering) a
Descubrir cmo funciona (algo) a partir de un anlisis exhaustivo o a Mejora de productos/sistemas viejos Diferentes dominios de aplicacin o
Hardware (legacy hardware) Software (e.g. Samba)

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

4 / 44

Introduccin a la Ingenier Inversa o a

Qu es la Ingenier Inversa e a

Introduccin a la Ingenier Inversa (I) o a


Ingenier inversa (reverse engineering) a
Descubrir cmo funciona (algo) a partir de un anlisis exhaustivo o a Mejora de productos/sistemas viejos Diferentes dominios de aplicacin o
Hardware (legacy hardware) Software (e.g. Samba)

Ir hacia atrs en el ciclo de desarrollo a

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

4 / 44

Introduccin a la Ingenier Inversa o a

Motivacin o

Introduccin a la Ingenier Inversa (II) o a


Motivacin o
Interoperabilidad Documentacin inexistente o Anlisis de productos nales a Auditor de seguridad a Espionaje industrial o militar (e.g. Segunda GM) Eliminacin de anticopias o limitaciones de uso o Creacin de duplicados sin licencia o Acadmicos e Curiosidad innata Para aprender de los errores de otros

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

5 / 44

Introduccin a la Ingenier Inversa o a

La Ingenier Inversa de cdigo a o

Introduccin a la Ingenier Inversa (III) o a


Reverse engineering code
Tambin conocida como cracking e Eliminar protecciones de cdigo (copyrights) o NO siempre es malo: deteccin de bugs, potenciales exploits, . . . en o tus programas

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

6 / 44

Introduccin a la Ingenier Inversa o a

La Ingenier Inversa de cdigo a o

Introduccin a la Ingenier Inversa (III) o a


Reverse engineering code
Tambin conocida como cracking e Eliminar protecciones de cdigo (copyrights) o NO siempre es malo: deteccin de bugs, potenciales exploits, . . . en o tus programas Crackers: algo ms que unas galletas. . . a
NO CONFUNDIR con los criminal hackers

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

6 / 44

Conocimientos previos

Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

7 / 44

Conocimientos previos

Conocimientos previos (I)


Ensamblador
Bsico e imprescindible a http://www.intel.com/products/processor/manuals/

Funcionamiento interno SS.OO.


Qu ocurre al pulsar un botn? e o Y al aceptar un checkbox? La biblia de APIs de Windows: WinXXAPI (32 o 64 bits)
http://msdn.microsoft.com/en-us/library/Aa383723 http://ech2004.net/download.php?archivo=198&tipo=t

Estructura interna de un PE (Portable Executable)


Cada lenguaje de programacin produce una cabecera diferente. . . o . . . pero siempre las mismas primeras instrucciones
http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx

Debuggear programas
Breakpoints Step into, step over, . . .
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 8 / 44

Conocimientos previos

Conocimientos previos (II)


Anillos de privilegio R0 . . . R3 Ms privilegios (kernel) a menos privilegios (aplicaciones) a

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

9 / 44

Conocimientos previos

Conocimientos previos (II)


Anillos de privilegio R0 . . . R3 Ms privilegios (kernel) a menos privilegios (aplicaciones) a

If a program runs, then its crackeable


R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 9 / 44

Conocimientos previos

Conocimientos previos (III)

Tipos de aplicaciones
Freeware: software de libre distribucin o Shareware: software con licencia de distribucin o
Demoware: algunas features del software inhabilitadas Trialware: software con limitacin temporal de uso o

Adware: publicidad embebida Spyware: malo malo. . .

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

10 / 44

Cinturn de herramientas o

Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

11 / 44

Cinturn de herramientas o

Desensambladores y editores hexadecimales

Cinturn de herramientas (I) o


Desensambladores
W32Dasm (http://ech2004.net/download.php?archivo=52&tipo=h) HDasm (http://hdasm.narod.ru/) IDA Pro (http://www.hex-rays.com/idapro/) Espec cos
p32Dasm (VBasic) Reector (.NET) DJ Java Decompiler (Java) DeDe (Delphi) DeRefox (VisualFox) ...

Editor hexadecimal
HexWorkshop (http://www.bpsoft.com/)
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 12 / 44

Cinturn de herramientas o

Debuggers

Cinturn de herramientas (II) o

Debuggers
Soft ICE
Trabaja(ba) en R0 Hay parches para trabajar sobre WinXP

OllyDBG (http://www.ollydbg.de/)
Trabaja en R0 y R3 Muchas variantes con muchos plugins

EDB (http://freshmeat.net/projects/edebugger) TitanEngine (http://www.reversinglabs.com/products/TitanEngine.php) ...

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

13 / 44

Cinturn de herramientas o

Identicadores, editores PE y de recursos

Cinturn de herramientas (III) o


(www.ech2004.net, seccin Herramientas Imprescindibles) o

Identicadores y editores PE
PEiD PEEditor Calimero RDG Packer Detector ...

Visores de recursos
eXe Scope XNResource Editor Resorce Hacker Restorator
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 14 / 44

Cinturn de herramientas o

Dumpeadores de memoria y emuladores

Cinturn de herramientas (IV) o


(www.ech2004.net, seccin Herramientas Imprescindibles) o

Dumpeadores de memoria
LordPE Deluxe SirPE (para 64 bits) Pupe ProcDump ...

Emuladores
HASP Sentinel Rock4
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 15 / 44

Cinturn de herramientas o

Monitores de APIs y reparadores de IAT

Cinturn de herramientas (V) o


(www.ech2004.net, seccin Herramientas Imprescindibles) o

Monitores de APIs
KaKeeware Application Monitor Event2Adress (E2A) API Scan WinAPIOverride32 ...

Reparadores de IAT
Import REC (el abuelo Simpson :)) ReVirgin Universal Import Fixer
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 16 / 44

Cinturn de herramientas o

Documentacin o

Cinturn de herramientas (VI) o


Documentacin: manuales y tutoriales o
La ms importante hay que leer para aprender a Internet, una herramienta util y al alcance de cualquiera
Grupos de cracking
Hispano-hablantes (WkT, CLS, eCh, . . . ) Extranjeros (RZR, TNT!, ARTeam, RE, . . . )

Foros
elHacker (seccin ProgramacinIngenier Inversa) o o a ExeTools WoodMan

Pginas personales (Karpo, Shoulck, Saccopharynx, +NCR, AbsSha, a ...) Tuts4You (http://www.tuts4you.com/)

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

17 / 44

Cinturn de herramientas o

Documentacin o

Cinturn de herramientas (VI) o


Documentacin: manuales y tutoriales o
La ms importante hay que leer para aprender a Internet, una herramienta util y al alcance de cualquiera
Grupos de cracking
Hispano-hablantes (WkT, CLS, eCh, . . . ) Extranjeros (RZR, TNT!, ARTeam, RE, . . . )

Foros
elHacker (seccin ProgramacinIngenier Inversa) o o a ExeTools WoodMan

Pginas personales (Karpo, Shoulck, Saccopharynx, +NCR, AbsSha, a ...) Tuts4You (http://www.tuts4you.com/)

Prctica, prctica y (un poco ms de) prctica a a a a


Cualquier (pobre) programa que caiga en nuestras manos Crackmes (http://www.crackmes.de/)
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 17 / 44

Tcnicas de anlisis e a

Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

18 / 44

Tcnicas de anlisis e a

Cdigo muerto o

Anlisis de cdigo muerto: descripcin a o o


Programas sin proteccin (o proteccin m o o nima) Es raro que funcione Herramientas necesarias
Identicador PE Desensamblador Editor Hexadecimal Cerebro Intuicin o Lpiz y papel a Suerte :)

Casos t picos
Salto JE/JNE (JZ/JNZ) para registro correcto Nmero de registro embebido en la aplicacin u o

Muy sencillo (queremos desaf os!)


R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 19 / 44

Tcnicas de anlisis e a

Cdigo muerto o

Anlisis de cdigo muerto: ejemplos (I) a o


NOPeo de salto de comprobacin o

Una o varias rutinas de comprobacin de serial o NOPeo: sustituir cdigo mquina por NOP (No OPeration) o a
JE/JNE (74/75) NOP (90) JE/JNE (74/75) JMP (EB)a Variantes: JX/JNX (cualquiera) NOP (90) JMP (EB) o
a

Si el salto es largo (destino a ms de 32 bits desde el lugar de origen), var . . a a.

Pasos
1 2 3 4 5 R.J. Rodr guez

Identicar PE (est protegido?) a Desensamblar Buscar mensajes de chico malo Analizar camino hasta el mensaje NOPear salto/desviar camino
HackMeeting 2010 20 / 44

El Arte de la Ingenier Inversa a

Tcnicas de anlisis e a

Cdigo muerto o

Anlisis de cdigo muerto: ejemplos (II) a o


A la caza del serial

Una o varias rutinas de comprobacin de serial o El cdigo de registro (serial) es unico y. . . o . . . est embebido en la aplicacin ! a o

Pasos
1 2 3 4 5

Identicar PE (est protegido?) a Desensamblar Buscar mensajes de chico malo Husmear la zona Comprobar cadenas sospechosas :)

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

21 / 44

Tcnicas de anlisis e a

Cdigo vivo o

Anlisis de cdigo vivo: descripcin a o o


Programas con (o sin) proteccin o Herramientas necesarias
Identicador PE Desensamblador Debugger Cualquiera del cinturn (depender de la aplicacin a crackear) o a o Cerebro Intuicin o Lpiz y papel a Suerte :)

Ms complicados (i.e., divertido) a Cada aplicacin es un reto nuevo y diferente o Casos t picos
Mmm. . . cualquiera?

(luego veremos un ejemplo. . . )


R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 22 / 44

Algunos mtodos anticracking e

Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

23 / 44

Algunos mtodos anticracking e

Algunas APIs antidebugging

Algunas APIs antidebugging


IsDebuggerPresent NtGlobalFlag ProcessHeapFlag FindWindowA SetUnhandledExceptionFilter/UnhandledExceptionFilter CreateToolhelp32Snapshot ZwQueryInformationProces CloseHandle CsrGetProcessId Lectura recomendada: http://pferrie.tripod.com/

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

24 / 44

Algunos mtodos anticracking e

Mtodos ms avanzados e a

Mtodos ms avanzados (I) e a


Packers
Reduce tamao y/o encripta (scrambling) el cdigo de los ejecutables n o Modica secciones del PE (y ms cosas. . . ) a Numerosos packers en el mercado: UPX, ASPack, ASProtect, . . .
http://en.wikipedia.org/wiki/Executable_compression

Algunos fciles de crackear, otros no tanto :) a Pasos a realizar


1 2 3

Hallar el OEP (Original Entry Point) Dumpear el proceso de memoria (estar desempacado!) a Arreglar la IAT (Import Address Table)

VM Packers (ms complicados, pero no imposibles) a


Misma idea que packers PERO una VM ejecuta el cdigo o Ejemplos: Themida, EXECryptor, CodeVirtualizer
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 25 / 44

Algunos mtodos anticracking e

Mtodos ms avanzados e a

Mtodos ms avanzados (II) e a


Mtodos complementarios de proteccin e o
Redireccionamiento de la IAT Secciones virtuales (antidump) Emulacin de API o Cambios en la estructura del ejecutable (PE header) Ofuscamiento de cdigo (cdigo basura) o o Bytes perdidos (stolen bytes) Deteccin de debuggers y otras herramientas o Deteccin de breakpoints (BP y HBP) o Nanomites (usado por Armadillo)

Deteccin de modicaciones o
CRC
R.J. Rodr guez

MD5

El Arte de la Ingenier Inversa a

HackMeeting 2010

26 / 44

Tcnicas de cracking e

Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

27 / 44

Tcnicas de cracking e

CD Check

Tcnicas de cracking (I): CD Check e


Vericacin del CD presente en la unidad o Fichero concreto en el CD de la unidad (algunas veces) Protecciones ms avanzadas: SafeDisc, StarForce a Uso de unidades virtuales: DaemonTools

APIs t picas
GetDriveTypeA
EAX = 5 si hay CD

GetVolumeInformationA

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

28 / 44

Tcnicas de cracking e

Patching y loaders

Tcnicas de cracking (II): Patching y loaders e


Patching
Objetivo: cambiar ujo natural de ejecucin del programa o
Cambio de instrucciones mquina a
Modicando (tras un CMP o TEST) o insertando saltos Sustituyendo por NOPs

Mtodos habituales: bsqueda de cadenas o chequeo de APIs e u Cambios estticos (i.e., permanentes) a

Loaders
Como el patching, pero en caliente ms elegante a Dos tipos (bsicos) a
Simples Debuggers (ms complejos): til para programas empacados a u

Cambios dinmicos (i.e., temporales) a


R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 29 / 44

Tcnicas de cracking e

Time-trials y Registro de Windows

Tcnicas de cracking (III): Time-trials y Registro e


Time-trials
Proteccin por tiempo (uso limitado X d o as/minutos) APIs t picas de chequeo
GetLocalTime GetFileTime GetSystemTime

Registro de Windows
Guardan datos en el Registro de Windows APIs t picas
RegCloseKey RegCreateKeyEx RegOpenKeyEx RegSetValueEx RegQueryValueEx
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 30 / 44

Tcnicas de cracking e

Captura del serial y Keygenning

Tcnicas de cracking (V): Captura del serial y Keygenning e


Captura del serial
Objetivo: conseguir nmero de registro del programa u Idntico para todos los usuarios e Embebido en la aplicacin o Fcil: bsqueda de cadenas con patrones conocidos. . . a u

Keygenning
Objetivo: encontrar algoritmo de generacin de claves o Complejidad del algoritmo variable Cada usuario tiene un nmero de registro diferente u Ingenier inversa pura y dura a

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

31 / 44

Tcnicas de cracking e

Archivos de licencia

Tcnicas de cracking (VI): Archivos de licencia e

Se registran mediante archivos de licencia Chequeos rutinarios contra servidor de la empresa (a veces) APIs t picas
Conexin: connect, WSAConnect o Recepcin: recv, recvfrom, WSARecv, WSARecvFrom, WSARecvMsg o Env send, sendto, WSASend, WSASendTo, WSASendMsg o:

Algunos usan criptograf (i.e., licencia codicada) a


MUY complicados de conseguir licencia correcta Depender del algoritmo criptogrco usado a a

Solucin: intentar parchear. . . o

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

32 / 44

Tcnicas de cracking e

Desempacado (unpacking)

Tcnicas de cracking (VII): Desempacado (unpacking) e


Programas protegidos Pueden ser muy complicados (anti-dumps, scrambling, . . . ) Pasos a realizar
1

Hallar el OEP (Original Entry Point)


Stolen bytes Cambios en la cabecera PE

Dumpear el proceso de memoria (estar desempacado!) a


Secciones virtuales Ofuscacin de cdigo o o

Arreglar la IAT (Import Address Table)


Emulacin de APIs o Redireccionamiento de APIs

Lista: http://en.wikipedia.org/wiki/Executable_compression Existen unpackers automticos: tools propias o scripts a


R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 33 / 44

Ejemplo prctico a

Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

34 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (I): estudio del crackME a


CrackMe sencillito de http://www.crackmes.de Objetivo: hacer un generador de claves

Pasos
1 2

Analizar para ver si est limpio a Insertar nombre y cdigo para ver chico o malo Cargar en debugger (e.g., OllyDBG)

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

35 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (I): estudio del crackME a


CrackMe sencillito de http://www.crackmes.de Objetivo: hacer un generador de claves

Pasos
1 2

Analizar para ver si est limpio a Insertar nombre y cdigo para ver chico o malo Cargar en debugger (e.g., OllyDBG)

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

35 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (1) a

Pasos

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

36 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (1) a

Pasos
1

Llamada a IsDebuggerPresent ocultar el Olly

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

36 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (1) a

Pasos
1 2

Llamada a IsDebuggerPresent ocultar el Olly BP en GetDlgItemTextA e introducimos datos. . .


R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 36 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (1) a

Pasos
1 2 3

Llamada a IsDebuggerPresent ocultar el Olly BP en GetDlgItemTextA e introducimos datos. . . Alcanzamos cdigo de la aplicacin (CTRL + F 9) o o
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 36 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (2) a

Condiciones del nombre


EAX: longitud del nombre

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

37 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (2) a

Condiciones del nombre


EAX: longitud del nombre EAX > 4 && EAX 0Ah

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

37 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (2) a

Condiciones del nombre


EAX: longitud del nombre EAX > 4 && EAX 0Ah Si longitud de serial= 0 MessageBoxA
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 37 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (3) a

Bsqueda de cadenas referenciadas u Cadenas de chico bueno y chico malo

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

38 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (3) a

Bsqueda de cadenas referenciadas u Cadenas de chico bueno y chico malo

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

38 / 44

Ejemplo prctico a

Estudio del crackME

Ejemplo prctico (II): estudio del crackME (3) a

Bsqueda de cadenas referenciadas u Cadenas de chico bueno y chico malo lstrcmpA: comparacin de cadenas o
Valor de EAX determina igualdad
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 38 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (1) a o

0x401153: Inicio algoritmo BP para estudio en caliente

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

39 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (1) a o

0x401153: Inicio algoritmo BP para estudio en caliente 0x40316A: buer longitud

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

39 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (1) a o

0x401153: Inicio algoritmo BP para estudio en caliente 0x40316A: buer longitud EDI: buer cadena ESI: otro buer :) EAX=EBX=ECX=EDX=0 EDX=longitud

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

39 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (1) a o

0x401153: Inicio algoritmo BP para estudio en caliente 0x40316A: buer longitud EDI: buer cadena ESI: otro buer :) EAX=EBX=ECX=EDX=0 EDX=longitud EBX=contador

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

39 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (2) a o

EDI = buer del nombre EDX = longitud del nombre EBX = 1 while EBX < EDX do AL = carcter apuntado por EDI a if AL 0x5A and AL 0x41 then AL+ = 0x2C end ECX + = EAX EDI + + end

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

40 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (2) a o

EDI = buer del nombre EDX = longitud del nombre EBX = 1 while EBX < EDX do AL = carcter apuntado por EDI a if AL 0x5A and AL 0x41 then AL+ = 0x2C end ECX + = EAX EDI + + end

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

40 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (2) a o

EDI = buer del nombre EDX = longitud del nombre EBX = 1 while EBX < EDX do AL = carcter apuntado por EDI a if AL 0x5A and AL 0x41 then AL+ = 0x2C end ECX + = EAX EDI + + end

ECX + = 0x29A ECX = 0x3039 ECX = 0x17 ECX = 0x9

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

40 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (3) a o

EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

41 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (3) a o

EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

41 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (3) a o

EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0

EDI = buer 0x04030C8 Revertimos la cadena apuntada por ESI y guardamos en EDI

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

41 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (3) a o

EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0

EDI = buer 0x04030C8 Revertimos la cadena apuntada por ESI y guardamos en EDI Aadimos resto del nombre (desde el 4o carcter) al nal de la n a nueva cadena

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

41 / 44

Ejemplo prctico a

Algoritmo de generacin o

Ejemplo prctico (III): algoritmo de generacin (3) a o

EBX = 0 EAX = ECX ECX = 0x0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0

EDI = buer 0x04030C8 Revertimos la cadena apuntada por ESI y guardamos en EDI Aadimos resto del nombre (desde el 5o carcter) al nal de la n a nueva cadena Y ya se compara la cadena construida con la introducida

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

41 / 44

Conclusiones y agradecimientos

Introduccin a la Ingenier Inversa o a 5 Algunos mtodos anticracking e Qu es la Ingenier Inversa e a Algunas APIs antidebugging Motivacin o Mtodos ms avanzados e a La Ingenier Inversa de cdigo a o 6 Tcnicas de cracking e 2 Conocimientos previos CD Check 3 Cinturn de herramientas o Patching y loaders Desensambladores y editores hexadecimales Time-trials y Registro de Windows Debuggers Captura del serial y Keygenning Identicadores, editores PE y de recursos Archivos de licencia Dumpeadores de memoria y emuladores Desempacado (unpacking) Monitores de APIs y reparadores de IAT 7 Ejemplo prctico a Documentacin o Estudio del crackME 4 Tcnicas de anlisis e a Algoritmo de generacin o Cdigo muerto o 8 Conclusiones y agradecimientos Cdigo vivo o

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

42 / 44

Conclusiones y agradecimientos

Conclusiones y agradecimientos
Conclusiones
Cualquier proteccin es crackeable o Mundo de constante evolucin nuevas protecciones, nuevos o mtodos e Leer y practicar mucho Usar y programar ms software libre a
Que no hacer ms software libre :) a

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

43 / 44

Conclusiones y agradecimientos

Conclusiones y agradecimientos
Conclusiones
Cualquier proteccin es crackeable o Mundo de constante evolucin nuevas protecciones, nuevos o mtodos e Leer y practicar mucho Usar y programar ms software libre a
Que no hacer ms software libre :) a

Agradecimientos
CrackSLatinoS Gente del HackMeeting

R.J. Rodr guez

El Arte de la Ingenier Inversa a

HackMeeting 2010

43 / 44

Conclusiones y agradecimientos

Conclusiones y agradecimientos
Conclusiones
Cualquier proteccin es crackeable o Mundo de constante evolucin nuevas protecciones, nuevos o mtodos e Leer y practicar mucho Usar y programar ms software libre a
Que no hacer ms software libre :) a

Agradecimientos
CrackSLatinoS Gente del HackMeeting A vosotros por aguantarme! :D
R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 43 / 44

El Arte de la Ingenier Inversa a


Ricardo J. Rodr guez

#eCh!2004 - .:[ CrackSLatinoS ]:. www.ech2004.net

23 de Octubre de 2010 HackMeeting 2010 Zaragoza, Spain


R.J. Rodr guez El Arte de la Ingenier Inversa a HackMeeting 2010 44 / 44

Das könnte Ihnen auch gefallen