La Instrumentación Dinámica de Ejecutables (en inglés, Dynamic Binary Instrumentation (DBI)) es un método útil para analizar, en tiempo de ejecución, el comportamiento de un programa. En seguridad informática DBI se usa para detección de vulnerabilidades tipo buffer overflow, o detectar otro tipo de excepciones no controladas que pueden resultar en fallos de seguridad en los sistemas. En esta ponencia se presenta el uso de DBI más aplicado a ingeniería inversa, más precisamente, al campo del desempacado de ejecutables protegidos. Lo complicado cuando uno se enfrenta a un ejecutable protegido es saber diferenciar dónde acaba el código del protector y dónde empieza el código real del ejecutable. Concretamente, en esta charla se presenta cómo se puede usar DBI para encontrar tal diferencia. Esta nueva forma de encontrar el comienzo del código real del ejecutable, paso crucial para conseguir un ejecutable sin protección a partir de un ejecutable
protegido, es un primer paso en el uso de DBI para desempacado automático, donde surgen un montón de preguntas que permanecen abiertas: ¿qué pasa con la IAT? ¿se puede usar DBI también para arreglarla? ¿y qué ocurre con las técnicas de antidebugging?.
Ricardo J. Rodríguez - Mejora en el Proceso de Desempacado usando Técnicas DBI [RootedCON 2012]
1. Mejora en el Proceso de Desempacado
usando T´cnicas DBI
e
Ricardo J. Rodr´
ıguez
rjrodriguez@unizar.es
tw: @RicardoJRdez – http://www.ricardojrodriguez.es
3 de Marzo de 2012
RootedCON 2012
Madrid, Spain
2. 1 Motivaci´n
o
2 Trabajo Relacionado
3 Instrumentaci´n Din´mica de Ejecutables
o a
4 Herramienta DBA para encontrar OEP
5 Experimentos
6 Conclusiones
2 / 30
3. $whoami
Miembro de CLS desde sus inicios (2000)
Investigador (PhD candidate) en Universidad de Zaragoza
L´
ıneas de investigaci´n
o
Rendimiento de sistemas software complejos
Ingenier´ de Software segura
ıa
Sistemas de Tolerancia a Fallos (dise˜o y modelado)
n
3 / 30
4. $whoami
Miembro de CLS desde sus inicios (2000)
Investigador (PhD candidate) en Universidad de Zaragoza
L´
ıneas de investigaci´n
o
Rendimiento de sistemas software complejos
Ingenier´ de Software segura
ıa
Sistemas de Tolerancia a Fallos (dise˜o y modelado)
n
An´lisis malware
a
3 / 30
5. Motivaci´n (I)
o
¿Qu´ puedo hacer para proteger mi ejecutable de los malos? (1)
e
No distribuirlo
4 / 30
6. Motivaci´n (I)
o
¿Qu´ puedo hacer para proteger mi ejecutable de los malos? (1)
e
No distribuirlo
Where is my fuckin’ money, ha?
4 / 30
7. Motivaci´n (I)
o
¿Qu´ puedo hacer para proteger mi ejecutable de los malos? (1)
e
No distribuirlo
Where is my fuckin’ money, ha?
GPL’d it: spread the love
4 / 30
8. Motivaci´n (I)
o
¿Qu´ puedo hacer para proteger mi ejecutable de los malos? (1)
e
No distribuirlo
Where is my fuckin’ money, ha?
GPL’d it: spread the love
Nos quedaremos sin trabajo :’(
4 / 30
9. Motivaci´n (I)
o
¿Qu´ puedo hacer para proteger mi ejecutable de los malos? (1)
e
No distribuirlo
Where is my fuckin’ money, ha?
GPL’d it: spread the love
Nos quedaremos sin trabajo :’(
Rezar a [rellenar seg´n creencias]
u
4 / 30
10. Motivaci´n (II)
o
¿Qu´ puedo hacer para proteger mi ejecutable de los malos? (2)
e
Protecci´n de ejecutables contra reversing
o
C´digo anti-reversing
o
Anti-debugging
Anti-tracing
Detecci´n de modificaciones (e.g., CRC)
o
Uso de protectores software (a.k.a. packers)
Comprimen un ejecutable ocultando:
C´digo original
o
Entry Point (EP): primera instrucci´n del ejecutable
o
√
↑ Protecci´n vs. × ↑ tiempo ejecuci´n/ ↑ consumo memoria
o o
Archivo autoextra´
ıble:
Ejecutable (c´digo) real + rutina de descompresi´n
o o
5 / 30
11. Motivaci´n (II): conocimientos previos
o
Conocimientos de las estructuras PE (1)
Encabezados: tama˜o constante
n
EXEs, DLLs, OBJs
Cabecera MZ (DOS): c´digo a ejecutar si no es
o
compatible con MS-DOS
6 / 30
12. Motivaci´n (II): conocimientos previos
o
Conocimientos de las estructuras PE (1)
Encabezados: tama˜o constante
n
EXEs, DLLs, OBJs
Cabecera MZ (DOS): c´digo a ejecutar si no es
o
compatible con MS-DOS
Mark Zbikowski
Tama˜o 0x40, ´ltimos 4 @cabecera PE
n u
Cabecera PE (Portable Executable)
04h: tipo de m´quina compilado
a
06h: n´mero de secciones
u
14h: tama˜o de la cabecera opcional
n
16h: caracter´
ısticas del fichero
18h: comienzo cabecera opcional
01Ch: tama˜o del c´digo
n o
028h: Entry Point
034h: direcci´n base del fichero
o
6 / 30
13. Motivaci´n (II): conocimientos previos
o
Conocimientos de las estructuras PE (2)
Recuerda: secciones alineadas en memoria
durante ejecuci´n
o
Tablas de secciones:
@PE header+tama˜o de PE header+tama˜o
n n
de cabecera opcional
00h: nombre de la secci´n
o
08h: tama˜o virtual
n
0ch: direcci´n virtual
o
024h: flags (lectura, escritura, ejecuci´n. . . )
o
Secciones: division del c´digo
o
.text, .idata, .bss, .data, .reloc
Nombre de la secci´n irrelevante para el
o
funcionamiento
7 / 30
14. Motivaci´n (II): conocimientos previos
o
Conocimientos de las estructuras PE (2)
Recuerda: secciones alineadas en memoria
durante ejecuci´n
o
Tablas de secciones:
@PE header+tama˜o de PE header+tama˜o
n n
de cabecera opcional
00h: nombre de la secci´n
o
08h: tama˜o virtual
n
0ch: direcci´n virtual
o
024h: flags (lectura, escritura, ejecuci´n. . . )
o
Secciones: division del c´digo
o
.text, .idata, .bss, .data, .reloc
Nombre de la secci´n irrelevante para el
o
funcionamiento
7 / 30
15. Motivaci´n (II): conocimientos previos
o
Conocimientos de las estructuras PE (3)
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 Specification
(http://msdn.microsoft.com/en-us/windows/hardware/gg463119
The .NET File Format
(http://ntcore.com/files/dotnetformat.htm)
8 / 30
16. Motivaci´n (II)
o
¿C´mo funciona un protector software?
o
Empacando. . .
Protector
+ packer
OEP
routine EP
Executable Packed
adds unpacker
routine to executable Executable
9 / 30
17. Motivaci´n (II)
o
¿C´mo funciona un protector software?
o
Empacando. . .
Protector
+ packer
OEP
routine EP
Executable Packed
adds unpacker
routine to executable Executable
Desempacando. . .
Process memory
EP
Packed unpacker routine
OEP
Executable Executable
9 / 30
18. Motivaci´n (III)
o
¿C´mo se revierte un ejecutable protegido?
o
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´
ıa
10 / 30
19. Motivaci´n (III)
o
¿C´mo se revierte un ejecutable protegido?
o
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´ ıa
2 Encontrar el Original Entry Point (OEP)
10 / 30
20. Motivaci´n (III)
o
¿C´mo se revierte un ejecutable protegido?
o
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´ ıa
2 Encontrar el Original Entry Point (OEP)
¿d´nde acaba el c´digo de desempacado?
o o
10 / 30
21. Motivaci´n (III)
o
¿C´mo se revierte un ejecutable protegido?
o
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´ ıa
2 Encontrar el Original Entry Point (OEP)
¿d´nde acaba el c´digo de desempacado?
o o
3 Volcar (de memoria del proceso) el ejecutable a disco
10 / 30
22. Motivaci´n (III)
o
¿C´mo se revierte un ejecutable protegido?
o
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´ ıa
2 Encontrar el Original Entry Point (OEP)
¿d´nde acaba el c´digo de desempacado?
o o
3 Volcar (de memoria del proceso) el ejecutable a disco
4 Reconstruir ejecutable volcado
10 / 30
23. Motivaci´n (III)
o
¿C´mo se revierte un ejecutable protegido?
o
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´ ıa
2 Encontrar el Original Entry Point (OEP)
¿d´nde acaba el c´digo de desempacado?
o o
3 Volcar (de memoria del proceso) el ejecutable a disco
4 Reconstruir ejecutable volcado
Cabecera del ejecutable
10 / 30
24. Motivaci´n (III)
o
¿C´mo se revierte un ejecutable protegido?
o
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´ ıa
2 Encontrar el Original Entry Point (OEP)
¿d´nde acaba el c´digo de desempacado?
o o
3 Volcar (de memoria del proceso) el ejecutable a disco
4 Reconstruir ejecutable volcado
Cabecera del ejecutable
Tabla IAT (Import Address Table) [APIs]
10 / 30
25. Motivaci´n (III)
o
¿C´mo se revierte un ejecutable protegido?
o
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´ ıa
2 Encontrar el Original Entry Point (OEP)
¿d´nde acaba el c´digo de desempacado?
o o
3 Volcar (de memoria del proceso) el ejecutable a disco
4 Reconstruir ejecutable volcado
Cabecera del ejecutable
Tabla IAT (Import Address Table) [APIs]
10 / 30
26. Motivaci´n (III)
o
¿C´mo se revierte un ejecutable protegido?
o
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´ ıa
2 Encontrar el Original Entry Point (OEP)
¿d´nde acaba el c´digo de desempacado?
o o
3 Volcar (de memoria del proceso) el ejecutable a disco
4 Reconstruir ejecutable volcado
Cabecera del ejecutable
Tabla IAT (Import Address Table) [APIs]
Dificultad en encontrar OEP
Ofuscaci´n de c´digo del ejecutable protegido
o o
C´digo basura (junk code)
o
T´cnicas de ocultaci´n de OEP (Stolen Bytes, Asprotect)
e o
10 / 30
27. Motivaci´n (IV)
o
Objetivo: encontrar el OEP de una forma r´pida
a
Objetivo
Mejorar el proceso de desprotecci´n de empacados
o
Encontrar OEP r´pidamente
a
11 / 30
28. Motivaci´n (IV)
o
Objetivo: encontrar el OEP de una forma r´pida
a
Objetivo
Mejorar el proceso de desprotecci´n de empacados
o
Encontrar OEP r´pidamente
a
Entre el 79% y 92% de malware distribuido protegido
Centrarse en el c´digo del malware
o
Usando DBI (Dynamic Binary Instrumentation)
11 / 30
29. Trabajo Relacionado (I)
Qui´n y qu´: desempacado autom´tico
e e a
Debugging
Universal PE Unpacker
Plugin para el IDA Pro ≥ 4.9
PolyUnpack
Comparaci´n de trazas ejecutable est´tico y en ejecuci´n
o a o
Single-step
12 / 30
30. Trabajo Relacionado (II)
Qui´n y qu´: desempacado autom´tico
e e a
Emulaci´n o virtualizaci´n (hardware)
o o
Renovo (Kang et al.)
Basado en QEMU
Traductor din´mico del binario
a
Azure
Basado en KVM (Kernel-based Virtual Machine)
Intel Virtualization Technology (IVT)
Pandora’s Bosch
Basado en Bosch (emulador PC open source). Int´rprete
e
Tesis doctoral Lutz B¨hne
o
Secure and advanced unpacking using computer emulation (S´bastien
e
Josse), Journal in Computer Virology, Springer, 2007.
13 / 30
31. Trabajo Relacionado (III)
Qui´n y qu´: desempacado autom´tico
e e a
Windows Driver
OllyBonE
OllyDBG plugin
Rompe cuando se provoca fallos de p´gina
a
Generic Unpacker
Hook en ntos!SwapContext
OmniUnpack
Analiza traza de ejecuci´n
o
Kernel driver + user component
14 / 30
32. Trabajo Relacionado (IV)
Qui´n y qu´: desempacado autom´tico
e e a
Otras
RL!Depacker
GUnPacker
Otros espec´
ıficos para protectores
Instrumentaci´n Din´mica de Ejecutables
o a
MmmBop (Piotr Bania)
Hook en KiUserExceptionDispatcher y NtContinue
ParaDyn
Usa framework DBI Dyninst
Saffron (Quist)
Usa framework DBI PIN
Incorpora gestor de fallos de p´gina (estilo OllyBonE)
a
15 / 30
33. Instrumentaci´n Din´mica de Ejecutables (I)
o a
¿WTF es Instrumentaci´n Din´mica de Ejecutables?
o a
Qu´ es
e
DBI (Dynamic Binary Instrumentation)
Analiza comportamiento de ejecutable durante ejecuci´n
o
Diferente (puede) seg´n entrada
u
An´lisis est´tico vs. din´mico
a a a
16 / 30
34. Instrumentaci´n Din´mica de Ejecutables (I)
o a
¿WTF es Instrumentaci´n Din´mica de Ejecutables?
o a
Qu´ es
e
DBI (Dynamic Binary Instrumentation)
Analiza comportamiento de ejecutable durante ejecuci´n
o
Diferente (puede) seg´n entrada
u
An´lisis est´tico vs. din´mico
a a a
´
PUEDE ocurrir vs. QUE ocurre
NO SE EJECUTAN todos los posibles caminos (!)
16 / 30
35. Instrumentaci´n Din´mica de Ejecutables (II)
o a
¿Y c´mo funciona la Instrumentaci´n Din´mica de Ejecutables?
o o a
C´mo funciona
o
Instrumentaci´n JIT (Just-in-Time)
o
Granularidad
Instrucci´n
o
Bloques (basic block, BBL)
Rutinas
Secciones
Imagen
Dos componentes
Mecanismo de instrumentaci´n: d´nde y c´mo
o o o
C´digo a ejecutar en el punto instrumentado
o
Soporte de multithreading!
17 / 30
36. Instrumentaci´n Din´mica de Ejecutables (III)
o a
Frameworks DBI
Frameworks DBI: caracter´
ısticas y tipos
APIs para desarrollo de herramientas DBA (Dynamic Binary Analysis)
Buena documentaci´n (algunos)
o
Multiplataforma (incluso Android!)
Soporte
18 / 30
37. Instrumentaci´n Din´mica de Ejecutables (III)
o a
Frameworks DBI
Frameworks DBI: caracter´
ısticas y tipos
APIs para desarrollo de herramientas DBA (Dynamic Binary Analysis)
Buena documentaci´n (algunos)
o
Multiplataforma (incluso Android!)
Soporte
Ejemplos:
PIN (de Intel)
Valgrind (Universidad de Cambridge)
DynamoRIO (HP + MIT)
Dyninst (Universidad de Wisconsin–Madison y Universidad de
Maryland)
18 / 30
38. Instrumentaci´n Din´mica de Ejecutables (IV)
o a
Ejemplo de uso: PIN
Ejemplo PIN (en C): conteo de instrucciones
Contar el n´mero de instrucciones que se ejecutan en un programa*
u
#include “pin.H”
...
int main(int argc, char* argv[])
{
PIN Init(argc, argv);
INS AddInstrumentFunction(instrumentationFunc, 0);
PIN AddFiniFunction(endFunc, 0);
}
19 / 30
39. Instrumentaci´n Din´mica de Ejecutables (IV)
o a
Ejemplo de uso: PIN
Ejemplo PIN (en C): conteo de instrucciones
Contar el n´mero de instrucciones que se ejecutan en un programa*
u
static UINT64 icount = 0;
#include “pin.H”
void docount(){ icount++;}
...
void instrumentationFunc(INS ins, void *v)
{
int main(int argc, char* argv[]) INS InsertCall(
{ ins,
PIN Init(argc, argv); IPOINT BEFORE,
INS AddInstrumentFunction(instrumentationFunc, 0); (AFUNPTR)docount,
PIN AddFiniFunction(endFunc, 0); IARG END
} );
}
Recordatorio: hacer demos ejemplo.
19 / 30
40. Instrumentaci´n Din´mica de Ejecutables (IV)
o a
Ejemplo de uso: PIN
Ejemplo PIN (en C): conteo de instrucciones
Contar el n´mero de instrucciones que se ejecutan en un programa*
u
static UINT64 icount = 0;
#include “pin.H”
void docount(){ icount++;}
...
void instrumentationFunc(INS ins, void *v)
{
int main(int argc, char* argv[]) INS InsertCall(
{ ins,
PIN Init(argc, argv); IPOINT BEFORE,
INS AddInstrumentFunction(instrumentationFunc, 0); (AFUNPTR)docount,
PIN AddFiniFunction(endFunc, 0); IARG END
} );
}
Recordatorio: hacer demos ejemplo.
Recordatorio: ¿has hablado algo de las diferencias de
instrucciones?
19 / 30
41. Herramienta DBA para encontrar OEP (I)
En busca del OEP perdido
Idea (no nueva :()
Usar DBI para encontrar el OEP
¿C´mo?
o
Buscar @ins a ejecutar. . .
20 / 30
42. Herramienta DBA para encontrar OEP (I)
En busca del OEP perdido
Idea (no nueva :()
Usar DBI para encontrar el OEP
¿C´mo?
o
Buscar @ins a ejecutar. . .
. . . que antes haya sido escrita
20 / 30
43. Herramienta DBA para encontrar OEP (I)
En busca del OEP perdido
Idea (no nueva :()
Usar DBI para encontrar el OEP
¿C´mo?
o
Buscar @ins a ejecutar. . .
. . . que antes haya sido escrita
M´s informalmente:
a
Guardar hist´rico de @s memoria escritas
o
Chequear toda ejecutada con hist´rico
o
20 / 30
44. Herramienta DBA para encontrar OEP (I)
En busca del OEP perdido
Idea (no nueva :()
Usar DBI para encontrar el OEP
¿C´mo?
o
Buscar @ins a ejecutar. . .
. . . que antes haya sido escrita
M´s informalmente:
a
Guardar hist´rico de @s memoria escritas
o
Chequear toda ejecutada con hist´rico
o
Primera coincidencia → ¿bingo? (o l´ınea, veremos...)
20 / 30
45. Herramienta DBA para encontrar OEP (II)
Pseudoc´digo: jugada de bingo
o
booleano candidato = falso
...
procedimiento acci´nAEjecutar(INS instrucci´n)
o o
principio
si (n´mero de operandos en memoria de instrucci´n) ≥ 1
u o
∧ (es instrucci´n de escritura)
o
∧ (¬ candidato) )
entonces
A˜adir instrucci´n a candidatas
n o
si no si (¬ candidato)
Buscar @instrucci´n en candidatas
o
Si hay coincidencia → instrucci´n es candidata
o
candidato = verdadero
finSi
fin
21 / 30
46. Herramienta DBA para encontrar OEP (II)
Pseudoc´digo: jugada de l´
o ınea
...
procedimiento acci´nAEjecutar(INS instrucci´n)
o o
principio
si (n´mero de operandos en memoria de instrucci´n) ≥ 1
u o
∧ (es instrucci´n de escritura)
o
)
entonces
A˜adir instrucci´n a candidatas
n o
si no
Buscar @instrucci´n en candidatas
o
Si hay coincidencia → instrucci´n es candidata
o
finSi
fin
22 / 30
48. Experimentos (I)
Programa de prueba
Aplicaci´n UnpackME
o
Desarrollada en ASM 32bits
EP: 0x401000
Recordatorio: mostrar caracter´sticas (PEiD).
ı
23 / 30
49. Experimentos (I)
Programa de prueba
Aplicaci´n UnpackME
o
Desarrollada en ASM 32bits
EP: 0x401000
Recordatorio: mostrar caracter´sticas (PEiD).
ı
Proteger con diferentes packers. . . y probar!
23 / 30
55. Experimentos (II)
Algunos resultados
Packer Version ¿Cantamos bingo?
√
UPX 3.0.8w
√
FSG 2.0
√
NeoLite 2.0
√
XComp 0.98
√
ASPack 2.28
PECompact 1.56 ×∗
24 / 30
56. Experimentos (II)
Algunos resultados
Packer Version ¿Cantamos bingo?
√
UPX 3.0.8w
√
FSG 2.0
√
NeoLite 2.0
√
XComp 0.98
√
ASPack 2.28
PECompact 1.56 ×∗
Petite 2.3 ×∗∗
24 / 30
57. Experimentos (II)
Algunos resultados
Packer Version ¿Cantamos bingo?
√
UPX 3.0.8w
√
FSG 2.0
√
NeoLite 2.0
√
XComp 0.98
√
ASPack 2.28
PECompact 1.56 ×∗
Petite 2.3 ×∗∗
PESpin 1.33 (rompe)
Recordatorio: hacer un par de demos de "desempacado
autom´tico".
a
24 / 30
58. Experimentos (II)
Algunos resultados
Packer Version ¿Cantamos bingo?
√
UPX 3.0.8w
√
FSG 2.0
√
NeoLite 2.0
√
XComp 0.98
√
ASPack 2.28
PECompact 1.56 ×∗
Petite 2.3 ×∗∗
PESpin 1.33 (rompe)
Recordatorio: hacer un par de demos de "desempacado
autom´tico".
a
Recordatorio: ense~a el CExe, pa’ re´rnos un rato.
n ı
24 / 30
59. Experimentos (III)
Discusi´n de los resultados
o
Algunos problemas encontrados
Problema de tama˜o m´
n ınimo ejecutable a proteger
¿Cifrado de bloque con tama˜o m´
n ınimo? ¿padding?
An´lisis de OEP candidatos (seg´n packer)
a u
25 / 30
60. Experimentos (III)
Discusi´n de los resultados
o
Algunos problemas encontrados
Problema de tama˜o m´
n ınimo ejecutable a proteger
¿Cifrado de bloque con tama˜o m´
n ınimo? ¿padding?
An´lisis de OEP candidatos (seg´n packer)
a u
¿Meterle m´s l´gica a la DBA?
a o
25 / 30
61. Experimentos (III)
Discusi´n de los resultados
o
Algunos problemas encontrados
Problema de tama˜o m´
n ınimo ejecutable a proteger
¿Cifrado de bloque con tama˜o m´
n ınimo? ¿padding?
An´lisis de OEP candidatos (seg´n packer)
a u
¿Meterle m´s l´gica a la DBA?
a o
Algunos packers (ASProtect, Petite): ejecuci´n entremezclada
o
¿Usar secciones del ejecutable como l´
ımites?
Algunos se “incrustran” en los huecos vac´ del c´digo real
ıos o
25 / 30
63. Conclusiones (I)
Algunas conclusiones
Frameworks DBI: r´pido y sencillo → alto potencial
a
NO es necesario conocimientos de programaci´n S.O. avanzados
o
Podemos centrarnos en la “miga”: la DBA
Desventajas:
Conocimiento de la API
Tiempo de ejecuci´n
o
27 / 30
66. Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´rico
e
¿C´mo se comporta DBI con t´cnicas anti-debugging de los
o e
ejecutables? (e.g., SEH, generaci´n de excepciones. . . )
o
¿Y con las de los packers?
28 / 30
67. Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´rico
e
¿C´mo se comporta DBI con t´cnicas anti-debugging de los
o e
ejecutables? (e.g., SEH, generaci´n de excepciones. . . )
o
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :)
28 / 30
68. Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´rico
e
¿C´mo se comporta DBI con t´cnicas anti-debugging de los
o e
ejecutables? (e.g., SEH, generaci´n de excepciones. . . )
o
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :)
¿Y con c´digo polim´rfico?
o o
28 / 30
69. Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´rico
e
¿C´mo se comporta DBI con t´cnicas anti-debugging de los
o e
ejecutables? (e.g., SEH, generaci´n de excepciones. . . )
o
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :)
¿Y con c´digo polim´rfico?
o o
¿Y con packers emuladores (e.g. Themida, ExeCryptor)?
(M´s) aplicaciones a Ingenier´ Inversa
a ıa
28 / 30
70. Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´rico
e
¿C´mo se comporta DBI con t´cnicas anti-debugging de los
o e
ejecutables? (e.g., SEH, generaci´n de excepciones. . . )
o
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :)
¿Y con c´digo polim´rfico?
o o
¿Y con packers emuladores (e.g. Themida, ExeCryptor)?
(M´s) aplicaciones a Ingenier´ Inversa
a ıa
Detecci´n de acceso a variables “protegidas”
o
28 / 30
71. Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´rico
e
¿C´mo se comporta DBI con t´cnicas anti-debugging de los
o e
ejecutables? (e.g., SEH, generaci´n de excepciones. . . )
o
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :)
¿Y con c´digo polim´rfico?
o o
¿Y con packers emuladores (e.g. Themida, ExeCryptor)?
(M´s) aplicaciones a Ingenier´ Inversa
a ıa
Detecci´n de acceso a variables “protegidas”
o
Extracci´n de direcciones din´micas
o a
28 / 30
72. Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´rico
e
¿C´mo se comporta DBI con t´cnicas anti-debugging de los
o e
ejecutables? (e.g., SEH, generaci´n de excepciones. . . )
o
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :)
¿Y con c´digo polim´rfico?
o o
¿Y con packers emuladores (e.g. Themida, ExeCryptor)?
(M´s) aplicaciones a Ingenier´ Inversa
a ıa
Detecci´n de acceso a variables “protegidas”
o
Extracci´n de direcciones din´micas
o a
...
28 / 30
75. Agradecimientos y referencias
Referencias
IndefiniteStudies
Piotr Bania
Gente de CLS
Asociaci´n RootedCON
o
¡A trabajar!
→ Gracias por escucharme!
Nos vemos en la NcN! :)
29 / 30
76. Mejora en el Proceso de Desempacado
usando T´cnicas DBI
e
Ricardo J. Rodr´
ıguez
rjrodriguez@unizar.es
tw: @RicardoJRdez – http://www.ricardojrodriguez.es
3 de Marzo de 2012
RootedCON 2012
Madrid, Spain