Mejora en el Proceso de Desempacado usando T ecnicas DBI Ricardo - - PowerPoint PPT Presentation

mejora en el proceso de desempacado usando t ecnicas dbi
SMART_READER_LITE
LIVE PREVIEW

Mejora en el Proceso de Desempacado usando T ecnicas DBI Ricardo - - PowerPoint PPT Presentation

Mejora en el Proceso de Desempacado usando T ecnicas DBI Ricardo J. Rodr guez rjrodriguez@unizar.es tw: @RicardoJRdez http://www.ricardojrodriguez.es 3 de Marzo de 2012 RootedCON 2012 Madrid, Spain 2 / 1 $ whoami Miembro de CLS


slide-1
SLIDE 1

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

slide-2
SLIDE 2

2 / 1

slide-3
SLIDE 3

$whoami

Miembro de CLS desde sus inicios (2000) Investigador (PhD candidate) en Universidad de Zaragoza

L´ ıneas de investigaci´

  • n

Rendimiento de sistemas software complejos Ingenier´ ıa de Software segura Sistemas de Tolerancia a Fallos (dise˜ no y modelado)

3 / 1

slide-4
SLIDE 4

$whoami

Miembro de CLS desde sus inicios (2000) Investigador (PhD candidate) en Universidad de Zaragoza

L´ ıneas de investigaci´

  • n

Rendimiento de sistemas software complejos Ingenier´ ıa de Software segura Sistemas de Tolerancia a Fallos (dise˜ no y modelado) An´ alisis malware

3 / 1

slide-5
SLIDE 5

Motivaci´

  • n (I)

¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)

No distribuirlo

4 / 1

slide-6
SLIDE 6

Motivaci´

  • n (I)

¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)

No distribuirlo

Where is my fuckin’ money, ha?

4 / 1

slide-7
SLIDE 7

Motivaci´

  • n (I)

¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)

No distribuirlo

Where is my fuckin’ money, ha?

GPL’d it: spread the love

4 / 1

slide-8
SLIDE 8

Motivaci´

  • n (I)

¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)

No distribuirlo

Where is my fuckin’ money, ha?

GPL’d it: spread the love

Nos quedaremos sin trabajo :’(

4 / 1

slide-9
SLIDE 9

Motivaci´

  • n (I)

¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (1)

No distribuirlo

Where is my fuckin’ money, ha?

GPL’d it: spread the love

Nos quedaremos sin trabajo :’(

Rezar a [rellenar seg´ un creencias]

4 / 1

slide-10
SLIDE 10

Motivaci´

  • n (II)

¿Qu´ e puedo hacer para proteger mi ejecutable de los malos? (2)

Protecci´

  • n de ejecutables contra reversing

  • digo anti-reversing

Anti-debugging Anti-tracing Detecci´

  • n de modificaciones (e.g., CRC)

Uso de protectores software (a.k.a. packers)

Comprimen un ejecutable ocultando:

  • digo original

Entry Point (EP): primera instrucci´

  • n del ejecutable

√ ↑ Protecci´

  • n vs. × ↑ tiempo ejecuci´
  • n/ ↑ consumo memoria

Archivo autoextra´ ıble:

Ejecutable (c´

  • digo) real + rutina de descompresi´
  • n

5 / 1

slide-11
SLIDE 11

Motivaci´

  • n (II): conocimientos previos

Conocimientos de las estructuras PE (1)

Encabezados: tama˜ no constante EXEs, DLLs, OBJs Cabecera MZ (DOS): c´

  • digo a ejecutar si no es

compatible con MS-DOS

6 / 1

slide-12
SLIDE 12

Motivaci´

  • n (II): conocimientos previos

Conocimientos de las estructuras PE (1)

Encabezados: tama˜ no constante EXEs, DLLs, OBJs Cabecera MZ (DOS): c´

  • digo a ejecutar si no es

compatible con MS-DOS

Mark Zbikowski Tama˜ no 0x40, ´ ultimos 4 @cabecera PE

Cabecera PE (Portable Executable)

04h: tipo de m´ aquina compilado 06h: n´ umero de secciones 14h: tama˜ no de la cabecera opcional 16h: caracter´ ısticas del fichero 18h: comienzo cabecera opcional

01Ch: tama˜ no del c´

  • digo

028h: Entry Point 034h: direcci´

  • n base del fichero

6 / 1

slide-13
SLIDE 13

Motivaci´

  • n (II): conocimientos previos

Conocimientos de las estructuras PE (2)

Recuerda: secciones alineadas en memoria durante ejecuci´

  • n

Tablas de secciones:

@PE header+tama˜ no de PE header+tama˜ no de cabecera opcional

00h: nombre de la secci´

  • n

08h: tama˜ no virtual 0ch: direcci´

  • n virtual

024h: flags (lectura, escritura, ejecuci´

  • n. . . )

Secciones: division del c´

  • digo

.text, .idata, .bss, .data, .reloc Nombre de la secci´

  • n irrelevante para el

funcionamiento

7 / 1

slide-14
SLIDE 14

Motivaci´

  • n (II): conocimientos previos

Conocimientos de las estructuras PE (2)

Recuerda: secciones alineadas en memoria durante ejecuci´

  • n

Tablas de secciones:

@PE header+tama˜ no de PE header+tama˜ no de cabecera opcional

00h: nombre de la secci´

  • n

08h: tama˜ no virtual 0ch: direcci´

  • n virtual

024h: flags (lectura, escritura, ejecuci´

  • n. . . )

Secciones: division del c´

  • digo

.text, .idata, .bss, .data, .reloc Nombre de la secci´

  • n irrelevante para el

funcionamiento

7 / 1

slide-15
SLIDE 15

Motivaci´

  • n (II): conocimientos previos

Conocimientos de las estructuras PE (3)

Referencias

Wikepedia (http://en.wikipedia.org/wiki/Portable_Executable) Peering Inside the PE: A Tour of the Win32 Portable Executable File Format (http://msdn.microsoft.com/en-us/library/ms809762.aspx) Microsoft PE and COFF Specification (http://msdn.microsoft.com/en-us/windows/hardware/gg463119 The .NET File Format (http://ntcore.com/files/dotnetformat.htm)

8 / 1

slide-16
SLIDE 16

Motivaci´

  • n (II)

¿C´

  • mo funciona un protector software?
  • Empacando. . .

Executable OEP Protector

+ packer routine adds unpacker routine to executable

Packed Executable EP

9 / 1

slide-17
SLIDE 17

Motivaci´

  • n (II)

¿C´

  • mo funciona un protector software?
  • Empacando. . .

Executable OEP Protector

+ packer routine adds unpacker routine to executable

Packed Executable EP

  • Desempacando. . .

Executable OEP Process memory Packed Executable EP

unpacker routine

9 / 1

slide-18
SLIDE 18

Motivaci´

  • n (III)

¿C´

  • mo se revierte un ejecutable protegido?

Pasos para conseguir un desempacado

1 Identificar protector → metodolog´

ıa

10 / 1

slide-19
SLIDE 19

Motivaci´

  • n (III)

¿C´

  • mo se revierte un ejecutable protegido?

Pasos para conseguir un desempacado

1 Identificar protector → metodolog´

ıa

2 Encontrar el Original Entry Point (OEP)

10 / 1

slide-20
SLIDE 20

Motivaci´

  • n (III)

¿C´

  • mo se revierte un ejecutable protegido?

Pasos para conseguir un desempacado

1 Identificar protector → metodolog´

ıa

2 Encontrar el Original Entry Point (OEP)

¿d´

  • nde acaba el c´
  • digo de desempacado?

10 / 1

slide-21
SLIDE 21

Motivaci´

  • n (III)

¿C´

  • mo se revierte un ejecutable protegido?

Pasos para conseguir un desempacado

1 Identificar protector → metodolog´

ıa

2 Encontrar el Original Entry Point (OEP)

¿d´

  • nde acaba el c´
  • digo de desempacado?

3 Volcar (de memoria del proceso) el ejecutable a disco

10 / 1

slide-22
SLIDE 22

Motivaci´

  • n (III)

¿C´

  • mo se revierte un ejecutable protegido?

Pasos para conseguir un desempacado

1 Identificar protector → metodolog´

ıa

2 Encontrar el Original Entry Point (OEP)

¿d´

  • nde acaba el c´
  • digo de desempacado?

3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado

10 / 1

slide-23
SLIDE 23

Motivaci´

  • n (III)

¿C´

  • mo se revierte un ejecutable protegido?

Pasos para conseguir un desempacado

1 Identificar protector → metodolog´

ıa

2 Encontrar el Original Entry Point (OEP)

¿d´

  • nde acaba el c´
  • digo de desempacado?

3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado

Cabecera del ejecutable

10 / 1

slide-24
SLIDE 24

Motivaci´

  • n (III)

¿C´

  • mo se revierte un ejecutable protegido?

Pasos para conseguir un desempacado

1 Identificar protector → metodolog´

ıa

2 Encontrar el Original Entry Point (OEP)

¿d´

  • nde acaba el c´
  • digo de desempacado?

3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado

Cabecera del ejecutable Tabla IAT (Import Address Table) [APIs]

10 / 1

slide-25
SLIDE 25

Motivaci´

  • n (III)

¿C´

  • mo se revierte un ejecutable protegido?

Pasos para conseguir un desempacado

1 Identificar protector → metodolog´

ıa

2 Encontrar el Original Entry Point (OEP)

¿d´

  • nde acaba el c´
  • digo de desempacado?

3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado

Cabecera del ejecutable Tabla IAT (Import Address Table) [APIs]

10 / 1

slide-26
SLIDE 26

Motivaci´

  • n (III)

¿C´

  • mo se revierte un ejecutable protegido?

Pasos para conseguir un desempacado

1 Identificar protector → metodolog´

ıa

2 Encontrar el Original Entry Point (OEP)

¿d´

  • nde acaba el c´
  • digo de desempacado?

3 Volcar (de memoria del proceso) el ejecutable a disco 4 Reconstruir ejecutable volcado

Cabecera del ejecutable Tabla IAT (Import Address Table) [APIs]

Dificultad en encontrar OEP

Ofuscaci´

  • n de c´
  • digo del ejecutable protegido

  • digo basura (junk code)

T´ ecnicas de ocultaci´

  • n de OEP (Stolen Bytes, Asprotect)

10 / 1

slide-27
SLIDE 27

Motivaci´

  • n (IV)

Objetivo: encontrar el OEP de una forma r´ apida

Objetivo

Mejorar el proceso de desprotecci´

  • n de empacados

Encontrar OEP r´ apidamente

11 / 1

slide-28
SLIDE 28

Motivaci´

  • n (IV)

Objetivo: encontrar el OEP de una forma r´ apida

Objetivo

Mejorar el proceso de desprotecci´

  • n de empacados

Encontrar OEP r´ apidamente

Entre el 79% y 92% de malware distribuido protegido Centrarse en el c´

  • digo del malware

Usando DBI (Dynamic Binary Instrumentation)

11 / 1

slide-29
SLIDE 29

Trabajo Relacionado (I)

Qui´ en y qu´ e: desempacado autom´ atico

Debugging

Universal PE Unpacker

Plugin para el IDA Pro ≥ 4.9

PolyUnpack

Comparaci´

  • n de trazas ejecutable est´

atico y en ejecuci´

  • n

Single-step

12 / 1

slide-30
SLIDE 30

Trabajo Relacionado (II)

Qui´ en y qu´ e: desempacado autom´ atico

Emulaci´

  • n o virtualizaci´
  • n (hardware)

Renovo (Kang et al.)

Basado en QEMU Traductor din´ amico del binario

Azure

Basado en KVM (Kernel-based Virtual Machine) Intel Virtualization Technology (IVT)

Pandora’s Bosch

Basado en Bosch (emulador PC open source). Int´ erprete Tesis doctoral Lutz B¨

  • hne

Secure and advanced unpacking using computer emulation (S´ ebastien Josse), Journal in Computer Virology, Springer, 2007.

13 / 1

slide-31
SLIDE 31

Trabajo Relacionado (III)

Qui´ en y qu´ e: desempacado autom´ atico

Windows Driver

OllyBonE

OllyDBG plugin Rompe cuando se provoca fallos de p´ agina

Generic Unpacker

Hook en ntos!SwapContext

OmniUnpack

Analiza traza de ejecuci´

  • n

Kernel driver + user component

14 / 1

slide-32
SLIDE 32

Trabajo Relacionado (IV)

Qui´ en y qu´ e: desempacado autom´ atico

Otras

RL!Depacker GUnPacker Otros espec´ ıficos para protectores

Instrumentaci´

  • n Din´

amica de Ejecutables

MmmBop (Piotr Bania)

Hook en KiUserExceptionDispatcher y NtContinue

ParaDyn

Usa framework DBI Dyninst

Saffron (Quist)

Usa framework DBI PIN Incorpora gestor de fallos de p´ agina (estilo OllyBonE)

15 / 1

slide-33
SLIDE 33

Instrumentaci´

  • n Din´

amica de Ejecutables (I)

¿WTF es Instrumentaci´

  • n Din´

amica de Ejecutables?

Qu´ e es

DBI (Dynamic Binary Instrumentation) Analiza comportamiento de ejecutable durante ejecuci´

  • n

Diferente (puede) seg´ un entrada An´ alisis est´ atico vs. din´ amico

16 / 1

slide-34
SLIDE 34

Instrumentaci´

  • n Din´

amica de Ejecutables (I)

¿WTF es Instrumentaci´

  • n Din´

amica de Ejecutables?

Qu´ e es

DBI (Dynamic Binary Instrumentation) Analiza comportamiento de ejecutable durante ejecuci´

  • n

Diferente (puede) seg´ un entrada An´ alisis est´ atico vs. din´ amico

PUEDE ocurrir vs. QU´ E ocurre

NO SE EJECUTAN todos los posibles caminos (!)

16 / 1

slide-35
SLIDE 35

Instrumentaci´

  • n Din´

amica de Ejecutables (II)

¿Y c´

  • mo funciona la Instrumentaci´
  • n Din´

amica de Ejecutables?

  • mo funciona

Instrumentaci´

  • n JIT (Just-in-Time)

Granularidad

Instrucci´

  • n

Bloques (basic block, BBL) Rutinas Secciones Imagen

Dos componentes

Mecanismo de instrumentaci´

  • n: d´
  • nde y c´
  • mo

  • digo a ejecutar en el punto instrumentado

Soporte de multithreading!

17 / 1

slide-36
SLIDE 36

Instrumentaci´

  • n Din´

amica de Ejecutables (III)

Frameworks DBI

Frameworks DBI: caracter´ ısticas y tipos

APIs para desarrollo de herramientas DBA (Dynamic Binary Analysis) Buena documentaci´

  • n (algunos)

Multiplataforma (incluso Android!) Soporte

18 / 1

slide-37
SLIDE 37

Instrumentaci´

  • n Din´

amica de Ejecutables (III)

Frameworks DBI

Frameworks DBI: caracter´ ısticas y tipos

APIs para desarrollo de herramientas DBA (Dynamic Binary Analysis) Buena documentaci´

  • n (algunos)

Multiplataforma (incluso Android!) Soporte Ejemplos:

PIN (de Intel) Valgrind (Universidad de Cambridge) DynamoRIO (HP + MIT) Dyninst (Universidad de Wisconsin–Madison y Universidad de Maryland)

18 / 1

slide-38
SLIDE 38

Instrumentaci´

  • n Din´

amica de Ejecutables (IV)

Ejemplo de uso: PIN

Ejemplo PIN (en C): conteo de instrucciones

Contar el n´ umero de instrucciones que se ejecutan en un programa*

#include “pin.H” . . . int main(int argc, char* argv[]) { PIN Init(argc, argv); INS AddInstrumentFunction(instrumentationFunc, 0); PIN AddFiniFunction(endFunc, 0); } 19 / 1

slide-39
SLIDE 39

Instrumentaci´

  • n Din´

amica de Ejecutables (IV)

Ejemplo de uso: PIN

Ejemplo PIN (en C): conteo de instrucciones

Contar el n´ umero de instrucciones que se ejecutan en un programa*

#include “pin.H” . . . int main(int argc, char* argv[]) { PIN Init(argc, argv); INS AddInstrumentFunction(instrumentationFunc, 0); PIN AddFiniFunction(endFunc, 0); } static UINT64 icount = 0; void docount(){ icount++;} void instrumentationFunc(INS ins, void *v) { INS InsertCall( ins, IPOINT BEFORE, (AFUNPTR)docount, IARG END ); }

Recordatorio: hacer demos ejemplo.

19 / 1

slide-40
SLIDE 40

Instrumentaci´

  • n Din´

amica de Ejecutables (IV)

Ejemplo de uso: PIN

Ejemplo PIN (en C): conteo de instrucciones

Contar el n´ umero de instrucciones que se ejecutan en un programa*

#include “pin.H” . . . int main(int argc, char* argv[]) { PIN Init(argc, argv); INS AddInstrumentFunction(instrumentationFunc, 0); PIN AddFiniFunction(endFunc, 0); } static UINT64 icount = 0; void docount(){ icount++;} void instrumentationFunc(INS ins, void *v) { INS InsertCall( ins, IPOINT BEFORE, (AFUNPTR)docount, IARG END ); }

Recordatorio: hacer demos ejemplo. Recordatorio: ¿has hablado algo de las diferencias de instrucciones?

19 / 1

slide-41
SLIDE 41

Herramienta DBA para encontrar OEP (I)

En busca del OEP perdido

Idea (no nueva :()

Usar DBI para encontrar el OEP

¿C´

  • mo?

Buscar @ins a ejecutar. . .

20 / 1

slide-42
SLIDE 42

Herramienta DBA para encontrar OEP (I)

En busca del OEP perdido

Idea (no nueva :()

Usar DBI para encontrar el OEP

¿C´

  • mo?

Buscar @ins a ejecutar. . . . . . que antes haya sido escrita

20 / 1

slide-43
SLIDE 43

Herramienta DBA para encontrar OEP (I)

En busca del OEP perdido

Idea (no nueva :()

Usar DBI para encontrar el OEP

¿C´

  • mo?

Buscar @ins a ejecutar. . . . . . que antes haya sido escrita M´ as informalmente:

Guardar hist´

  • rico de @s memoria escritas

Chequear toda ejecutada con hist´

  • rico

20 / 1

slide-44
SLIDE 44

Herramienta DBA para encontrar OEP (I)

En busca del OEP perdido

Idea (no nueva :()

Usar DBI para encontrar el OEP

¿C´

  • mo?

Buscar @ins a ejecutar. . . . . . que antes haya sido escrita M´ as informalmente:

Guardar hist´

  • rico de @s memoria escritas

Chequear toda ejecutada con hist´

  • rico

Primera coincidencia → ¿bingo? (o l´ ınea, veremos...)

20 / 1

slide-45
SLIDE 45

Herramienta DBA para encontrar OEP (II)

Pseudoc´

  • digo: jugada de bingo

booleano candidato = falso . . . procedimiento acci´

  • nAEjecutar(INS instrucci´
  • n)

principio si (n´ umero de operandos en memoria de instrucci´

  • n) ≥ 1

∧ (es instrucci´

  • n de escritura)

∧ (¬ candidato) ) entonces A˜ nadir instrucci´

  • n a candidatas

si no si (¬ candidato) Buscar @instrucci´

  • n en candidatas

Si hay coincidencia → instrucci´

  • n es candidata

candidato = verdadero finSi fin

21 / 1

slide-46
SLIDE 46

Herramienta DBA para encontrar OEP (II)

Pseudoc´

  • digo: jugada de l´

ınea

. . . procedimiento acci´

  • nAEjecutar(INS instrucci´
  • n)

principio si (n´ umero de operandos en memoria de instrucci´

  • n) ≥ 1

∧ (es instrucci´

  • n de escritura)

) entonces A˜ nadir instrucci´

  • n a candidatas

si no Buscar @instrucci´

  • n en candidatas

Si hay coincidencia → instrucci´

  • n es candidata

finSi fin

22 / 1

slide-47
SLIDE 47

Experimentos (I)

Programa de prueba

Aplicaci´

  • n UnpackME

Desarrollada en ASM 32bits

23 / 1

slide-48
SLIDE 48

Experimentos (I)

Programa de prueba

Aplicaci´

  • n UnpackME

Desarrollada en ASM 32bits EP: 0x401000 Recordatorio: mostrar caracter´ ısticas (PEiD).

23 / 1

slide-49
SLIDE 49

Experimentos (I)

Programa de prueba

Aplicaci´

  • n UnpackME

Desarrollada en ASM 32bits EP: 0x401000 Recordatorio: mostrar caracter´ ısticas (PEiD).

Proteger con diferentes packers. . . y probar!

23 / 1

slide-50
SLIDE 50

Experimentos (II)

Algunos resultados

Packer Version ¿Cantamos bingo? UPX 3.0.8w √

24 / 1

slide-51
SLIDE 51

Experimentos (II)

Algunos resultados

Packer Version ¿Cantamos bingo? UPX 3.0.8w √ FSG 2.0 √

24 / 1

slide-52
SLIDE 52

Experimentos (II)

Algunos resultados

Packer Version ¿Cantamos bingo? UPX 3.0.8w √ FSG 2.0 √ NeoLite 2.0 √

24 / 1

slide-53
SLIDE 53

Experimentos (II)

Algunos resultados

Packer Version ¿Cantamos bingo? UPX 3.0.8w √ FSG 2.0 √ NeoLite 2.0 √ XComp 0.98 √

24 / 1

slide-54
SLIDE 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 / 1

slide-55
SLIDE 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 / 1

slide-56
SLIDE 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 / 1

slide-57
SLIDE 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´ atico".

24 / 1

slide-58
SLIDE 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´ atico". Recordatorio: ense~ na el CExe, pa’ re´ ırnos un rato.

24 / 1

slide-59
SLIDE 59

Experimentos (III)

Discusi´

  • n de los resultados

Algunos problemas encontrados

Problema de tama˜ no m´ ınimo ejecutable a proteger

¿Cifrado de bloque con tama˜ no m´ ınimo? ¿padding?

An´ alisis de OEP candidatos (seg´ un packer)

25 / 1

slide-60
SLIDE 60

Experimentos (III)

Discusi´

  • n de los resultados

Algunos problemas encontrados

Problema de tama˜ no m´ ınimo ejecutable a proteger

¿Cifrado de bloque con tama˜ no m´ ınimo? ¿padding?

An´ alisis de OEP candidatos (seg´ un packer)

¿Meterle m´ as l´

  • gica a la DBA?

25 / 1

slide-61
SLIDE 61

Experimentos (III)

Discusi´

  • n de los resultados

Algunos problemas encontrados

Problema de tama˜ no m´ ınimo ejecutable a proteger

¿Cifrado de bloque con tama˜ no m´ ınimo? ¿padding?

An´ alisis de OEP candidatos (seg´ un packer)

¿Meterle m´ as l´

  • gica a la DBA?

Algunos packers (ASProtect, Petite): ejecuci´

  • n entremezclada

¿Usar secciones del ejecutable como l´ ımites? Algunos se “incrustran” en los huecos vac´ ıos del c´

  • digo real

25 / 1

slide-62
SLIDE 62

Experimentos (IV)

Qu´ e quer´ ıa yo, y qu´ e hemos conseguido. . .

26 / 1

slide-63
SLIDE 63

Conclusiones (I)

Algunas conclusiones

Frameworks DBI: r´ apido y sencillo → alto potencial NO es necesario conocimientos de programaci´

  • n S.O. avanzados

Podemos centrarnos en la “miga”: la DBA

Desventajas:

Conocimiento de la API Tiempo de ejecuci´

  • n

27 / 1

slide-64
SLIDE 64

Conclusiones (II)

Trabajo futuro

28 / 1

slide-65
SLIDE 65

Conclusiones (II)

Trabajo futuro

Construir herramienta DBA (y GPL) para desempacado gen´ erico

28 / 1

slide-66
SLIDE 66

Conclusiones (II)

Trabajo futuro

Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´

  • mo se comporta DBI con t´

ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´

  • n de excepciones. . . )

¿Y con las de los packers?

28 / 1

slide-67
SLIDE 67

Conclusiones (II)

Trabajo futuro

Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´

  • mo se comporta DBI con t´

ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´

  • n de excepciones. . . )

¿Y con las de los packers?

¿Y si me roban los primeros bytes? :)

28 / 1

slide-68
SLIDE 68

Conclusiones (II)

Trabajo futuro

Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´

  • mo se comporta DBI con t´

ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´

  • n de excepciones. . . )

¿Y con las de los packers?

¿Y si me roban los primeros bytes? :) ¿Y con c´

  • digo polim´
  • rfico?

28 / 1

slide-69
SLIDE 69

Conclusiones (II)

Trabajo futuro

Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´

  • mo se comporta DBI con t´

ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´

  • n de excepciones. . . )

¿Y con las de los packers?

¿Y si me roban los primeros bytes? :) ¿Y con c´

  • digo polim´
  • rfico?

¿Y con packers emuladores (e.g. Themida, ExeCryptor)?

(M´ as) aplicaciones a Ingenier´ ıa Inversa

28 / 1

slide-70
SLIDE 70

Conclusiones (II)

Trabajo futuro

Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´

  • mo se comporta DBI con t´

ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´

  • n de excepciones. . . )

¿Y con las de los packers?

¿Y si me roban los primeros bytes? :) ¿Y con c´

  • digo polim´
  • rfico?

¿Y con packers emuladores (e.g. Themida, ExeCryptor)?

(M´ as) aplicaciones a Ingenier´ ıa Inversa

Detecci´

  • n de acceso a variables “protegidas”

28 / 1

slide-71
SLIDE 71

Conclusiones (II)

Trabajo futuro

Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´

  • mo se comporta DBI con t´

ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´

  • n de excepciones. . . )

¿Y con las de los packers?

¿Y si me roban los primeros bytes? :) ¿Y con c´

  • digo polim´
  • rfico?

¿Y con packers emuladores (e.g. Themida, ExeCryptor)?

(M´ as) aplicaciones a Ingenier´ ıa Inversa

Detecci´

  • n de acceso a variables “protegidas”

Extracci´

  • n de direcciones din´

amicas

28 / 1

slide-72
SLIDE 72

Conclusiones (II)

Trabajo futuro

Construir herramienta DBA (y GPL) para desempacado gen´ erico ¿C´

  • mo se comporta DBI con t´

ecnicas anti-debugging de los ejecutables? (e.g., SEH, generaci´

  • n de excepciones. . . )

¿Y con las de los packers?

¿Y si me roban los primeros bytes? :) ¿Y con c´

  • digo polim´
  • rfico?

¿Y con packers emuladores (e.g. Themida, ExeCryptor)?

(M´ as) aplicaciones a Ingenier´ ıa Inversa

Detecci´

  • n de acceso a variables “protegidas”

Extracci´

  • n de direcciones din´

amicas . . .

28 / 1

slide-73
SLIDE 73

Agradecimientos y referencias

Referencias

IndefiniteStudies Piotr Bania Gente de CLS

29 / 1

slide-74
SLIDE 74

Agradecimientos y referencias

Referencias

IndefiniteStudies Piotr Bania Gente de CLS Asociaci´

  • n RootedCON

29 / 1

slide-75
SLIDE 75

Agradecimientos y referencias

Referencias

IndefiniteStudies Piotr Bania Gente de CLS Asociaci´

  • n RootedCON

¡A trabajar!

→ Gracias por escucharme! ⇒ Nos vemos en la NcN! :)

29 / 1

slide-76
SLIDE 76

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