Professional Documents
Culture Documents
XX de Noviembre de 2011
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
DAS 2011
2 / 54
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
DAS 2011
3 / 54
Qu e es la Ingenier a Inversa
DAS 2011
4 / 54
Qu e es la Ingenier a Inversa
DAS 2011
4 / 54
Motivaci on
DAS 2011
5 / 54
Motivaci on
DAS 2011
6 / 54
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
DAS 2011
8 / 54
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
DAS 2011
9 / 54
Conocimientos previos
Ensamblador (http://www.intel.com/products/processor/manuals/ )
DAS 2011
10 / 54
Conocimientos previos
Debuggear programas
Breakpoints Step into, step over, . . .
DAS 2011
10 / 54
Conocimientos previos
DAS 2011
11 / 54
Conocimientos previos
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
DAS 2011
12 / 54
Refrescando la memoria. . .
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
DAS 2011
13 / 54
Refrescando la memoria. . .
Registros
Diferentes tipos de registros, seg un uso
Prop osito general Segmento Apuntador de instrucciones Indice Bandera (ags)
DAS 2011
14 / 54
Refrescando la memoria. . .
DAS 2011
15 / 54
Refrescando la memoria. . .
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. . .
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. . . )
DAS 2011
17 / 54
Refrescando la memoria. . .
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
DAS 2011
18 / 54
Refrescando la memoria. . .
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
DAS 2011
19 / 54
Refrescando la memoria. . .
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. . .
DAS 2011
21 / 54
Refrescando la memoria. . .
DAS 2011
22 / 54
Refrescando la memoria. . .
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)
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
DAS 2011
24 / 54
Herramientas u tiles
B asicas
Desensambladores
General: W32Dasm, IDA Pro, . . . Espec co: p32Dasm (VBasic), Reector (.NET), . . .
DAS 2011
25 / 54
Herramientas u tiles
Otras. . .
Identicadores y editores PE (PEiD, PEEditor, . . . ) Visores/editores de recursos (XNResource Editor, Resorce Hacker, ...) Volcadores de memoria (LordPE Deluxe, ProcDump, SirPE, . . . )
DAS 2011
26 / 54
Herramientas u tiles
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)
DAS 2011
26 / 54
Herramientas u tiles
Foros
elHacker (secci on Programaci onIngenier a Inversa) ExeTools WoodMan
P aginas personales (Karpo, Shoulck, Saccopharynx, +NCR, AbsSha, ...) Tuts4You (http://www.tuts4you.com/)
DAS 2011
27 / 54
Herramientas u tiles
Foros
elHacker (secci on Programaci onIngenier a Inversa) ExeTools WoodMan
P aginas personales (Karpo, Shoulck, Saccopharynx, +NCR, AbsSha, ...) Tuts4You (http://www.tuts4you.com/)
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
DAS 2011
28 / 54
T ecnicas de an alisis
C odigo muerto
Casos t picos
Salto JE/JNE (JZ/JNZ) para registro correcto N umero de registro embebido en la aplicaci on
T ecnicas de an alisis
C odigo muerto
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
T ecnicas de an alisis
C odigo muerto
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 :)
DAS 2011
31 / 54
T ecnicas de an alisis
C odigo vivo
M as complicados (i.e., divertido) Cada aplicaci on es un reto nuevo y diferente Casos t picos
Mmm. . . cualquiera?
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
DAS 2011
33 / 54
T ecnicas de reversing
CD Check
APIs t picas
GetDriveTypeA
EAX = 5 si hay CD
GetVolumeInformationA
DAS 2011
34 / 54
T ecnicas de reversing
Patching y loaders
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
T ecnicas de reversing
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
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
DAS 2011
37 / 54
T ecnicas de reversing
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
DAS 2011
38 / 54
T ecnicas de reversing
Desempacado (unpacking)
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
DAS 2011
40 / 54
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
DAS 2011
42 / 54
Ejemplo pr actico
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)
DAS 2011
43 / 54
Ejemplo pr actico
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)
DAS 2011
43 / 54
Ejemplo pr actico
Pasos
DAS 2011
44 / 54
Ejemplo pr actico
Pasos
1
DAS 2011
44 / 54
Ejemplo pr actico
Pasos
1 2
Ejemplo pr actico
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
DAS 2011
45 / 54
Ejemplo pr actico
DAS 2011
45 / 54
Ejemplo pr actico
Ejemplo pr actico
DAS 2011
46 / 54
Ejemplo pr actico
DAS 2011
46 / 54
Ejemplo pr actico
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
DAS 2011
47 / 54
Ejemplo pr actico
Algoritmo de generaci on
DAS 2011
47 / 54
Ejemplo pr actico
Algoritmo de generaci on
0x401153: Inicio algoritmo BP para estudio en caliente 0x40316A: buer longitud EDI: buer cadena ESI: otro buer :) EAX=EBX=ECX=EDX=0 EDX=longitud
DAS 2011
47 / 54
Ejemplo pr actico
Algoritmo de generaci on
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
DAS 2011
47 / 54
Ejemplo pr actico
Algoritmo de generaci on
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
DAS 2011
48 / 54
Ejemplo pr actico
Algoritmo de generaci on
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
DAS 2011
48 / 54
Ejemplo pr actico
Algoritmo de generaci on
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
DAS 2011
48 / 54
Ejemplo pr actico
Algoritmo de generaci on
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
DAS 2011
49 / 54
Ejemplo pr actico
Algoritmo de generaci on
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
DAS 2011
49 / 54
Ejemplo pr actico
Algoritmo de generaci on
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
DAS 2011
49 / 54
Ejemplo pr actico
Algoritmo de generaci on
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
DAS 2011
49 / 54
Ejemplo pr actico
Algoritmo de generaci on
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
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
DAS 2011
50 / 54
Conclusiones
Otras aplicaciones
Fuzzing Exploiting DBI (Dynamic Binary Instrumentation)
DAS 2011
51 / 54
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
DAS 2011
52 / 54
DAS 2011
53 / 54
XX de Noviembre de 2011