Módulo 4
Análisis estático
Última actualización en: 5 Septiembre 2024
Editar esta página en GitHubMódulo 4
Última actualización en: 5 Septiembre 2024
Editar esta página en GitHubEl análisis estático es el proceso de desensamblar un archivo binario para comprender qué hay dentro de él. Es bastante laborioso y requiere conocimientos de ingeniería de software. Por esta razón, la mayoría de los analistas preferirán hacer un análisis dinámico (en el que nos centramos en el subtema 3) en su lugar. Hay varias razones por las que es posible que desee hacer un análisis estático, incluso cuando el análisis dinámico no está dando buenos resultados o si no desea que un adversario potencial sepa que está en posesión y analizando el archivo.
Este subtema analiza una habilidad muy avanzada y las guías a las que se vincula tomarán un tiempo considerable en completarse. Si actualmente no tiene tiempo para concentrarse en ello y, en cambio, desea averiguar qué hacer con los resultados del análisis dinámico, vaya al Subtema 5.
Después de completar este subtema, el profesional debe ser capaz de realizar lo siguiente:
El análisis estático es el proceso de determinar información sobre un malware sin ejecutarlo. Técnicamente, el análisis básico de archivos que realizó anteriormente es una forma de análisis estático. Sin embargo, generalmente nos referimos al análisis estático de malware como el aprendizaje sobre las acciones que realizará el malware. Esto generalmente implica tomar un programa binario compilado, descompilarlo y luego leer el código resultante. Una alternativa es el análisis dinámico, cuando se ejecuta el malware y luego se observa su comportamiento.
El análisis estático tiene algunas ventajas sobre el análisis dinámico. En primer lugar, dado que no ejecuta el malware, es menos probable que se infecte (y hay casos raros de malware que pueden escapar de una máquina virtual o sandbox). Además, si no ejecuta el malware, es poco probable que avise a los actores de amenazas de que se ha descubierto su malware. Además, el malware sofisticado puede intentar descubrir si se está analizando cuando se ejecuta. Si determina que se está analizando, puede cambiar su comportamiento, lo que lleva a un posible análisis incorrecto.
Por otro lado, el análisis estático puede llevar mucho tiempo y ser difícil, y los autores de malware pueden utilizar una variedad de técnicas de ofuscación (como el cifrado, el empaquetado y la descarga dinámica de etapas posteriores) para dificultar el análisis estático.
Si bien gran parte del enfoque en esta ruta de aprendizaje está en el análisis estático de programas binarios compilados, tenga en cuenta que mucho malware es más fácil de analizar, ya que está escrito en HTML/JavaScript, lenguajes de scripting de shell, etc.
Para comenzar en el análisis estático de Windows, dejaremos de lado REMnux y pasaremos por un conjunto de tutoriales sobre ingeniería inversa de malware de Windows. Este tutorial incluye un poco de análisis dinámico, pero se centra en gran medida en el análisis estático. Para mayor coherencia, debe realizar los ejercicios que se describen a continuación. Recuerde que, si encuentra alguna herramienta que le guste que no forme parte de REMnux, puede agregarla a su REMnux VM. (También puede comenzar de nuevo en cualquier momento con una máquina virtual en blanco, si lo desea.)
Ingeniería inversa de malware de Windows 101
GratisUn curso excelente y completo sobre malware de Windows de ingeniería inversa. Tenga en cuenta que estos ejercicios son una introducción no suave, es posible que tenga que estudiar más (recursos a continuación) para comprender ciertos ejercicios. Pueden tardar varios días en completarse.
Ingeniería inversa de malware de Windows 102
GratisUn curso excelente y completo sobre malware de Windows de ingeniería inversa. Tenga en cuenta que estos ejercicios son una introducción no suave, es posible que tenga que estudiar más (recursos a continuación) para comprender ciertos ejercicios. Pueden tardar varios días en completarse.
Cursos OpenSecurityTraining2
Gratis, pago con el apoyo del instructorCursos que proporcionan una inmersión muy profunda en la arquitectura del sistema de bajo nivel y la reversión.
Reversión de Windows con x64dbg
GratisEsta serie de videos se centra específicamente en el uso de x64dbg, una herramienta de depuración de código abierto, para revertir el malware de Windows
Mientras que el software de Windows generalmente se escribe en ensamblador x86 o x64, los binarios en Android generalmente se dirigen a una máquina virtual llamada Android Runtime (ART), que es similar a la Máquina Virtual Java. Este bytecode ART generalmente se puede invertir automáticamente en Java, a diferencia del bytecode x86/x64, que generalmente solo se puede invertir en assembly. Antes de entusiasmarte demasiado, ten en cuenta que hay muchas herramientas de ofuscación que pueden hacer que el código Java de ingeniería inversa sea casi ilegible, y también Android admite código nativo a través de la biblioteca NDK. Tenga en cuenta que la mayoría de los dispositivos Android tienen arquitecturas basadas en ARM, no x86/x64, por lo que deberá aprender ARM assembler para realizar ingeniería inversa en la mayoría del código nativo de Android que probablemente encuentre.
También puede encontrar el lenguaje de programación Kotlin cuando aprenda sobre Android. Tanto Kotlin como Java compilan con el mismo bytecode, y son muy similares a bajo nivel. Al realizar un análisis estático en una aplicación Android, el lenguaje de programación original no debe ser significativo. Recomendamos centrarse en Java, porque los descompiladores disponibles convierten el ART en Java, no en Kotlin.
Al igual que con la sección de análisis estático de Windows, esta sección sobre el análisis estático de Android está anclada a un curso excelente y completo, pero no suave. Es probable que deba realizar estudios adicionales para comprender el material en el curso primario.
Aplicación Android Ingeniería Inversa 101
GratisUn curso excelente y completo sobre aplicaciones de ingeniería inversa para Android. Tenga en cuenta que estos ejercicios son una introducción no suave, es posible que tenga que estudiar más (recursos a continuación) para comprender ciertos ejercicios. Pueden tardar varios días en completarse. Los siguientes recursos pueden ayudarlo a desarrollar secciones del curso.
Cómo analizar de forma estática una aplicación Android sospechosa
GratisUna excelente introducción intermedia al análisis estático de las aplicaciones de Android.
Curso Learn Java de Codecademy
GratisUna introducción básica a Java. Tendrás que entender Java para poder trabajar con programas Android.
Crea tu primera aplicación para Android en Java
GratisUn curso básico sobre creación de aplicaciones de Google. Esto debería darte una idea de cómo funcionan las aplicaciones de Android y prepararte para aprender sobre las funciones internas de Android.
Siéntese con un compañero o un mentor que tenga una experiencia significativa en la investigación pasiva contra servidores en Internet. A continuación:
¡Felicidades por terminar Módulo 4!
Marque la casilla para confirmar su finalización y continúe al siguiente módulo.
Marca el módulo actual como completado y guarda el progreso para el usuario.
Has completado todos los módulos en este camino de aprendizaje.