• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Ricardo J. Rodríguez - Mejora en el Proceso de Desempacado usando Técnicas DBI [RootedCON 2012]
 

Ricardo J. Rodríguez - Mejora en el Proceso de Desempacado usando Técnicas DBI [RootedCON 2012]

on

  • 1,597 views

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 ...

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?.

Statistics

Views

Total Views
1,597
Views on SlideShare
1,597
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ricardo J. Rodríguez - Mejora en el Proceso de Desempacado usando Técnicas DBI [RootedCON 2012] Ricardo J. Rodríguez - Mejora en el Proceso de Desempacado usando Técnicas DBI [RootedCON 2012] Presentation Transcript

    • Mejora en el Proceso de Desempacado usando T´cnicas DBI e Ricardo J. Rodr´ ıguez rjrodriguez@unizar.estw: @RicardoJRdez – http://www.ricardojrodriguez.es 3 de Marzo de 2012 RootedCON 2012 Madrid, Spain
    • 1 Motivaci´n o2 Trabajo Relacionado3 Instrumentaci´n Din´mica de Ejecutables o a4 Herramienta DBA para encontrar OEP5 Experimentos6 Conclusiones 2 / 30
    • $whoami Miembro de CLS desde sus inicios (2000) Investigador (PhD candidate) en Universidad de ZaragozaL´ ı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
    • $whoami Miembro de CLS desde sus inicios (2000) Investigador (PhD candidate) en Universidad de ZaragozaL´ ı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
    • Motivaci´n (I) o¿Qu´ puedo hacer para proteger mi ejecutable de los malos? (1) e No distribuirlo 4 / 30
    • 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
    • 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
    • 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
    • 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
    • Motivaci´n (II) o¿Qu´ puedo hacer para proteger mi ejecutable de los malos? (2) eProtecci´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
    • Motivaci´n (II): conocimientos previos oConocimientos 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
    • Motivaci´n (II): conocimientos previos oConocimientos 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
    • Motivaci´n (II): conocimientos previos oConocimientos 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
    • Motivaci´n (II): conocimientos previos oConocimientos 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
    • Motivaci´n (II): conocimientos previos oConocimientos 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
    • Motivaci´n (II) o¿C´mo funciona un protector software? oEmpacando. . . Protector + packer OEP routine EP Executable Packed adds unpacker routine to executable Executable 9 / 30
    • Motivaci´n (II) o¿C´mo funciona un protector software? oEmpacando. . . Protector + packer OEP routine EP Executable Packed adds unpacker routine to executable ExecutableDesempacando. . . Process memory EP Packed unpacker routine OEP Executable Executable 9 / 30
    • Motivaci´n (III) o¿C´mo se revierte un ejecutable protegido? oPasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 10 / 30
    • Motivaci´n (III) o¿C´mo se revierte un ejecutable protegido? oPasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 2 Encontrar el Original Entry Point (OEP) 10 / 30
    • Motivaci´n (III) o¿C´mo se revierte un ejecutable protegido? oPasos 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
    • Motivaci´n (III) o¿C´mo se revierte un ejecutable protegido? oPasos 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
    • Motivaci´n (III) o¿C´mo se revierte un ejecutable protegido? oPasos 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
    • Motivaci´n (III) o¿C´mo se revierte un ejecutable protegido? oPasos 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
    • Motivaci´n (III) o¿C´mo se revierte un ejecutable protegido? oPasos 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
    • Motivaci´n (III) o¿C´mo se revierte un ejecutable protegido? oPasos 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
    • Motivaci´n (III) o¿C´mo se revierte un ejecutable protegido? oPasos 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
    • Motivaci´n (IV) oObjetivo: encontrar el OEP de una forma r´pida aObjetivo Mejorar el proceso de desprotecci´n de empacados o Encontrar OEP r´pidamente a 11 / 30
    • Motivaci´n (IV) oObjetivo: encontrar el OEP de una forma r´pida aObjetivo 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
    • Trabajo Relacionado (I)Qui´n y qu´: desempacado autom´tico e e aDebugging 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
    • Trabajo Relacionado (II)Qui´n y qu´: desempacado autom´tico e e aEmulaci´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
    • Trabajo Relacionado (III)Qui´n y qu´: desempacado autom´tico e e aWindows 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
    • Trabajo Relacionado (IV)Qui´n y qu´: desempacado autom´tico e e aOtras RL!Depacker GUnPacker Otros espec´ ıficos para protectoresInstrumentaci´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
    • Instrumentaci´n Din´mica de Ejecutables (I) o a¿WTF es Instrumentaci´n Din´mica de Ejecutables? o aQu´ 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
    • Instrumentaci´n Din´mica de Ejecutables (I) o a¿WTF es Instrumentaci´n Din´mica de Ejecutables? o aQu´ 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
    • Instrumentaci´n Din´mica de Ejecutables (II) o a¿Y c´mo funciona la Instrumentaci´n Din´mica de Ejecutables? o o aC´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
    • Instrumentaci´n Din´mica de Ejecutables (III) o aFrameworks DBIFrameworks 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
    • Instrumentaci´n Din´mica de Ejecutables (III) o aFrameworks DBIFrameworks 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
    • Instrumentaci´n Din´mica de Ejecutables (IV) o aEjemplo 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
    • Instrumentaci´n Din´mica de Ejecutables (IV) o aEjemplo 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
    • Instrumentaci´n Din´mica de Ejecutables (IV) o aEjemplo 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
    • Herramienta DBA para encontrar OEP (I)En busca del OEP perdidoIdea (no nueva :() Usar DBI para encontrar el OEP¿C´mo? o Buscar @ins a ejecutar. . . 20 / 30
    • Herramienta DBA para encontrar OEP (I)En busca del OEP perdidoIdea (no nueva :() Usar DBI para encontrar el OEP¿C´mo? o Buscar @ins a ejecutar. . . . . . que antes haya sido escrita 20 / 30
    • Herramienta DBA para encontrar OEP (I)En busca del OEP perdidoIdea (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
    • Herramienta DBA para encontrar OEP (I)En busca del OEP perdidoIdea (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
    • Herramienta DBA para encontrar OEP (II)Pseudoc´digo: jugada de bingo obooleano candidato = falso...procedimiento acci´nAEjecutar(INS instrucci´n) o oprincipio 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 finSifin 21 / 30
    • Herramienta DBA para encontrar OEP (II)Pseudoc´digo: jugada de l´ o ınea...procedimiento acci´nAEjecutar(INS instrucci´n) o oprincipio 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 finSifin 22 / 30
    • Experimentos (I)Programa de prueba Aplicaci´n UnpackME o Desarrollada en ASM 32bits 23 / 30
    • Experimentos (I)Programa de prueba Aplicaci´n UnpackME o Desarrollada en ASM 32bits EP: 0x401000Recordatorio: mostrar caracter´sticas (PEiD). ı 23 / 30
    • Experimentos (I)Programa de prueba Aplicaci´n UnpackME o Desarrollada en ASM 32bits EP: 0x401000Recordatorio: mostrar caracter´sticas (PEiD). ı Proteger con diferentes packers. . . y probar! 23 / 30
    • Experimentos (II)Algunos resultados Packer Version ¿Cantamos bingo? √ UPX 3.0.8w 24 / 30
    • Experimentos (II)Algunos resultados Packer Version ¿Cantamos bingo? √ UPX 3.0.8w √ FSG 2.0 24 / 30
    • Experimentos (II)Algunos resultados Packer Version ¿Cantamos bingo? √ UPX 3.0.8w √ FSG 2.0 √ NeoLite 2.0 24 / 30
    • Experimentos (II)Algunos resultados Packer Version ¿Cantamos bingo? √ UPX 3.0.8w √ FSG 2.0 √ NeoLite 2.0 √ XComp 0.98 24 / 30
    • 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 / 30
    • 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
    • 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
    • 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 "desempacadoautom´tico". a 24 / 30
    • 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 "desempacadoautom´tico". aRecordatorio: ense~a el CExe, pa’ re´rnos un rato. n ı 24 / 30
    • Experimentos (III)Discusi´n de los resultados oAlgunos 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
    • Experimentos (III)Discusi´n de los resultados oAlgunos 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
    • Experimentos (III)Discusi´n de los resultados oAlgunos 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
    • Experimentos (IV)Qu´ quer´ yo, y qu´ hemos conseguido. . . e ıa e 26 / 30
    • 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
    • Conclusiones (II)Trabajo futuro 28 / 30
    • Conclusiones (II)Trabajo futuro Construir herramienta DBA (y GPL) para desempacado gen´rico e 28 / 30
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • 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
    • Agradecimientos y referenciasReferencias IndefiniteStudies Piotr Bania Gente de CLS 29 / 30
    • Agradecimientos y referenciasReferencias IndefiniteStudies Piotr Bania Gente de CLS Asociaci´n RootedCON o 29 / 30
    • Agradecimientos y referenciasReferencias IndefiniteStudies Piotr Bania Gente de CLS Asociaci´n RootedCON o ¡A trabajar!→ Gracias por escucharme! Nos vemos en la NcN! :) 29 / 30
    • Mejora en el Proceso de Desempacado usando T´cnicas DBI e Ricardo J. Rodr´ ıguez rjrodriguez@unizar.estw: @RicardoJRdez – http://www.ricardojrodriguez.es 3 de Marzo de 2012 RootedCON 2012 Madrid, Spain