el mayor evento de In-seguridad Informática de Ecuador Un evento gratuito, netamente técnico y con ponencias ecuatorianas
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.
Anti-desensamblado
Código insertado manualmente con la finalidad de
provocar un listado incorrecto en las herramientas de
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-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
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
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
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.