Análisis de Malware - Universidad de Granada
Transcript of Análisis de Malware - Universidad de Granada
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la a
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis de Malware
2
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Índice
1. Introducción e historia
2. Análisis estático básico
3. Análisis dinámico básico
4. Análisis estático avanzado
5. Análisis dinámico avanzado
6. Funcionalidad típica del malware
7. Técnicas anti ingeniería inversa
3
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Índice
1. Introducción e historia
2. Análisis estático básico
3. Análisis dinámico básico
4. Análisis estático avanzado
5. Análisis dinámico avanzado
6. Funcionalidad típica del malware
7. Técnicas anti ingeniería inversa
4
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Terminología
• Bomba lógica
• Troyano
• Backdoor (Botnet & RATs & CC)
• Virus
• Worm
• Rabbit
• Spyware
• Adware
• Downloader / Launcher
• Rootkit
• Spammer
• Scareware
Introducción e historia
5
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Introducción e historia
6
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Introducción e historia
7
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Índice
1. Introducción e historia
2. Análisis estático básico
3. Análisis dinámico básico
4. Análisis estático avanzado
5. Análisis dinámico avanzado
6. Funcionalidad típica del malware
7. Técnicas anti ingeniería inversa
8
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• VirusTotal
• Hashing
• Strings• Unicode
• Cabeceras
• Análisis de Packer (PEiD)
Análisis estático básico
9
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Bibliotecas enlazadas• Estáticas
• Dinámicas (imports) Dependency Walker
• En tiempo de ejecución• LoadLibrary• GetProcAddress
Análisis estático básico
10
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Librerías comunes de Windows• Kernel32.dll
• Advapi32.dll
• User32.dll
• Gdi32.dll
• Ntdll.dll
• Wsock32.dll / Ws2_32.dll
• Wininet.dll
Análisis estático básico
11
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Nombres de funciones• CreateWindow / CreateWindowEx
• CreateDirectory• CreateDirectoryA• CreateDirectoryW
Análisis estático básico
12
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Ficheros PE• IMAGE_DOS_HEADER Historical
• MS-DOS Stub Program Historical
• IMAGE_NT_HEADERS
• IMAGE_FILE_HEADER Información sobre compilación
• IMAGE_OPTIONAL_HEADER • Subsystem description: GUI / Consola
• IMAGE_SECTION_HEADER Secciones del ejecutable, nombres elegidos por el compilador
• Virtual Size: lo que ocupa en memoria
• Size of Raw data: lo que ocupa en disco
Análisis estático básico
13
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Ficheros PE
Análisis estático básico
Nombre Descripción
.text / .code
Código ejecutable
.rdata / .const
Datos read-only
.data Datos
.idata Funciones importadas (a veces se omite y están en .rdata)
.edata Funciones exportadas (a veces se omite y están en .rdata)
.pdata Información de EH en 64 bits
.rsrc Resources
.reloc Información para relocar bibliotecas
.bss Uninitialized data
… …
14
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Resources• Iconos
• Menús
• Diálogos
• Cadenas
Análisis estático básico
15
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• ¡Probemos! Práctica, 3.1
Análisis estático básico
16
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Índice
1. Introducción e historia
2. Análisis estático básico
3. Análisis dinámico básico
4. Análisis estático avanzado
5. Análisis dinámico avanzado
6. Funcionalidad típica del malware
7. Técnicas anti ingeniería inversa
17
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Máquinas virtuales• Pros
• Aisladas• Snapshots• Record/Replay
• Contras
• Detectables)• Vulnerabilidades
Análisis dinámico básico
18
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Warning! No sabemos qué tenemos entre manos y vamos a ejecutar cosas! Usa un entorno aislado!
Análisis dinámico básico
19
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Sandboxes• Norman Sandbox
• GFI Sandbox (ThreatAnalyzer)• https://www.threattrack.com/online-malware-sandbox.aspx
• Cuckoo / VMCloak• https://malwr.com/
• Online / Offline
Análisis dinámico básico
20
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Sandboxes, problemas
• Parámetros
• Funciones de arranque
• Detección de VM
• Malware en DLLs
Análisis dinámico básico
21
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Malware en DLLs
• rundll32.exe DLLname, Export arguments
• rundll32.exe xyzzy.dll, #5
• rundll32 ipr32x.dll,InstallService ServiceNamenet start ServiceName
Análisis dinámico básico
22
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Process Monitor• Registro• Filesystem• Procesos y hebras• Red (no recomendado)
Análisis dinámico básico
23
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Process Explorer• Task manager• Verifica si DLL está firmada por
Microsoft en runtime• Comprobar strings en disco y en
memoria• Algunas diferencias son normales
• Análisis rápido de malware en documentos
Análisis dinámico básico
24
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Regshot • Permite hacer dos snapshots del
registro y compararlas
Análisis dinámico básico
25
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Comportamiento de red• Fakenet / fakenet-ng
• Redirige el tráfico DNS/HTTP/SSL
• Inteligente, si piden jpg sirve jpg• Saca un pcap• Muy flexible
Análisis dinámico básico
26
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Comportamiento de red• Wireshark• InetSim (Linux)• Nc• ApateDNS
Análisis dinámico básico
27
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• ¡Probemos! Práctica, 3.2
Análisis dinámico básico
28
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Índice
1. Introducción e historia
2. Análisis estático básico
3. Análisis dinámico básico
4. Análisis estático avanzado
5. Análisis dinámico avanzado
6. Funcionalidad típica del malware
7. Técnicas anti ingeniería inversa
29
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• El análisis estático básico nos permite saber qué funciones se importan, pero no si se usan ni como se usan.
• El análisis dinámico básico nos puede dar una visión a nivel de interfaz, pero se acaba ahí
Análisis estático avanzado
30
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Niveles de abstracción en programación• Hardware (lógica digital)
• Microcódigo / Firmware 10101001…
• Código máquina (opcodes) 26h32h…
• Lenguajes de bajo nivel (ensamblador)
• Lenguajes de alto nivel (C, C++, …)
• Lenguajes interpretados (bytecode)
• ¿En qué nivel trabaja el analista de malware?
Análisis estático avanzado
31
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• ¿En qué nivel trabaja el analista de malware?
Análisis estático avanzado
32
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Arquitectura X86
Análisis estático avanzado
33
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Instrucciones ASM
• Mnemonic
• Mnemonic [destination]
• Mnemonic [destination], [source]
• Mnemonic [destination], [source1], [source2]
Análisis estático avanzado
34
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Disassembler
B9 42 00 00 00 mov ecx, 0x42
Análisis estático avanzado
35
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Tipos de operando
• Inmediato: 0x42
• Registro: ecx
• Dirección de memoria: [ecx]
Análisis estático avanzado
36
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Registros
Análisis estático avanzado
37
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Registros
Análisis estático avanzado
38
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• EFLAGS
Análisis estático avanzado
39
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• EFLAGS
• ZF: Zero Flag
• CF: Carry Flag
• SF: Sign Flag
• TF: Trap Flag, Modo single step
Análisis estático avanzado
40
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Instrucciones
Análisis estático avanzado
41
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Instrucciones
• mov eax, ebx+8 lea eax, [ebx+8]
Análisis estático avanzado
42
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Instrucciones
• mov eax, [ebx+8] eax = ?
• lea eax, [ebx+8] eax = ?
Análisis estático avanzado
43
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Instrucciones
Análisis estático avanzado
44
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila
• ESP: Stack pointer (top)
• EBP: Base pointer, comienzo de parámetros de función y variables locales (suelen referenciarse con respecto a ebp)
• push, pop, pusha, popa, pushad, popad
• enter / leave
• call / ret
Análisis estático avanzado
45
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
46
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones• Prólogo
• En este momento tenemos…
• Epílogo
Análisis estático avanzado
47
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
48
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address esp
add: # prologopush ebp
eip
49
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp esp
add: # prologopush ebp eip
50
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp esp
add: # prologopush ebpmov ebp,esp eip
ebp
51
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebxesp
add: # prologopush ebpmov ebp,esp
# guardamos registros # según cdecl
push esipush edipush ebx eip
ebp
52
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c esp
add: # prologopush ebpmov ebp,esp
# guardamos registros # según cdecl
push esipush edipush ebx
# hacer sitio para variable local c
sub esp,4 eip
ebp
53
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c esp
add: # prologopush ebpmov ebp,esp
# guardamos registros # según cdecl
push esipush edipush ebx
# hacer sitio para variable local c
sub esp,4# meto b en ebx
mov ebx, [ebp+12]add ebx, [ebp+8] eip
ebp
54
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c esp
add: # prologopush ebpmov ebp,esp
# guardamos registros # según cdecl
push esipush edipush ebx
# hacer sitio para variable local c
sub esp,4# meto b en ebx
mov ebx, [ebp+12]add ebx, [ebp+8]
# meto a+b en cmov [ebp-16], ebx eip
ebp
55
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c esp
add: # prologopush ebpmov ebp,esp
# guardamos registros # según cdecl
push esipush edipush ebx
# hacer sitio para variable local c
sub esp,4# meto b en ebx
mov ebx, [ebp+12]add ebx, [ebp+8]
# meto a+b en cmov [ebp-16], ebx
# meto c en eaxmov eax, [ebp-16] eip
ebp
56
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c
esp
# limpiar pilaadd esp, 4 eip
ebp
57
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c
esp
# limpiar pilaadd esp, 4pop ebx eip
ebp
58
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c
esp
# limpiar pilaadd esp, 4pop ebxpop edi eip
ebp
59
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c
esp
# limpiar pilaadd esp, 4pop ebxpop edipop esi eip
ebp
60
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c
esp
# limpiar pilaadd esp, 4pop ebxpop edipop esi
# epílogomov esp, ebp eipebp
61
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c
esp
# limpiar pilaadd esp, 4pop ebxpop edipop esi
# epílogomov esp, ebppop ebp eip
62
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: llamadas a funciones
Análisis estático avanzado
b
a
return address
old ebp
esi
edi
ebx
c
esp
# limpiar pilaadd esp, 4pop ebxpop edipop esi
# epílogomov esp, ebppop ebpret eip
eip
63
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• La pila: disposición
Análisis estático avanzado
64
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Otras calling conventions• cdecl :
• Los argumentos se ponen en la pila de derecha a izquierda
• El caller limpia la pila
• El valor de retorno va en eax
• stdcall : propia de la API de Windows
• Idem pero el called limpia la pila
• Ms fastcall : depende del compilador
• Primeros dos argumentos en edx, ecx
• Resto en la pila de derecha a izqda.
Análisis estático avanzado
65
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Comparaciones
• tst equivale a and
• cmp equivale a sub
• No alteran los operandos solo las flags
Análisis estático avanzado
66
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Branching
• Incondicional jmp
• Condicional más de 30 tipos
Análisis estático avanzado
67
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Instrucciones Rep
• movsX, cmpsX, stosX, scasX• X = (b)yte, (w)ord, (d)ouble Word
• esi source index (++)
• edi destination index (++)
• ecx counter (--)
Análisis estático avanzado
Depende de DF
68
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Instrucciones Rep
Análisis estático avanzado
69
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• El main en C
Análisis estático avanzado
70
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Llamadas al sistema
• En Linux son usuales• eax = syscall number
• Args ebx, ecx, edx, esi, edi, ebp
• int 0x80
• http://syscalls.kernelgrok.com/
Análisis estático avanzado
71
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Llamadas al sistema
• En Windows están “escondidas” bajo la API • syscall, sysenter, int 0x2e
• Para hacer ciertas cosas (rootkits) hay que programar en kernel mode (drivers) (acceso directo al hardware)
Análisis estático avanzado
72
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Llamadas al sistema
Análisis estático avanzado
73
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Llamadas al sistema
Análisis estático avanzado
74
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Más información
Análisis estático avanzado
75
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis estático avanzado
76
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• ¡Probemos! Práctica, 3.3
Análisis estático avanzado
77
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• IDA Pro
• Estándar de facto
• Hay otras herramientas pero no tan buenas
• Es comercial (1500€ aprox)• Versión 7.0 free
Análisis estático avanzado: IDA Pro
78
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• IDA Pro
• Descubre funciones
• Analiza la pila
• Identifica variables locales
• Fast Library Identification and Recognition Technology (FLIRT)
• Plugins
• Hex-Rays decompiler 2500€
• Zynamics BinDiff (free desde 2016)
Análisis estático avanzado: IDA Pro
79
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis estático avanzado: IDA Pro
80
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis estático avanzado: IDA Pro
81
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis estático avanzado: IDA Pro
82
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Navegando por el código
• Links• Sub links comienzo de funciones
• Loc links destino de saltos.
• Offset links posiciones de memoria
• Cross references• CODE XREF
• DATA XREF
• Botones de History Adelante / Atrás
Análisis estático avanzado: IDA Pro
83
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Navegando por el código
• Jump • to address
• to file offset
• Searching
Análisis estático avanzado: IDA Pro
84
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Análisis de funciones
• IDA Pro es capaz de reconocer funciones, etiquetarlas y deducir
• parámetros (prefijo arg_)
• y variables locales (prefijo var_)
• Permite un mayor nivel de abstracción
• A veces puede omitir funciones
• Podemos especificarlas a mano
Análisis estático avanzado: IDA Pro
85
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Gráficos útiles
• Xrefs to: different paths that a program can take to reach a particular function.
• Xrefs from: This view can quickly tell you what a function does and what the functions do underneath it. This is the easiest way to get a quick overview of the function.
Análisis estático avanzado: IDA Pro
86
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Mejorando el resultado
• Podemos:• Renombrar funciones / locations
• Poner comentarios• : un comentario• ; un comentario que se repite en
cada xref
• Cambiar el tipo de una referencia (dec/hex/bin…)
Análisis estático avanzado: IDA Pro
87
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Mejorando el resultado
• A veces el analizador puede equivocarse…
Análisis estático avanzado: IDA Pro
88
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Mejorando el resultado
• Constantes• ¿Cómo tratamos un #DEFINE ?
• IDA Pro trae un catálogo de los usuales en la librería estándar de C y en el SDK de Windows (Type libraries subview)
Análisis estático avanzado: IDA Pro
89
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Scripting
• IDC
• IDAPython
Análisis estático avanzado: IDA Pro
90
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• ¡Probemos! Práctica, 3.4
Análisis estático avanzado: IDA Pro
91
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Índice
1. Introducción e historia
2. Análisis estático básico
3. Análisis dinámico básico
4. Análisis estático avanzado
5. Análisis dinámico avanzado
6. Funcionalidad típica del malware
7. Técnicas anti ingeniería inversa
92
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado
• Debugger: • Insight
• Measure and control the internal state
• Dynamic view
• GDB, WinDBG, OllyDbg, IDA Pro…
93
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado
• Debugger de código Vs Debugger ASM
• Visual Studio GDB
• Kernel Debugging Vs User-Mode Debugging• Para debuggear el kernel necesitas
dos máquinas
• Considerablemente más complejo
• Necesitas WinDBG
94
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado
• Conceptos básicos
• Debug desde el principio Vs Attach
• Single step
• Step over Vs Step into
• Step out
• Modificar valores
• Breakpoint
• Software• Conditional
• Hardware
95
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado
96
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado
• Excepciones
• Los breakpoints generan excepciones y el control se pasa al debugger
• También los errores como
• memory-access violation
• division by zero
• …
97
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado
• Excepciones
98
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado
• Excepciones
• Excepciones comunes
• INT 3
99
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• OllyDbg
• Free
• Easy
• Plugins
100
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Cargando malware
• File Open• Permite añadir parámetros
• Por defecto para en el Entry Point• 2.0 Puede configurarse para que pare
en el TLS Callback
• File Attach• Puede que te pares en medio de una
DDL de Windows
101
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Interfaz1 2
4 3
102
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Interfaz
• View Memory map
103
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Re – Basing
• Módulos se cargan en la dirección especificada en Image Base del PE Header
• Los ejecutables • Normalmente 0x00400000
• Las DLLs• Normalmente 0x10000000
104
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Re – Basing
• ¿Qué pasa si dos DLLs tienen la misma base address?
• Sección .reloc
• No es eficiente
• Las DLLs de Windows vienen preparadas con distintos base address
• Cuidado si estamos a la vez con el dissasembler
105
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Interfaz
• View Threads
• Cuando pausas, pausas todo
106
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Interfaz
107
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Interfaz
• View Breakpoints
• Software, Conditional
108
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Interfaz
• Debug Hardware Breakpoints
• Hardware
109
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Carga de DLLs
• Ejecutable dummy que llama a DllMain y pausa
• Debug Call DLL Exports
110
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Carga de DLLs
111
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Carga de DLLs
112
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Tracing• Standard Back Trace
• Navegamos lo que hemos hecho con + / -
• No muestra cambios en los registros
• View Call Stack
• Muestra la pila de la función actual (como un backtrace)
113
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Tracing• Run Trace
• Graba lo que se hace con cambios en los registros y flags incluidos
• Hay que seleccionar el trozo de código que queremos tracear
• También podemos usar Trace Into y Trace Over
• Trazan hasta encontrar un breakpoint
• Debug Set condition
• Permite trazar hasta que se cumple una condición
114
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Tracing• Run Trace
• Podemos revisar con View Run Trace
• Recorremos con +/-
115
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Exception Handling
116
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Patching
• Binary Edit
• Binary Fill with NOPs
• Aplicar en disco
• Copy to executable
117
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Analizando Shellcode
• Copio shellcode en hex
• En memory map, selecciono una zona de tipo Priv y la marco como RWX (Full Access)
• Abro el dump y vuelco la shellcode (Binary Binary Paste)
• Muestro la zona en ventana de desensamblado (Go to dirección)
• Modifico EIP (new origin here)
118
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Other features
• Find References to Selected Command
• View Watches
• Right Click + Label
• Plugins• OllyDump
• Hide Debugger
• Command Line
• Bookmarks
119
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Análisis dinámico avanzado: OllyDbg
• Scripting• Hay que utilizar ImmDbg que da soporte a
Python
• PyCommands
120
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Kernel Debugging? WinDBG• Setup del entorno complejo
• VMWare• Habilitar debug por puerto serie
• Es complejo
• Hay que saber programar drivers
• El malware de kernel para x64 es prácticamente inexistente• Firma de drivers• PatchGuard
Análisis dinámico avanzado
121
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• ¡Probemos! Práctica, 3.5
Análisis dinámico avanzado
122
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Índice
1. Introducción e historia
2. Análisis estático básico
3. Análisis dinámico básico
4. Análisis estático avanzado
5. Análisis dinámico avanzado
6. Funcionalidad típica del malware
7. Técnicas anti ingeniería inversa
123
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Backdoors• Netcat Reverse Shell
• Windows Reverse Shell
• CreateProcess + CreatePipe
• RATs
• Botnets
Funcionalidad típica del Malware
124
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Robo de credenciales• GINA (Graphical Identification and
Authentication)• HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Winlogon\GinaDLL• DLL que implementa funciones Wlx.*
• Hash Dumping / Mimikatz• DLL injection en lsass.exe• NlpGetPrimaryCredential,
Funcionalidad típica del Malware
125
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Robo de credenciales• Keyloggers
• Hooking• SetWindowsHookEx
• Polling
Funcionalidad típica del Malware
126
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Mantener la persistencia• Windows Registry
• Hay muchas! (Autoruns by Sysinternals)• AppInit_DLLs
• HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows
• Winlogon Notify• HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\Winlogon\
• SvcHost DLLs• HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Services\ServiceName
Funcionalidad típica del Malware
127
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Mantener la persistencia• Troyanizar binarios del sistema
• DLL Hijacking• Directorio de la app
• Directorio de ejecución
• Directorio del sistema (Windows/System32)
• Directorio del sistema 16 bits (Windows/System)
• Directorio de Windows (Windows/)
• Directorios del PATH
• Entrada KnownDLLs del registro fuerza System32
Funcionalidad típica del Malware
128
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Escalar a privilegios de admin• No suele ser necesario
• Explotar DLL Hijack en servicios
• Exploits variados
• Escalar a privilegios de system• Necesario para llamar a CreateRemoteThread
• SeDebugPrivilege
Funcionalidad típica del Malware
129
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Ocultación (rootkits)• Kernel space
• SSDT Hooking
• IRP Hooking
Funcionalidad típica del Malware
130
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Ocultación (rootkits)• User space
• IAT Hooking
• Inline Hooking• Modifico la función en memoria e inserto un jmp
Funcionalidad típica del Malware
131
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Inyección de procesos• DLL Injection
Funcionalidad típica del Malware
132
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Inyección de procesos
• Direct Injection
• En lugar de inyectar llamada a carga de DLL, inyectamos código directamente (normalmente shellcode).
Funcionalidad típica del Malware
133
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Process Replacement / Hollowing
• Lanzo un proceso confiable en estado suspendido
• Reemplazo su memoria por la de otro malo
Funcionalidad típica del Malware
134
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Hook injection• SetWindowsHookEx
Funcionalidad típica del Malware
HHOOK WINAPI SetWindowsHookEx(_In_ int idHook,
_In_ HOOKPROC lpfn, _In_ HINSTANCE hMod, _In_ DWORD
dwThreadId );
135
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Hook injection• Local hooks
• Mensajes destinados a mi proceso
• Remote hooks• Mensajes destinados a otro proceso
• High-Level: (e.g. WH_KEYBOARD)• El hook es una función exportada
de una DLL• El OS mapea en el espacio del
proceso hookeado• Low-Level: (e.g. WH_KEYBOARD_LL)
• La función está en el proceso que instala el hook
Funcionalidad típica del Malware
136
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Hook injection• Thread Targeting
• Salvo que seas un logger con correr en una hebra tienes
• Para DLL injection se coloca un hook en un proceso benigno para que arranque al recibir un mensaje poco común (e.g. WH_CBT)
Funcionalidad típica del Malware
137
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Detours• Librería de Microsoft
• Permite• Modificar estructura PE en disco para
que cargue más librerías• Crea una nueva sección .detour• Con setdll
• Programar hooks de manera muy sencilla
• Otras librerías comunes
• EasyHook
• Deviare
Funcionalidad típica del Malware
138
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Detours• API hookingtradicional
Funcionalidad típica del Malware
139
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• Detours• API hookingcon Detours
Funcionalidad típica del Malware
140
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• APC Injection• Asynchroneus Procedure Call
• Cada hebra posee una cola de funciones que se llaman cuando está esperando.
• En lugar de crear una nueva hebra ponemos el código malicioso como un APC
• Se puede hacer desde
• User Space• DWORD WINAPI QueueUserAPC(
_In_ PAPCFUNC pfnAPC, _In_ HANDLE hThread, _In_ ULONG_PTR dwData );
• Kernel Space• KeInitializeApc / KeInsertQueueApc• Permite ejecutar código de usuario fácilmente estando
en kernel
Funcionalidad típica del Malware
141
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
• ¿Y en Unix?• Aplica básicamente todo de manera muy similar
• Obviamente no hay PE en Linux sino ELF
• Persistencia en scripts de arranque (init.d, .bashrc, …)
• Inyección de código de usuario
• LD_PRELOAD
• ptrace
• gdb
• Inyección de código kernel
• Cargando un módulo• Buscarla sys_call_table• Reemplazar entrada
Funcionalidad típica del Malware
142
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Índice
1. Introducción e historia
2. Análisis estático básico
3. Análisis dinámico básico
4. Análisis estático avanzado
5. Análisis dinámico avanzado
6. Funcionalidad típica del malware
7. Técnicas anti ingeniería inversa
143
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Disassembly
• Problemas del desensamblado lineal
144
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Disassembly
• Problemas del desensamblado orientado a flujo
145
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Disassembly
• jz/jnz
146
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Disassembly
• jz incondicional
147
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Disassembly
• Desensamblado ambiguo
148
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Disassembly
• Punteros a funciones
• IDA no los puede interpretar como funciones
• Perdemos información (Xrefs)
• Se podrían añadir a mano• AddCodeXref(0x004011DE, 0x004011C0, fl_CF);
149
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Disassembly
• call2ret
150
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Debugging• Detección de debugger
• Usando la API de Windows
• IsDebuggerPresent
• CheckRemoteDebuggerPresent
• NtQueryInformationProcess
• OutputDebugString
151
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Debugging• Detección de debugger
• A mano
• PEB BeingDebugged Flag
152
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Debugging• Detección de debugger
• A mano
• PEB ProcessHeap Flag
153
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Debugging• Detección de debugger
• A mano
• PEB NTGlobalFlag• Offset 0x68
• Si vale 0x70 estás siendo debuggeado
154
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Debugging• Detección de debugger
• Side effects
• Buscar ventanas
• Ficheros en el sistema
• Entradas en el registro• HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\
Windows NT\CurrentVersion\AeDebug• Si tu entrada no es DrWatson no eres un usuario
normal
155
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Debugging• Detección de debugger
• En tiempo de ejecución
• Exceptions que no llegan
• Buscar INT 3 (0xcc)
• Checksums
• Timing checks• Timestamps• Ticks count (rdtsc)• Windows API
• QueryPerformanceCounter y GetTickCount
156
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Debugging• Dificultar debugging
• TLS Callbacks
• Meter INT 3 por doquier (0xCC)
• 2-byte INT 3 attack (0xCD03) • Hace que WinDBG ejecute un flujo diferente
• Otras instrucciones con las que los debuggers tinene problemas:
• Kernel breakpoint INT 2D
• ICE breakpoint icebp (0xF1)
157
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Debugging• Dificultar debugging
• Vulnerabilidades del debugger
• Cabeceras PE mal formadas
• Vulnerabilidad OutputDebugString Olly 1.10• OutputDebugString ("%s%s%s%s%s%s%s%s%s%s%s%s%s%s")
158
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
Técnicas Anti Ingeniería Inversa
• Anti Debugging• Detección de VM
• Procesos
• Nombre de los discos
• Servicios
• La MAC
• Búsqueda de cadenas en memoria
• VMware I/O communication port
• Red Pill / No pill (sidt, sgdt, sldt, smsw, cpuid)
• Vulnerabilidades de VM (escapar a la VM)
159
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017
¡Gracias por atenderme!
160
Mást
er
en
Cib
ers
egu
ridad
Mó
du
lo:
No
mb
re d
el m
ód
ulo
de
la A
sig
nat
ura
UC
yS-U
GR
2
016/
2017