¿Cómo saben los equipos de seguridad exactamente qué hace el malware y cómo detenerlo?
En un episodio reciente de Tradecraft Tuesday, me acompañó el investigador de seguridad principal Caleb Stewart para explorar el proceso de pensamiento detrás de la ingeniería inversa de malware y el valor que aporta.
Entender cómo funciona el malware es fundamental para desarrollar una mejor postura de seguridad. No solo ayuda a mejorar las medidas de defensa al aprender cómo se comporta el malware, sino que también puede dar información valiosa sobre cómo los actores de amenazas usan el malware para operar. Un ejemplo real de esto se muestra en nuestro blog reciente sobre Qakbot, cuando Huntress descubrió cómo detenerlo durante su ejecución.
Veamos los fundamentos de la ingeniería inversa de malware y cómo puedes empezar.
Los fundamentos de la ingeniería inversa de malware
Es peligroso en la jungla de internet, y detonar malware sin preparación ni consideración por la seguridad puede tener consecuencias desastrosas. En cambio, debes crear cuidadosamente un entorno seguro y aislado para tu análisis de malware.
Estos son algunos pasos simples que puedes seguir para asegurarte de estar lo más preparado posible para tu análisis.
1. Prepara tu dispositivo
- Crea una máquina virtual, ya sea localmente o en la nube.
- Descarga las herramientas que consideres necesarias para el análisis y asegúrate de que funcionen correctamente.
- ¡Crea una instantánea de tu dispositivo limpio con todas las herramientas listas!
2. Consigue el malware
- Descarga el malware directamente en tu máquina de análisis. ¡No arriesgues poner software malicioso conocido en tu computadora normal!
- Si vas a obtener la muestra de internet, considera usar VPN o Tor para minimizar la información personal que envías a la red.
- ¡No detones el malware de inmediato en tu computadora! Espera hasta el último paso.
3. Aísla tu entorno de análisis
- Esto se puede hacer de varias maneras: desconectando por completo el dispositivo de internet o restringiendo el tráfico de red mediante firewalls (nota: algunos tipos de malware pueden evadir los firewalls locales)
- Es más seguro ejecutar el malware sin conexión de red; sin embargo, puede ser necesario permitir tráfico de red para un análisis completo. Si es así, ¡asegúrate de vigilar el tráfico!
Herramientas del oficio
Existen incontables herramientas de ingeniería inversa disponibles, pero aquí te recomendamos algunas:
Desensambladores
Los desensambladores más usados son Ghidra e IDA Pro. Estas útiles herramientas leen el código máquina de un programa e intentan traducir las instrucciones a un lenguaje de programación de más alto nivel, según elijas. Los mejores desensambladores ofrecen funciones como el análisis de flujo de control, que te guía a través de los pasos que sigue el malware y evita que tengas que saltar de un lado a otro por tu cuenta.
Depuradores dinámicos
Los depuradores dinámicos tienen una funcionalidad parecida a la de un entorno de desarrollo integrado. Te permiten ejecutar el programa y pausarlo cuando quieras para inspeccionar el estado y ver los valores de las variables u otra información útil. Por lo general, es buena idea quedarte con Ghidra o IDA Pro, ya que ambos pueden hacer desensamblado y depuración dinámica.
Otras herramientas útiles
A veces te encontrarás con dificultades al intentar entender qué hace el código fuente, como cuando un programa está escrito en Golang, lo que dificulta el trabajo de la mayoría de los desensambladores porque no está construido sobre el lenguaje de programación C. Por suerte, hay otras opciones para la evaluación dinámica de una pieza de malware:
- Sysinternals Suite tiene innumerables herramientas de monitoreo para Windows, entre ellas Procmon, que te permiten ver cada acción que realiza un proceso en un equipo.
- Wireshark es un sniffer que captura el tráfico de red y puede dar información valiosa sobre la estructura de comando y control de un atacante.
- Herramientas de automatización como el uso de CAPE junto con reglas YARA de YARA para identificar y categorizar malware de forma automática.
Desafíos en la ingeniería inversa
Los hackers no quieren ponernos las cosas fáciles para entender su código. Mientras menos investigación, mejor para ellos. Es probable que encuentres algunas técnicas usadas para evitar que los molestos ingenieros inversos descubran los secretos de su fuente de ingresos, entre ellas:
- Código polimórfico y metamórfico, que permite que el código cambie su programación en cada ejecución. Estos cambios en el código fuente hacen que el análisis estático varíe de una ejecución a otra. Por lo general, es mejor hacer un análisis dinámico contra estas piezas de software, porque aunque el código fuente cambie, casi siempre el objetivo general y el estado final del malware serán los mismos.
- Las técnicas antianálisis buscan dificultar la capacidad de un ingeniero inverso para descifrar el código. Esto puede ir desde el empaquetado básico de software, que elimina fácilmente la mayoría de las cadenas de texto y la información legible por humanos en el programa, hasta técnicas interesantes parecidas al code golf, donde el hacker ofusca el código fuente. ¡Imagina ver un programa donde cada parte es la misma letra!
- Las técnicas de evasión permiten que el software detecte el entorno en el que se está ejecutando. Algunos tipos de malware pueden reconocer que estás en un entorno virtual y bloquear su ejecución. Evitar esto puede ser frustrante, ya que a menudo tendrás que poner el malware en un equipo real. Aun así, debes seguir todas las precauciones de seguridad posibles, aunque perderás la capacidad de volver fácilmente a una instantánea.
Uniendo todas las piezas
La ingeniería inversa no es tan simple como solo aplicar herramientas a un equipo y detonar tu malware. Es un enfoque metódico.
Necesitas identificar el malware y determinar qué tipo de análisis funcionará mejor. Luego, busca lo primero que hace el malware cuando empieza la ejecución. Encontrarás desafíos inesperados en el camino y necesitarás pensamiento crítico y habilidades de resolución rápida de problemas para abrirte paso entre los matices de cada muestra. Igual que en todos los aspectos de la ciberseguridad, dominar la ingeniería inversa requiere tiempo y disciplina. Puede tomar cientos de repeticiones aprender a diferenciar lo normal de lo que no lo es, pero si usas prácticas seguras y tienes algo de paciencia, ¡puedes lograrlo!