las entrañas del malware

42
el mayor evento de In-seguridad Informática de Ecuador Un evento gratuito, netamente técnico y con ponencias ecuatorianas

Upload: ricardogomez94

Post on 16-Jul-2015

244 views

Category:

Documents


1 download

TRANSCRIPT

el mayor evento de In-seguridadInformática de EcuadorUn evento gratuito,netamente técnico y conponencias ecuatorianas

Aquí va el nombre del expositorCargo

Aquí va el nombre del expositorCargo

Ricardo Gómez PeraltaInvestigador independiente

Las entrañas del malwareTrucos anti análisis usados en malware bajo plataformas MS Windows.

Ric

ard

o G

óm

ez

¿Qué es malware?

Malware es un programa que contiene código

malicioso.

Un malware es un virus, un worm, una botnet ...

Evolución del malware

2001 Virus Anna Kournikova

“Here you are ;-),” “here you have ;o)” and hereyou go ;-)”

Cuerpo del mensaje: "Hi, check this!”

Annakournikova.jpg.vbs

Evolución del malware

2004 Mydoom, Netsky, Sasser, Bagger.

2005 Redes de bots para obtener dinero.

TROYANOS BANCARIOS.

Evolución del malware

Malware bajo pedido.

Espionaje industrial y ciber-guerra.

TDL4 (2008) (indestructible).

Stuxnet (junio 2010).

Flame (mayo 2012).

Medre (junio 2012).

Análisis de malware

Análisis de código (estático).

Análisis de comportamiento (dinámico).

Objetivo de ambos: Explicar cómo funciona el

malware.

Análisis de malware

Análisis de código (estático).

Obtener información del malware mirando el archivo

(sin ejecución).

Análisis de malware

Análisis de comportamiento (dinámico).

Obtener información del malware mediante la

ejecución del mismo.

¿Qué dificulta el análisis?

Anti-desensamblado

Anti-depuración

Anti-VM

Packers

Anti-desensamblado

Código insertado manualmente con la finalidad de

provocar un listado incorrecto en las herramientas de

desensamblado.

Anti-desensamblado

Anti desemsambladoOfuscación

¿Qué es código ofuscado?Alterar la estructura del código original manteniendosu funcionalidad original.

Objetivos:Retrasar el análisis de ingeniería inversa.Burlar o confundir los motores antivirus y que nodetecten el código malicioso.

¿Fácil o difícil?

Anti desemsambladoOfuscación

Inserción de código basura

Anti desemsambladoOfuscación

Sustitución de instrucciones

Cambiar el flujo de ejecución

Anti desemsambladoOfuscación

Código oculto mediante manejo adecuado de los opcodes

Anti desemsambladoOfuscación

Demo time

Anti-depuraciónAnti-debugging

Anti-debugging

Muy popular entre creadores de malware usada parareconocer cuando la muestra está bajo el control deun depurador.

APIsIsDebbugerPresentCheckRemoteDebuggerPresentNtQueryInformationProcessOutputDebugString

Chequeo manual de estructurasChequeo del PEBChequeo del ProcessHeapChequeo de NtGlobalFlag

Anti-debugging

Identificación del comportamiento del depuradorComprobaciónes de integridad (checksum)Chequeos de tiempo de ejecución.

Interferir con la funcionalidad del debuggerExplotar vulnerabilidades del depurador

Anti-debugging

Algunos conceptos

PEB Estructura de datos que contiene una gran

cantidad de información sobre el proceso.

HEAP Forma de manejo de memoria de la cual

puede hacer uso una aplicación cuando necesita

reservar y liberar memoria dinámicamente.

HANDLE Manejador.

IsDebuggerPresent

El más básico (y obvio).

El booleano PEB.BeingDebugged se activa si hay un depurador presente.

FS[0x30] apunta al PEB.

La API kernel32 !IsDebuggerPresent() revisa esteflag

Anti-debuggingAPIs

CheckRemoteDebuggerPresent

Identica a IsDebuggerPresent.

Busca en un proceso remoto NO máquina remota.

Anti-debuggingAPIs

NtQueryInformationProcess

API nativa.

Devuelve información de un determinado proceso.

Parámetros:HANDLE ProcessHandle, PROCESSINFOCLASS ProcessInformationClass,PVOID ProcessInformation,ULONG ProcessInformationLength,PULONG ReturnLength

Anti-debuggingAPIs

1

2

3

Depurado No depurado

0xFFFFFFFF (-1) 0x0 (0)

1

2

3

1

2

3

Anti-debuggingAPIs

OutputDebugString

Envía una cadena al depurador para que la muestre.

Depurado No depurado

OutputDebugString

no hace nada.

El depurador de

sistema llama

internamente la

función DbgPrint

para mostrar la

string.

Anti-debuggingAPIs

Anti-debuggingAPIs

Byte IsBeingDebugged en el PEB (FS:[30]+2).

Chequeo del ProcessHeap (localizado en 0x18 en la estructura PEB). Bytes Flag y ForceFlag.

Anti-debuggingChequeo manual de estructuras

Campo

NT, 2000,

XP

(32 bits)

Vista y

W7

(32 bits)

XP

(64 bits)

Vista y W7

(64 bits)

Flag 0x0C 0x40 0x14 0x70

ForceFlag 0x10 0x44 0x18 0x74

Un programa ejecutado en un depurador se comporta ligeramente diferente.

Se crean heaps de memoria diferentes.

PEB en el offset 0x68 (no documentada. Si es igual 0x70, está siendo depurado.

Anti-debuggingChequeo de NtGlobalFlag

Comprobaciónes de integridad (checksum)Calcular la integridad de una sección de su código.

Chequeos de tiempo de ejecución RTDSC QueryPerformanceCounter y GetTickCount

Anti-debuggingComportamiento del depurador

Anti-debuggingComportamiento del depurador

Demo time

Explotar vulnerabilidadesdel depurador

Aprovechando la cabecera PE: IMAGE_OPTIONAL_HEADER

Explotar vulnerabilidadesdel depurador

SizeOfRawData de las cabeceras de las secciones modificado.

Explotar vulnerabilidadesdel depurador

Explotar vulnerabilidadesdel depurador

Conclusión:

Saber las técnicas es útil para el analista.

Existen plugins, pero para realizar tools se necesita

saber como operan.

El conocimiento permite adaptarse a nuevos

métodos.

@RicardoGomez94

¿Preguntas?

Gracias