SlideShare una empresa de Scribd logo
1 de 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
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
$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
$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
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)
   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
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
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
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
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
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
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
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
Motivaci´n (III)
        o
¿C´mo se revierte un ejecutable protegido?
  o

Pasos para conseguir un desempacado
  1   Identificar protector → metodolog´
                                      ıa




                                             10 / 30
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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: 0x401000
Recordatorio:        mostrar caracter´sticas (PEiD).
                                     ı




                                                       23 / 30
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
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 "desempacado
autom´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 "desempacado
autom´tico".
     a
Recordatorio:        ense~a el CExe, pa’ re´rnos un rato.
                         n                 ı
                                                            24 / 30
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
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
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
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 referencias


Referencias
    IndefiniteStudies
    Piotr Bania
    Gente de CLS




                                29 / 30
Agradecimientos y referencias


Referencias
    IndefiniteStudies
    Piotr Bania
    Gente de CLS
    Asociaci´n RootedCON
            o




                                29 / 30
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
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

Más contenido relacionado

Destacado

Derecho privado instituciones diapositivas daniel alvarado
Derecho privado instituciones diapositivas daniel alvarado Derecho privado instituciones diapositivas daniel alvarado
Derecho privado instituciones diapositivas daniel alvarado UftD
 
Derecho internacional público capitulo I
Derecho internacional público capitulo IDerecho internacional público capitulo I
Derecho internacional público capitulo IJaime Diaz
 
Derecho internacional público 1
Derecho internacional público 1Derecho internacional público 1
Derecho internacional público 1AnaVelozA
 
Tratados internacionales, TLC
Tratados internacionales, TLCTratados internacionales, TLC
Tratados internacionales, TLCMakvt Neri
 
Los tratados internacionales
Los tratados internacionalesLos tratados internacionales
Los tratados internacionalesricardogilbarrera
 
Fuentes derecho internacional p.
Fuentes derecho internacional p.Fuentes derecho internacional p.
Fuentes derecho internacional p.Ana Veloz Avendaño
 
2. fuentes del derecho internacional público
2. fuentes del derecho internacional público2. fuentes del derecho internacional público
2. fuentes del derecho internacional públicoWilder Calderón Castro
 
Los tratados internacionales
Los tratados internacionalesLos tratados internacionales
Los tratados internacionalesricardogilbarrera
 
Origen e historia del derecho internacional publico
Origen e historia del derecho internacional publicoOrigen e historia del derecho internacional publico
Origen e historia del derecho internacional publicoDerecho Internacional
 
Acuerdos Ambientales Internacionales
Acuerdos Ambientales InternacionalesAcuerdos Ambientales Internacionales
Acuerdos Ambientales InternacionalesKaren Alex
 
Derecho internacional publico (1)
Derecho internacional publico (1)Derecho internacional publico (1)
Derecho internacional publico (1)Karina Hernandez
 
Tratados internacionales
Tratados internacionalesTratados internacionales
Tratados internacionaleshdflores
 
Derecho internacional privado
Derecho internacional privadoDerecho internacional privado
Derecho internacional privadoLuis Vergel
 
TRATADOS INTERNACIONALES DEL MEDIO AMBIENTE
TRATADOS INTERNACIONALES DEL MEDIO AMBIENTETRATADOS INTERNACIONALES DEL MEDIO AMBIENTE
TRATADOS INTERNACIONALES DEL MEDIO AMBIENTESTONY13
 

Destacado (20)

Derecho privado instituciones diapositivas daniel alvarado
Derecho privado instituciones diapositivas daniel alvarado Derecho privado instituciones diapositivas daniel alvarado
Derecho privado instituciones diapositivas daniel alvarado
 
Derecho internacional público capitulo I
Derecho internacional público capitulo IDerecho internacional público capitulo I
Derecho internacional público capitulo I
 
Derecho internacional de los tratados
Derecho internacional de los tratadosDerecho internacional de los tratados
Derecho internacional de los tratados
 
Derecho internacional público 1
Derecho internacional público 1Derecho internacional público 1
Derecho internacional público 1
 
Tratados internacionales, TLC
Tratados internacionales, TLCTratados internacionales, TLC
Tratados internacionales, TLC
 
Derecho internacional privado
Derecho internacional privadoDerecho internacional privado
Derecho internacional privado
 
Los tratados internacionales
Los tratados internacionalesLos tratados internacionales
Los tratados internacionales
 
Fuentes derecho internacional p.
Fuentes derecho internacional p.Fuentes derecho internacional p.
Fuentes derecho internacional p.
 
Derecho internacional publico
Derecho internacional publicoDerecho internacional publico
Derecho internacional publico
 
2. fuentes del derecho internacional público
2. fuentes del derecho internacional público2. fuentes del derecho internacional público
2. fuentes del derecho internacional público
 
Los tratados internacionales
Los tratados internacionalesLos tratados internacionales
Los tratados internacionales
 
Origen e historia del derecho internacional publico
Origen e historia del derecho internacional publicoOrigen e historia del derecho internacional publico
Origen e historia del derecho internacional publico
 
Tratados internacionales
Tratados internacionalesTratados internacionales
Tratados internacionales
 
Cap. 6 los tratados internacionales
Cap. 6 los tratados internacionalesCap. 6 los tratados internacionales
Cap. 6 los tratados internacionales
 
Acuerdos Ambientales Internacionales
Acuerdos Ambientales InternacionalesAcuerdos Ambientales Internacionales
Acuerdos Ambientales Internacionales
 
Derecho internacional publico (1)
Derecho internacional publico (1)Derecho internacional publico (1)
Derecho internacional publico (1)
 
Tratados internacionales
Tratados internacionalesTratados internacionales
Tratados internacionales
 
Derecho internacional privado
Derecho internacional privadoDerecho internacional privado
Derecho internacional privado
 
Tratados internacionales
Tratados internacionalesTratados internacionales
Tratados internacionales
 
TRATADOS INTERNACIONALES DEL MEDIO AMBIENTE
TRATADOS INTERNACIONALES DEL MEDIO AMBIENTETRATADOS INTERNACIONALES DEL MEDIO AMBIENTE
TRATADOS INTERNACIONALES DEL MEDIO AMBIENTE
 

Más de RootedCON

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRootedCON
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...RootedCON
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRootedCON
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_RootedCON
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...RootedCON
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...RootedCON
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...RootedCON
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRootedCON
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...RootedCON
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRootedCON
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...RootedCON
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRootedCON
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...RootedCON
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRootedCON
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRootedCON
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRootedCON
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...RootedCON
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...RootedCON
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRootedCON
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRootedCON
 

Más de RootedCON (20)

Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro Villaverde
 
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
rooted2020 Sandbox fingerprinting -_evadiendo_entornos_de_analisis_-_victor_c...
 
Rooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amadoRooted2020 hunting malware-using_process_behavior-roberto_amado
Rooted2020 hunting malware-using_process_behavior-roberto_amado
 
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
Rooted2020 compliance as-code_-_guillermo_obispo_-_jose_mariaperez_-_
 
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...
 
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...
 
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
Rooted2020 wordpress-another_terror_story_-_manuel_garcia_-_jacinto_sergio_ca...
 
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguerRooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
Rooted2020 Atacando comunicaciones-de_voz_cifradas_-_jose_luis_verdeguer
 
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
rooted2020-Rootkit necurs no_es_un_bug,_es_una_feature_-_roberto_santos_-_jav...
 
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemyRooted2020 stefano maccaglia--_the_enemy_of_my_enemy
Rooted2020 stefano maccaglia--_the_enemy_of_my_enemy
 
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
Rooted2020 taller de-reversing_de_binarios_escritos_en_golang_-_mariano_palom...
 
Rooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molinaRooted2020 virtual pwned-network_-_manel_molina
Rooted2020 virtual pwned-network_-_manel_molina
 
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...
 
Rooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopezRooted2020 todo a-siem_-_marta_lopez
Rooted2020 todo a-siem_-_marta_lopez
 
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valeroRooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
Rooted2020 roapt evil-mass_storage_-_tu-ya_aqui_-_david_reguera_-_abel_valero
 
Rooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jaraRooted2020 live coding--_jesus_jara
Rooted2020 live coding--_jesus_jara
 
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
Rooted2020 legalidad de-la_prueba_tecnologica_indiciaria_cuando_tu_papi_es_un...
 
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
Rooted2020 hackeando el-mundo_exterior_a_traves_de_bluetooth_low-energy_ble_-...
 
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yusteRooted2020 evading deep-learning_malware_detectors_-_javier_yuste
Rooted2020 evading deep-learning_malware_detectors_-_javier_yuste
 
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_moralesRooted2020 encontrando 0days-en_2020_-_antonio_morales
Rooted2020 encontrando 0days-en_2020_-_antonio_morales
 

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
  • 47. Experimentos (I) Programa de prueba Aplicaci´n UnpackME o Desarrollada en ASM 32bits 23 / 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
  • 50. Experimentos (II) Algunos resultados Packer Version ¿Cantamos bingo? √ UPX 3.0.8w 24 / 30
  • 51. Experimentos (II) Algunos resultados Packer Version ¿Cantamos bingo? √ UPX 3.0.8w √ FSG 2.0 24 / 30
  • 52. Experimentos (II) Algunos resultados Packer Version ¿Cantamos bingo? √ UPX 3.0.8w √ FSG 2.0 √ NeoLite 2.0 24 / 30
  • 53. Experimentos (II) Algunos resultados Packer Version ¿Cantamos bingo? √ UPX 3.0.8w √ FSG 2.0 √ NeoLite 2.0 √ XComp 0.98 24 / 30
  • 54. 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
  • 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
  • 62. Experimentos (IV) Qu´ quer´ yo, y qu´ hemos conseguido. . . e ıa e 26 / 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
  • 65. Conclusiones (II) Trabajo futuro Construir herramienta DBA (y GPL) para desempacado gen´rico e 28 / 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
  • 73. Agradecimientos y referencias Referencias IndefiniteStudies Piotr Bania Gente de CLS 29 / 30
  • 74. Agradecimientos y referencias Referencias IndefiniteStudies Piotr Bania Gente de CLS Asociaci´n RootedCON o 29 / 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