Mejora en el Proceso de Desempacado usando T ecnicas DBI Ricardo - - PowerPoint PPT Presentation
Mejora en el Proceso de Desempacado usando T ecnicas DBI Ricardo - - PowerPoint PPT Presentation
Mejora en el Proceso de Desempacado usando T ecnicas DBI Ricardo J. Rodr guez rjrodriguez@unizar.es tw: @RicardoJRdez http://www.ricardojrodriguez.es 3 de Marzo de 2012 RootedCON 2012 Madrid, Spain 2 / 1 $ whoami Miembro de CLS
2 / 1
$whoami
Miembro de CLS desde sus inicios (2000) Investigador (PhD candidate) en Universidad de Zaragoza
L´ ıneas de investigaci´
- n
Rendimiento de sistemas software complejos Ingenier´ ıa de Software segura Sistemas de Tolerancia a Fallos (dise˜ no y modelado)
3 / 1
$whoami
Miembro de CLS desde sus inicios (2000) Investigador (PhD candidate) en Universidad de Zaragoza
L´ ıneas de investigaci´
- n
Rendimiento de sistemas software complejos Ingenier´ ıa de Software segura Sistemas de Tolerancia a Fallos (dise˜ no y modelado) An´ alisis malware
3 / 1
Motivaci´
- n (I)
¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)
No distribuirlo
4 / 1
Motivaci´
- n (I)
¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)
No distribuirlo
Where is my fuckin’ money, ha?
4 / 1
Motivaci´
- n (I)
¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)
No distribuirlo
Where is my fuckin’ money, ha?
GPL’d it: spread the love
4 / 1
Motivaci´
- n (I)
¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)
No distribuirlo
Where is my fuckin’ money, ha?
GPL’d it: spread the love
Nos quedaremos sin trabajo :’(
4 / 1
Motivaci´
- n (I)
¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)
No distribuirlo
Where is my fuckin’ money, ha?
GPL’d it: spread the love
Nos quedaremos sin trabajo :’(
Rezar a [rellenar seg´ un creencias]
4 / 1
Motivaci´
- n (II)
¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (2)
Protecci´
- n de ejecutables contra reversing
C´
- digo anti-reversing
Anti-debugging Anti-tracing Detecci´
- n de modificaciones (e.g., CRC)
Uso de protectores software (a.k.a. packers)
Comprimen un ejecutable ocultando:
C´
- digo original
Entry Point (EP): primera instrucci´
- n del ejecutable
√ ↑ Protecci´
- n vs. × ↑ tiempo ejecuci´
- n/ ↑ consumo memoria
Archivo autoextra´ ıble:
Ejecutable (c´
- digo) real + rutina de descompresi´
- n
5 / 1
Motivaci´
- n (II): conocimientos previos
Conocimientos de las estructuras PE (1)
Encabezados: tama˜ no constante EXEs, DLLs, OBJs Cabecera MZ (DOS): c´
- digo a ejecutar si no es
compatible con MS-DOS
6 / 1
Motivaci´
- n (II): conocimientos previos
Conocimientos de las estructuras PE (1)
Encabezados: tama˜ no constante EXEs, DLLs, OBJs Cabecera MZ (DOS): c´
- digo a ejecutar si no es
compatible con MS-DOS
Mark Zbikowski Tama˜ no 0x40, ´ ultimos 4 @cabecera PE
Cabecera PE (Portable Executable)
04h: tipo de m´ aquina compilado 06h: n´ umero de secciones 14h: tama˜ no de la cabecera opcional 16h: caracter´ ısticas del fichero 18h: comienzo cabecera opcional
01Ch: tama˜ no del c´
- digo
028h: Entry Point 034h: direcci´
- n base del fichero
6 / 1
Motivaci´
- n (II): conocimientos previos
Conocimientos de las estructuras PE (2)
Recuerda: secciones alineadas en memoria durante ejecuci´
- n
Tablas de secciones:
@PE header+tama˜ no de PE header+tama˜ no de cabecera opcional
00h: nombre de la secci´
- n
08h: tama˜ no virtual 0ch: direcci´
- n virtual
024h: flags (lectura, escritura, ejecuci´
- n. . . )
Secciones: division del c´
- digo
.text, .idata, .bss, .data, .reloc Nombre de la secci´
- n irrelevante para el
funcionamiento
7 / 1
Motivaci´
- n (II): conocimientos previos
Conocimientos de las estructuras PE (2)
Recuerda: secciones alineadas en memoria durante ejecuci´
- n
Tablas de secciones:
@PE header+tama˜ no de PE header+tama˜ no de cabecera opcional
00h: nombre de la secci´
- n
08h: tama˜ no virtual 0ch: direcci´
- n virtual
024h: flags (lectura, escritura, ejecuci´
- n. . . )
Secciones: division del c´
- digo
.text, .idata, .bss, .data, .reloc Nombre de la secci´
- n irrelevante para el
funcionamiento
7 / 1
Motivaci´
- n (II): conocimientos previos
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 / 1
Motivaci´
- n (II)
¿C´
- mo funciona un protector software?
- Empacando. . .
Executable OEP Protector
+ packer routine adds unpacker routine to executable
Packed Executable EP
9 / 1
Motivaci´
- n (II)
¿C´
- mo funciona un protector software?
- Empacando. . .
Executable OEP Protector
+ packer routine adds unpacker routine to executable
Packed Executable EP
- Desempacando. . .
Executable OEP Process memory Packed Executable EP
unpacker routine
9 / 1
Motivaci´
- n (III)
¿C´
- mo se revierte un ejecutable protegido?
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´
ıa
10 / 1
Motivaci´
- n (III)
¿C´
- mo se revierte un ejecutable protegido?
Pasos para conseguir un desempacado
1 Identificar protector → metodolog´
ıa
2 Encontrar el Original Entry Point (OEP)
10 / 1
Motivaci´
- n (III)
¿C´
- mo se revierte un ejecutable protegido?
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?
10 / 1
Motivaci´
- n (III)
¿C´
- mo se revierte un ejecutable protegido?
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?
3 Volcar (de memoria del proceso) el ejecutable a disco
10 / 1
Motivaci´
- n (III)
¿C´
- mo se revierte un ejecutable protegido?
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?
3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado
10 / 1
Motivaci´
- n (III)
¿C´
- mo se revierte un ejecutable protegido?
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?
3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado
Cabecera del ejecutable
10 / 1
Motivaci´
- n (III)
¿C´
- mo se revierte un ejecutable protegido?
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?
3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado
Cabecera del ejecutable Tabla IAT (Import Address Table) [APIs]
10 / 1
Motivaci´
- n (III)
¿C´
- mo se revierte un ejecutable protegido?
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?
3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado
Cabecera del ejecutable Tabla IAT (Import Address Table) [APIs]
10 / 1
Motivaci´
- n (III)
¿C´
- mo se revierte un ejecutable protegido?
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?
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
C´
- digo basura (junk code)
T´ ecnicas de ocultaci´
- n de OEP (Stolen Bytes, Asprotect)
10 / 1
Motivaci´
- n (IV)
Objetivo: encontrar el OEP de una forma r´ apida
Objetivo
Mejorar el proceso de desprotecci´
- n de empacados
Encontrar OEP r´ apidamente
11 / 1
Motivaci´
- n (IV)
Objetivo: encontrar el OEP de una forma r´ apida
Objetivo
Mejorar el proceso de desprotecci´
- n de empacados
Encontrar OEP r´ apidamente
Entre el 79% y 92% de malware distribuido protegido Centrarse en el c´
- digo del malware
Usando DBI (Dynamic Binary Instrumentation)
11 / 1
Trabajo Relacionado (I)
Qui´ en y qu´ e: desempacado autom´ atico
Debugging
Universal PE Unpacker
Plugin para el IDA Pro ≥ 4.9
PolyUnpack
Comparaci´
- n de trazas ejecutable est´
atico y en ejecuci´
- n
Single-step
12 / 1
Trabajo Relacionado (II)
Qui´ en y qu´ e: desempacado autom´ atico
Emulaci´
- n o virtualizaci´
- n (hardware)
Renovo (Kang et al.)
Basado en QEMU Traductor din´ amico del binario
Azure
Basado en KVM (Kernel-based Virtual Machine) Intel Virtualization Technology (IVT)
Pandora’s Bosch
Basado en Bosch (emulador PC open source). Int´ erprete Tesis doctoral Lutz B¨
- hne
Secure and advanced unpacking using computer emulation (S´ ebastien Josse), Journal in Computer Virology, Springer, 2007.
13 / 1
Trabajo Relacionado (III)
Qui´ en y qu´ e: desempacado autom´ atico
Windows Driver
OllyBonE
OllyDBG plugin Rompe cuando se provoca fallos de p´ agina
Generic Unpacker
Hook en ntos!SwapContext
OmniUnpack
Analiza traza de ejecuci´
- n
Kernel driver + user component
14 / 1
Trabajo Relacionado (IV)
Qui´ en y qu´ e: desempacado autom´ atico
Otras
RL!Depacker GUnPacker Otros espec´ ıficos para protectores
Instrumentaci´
- n Din´
amica de Ejecutables
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´ agina (estilo OllyBonE)
15 / 1
Instrumentaci´
- n Din´
amica de Ejecutables (I)
¿WTF es Instrumentaci´
- n Din´
amica de Ejecutables?
Qu´ e es
DBI (Dynamic Binary Instrumentation) Analiza comportamiento de ejecutable durante ejecuci´
- n
Diferente (puede) seg´ un entrada An´ alisis est´ atico vs. din´ amico
16 / 1
Instrumentaci´
- n Din´
amica de Ejecutables (I)
¿WTF es Instrumentaci´
- n Din´
amica de Ejecutables?
Qu´ e es
DBI (Dynamic Binary Instrumentation) Analiza comportamiento de ejecutable durante ejecuci´
- n
Diferente (puede) seg´ un entrada An´ alisis est´ atico vs. din´ amico
PUEDE ocurrir vs. QU´ E ocurre
NO SE EJECUTAN todos los posibles caminos (!)
16 / 1
Instrumentaci´
- n Din´
amica de Ejecutables (II)
¿Y c´
- mo funciona la Instrumentaci´
- n Din´
amica de Ejecutables?
C´
- mo funciona
Instrumentaci´
- n JIT (Just-in-Time)
Granularidad
Instrucci´
- n
Bloques (basic block, BBL) Rutinas Secciones Imagen
Dos componentes
Mecanismo de instrumentaci´
- n: d´
- nde y c´
- mo
C´
- digo a ejecutar en el punto instrumentado
Soporte de multithreading!
17 / 1
Instrumentaci´
- n Din´
amica de Ejecutables (III)
Frameworks DBI
Frameworks DBI: caracter´ ısticas y tipos
APIs para desarrollo de herramientas DBA (Dynamic Binary Analysis) Buena documentaci´
- n (algunos)
Multiplataforma (incluso Android!) Soporte
18 / 1
Instrumentaci´
- n Din´
amica de Ejecutables (III)
Frameworks DBI
Frameworks DBI: caracter´ ısticas y tipos
APIs para desarrollo de herramientas DBA (Dynamic Binary Analysis) Buena documentaci´
- n (algunos)
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 / 1
Instrumentaci´
- n Din´
amica de Ejecutables (IV)
Ejemplo de uso: PIN
Ejemplo PIN (en C): conteo de instrucciones
Contar el n´ umero de instrucciones que se ejecutan en un programa*
#include “pin.H” . . . int main(int argc, char* argv[]) { PIN Init(argc, argv); INS AddInstrumentFunction(instrumentationFunc, 0); PIN AddFiniFunction(endFunc, 0); } 19 / 1
Instrumentaci´
- n Din´
amica de Ejecutables (IV)
Ejemplo de uso: PIN
Ejemplo PIN (en C): conteo de instrucciones
Contar el n´ umero de instrucciones que se ejecutan en un programa*
#include “pin.H” . . . int main(int argc, char* argv[]) { PIN Init(argc, argv); INS AddInstrumentFunction(instrumentationFunc, 0); PIN AddFiniFunction(endFunc, 0); } static UINT64 icount = 0; void docount(){ icount++;} void instrumentationFunc(INS ins, void *v) { INS InsertCall( ins, IPOINT BEFORE, (AFUNPTR)docount, IARG END ); }
Recordatorio: hacer demos ejemplo.
19 / 1
Instrumentaci´
- n Din´
amica de Ejecutables (IV)
Ejemplo de uso: PIN
Ejemplo PIN (en C): conteo de instrucciones
Contar el n´ umero de instrucciones que se ejecutan en un programa*
#include “pin.H” . . . int main(int argc, char* argv[]) { PIN Init(argc, argv); INS AddInstrumentFunction(instrumentationFunc, 0); PIN AddFiniFunction(endFunc, 0); } static UINT64 icount = 0; void docount(){ icount++;} void instrumentationFunc(INS ins, void *v) { INS InsertCall( ins, IPOINT BEFORE, (AFUNPTR)docount, IARG END ); }
Recordatorio: hacer demos ejemplo. Recordatorio: ¿has hablado algo de las diferencias de instrucciones?
19 / 1
Herramienta DBA para encontrar OEP (I)
En busca del OEP perdido
Idea (no nueva :()
Usar DBI para encontrar el OEP
¿C´
- mo?
Buscar @ins a ejecutar. . .
20 / 1
Herramienta DBA para encontrar OEP (I)
En busca del OEP perdido
Idea (no nueva :()
Usar DBI para encontrar el OEP
¿C´
- mo?
Buscar @ins a ejecutar. . . . . . que antes haya sido escrita
20 / 1
Herramienta DBA para encontrar OEP (I)
En busca del OEP perdido
Idea (no nueva :()
Usar DBI para encontrar el OEP
¿C´
- mo?
Buscar @ins a ejecutar. . . . . . que antes haya sido escrita M´ as informalmente:
Guardar hist´
- rico de @s memoria escritas
Chequear toda ejecutada con hist´
- rico
20 / 1
Herramienta DBA para encontrar OEP (I)
En busca del OEP perdido
Idea (no nueva :()
Usar DBI para encontrar el OEP
¿C´
- mo?
Buscar @ins a ejecutar. . . . . . que antes haya sido escrita M´ as informalmente:
Guardar hist´
- rico de @s memoria escritas
Chequear toda ejecutada con hist´
- rico
Primera coincidencia → ¿bingo? (o l´ ınea, veremos...)
20 / 1
Herramienta DBA para encontrar OEP (II)
Pseudoc´
- digo: jugada de bingo
booleano candidato = falso . . . procedimiento acci´
- nAEjecutar(INS instrucci´
- n)
principio si (n´ umero de operandos en memoria de instrucci´
- n) ≥ 1
∧ (es instrucci´
- n de escritura)
∧ (¬ candidato) ) entonces A˜ nadir instrucci´
- n a candidatas
si no si (¬ candidato) Buscar @instrucci´
- n en candidatas
Si hay coincidencia → instrucci´
- n es candidata
candidato = verdadero finSi fin
21 / 1
Herramienta DBA para encontrar OEP (II)
Pseudoc´
- digo: jugada de l´
ınea
. . . procedimiento acci´
- nAEjecutar(INS instrucci´
- n)
principio si (n´ umero de operandos en memoria de instrucci´
- n) ≥ 1
∧ (es instrucci´
- n de escritura)
) entonces A˜ nadir instrucci´
- n a candidatas
si no Buscar @instrucci´
- n en candidatas
Si hay coincidencia → instrucci´
- n es candidata
finSi fin
22 / 1
Experimentos (I)
Programa de prueba
Aplicaci´
- n UnpackME
Desarrollada en ASM 32bits
23 / 1
Experimentos (I)
Programa de prueba
Aplicaci´
- n UnpackME
Desarrollada en ASM 32bits EP: 0x401000 Recordatorio: mostrar caracter´ ısticas (PEiD).
23 / 1
Experimentos (I)
Programa de prueba
Aplicaci´
- n UnpackME
Desarrollada en ASM 32bits EP: 0x401000 Recordatorio: mostrar caracter´ ısticas (PEiD).
Proteger con diferentes packers. . . y probar!
23 / 1
Experimentos (II)
Algunos resultados
Packer Version ¿Cantamos bingo? UPX 3.0.8w √
24 / 1
Experimentos (II)
Algunos resultados
Packer Version ¿Cantamos bingo? UPX 3.0.8w √ FSG 2.0 √
24 / 1
Experimentos (II)
Algunos resultados
Packer Version ¿Cantamos bingo? UPX 3.0.8w √ FSG 2.0 √ NeoLite 2.0 √
24 / 1
Experimentos (II)
Algunos resultados
Packer Version ¿Cantamos bingo? UPX 3.0.8w √ FSG 2.0 √ NeoLite 2.0 √ XComp 0.98 √
24 / 1
Experimentos (II)
Algunos resultados
Packer Version ¿Cantamos bingo? UPX 3.0.8w √ FSG 2.0 √ NeoLite 2.0 √ XComp 0.98 √ ASPack 2.28 √
24 / 1
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 / 1
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 / 1
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´ atico".
24 / 1
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´ atico". Recordatorio: ense~ na el CExe, pa’ re´ ırnos un rato.
24 / 1
Experimentos (III)
Discusi´
- n de los resultados
Algunos problemas encontrados
Problema de tama˜ no m´ ınimo ejecutable a proteger
¿Cifrado de bloque con tama˜ no m´ ınimo? ¿padding?
An´ alisis de OEP candidatos (seg´ un packer)
25 / 1
Experimentos (III)
Discusi´
- n de los resultados
Algunos problemas encontrados
Problema de tama˜ no m´ ınimo ejecutable a proteger
¿Cifrado de bloque con tama˜ no m´ ınimo? ¿padding?
An´ alisis de OEP candidatos (seg´ un packer)
¿Meterle m´ as l´
- gica a la DBA?
25 / 1
Experimentos (III)
Discusi´
- n de los resultados
Algunos problemas encontrados
Problema de tama˜ no m´ ınimo ejecutable a proteger
¿Cifrado de bloque con tama˜ no m´ ınimo? ¿padding?
An´ alisis de OEP candidatos (seg´ un packer)
¿Meterle m´ as l´
- gica a la DBA?
Algunos packers (ASProtect, Petite): ejecuci´
- n entremezclada
¿Usar secciones del ejecutable como l´ ımites? Algunos se “incrustran” en los huecos vac´ ıos del c´
- digo real
25 / 1
Experimentos (IV)
Qu´ e quer´ ıa yo, y qu´ e hemos conseguido. . .
26 / 1
Conclusiones (I)
Algunas conclusiones
Frameworks DBI: r´ apido y sencillo → alto potencial NO es necesario conocimientos de programaci´
- n S.O. avanzados
Podemos centrarnos en la “miga”: la DBA
Desventajas:
Conocimiento de la API Tiempo de ejecuci´
- n
27 / 1
Conclusiones (II)
Trabajo futuro
28 / 1
Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´ erico
28 / 1
Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´
- mo se comporta DBI con t´
ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´
- n de excepciones. . . )
¿Y con las de los packers?
28 / 1
Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´
- mo se comporta DBI con t´
ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´
- n de excepciones. . . )
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :)
28 / 1
Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´
- mo se comporta DBI con t´
ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´
- n de excepciones. . . )
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :) ¿Y con c´
- digo polim´
- rfico?
28 / 1
Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´
- mo se comporta DBI con t´
ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´
- n de excepciones. . . )
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :) ¿Y con c´
- digo polim´
- rfico?
¿Y con packers emuladores (e.g. Themida, ExeCryptor)?
(M´ as) aplicaciones a Ingenier´ ıa Inversa
28 / 1
Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´
- mo se comporta DBI con t´
ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´
- n de excepciones. . . )
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :) ¿Y con c´
- digo polim´
- rfico?
¿Y con packers emuladores (e.g. Themida, ExeCryptor)?
(M´ as) aplicaciones a Ingenier´ ıa Inversa
Detecci´
- n de acceso a variables “protegidas”
28 / 1
Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´
- mo se comporta DBI con t´
ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´
- n de excepciones. . . )
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :) ¿Y con c´
- digo polim´
- rfico?
¿Y con packers emuladores (e.g. Themida, ExeCryptor)?
(M´ as) aplicaciones a Ingenier´ ıa Inversa
Detecci´
- n de acceso a variables “protegidas”
Extracci´
- n de direcciones din´
amicas
28 / 1
Conclusiones (II)
Trabajo futuro
Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´
- mo se comporta DBI con t´
ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´
- n de excepciones. . . )
¿Y con las de los packers?
¿Y si me roban los primeros bytes? :) ¿Y con c´
- digo polim´
- rfico?
¿Y con packers emuladores (e.g. Themida, ExeCryptor)?
(M´ as) aplicaciones a Ingenier´ ıa Inversa
Detecci´
- n de acceso a variables “protegidas”
Extracci´
- n de direcciones din´
amicas . . .
28 / 1
Agradecimientos y referencias
Referencias
IndefiniteStudies Piotr Bania Gente de CLS
29 / 1
Agradecimientos y referencias
Referencias
IndefiniteStudies Piotr Bania Gente de CLS Asociaci´
- n RootedCON
29 / 1
Agradecimientos y referencias
Referencias
IndefiniteStudies Piotr Bania Gente de CLS Asociaci´
- n RootedCON
¡A trabajar!
→ Gracias por escucharme! ⇒ Nos vemos en la NcN! :)
29 / 1