You are on page 1of 77

Introducci on a la Ingenier a Inversa Dise no de Aplicaciones Seguras

Ricardo J. Rodr guez


rjrodriguez@unizar.es

XX de Noviembre de 2011

Grupo de Ingenier a de Sistemas de Eventos Discretos Universidad de Zaragoza

Outline

Outline

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

2 / 54

Introducci on a la Ingenier a Inversa

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

3 / 54

Introducci on a la Ingenier a Inversa

Qu e es la Ingenier a Inversa

Introducci on a la Ingenier a Inversa (I)


Ingenier a inversa (reverse engineering)
Descubrir c omo funciona (algo) a partir de un an alisis exhaustivo Mejora de productos/sistemas viejos Diferentes dominios de aplicaci on
Hardware (legacy hardware) Software (e.g. Samba)

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

4 / 54

Introducci on a la Ingenier a Inversa

Qu e es la Ingenier a Inversa

Introducci on a la Ingenier a Inversa (I)


Ingenier a inversa (reverse engineering)
Descubrir c omo funciona (algo) a partir de un an alisis exhaustivo Mejora de productos/sistemas viejos Diferentes dominios de aplicaci on
Hardware (legacy hardware) Software (e.g. Samba)

Ir hacia atr as en el ciclo de desarrollo

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

4 / 54

Introducci on a la Ingenier a Inversa

Motivaci on

Introducci on a la Ingenier a Inversa (II)


Motivaci on
Interoperabilidad Documentaci on inexistente An alisis de productos nales Auditor a de seguridad Espionaje industrial o militar (e.g. Segunda GM) Eliminaci on de anticopias o limitaciones de uso Creaci on de duplicados sin licencia Acad emicos Curiosidad innata Para aprender de los errores de otros

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

5 / 54

Introducci on a la Ingenier a Inversa

Motivaci on

Introducci on a la Ingenier a Inversa (II): Motivaci on (2)

Encontrar vulnerabilidades en el software


Chequeo de cotas de manera incorrecta (buer overow) Uso de entradas sin validaci on Rutinas c clicas para entrada de datos Operaciones de copia a nivel de byte Aritm etica de punteros basada en entradas dadas del usuario Conanza en sistemas seguros con entradas din amicas

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

6 / 54

Introducci on a la Ingenier a Inversa

Aproximaciones a la Ingenier a Inversa

Introducci on a la Ingenier a Inversa (III)


Aproximaciones
Caja blanca
Analizar y entender el c odigo fuente (o binario desensamblado) Encontrar errores de programaci on y/o implementaci on Analizador est atico: b usqueda de patrones (falso positivo?) Ejemplos: WhiteBox SecureAssistant, IDAPro, SourceScope. . .

Caja negra
Analizar programa seg un diferentes entradas software en ejecuci on No es tan efectivo, pero requiere menos experiencia M etodo habitual para detectar exploits

Caja gris
Combinaci on de las dos anteriores Ejecuci on de programa mediante debug. . . . . . aliment andolo con diferentes entradas Ejemplos: Rationals Purify (an alisis uso/consumo memoria), Valgrind
R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 7 / 54

Introducci on a la Ingenier a Inversa

Aproximaciones a la Ingenier a Inversa

Introducci on a la Ingenier a Inversa (III)


Reverse engineering code
Tambi en conocida como cracking Eliminar protecciones de c odigo (copyrights) NO siempre es malo: detecci on de bugs, potenciales exploits, . . . Lucha contra el malware

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

8 / 54

Introducci on a la Ingenier a Inversa

Aproximaciones a la Ingenier a Inversa

Introducci on a la Ingenier a Inversa (III)


Reverse engineering code
Tambi en conocida como cracking Eliminar protecciones de c odigo (copyrights) NO siempre es malo: detecci on de bugs, potenciales exploits, . . . Lucha contra el malware Crackers: algo m as que unas galletas. . .
NO CONFUNDIR con los criminal hackers

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

8 / 54

Conocimientos previos

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

9 / 54

Conocimientos previos

Conocimientos previos (I)

Ensamblador (http://www.intel.com/products/processor/manuals/ )

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

10 / 54

Conocimientos previos

Conocimientos previos (I)

Ensamblador (http://www.intel.com/products/processor/manuals/ ) Funcionamiento interno SS.OO.


Qu e ocurre al pulsar un bot on? Y al aceptar un checkbox? La biblia de APIs de Windows: WinXXAPI (32 o 64 bits)
http://msdn.microsoft.com/en-us/library/Aa383723

API: Application Programming Interface

Estructura interna de un PE (Portable Executable)


http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx

Debuggear programas
Breakpoints Step into, step over, . . .

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

10 / 54

Conocimientos previos

Conocimientos previos (II)


Anillos de privilegio R 0 . . . R 3 M as privilegios (kernel) a menos privilegios (aplicaciones)

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

11 / 54

Conocimientos previos

Conocimientos previos (II)


Anillos de privilegio R 0 . . . R 3 M as privilegios (kernel) a menos privilegios (aplicaciones)

When a program runs, then it can be cracked


R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 11 / 54

Refrescando la memoria. . .

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

12 / 54

Refrescando la memoria. . .

Conocimientos de manejo de debuggers

Conocimientos de manejo de debuggers

Nociones de debugger
C odigo ensamblador Ejecuci on paso a paso Util para detectar fallos en programas Comandos t picos:
Breakpoint: punto de ruptura Step into / Step over Animate into / Animate over Ejecuci on hasta RET

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

13 / 54

Refrescando la memoria. . .

Conocimientos de arquitectura x86 b asicos

Conocimientos de arquitectura x86 b asicos (I)

Registros
Diferentes tipos de registros, seg un uso
Prop osito general Segmento Apuntador de instrucciones Indice Bandera (ags)

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

14 / 54

Refrescando la memoria. . .

Conocimientos de arquitectura x86 b asicos

Conocimientos de arquitectura x86 b asicos (II)

Registros de prop osito general


EAX : registro acumulador
Operaciones aritm eticas y l ogicas Recoge resultado despu es de operaciones (habitualmente)

EBX : registro base


Transferencias de datos entre memoria y procesador

ECX : registro contador


Contador en bucles (loop), cadenas (rep), desplazamientos (shX)

EDX : registro datos


Multiplicaci on y divisi on (junto con EAX ) Entrada y salida de puertos

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

15 / 54

Refrescando la memoria. . .

Conocimientos de arquitectura x86 b asicos

Conocimientos de arquitectura x86 b asicos (III) (1)


Registros de bandera (ags)
Cada bit signica una cosa diferente
Bit Flag 15 14 13 12 11 OF 10 DF 9 IF 8 TF 7 SF 6 ZF 5 4 AF 3 2 PF 1 0 CF

CF : acarreo (arrastre tras operaciones aritm eticas) OF : desbordamiento ZF : cero (se pone a 1 si el resultado de la u ltima operaci on es 0) SF : signo (se pone a 1 si el resultado de la u ltima operaci on es negativo) PF : paridad (se pone a 1 si el resultado de la u ltima operaci on es par)
R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 16 / 54

Refrescando la memoria. . .

Conocimientos de arquitectura x86 b asicos

Conocimientos de arquitectura x86 b asicos (III) (2)


Registros de bandera (ags)
Cada bit signica una cosa diferente
Bit Flag 15 14 13 12 11 OF 10 DF 9 IF 8 TF 7 SF 6 ZF 5 4 AF 3 2 PF 1 0 CF

AF : auxiliar (operaciones BCD) DF : direcci on (ops. de cadena, direcci on ascendete o descendente en recorrido) IF : interrupciones (0 enmascaramiento de ints) TF : trap ag (ejecuci on paso a paso, ya veremos. . . )

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

17 / 54

Refrescando la memoria. . .

Conocimientos de arquitectura x86 b asicos

Conocimientos de arquitectura x86 b asicos (IV) (1)

Tipos de instrucciones
Codicaci on variable y alineaci on independiente INSTRUCCION DESTINO, ORIGEN Puede aparecer un registro, dos o ninguno en una instrucci on (registros impl citos) Referencias a memoria en cualquiera de los lados (NO a la vez!) Cada operaci on puede modicar registros consultar manual ASM

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

18 / 54

Refrescando la memoria. . .

Conocimientos de arquitectura x86 b asicos

Conocimientos de arquitectura x86 b asicos (IV) (2)

Tipos de instrucciones
Flags recogen resultado de operaciones ALU Direccionamiento: inmediato, oset o con ndice escalado (no relativo al PC) . . . excepto saltos (instrucci on jmp)! Instrucciones at omicas (xchg, cmpxchg/cmpxchg8b, xadd, prejo LOCK) Registros para coma otante (ops. especiales) Instrucciones SIMD (Single Instruction, Multiple Data): paralelismo a nivel de datos

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

19 / 54

Refrescando la memoria. . .

Conocimientos de arquitectura x86 b asicos

Conocimientos de arquitectura x86 b asicos (V) (3)


Flujo del programa
jmp call ret Pueden ser cercanos o lejanos, seg un destino

La pila
LIFO (Last In First Out) Paso de par ametros a procedimientos push pop call ret
push ebp mov ebp, esp sub esp, SIZE LOCAL VARIABLES R.J. Rodr guez C odigo de la subrutina mov esp, ebp pop ebp INPUT PARAMS; 4 by default ret a SIZE Introducci on a la Ingenier Inversa - DAS DAS 2011

20 / 54

Refrescando la memoria. . .

Conocimientos de las estructuras PE

Conocimientos de las estructuras PE (I)


Encabezados: tama no constante EXEs, DLLs, OBJs Cabecera MZ (DOS): c odigo a ejecutar si no es compatible con MS-DOS
Tama no 0x40, ultimos 4 @cabecera PE

Cabecera PE (Portable Executable)


04h: 06h: 14h: 16h: 18h: tipo de m aquina compilado n umero de secciones tama no de la cabecera opcional caracter sticas del chero comienzo cabecera opcional
01Ch: tama no del c odigo 028h: Entry Point 034h: direcci on base del chero

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

21 / 54

Refrescando la memoria. . .

Conocimientos de las estructuras PE

Conocimientos de las estructuras PE (II)

Recuerda: secciones alineadas en memoria durante ejecuci on Tablas de secciones:


@PE header+tama no de PE header+tama no de cabecera opcional
00h: nombre de la secci on 08h: tama no virtual 0ch: direcci on virtual 024h: ags (lectura, escritura, ejecuci on. . . )

Secciones: division del c odigo


.text, .idata, .bss, .data, .reloc Nombre de la secci on irrelevante para el funcionamiento

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

22 / 54

Refrescando la memoria. . .

Conocimientos de las estructuras PE

Conocimientos de las estructuras PE (II)

Referencias
Wikepedia (http://en.wikipedia.org/wiki/Portable_Executable) Peering Inside the PE: A Tour of the Win32 Portable Executable File Format (http://msdn.microsoft.com/en-us/library/ms809762.aspx)

Microsoft PE and COFF Specication (http://msdn.microsoft.com/en-us/windows/hardware/gg463119 The .NET File Format (http://ntcore.com/files/dotnetformat.htm)

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

23 / 54

Herramientas u tiles

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

24 / 54

Herramientas u tiles

Herramientas utiles (I)

B asicas
Desensambladores
General: W32Dasm, IDA Pro, . . . Espec co: p32Dasm (VBasic), Reector (.NET), . . .

Editor hexadecimal (e.g., HexWorkshop) Debuggers


Soft ICE OllyDBG IDA Pro ...

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

25 / 54

Herramientas u tiles

Herramientas utiles (II)

Otras. . .
Identicadores y editores PE (PEiD, PEEditor, . . . ) Visores/editores de recursos (XNResource Editor, Resorce Hacker, ...) Volcadores de memoria (LordPE Deluxe, ProcDump, SirPE, . . . )

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

26 / 54

Herramientas u tiles

Herramientas utiles (II)

Otras. . .
Identicadores y editores PE (PEiD, PEEditor, . . . ) Visores/editores de recursos (XNResource Editor, Resorce Hacker, ...) Volcadores de memoria (LordPE Deluxe, ProcDump, SirPE, . . . ) Emuladores (HASP, Sentinel, . . . ) Monitores de API (KaKeeware Application Monito, Event2Address, ...) Reparadores de IAT (ImportREC, ReVirgin)

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

26 / 54

Herramientas u tiles

Herramientas utiles (III)


Documentaci on: manuales y tutoriales
La m as importante hay que leer para aprender Internet, una herramienta u til y al alcance de cualquiera
Grupos de cracking
Hispano-hablantes (WkT, CLS, eCh, . . . ) Extranjeros (RZR, TNT!, ARTeam, RE, . . . )

Foros
elHacker (secci on Programaci onIngenier a Inversa) ExeTools WoodMan

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

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

27 / 54

Herramientas u tiles

Herramientas utiles (III)


Documentaci on: manuales y tutoriales
La m as importante hay que leer para aprender Internet, una herramienta u til y al alcance de cualquiera
Grupos de cracking
Hispano-hablantes (WkT, CLS, eCh, . . . ) Extranjeros (RZR, TNT!, ARTeam, RE, . . . )

Foros
elHacker (secci on Programaci onIngenier a Inversa) ExeTools WoodMan

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

Pr actica, pr actica y (un poco m as de) pr actica


Cualquier (pobre) programa que caiga en nuestras manos Crackmes (http://www.crackmes.us/)
R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 27 / 54

T ecnicas de an alisis

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

28 / 54

T ecnicas de an alisis

C odigo muerto

An alisis de c odigo muerto: descripci on


Programas sin protecci on (o protecci on m nima) Es raro que funcione Herramientas necesarias
Identicador PE Desensamblador Editor Hexadecimal Cerebro Intuici on L apiz y papel Suerte :)

Casos t picos
Salto JE/JNE (JZ/JNZ) para registro correcto N umero de registro embebido en la aplicaci on

Muy sencillo (queremos desaf os!)


R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 29 / 54

T ecnicas de an alisis

C odigo muerto

An alisis de c odigo muerto: ejemplos (I)


NOPeo de salto de comprobaci on

Una o varias rutinas de comprobaci on de serial NOPeo: sustituir c odigo m aquina por NOP (No OPeration)
JE/JNE (74/75) NOP (90) JE/JNE (74/75) JMP (EB)a Variantes: JX/JNX (cualquiera) NOP (90) o JMP (EB)
a Si el salto es largo (destino a m as de 32 bits desde el lugar de origen), var a. . .

Pasos
1 2 3 4 R.J. Rodr guez

Identicar PE y desensamblar Buscar mensajes de chico malo Analizar camino hasta el mensaje NOPear salto/desviar camino
DAS 2011 30 / 54

Introducci on a la Ingenier a Inversa - DAS

T ecnicas de an alisis

C odigo muerto

An alisis de c odigo muerto: ejemplos (II)


A la caza del serial

Una o varias rutinas de comprobaci on de serial El c odigo de registro (serial) es u nico y. . . . . . est a embebido en la aplicaci on !

Pasos
1 2 3 4 5

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

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

31 / 54

T ecnicas de an alisis

C odigo vivo

An alisis de c odigo vivo: descripci on


Programas con (o sin) protecci on Herramientas necesarias
Identicador PE Desensamblador Debugger Cualquiera del cintur on (depender a de la aplicaci on a crackear) Cerebro Intuici on L apiz y papel Suerte :)

M as complicados (i.e., divertido) Cada aplicaci on es un reto nuevo y diferente Casos t picos
Mmm. . . cualquiera?

(luego veremos un ejemplo. . . )


R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 32 / 54

T ecnicas de reversing

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

33 / 54

T ecnicas de reversing

CD Check

T ecnicas de cracking (I): CD Check


Vericaci on del CD presente en la unidad Fichero concreto en el CD de la unidad (algunas veces) Protecciones m as avanzadas: SafeDisc, StarForce Uso de unidades virtuales: DaemonTools

APIs t picas
GetDriveTypeA
EAX = 5 si hay CD

GetVolumeInformationA

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

34 / 54

T ecnicas de reversing

Patching y loaders

T ecnicas de cracking (II): Patching y loaders


Patching
Objetivo: cambiar ujo natural de ejecuci on del programa
Cambio de instrucciones m aquina
Modicando (tras un CMP o TEST) o insertando saltos Sustituyendo por NOPs

M etodos habituales: b usqueda de cadenas o chequeo de APIs Cambios est aticos (i.e., permanentes)

Loaders
Como el patching, pero en caliente m as elegante Dos tipos (b asicos)
Simples Debuggers (m as complejos): util para programas empacados

Cambios din amicos (i.e., temporales)


R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 35 / 54

T ecnicas de reversing

Time-trials y Registro de Windows

T ecnicas de cracking (III): Time-trials y Registro


Time-trials
Protecci on por tiempo (uso limitado X d 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 Introducci on a la Ingenier a Inversa - DAS DAS 2011 36 / 54

T ecnicas de reversing

Captura del serial y Keygenning

T ecnicas de cracking (V): Captura del serial y Keygenning


Captura del serial
Objetivo: conseguir n umero de registro del programa Id entico para todos los usuarios Embebido en la aplicaci on F acil: b usqueda de cadenas con patrones conocidos. . .

Keygenning
Objetivo: encontrar algoritmo de generaci on de claves Complejidad del algoritmo variable Cada usuario tiene un n umero de registro diferente Ingenier a inversa pura y dura

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

37 / 54

T ecnicas de reversing

Archivos de licencia

T ecnicas de cracking (VI): Archivos de licencia

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

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


MUY complicados de conseguir licencia correcta Depender a del algoritmo criptogr aco usado

Soluci on: intentar parchear. . .

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

38 / 54

T ecnicas de reversing

Desempacado (unpacking)

T ecnicas de cracking (VII): Desempacado (unpacking)


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 a desempacado!)


Secciones virtuales Ofuscaci on de c odigo

Arreglar la IAT (Import Address Table)


Emulaci on de APIs Redireccionamiento de APIs

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


R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 39 / 54

Algunos m etodos antireversing

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

40 / 54

Algunos m etodos antireversing

Algunos m etodos antireversing


T ecnicas anti-debugging
APIs Windows internals tricks Detecci on de herramientas Lectura recomendada: http://pferrie.tripod.com/

T ecnicas anti-tracing T ecnicas anti-dumping T ecnicas de ocultaci on de OEP Otras t ecnicas:


Ofuscamiento de c odigo (c odigo basura) Detecci on de modicaciones (CRC, APIs) Criptograf a

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

41 / 54

Ejemplo pr actico

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

42 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (I): estudio del crackME


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

Pasos
1 2

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

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

43 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (I): estudio del crackME


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

Pasos
1 2

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

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

43 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (1)

Pasos

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

44 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (1)

Pasos
1

Llamada a IsDebuggerPresent ocultar el Olly

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

44 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (1)

Pasos
1 2

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


R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 44 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (1)

Pasos
1 2 3

Llamada a IsDebuggerPresent ocultar el Olly BP en GetDlgItemTextA e introducimos datos. . . Alcanzamos c odigo de la aplicaci on (CTRL + F 9)
R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 44 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (2)

Condiciones del nombre


EAX: longitud del nombre

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

45 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (2)

Condiciones del nombre


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

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

45 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (2)

Condiciones del nombre


EAX: longitud del nombre EAX > 4 && EAX 0Ah Si longitud de serial= 0 MessageBoxA
R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 45 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (3)

B usqueda de cadenas referenciadas Cadenas de chico bueno y chico malo

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

46 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (3)

B usqueda de cadenas referenciadas Cadenas de chico bueno y chico malo

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

46 / 54

Ejemplo pr actico

Estudio del crackME

Ejemplo pr actico (II): estudio del crackME (3)

B usqueda de cadenas referenciadas Cadenas de chico bueno y chico malo lstrcmpA: comparaci on de cadenas
Valor de EAX determina igualdad
R.J. Rodr guez Introducci on a la Ingenier a Inversa - DAS DAS 2011 46 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (1)

0x401153: Inicio algoritmo BP para estudio en caliente

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

47 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (1)

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

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

47 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (1)

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

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

47 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (1)

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

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

47 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (2)

EDI = buer del nombre EDX = longitud del nombre EBX = 1 while EBX < EDX do AL = car acter apuntado por EDI if AL 0x 5A and AL 0x 41 then AL+ = 0x 2C end ECX + = EAX EDI + + end

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

48 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (2)

EDI = buer del nombre EDX = longitud del nombre EBX = 1 while EBX < EDX do AL = car acter apuntado por EDI if AL 0x 5A and AL 0x 41 then AL+ = 0x 2C end ECX + = EAX EDI + + end

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

48 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (2)

EDI = buer del nombre EDX = longitud del nombre EBX = 1 while EBX < EDX do AL = car acter apuntado por EDI if AL 0x 5A and AL 0x 41 then AL+ = 0x 2C end ECX + = EAX EDI + + end

ECX + = 0x 29A ECX = 0x 3039 ECX = 0x 17 ECX = 0x 9

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

48 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (3)

EBX = 0 EAX = ECX ECX = 0x 0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x 30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

49 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (3)

EBX = 0 EAX = ECX ECX = 0x 0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x 30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

49 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (3)

EBX = 0 EAX = ECX ECX = 0x 0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x 30 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

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

49 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (3)

EBX = 0 EAX = ECX ECX = 0x 0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x 30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0

EDI = buer 0x04030C8 Revertimos la cadena apuntada por ESI y guardamos en EDI A nadimos resto del nombre (desde el 4 car acter) al nal de la nueva cadena

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

49 / 54

Ejemplo pr actico

Algoritmo de generaci on

Ejemplo pr actico (III): algoritmo de generaci on (3)

EBX = 0 EAX = ECX ECX = 0x 0A repeat EDX = 0 EDX = EAX mod ECX EAX / = ECX DL+ = 0x 30 Guardar DL en el buer ESI + EBX EBX + + until EAX = 0

EDI = buer 0x04030C8 Revertimos la cadena apuntada por ESI y guardamos en EDI acter) al nal de la A nadimos resto del nombre (desde el 5 car nueva cadena Y ya se compara la cadena construida con la introducida

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

49 / 54

Conclusiones

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

50 / 54

Conclusiones

Conclusiones y otras aplicaciones


Cualquier protecci on es crackeable Mundo de constante evoluci on nuevas protecciones, nuevos m etodos Leer y practicar mucho Usar y programar m as software libre
Que no hacer m as software libre :)

Otras aplicaciones
Fuzzing Exploiting DBI (Dynamic Binary Instrumentation)

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

51 / 54

Investigaci on en Ingenier a Inversa

2 3

4 5

6 Introducci on a la Ingenier a Inversa Qu e es la Ingenier a Inversa Motivaci on Aproximaciones a la Ingenier a Inversa Conocimientos previos Refrescando la memoria. . . Conocimientos de manejo de debuggers 7 Conocimientos de arquitectura x86 b asicos 8 Conocimientos de las estructuras PE Herramientas u tiles T ecnicas de an alisis 9 C odigo muerto 10 C odigo vivo

T ecnicas de reversing CD Check Patching y loaders Time-trials y Registro de Windows Captura del serial y Keygenning Archivos de licencia Desempacado (unpacking) Algunos m etodos antireversing Ejemplo pr actico Estudio del crackME Algoritmo de generaci on Conclusiones Investigaci on en Ingenier a Inversa

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

52 / 54

Investigaci on en Ingenier a Inversa

Investigaci on en Ingenier a Inversa

Comparativa de rendimiento con/sin protecciones Nuevas t ecnicas de protecci on


Basadas en Redes de Petri ?

B usqueda de nuevas vulnerabilidades

R.J. Rodr guez

Introducci on a la Ingenier a Inversa - DAS

DAS 2011

53 / 54

Introducci on a la Ingenier a Inversa Dise no de Aplicaciones Seguras


Ricardo J. Rodr guez
rjrodriguez@unizar.es

XX de Noviembre de 2011

Grupo de Ingenier a de Sistemas de Eventos Discretos Universidad de Zaragoza

You might also like