2. ¿De qué va esto?
• Uso de técnicas para evadir el análisis
estático del binario.
• ¿Puedo hacer legible el código?
• ¿Por qué no solo análisis dinámico?
3. Introducción
• Desemsamblar código no es un problema
simple.
• Cuando se implementa anti-desensamblado,
el autor del malware crea una secuencia de
código que engaña al desensamblador.
• Las técnicas anti-desensamblado funcionan
tomando ventaja de las asunciones y
limitaciones de los desensambladores.
4. ¿De qué se trata el ofuscamiento de
código?
La ofuscación es: alterar la estructura del código
original manteniendo su funcionalidad original.
Cumple dos papeles de vital importancia para el
escritor de código malicioso:
• Retrasar el análisis de ingeniería inversa.
• Burlar o confundir los motores antivirus y que
no detecten el código malicioso.
6. Los decompiladores esperan código
legible, ordenado. Hacen varias
asunciones, si no se cumplen: fallan.
Luego de un CALL el valor de
ESP no se debería alterar.
8. • Semántica
– Cambio de instrucciones por otras que den el mismo
resultado: recomendable limpiar el código.
• Código basura (junk code)
– Código inútil. NOPear las instrucciones inválidas.
• Manejo de opcodes
– Código oculto entre instrucciones. Eliminar código
innecesario.
• Dado que “solo” es ofuscamiento, un reverser
determinado logrará su objetivo (aunque con un
consumo mayor de tiempo).
9. Semántica
• Cambio de instrucciones por otras que den el mismo
resultado.
• Pueden haber dos, tres o más instrucciones que se puedan
simplificar.
• Es casi imposible de SIMPLEMENTE reemplazar las
instrucciones por simples 0x90 (NOP).
10. Semántica / soluciones
• Simplificar las operaciones.
• Si existe código inservible reemplazarlo por NOPs.
11. Código basura o junk code
•
•
•
•
Código que no altera el funcionamiento.
Código sin sentido.
Saltos sin sentido.
Calculos complejos para dar un resultado sencillo que luego
no es utilizado.
• Duplicamiento de código.
12. Código basura / soluciones
• Dado que no alteran la semántica se pueden reemplazar por
NOPs.
13. Manejo de opcodes
• Si el desensamblador es engañado para mostrar
instrucciones desde un offset errado, se puede ocultar
código.
14.
15. Manejo de opcodes / soluciones
• Insertar NOPs en los opcodes inválidos.
16. Xref inválidas
• Se hace uso de técnicas no habituales para transferir el flujo
de código,.
19. Técnicas comunmente usadas
• Anti-debugging
– APIs
– Chequeo manual de estructuras
– Identificación del comportamiento del
depurador
20. Conceptos básicos
• PEB Estructura de datos que contiene gran
informacion sobre el proceso.
• HEAP Un heap es una forma de manejo de
memoria de la cual puede hacer uso una
aplicación cuando necesita reservar y liberar
memoria dinámicamente.
• HANDLE Manejador. Puntero inteligente.
Referencia objetos o bloques de memoria.
21. API 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 este flag
25. Chequeo manual de estructuras
Byte IsBeingDebugged en el PEB (FS:[30]+2).
Chequeo del ProcessHeap (localizado en 0x18 en la
estructura PEB).
Bytes Flag y ForceFlag.
26. Comportamiento del depurador
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
¿Qué podrá hacer el público después de completar este curso? Describa brevemente para cada objetivo cómo el públicoobtendrá beneficios de esta presentación.
¿Qué podrá hacer el público después de completar este curso? Describa brevemente para cada objetivo cómo el públicoobtendrá beneficios de esta presentación.
¿Qué podrá hacer el público después de completar este curso? Describa brevemente para cada objetivo cómo el públicoobtendrá beneficios de esta presentación.
Use un encabezado de sección para cada uno de los temas, de manera que la transición resulte clara para el público.
Use un encabezado de sección para cada uno de los temas, de manera que la transición resulte clara para el público.
Agregue diapositivas a cada sección del tema según sea necesario, incluidas diapositivas con tablas, gráficos e imágenes. Consulte la siguiente sección para ver una muestradiseños de vídeo, imagen, gráfico y tabla de muestra.