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 desde sus inicios (2000) Investigador (PhD candidate) en Universidad de Zaragoza L´ ıneas de investigaci´ on 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´ on 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´ on (I) ¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1) No distribuirlo 4 / 1
Motivaci´ on (I) ¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1) No distribuirlo Where is my fuckin’ money, ha? 4 / 1
Motivaci´ on (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´ on (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´ on (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´ on (II) ¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (2) Protecci´ on de ejecutables contra reversing C´ odigo anti-reversing Anti-debugging Anti-tracing Detecci´ on de modificaciones (e.g., CRC) Uso de protectores software (a.k.a. packers ) Comprimen un ejecutable ocultando: C´ odigo original Entry Point (EP): primera instrucci´ on del ejecutable √ ↑ Protecci´ on vs. × ↑ tiempo ejecuci´ on/ ↑ consumo memoria Archivo autoextra´ ıble: Ejecutable (c´ odigo) real + rutina de descompresi´ on 5 / 1
Motivaci´ on (II): conocimientos previos Conocimientos de las estructuras PE (1) Encabezados: tama˜ no constante EXEs, DLLs, OBJs Cabecera MZ (DOS): c´ odigo a ejecutar si no es compatible con MS-DOS 6 / 1
Motivaci´ on (II): conocimientos previos Conocimientos de las estructuras PE (1) Encabezados: tama˜ no constante EXEs, DLLs, OBJs Cabecera MZ (DOS): c´ odigo 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´ odigo 028h: Entry Point 034h: direcci´ on base del fichero 6 / 1
Motivaci´ on (II): conocimientos previos Conocimientos de las estructuras PE (2) 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: flags (lectura, escritura, ejecuci´ on. . . ) Secciones: division del c´ odigo .text , .idata , .bss , .data , .reloc Nombre de la secci´ on irrelevante para el funcionamiento 7 / 1
Motivaci´ on (II): conocimientos previos Conocimientos de las estructuras PE (2) 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: flags (lectura, escritura, ejecuci´ on. . . ) Secciones: division del c´ odigo .text , .idata , .bss , .data , .reloc Nombre de la secci´ on irrelevante para el funcionamiento 7 / 1
Motivaci´ on (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´ on (II) ¿C´ omo funciona un protector software? Empacando. . . Protector + packer routine EP OEP Packed Executable adds unpacker Executable routine to executable 9 / 1
Motivaci´ on (II) ¿C´ omo funciona un protector software? Empacando. . . Protector + packer routine EP OEP Packed Executable adds unpacker Executable routine to executable Desempacando. . . Proce ss memory EP OEP Packed unpacker routine Executable Executable 9 / 1
Motivaci´ on (III) ¿C´ omo se revierte un ejecutable protegido? Pasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 10 / 1
Motivaci´ on (III) ¿C´ omo 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´ on (III) ¿C´ omo se revierte un ejecutable protegido? Pasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 2 Encontrar el Original Entry Point (OEP) ¿d´ onde acaba el c´ odigo de desempacado? 10 / 1
Motivaci´ on (III) ¿C´ omo se revierte un ejecutable protegido? Pasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 2 Encontrar el Original Entry Point (OEP) ¿d´ onde acaba el c´ odigo de desempacado? 3 Volcar (de memoria del proceso) el ejecutable a disco 10 / 1
Motivaci´ on (III) ¿C´ omo se revierte un ejecutable protegido? Pasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 2 Encontrar el Original Entry Point (OEP) ¿d´ onde acaba el c´ odigo de desempacado? 3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado 10 / 1
Motivaci´ on (III) ¿C´ omo se revierte un ejecutable protegido? Pasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 2 Encontrar el Original Entry Point (OEP) ¿d´ onde acaba el c´ odigo de desempacado? 3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado Cabecera del ejecutable 10 / 1
Motivaci´ on (III) ¿C´ omo se revierte un ejecutable protegido? Pasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 2 Encontrar el Original Entry Point (OEP) ¿d´ onde acaba el c´ odigo 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´ on (III) ¿C´ omo se revierte un ejecutable protegido? Pasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 2 Encontrar el Original Entry Point (OEP) ¿d´ onde acaba el c´ odigo 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´ on (III) ¿C´ omo se revierte un ejecutable protegido? Pasos para conseguir un desempacado 1 Identificar protector → metodolog´ ıa 2 Encontrar el Original Entry Point (OEP) ¿d´ onde acaba el c´ odigo 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´ on de c´ odigo del ejecutable protegido C´ odigo basura ( junk code ) T´ ecnicas de ocultaci´ on de OEP ( Stolen Bytes , Asprotect) 10 / 1
Motivaci´ on (IV) Objetivo: encontrar el OEP de una forma r´ apida Objetivo Mejorar el proceso de desprotecci´ on de empacados Encontrar OEP r´ apidamente 11 / 1
Motivaci´ on (IV) Objetivo: encontrar el OEP de una forma r´ apida Objetivo Mejorar el proceso de desprotecci´ on de empacados Encontrar OEP r´ apidamente Entre el 79% y 92% de malware distribuido protegido Centrarse en el c´ odigo 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´ on de trazas ejecutable est´ atico y en ejecuci´ on Single-step 12 / 1
Trabajo Relacionado (II) Qui´ en y qu´ e: desempacado autom´ atico Emulaci´ on o virtualizaci´ on (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¨ ohne Secure and advanced unpacking using computer emulation (S´ ebastien Josse), Journal in Computer Virology, Springer, 2007. 13 / 1
Recommend
More recommend