Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico...
Transcript of Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico...
![Page 1: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/1.jpg)
Análisis de malwareAnti-desensamblado
Gustavo Romero López - [email protected]
Updated: 11 de diciembre de 2020
Arquitectura y Tecnología de Computadores
![Page 2: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/2.jpg)
Por donde vamos...
Parte 1: Análisis básicoCapítulo 3: Análisis dinámico básico
Parte 2: Análisis estático avanzadoCapítulo 7: Análisis de programas maliciosos para Windows
Parte 3: Análisis dinámico avanzadoCapítulo 8: DepuraciónCapítulo 9: OllyDbg
Parte 4: Funcionalidad del malwareCapítulo 12: Ejecución encubiertaParte 5: Anti-ingeniería inversaCapítulo 15: Anti-desensambladoCapítulo 16: Anti-depuraciónCapítulo 17: Anti-máquinas virtualesCapítulo 18: Compresores y descompresiónParte 6: Temas especiales
1
![Page 3: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/3.jpg)
Anti-desensamblado
1. ¿Qué es el anti-desensamblado?
2. ¿Cómo derrotar a los algoritmos de desensamblado?
3. Técnicas anti-desensamblado
4. Oscureciendo el control de flujo
5. Frustrando el análisis del marco de pila
2
![Page 4: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/4.jpg)
¿Qué es el anti-desensamblado?
} Código o datos especialmente diseñados para dar lugar aun desensamblado incorrecto
} Desensamblado de idéntica secuencia de bytes:
3
![Page 5: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/5.jpg)
Desensamblado lineal I
} Desensambla instrucción por instrucción} Método empleado por la mayoría de los depuradores} Cada código de operación indica cual es la longitud de la
instrucción} Fácil de implementar y rápido de ejecutar} Puede cometer errores incluso en código no malicioso por..
◦ mezclar código y datos◦ bifurcaciones al medio de una instrucción
} Analogía: quitar los espacios en blanco: ...desola...◦ ...de sol a sol...◦ ...desolado...
} Uso habitual: añadir bytes de instrucciones largas4
![Page 6: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/6.jpg)
Desensamblado lineal II
5
![Page 7: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/7.jpg)
Desensamblado orientado a flujo
} Método empleado por la algunos depuradores y todas lasherramientas de análisis de malware
} Desensambla solo aquellas instrucciones a las que elcontrol de flujo le hace llegar
} Considera como datos al resto de la información
6
![Page 8: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/8.jpg)
Desensamblado orientado a flujo (2)
} Algunas veces incluso este método puede fallar} Se puede forzar el cambio código/datos (C/D)
7
![Page 9: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/9.jpg)
Instrucciones de salto con el mismo destino
8
![Page 10: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/10.jpg)
Instrucciones de salto con una condición constante
9
![Page 11: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/11.jpg)
Desensamblado imposible
} “byte pícaro”◦ se añade para engañar◦ puede ser ignorado
} ¿Pero y si no pudiera ser ignorado por formar parte demúltiples instrucciones?
} Ningún desensamblador produce código adecuado} El procesador no tiene ningún problema en ejecutarlo} “Apaños”: sustituir por NOPs o cambiar tipo a datos
10
![Page 12: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/12.jpg)
Desensamblado imposible (2)
11
![Page 13: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/13.jpg)
Desensamblado imposible (3)
12
![Page 14: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/14.jpg)
El problema de los punteros a función
} Los punteros a función se usan en muchos lenguajes deprogramción
} Utilizarlos de formar no estándar entorpece el análisis} Se mostrarán llamadas sin saber conectarlas a la función
llamada◦ AddCodeXref(0x4011DE, 0x4011C0, fl_CF)
◦ AddCodeXref(0x4011EA, 0x4011C0, fl_CF)
} En siguiente ejemplo se llama dos veces a la funciónsub_4011C0
13
![Page 15: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/15.jpg)
El problema de los punteros a función (2)
14
![Page 16: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/16.jpg)
Abuso del punto de retorno
} call f = jmp f + “push %eip”} El punto de retorno será la siguiente dirección de memoria
tras el call} ret = “pop %eip” + “jmp %eip”} Efectos:
◦ no se muestran las referencias cruzadas con la función◦ se deja de desensamblar la función prematuramente
15
![Page 17: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/17.jpg)
Abuso del punto de retorno (2)
16
![Page 18: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/18.jpg)
Abuso de manejador de excepción estructurado
} Otro mecanismo para enturbiar el control de flujo} Usado en muchos lenguajes} Es una lista enlazada de punteros a función} fs –> TEB –> TIB –> SEH –>
struct _EXCEPTION_REGISTRATION { DWORD prev, handler};
} Uso típico: añadirse al pricipio de la lista} La estructura se monta sobre la pila} Los desensambladores no son capaces de averiguar que
código se va a ejecutar ni por lo tanto de analizarlocorrectamente
17
![Page 19: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/19.jpg)
Abuso de manejador de excepción estructurado (2)
18
![Page 20: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/20.jpg)
Abuso de manejador de excepción estructurado (3)
} Usando la tecla C en IDA podemos convertir en código} Funcionalidad:
◦ elimina la función de la cadena SEH◦ imprime un mensaje
19
![Page 21: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/21.jpg)
Frustrando el análisis del marco de pila
20
![Page 22: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/22.jpg)
Frustrando el análisis del marco de pila (2)
21
![Page 23: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/23.jpg)
Ejercicios: Lab 15-1
Analice el programa Lab15-01.exe. Imprime el mensaje “GoodJob!” al pasarle el parámetro adecuado a través de la línea deórdenes.
1. ¿Qué técnicas emplea para evitar el desensamblado?2. ¿Qué códigos de operación usa para estropear el
desensamblado?3. ¿Cuántas veces se utiliza estas ténicas?4. ¿Qué parámetro hará que se muestre el mensaje “Good
Job!”?
22
![Page 24: Análisis de malware - Anti-desensamblado · Pordondevamos... Parte1:Análisisbásico Capítulo3:Análisisdinámicobásico Parte2:Análisisestáticoavanzado Capítulo7:AnálisisdeprogramasmaliciososparaWindows](https://reader033.fdocumento.com/reader033/viewer/2022052006/6019b1f679181143922b599a/html5/thumbnails/24.jpg)
Ejercicios: Lab 15-2
Analice el programa Lab15-02.exe. Corrija todas lacontramedidas para evitar el desensamblado antes de analizarel binario.
1. ¿Qué URL solicita el programa?2. ¿Cómo se genera la cadena del “agente de usuario”?3. ¿Qué busca el programa en la página solicitada al inicio?4. ¿Qué hace el programa con la información que extrae de la
página web?
23