Ethical Hacking: Malware Analysis Process

* Este post corresponde a la serie de apuntes del Learning Path «Become an Ethical Hacker» de LinkedIn Learning.
* Todos los comandos mencionados son para ser ejecutados desde Linux a no ser que se diga lo contrario.

Introducción al malware

Tipos de Malware:

  • virus: tiene como objetivo propagarse y atacar al host
  • gusano: es un tipo de virus, que se propaga a través de la red por sí sólo
  • troyano: software aparentemente legítimo que viene con malware oculto
  • spyware: extrae información del host
  • adware: como spyware pero para publicidad, pues desata popups y publicidad
  • ransomware: cifra ficheros del usuario y pide un pago por la key de descifrado

Persistencia

Uno de los objetivos del marware es asegurarse de que si el host se reinicia, el malware iniciará automáticamente. Para ello, el SO o uno de sus procesos deberá reiniciarlo.

En Windows, el malware puede escribir una entrada en el registro, en el autostart extension point. El registro tiene dos keys en las que centrárse: HKEY_CURRENT_USER y HKEY_LOCAL_MACHINE la cual require de privilegios.

Otra opción de conseguir persistencia es insertar código en los startup boot records usando Root kits, los cuales insertan el malware en el MBR o al inicio de los sectores de la partición del disco.

Finalmente se puede conseguir persistencia en Windows via DLL hijacking en la que el malware se hace pasar por una DLL que el sistema necesita cargar. Las DLL se cargan siguiendo una secuencia del PATH. La idea es que malware se haga pasar por una DLL legítima y se sitúe en un directorio que se carga antes que el DLL legítimo por el que se hace pasar.

Rootkits

La persistencia básica del malware que acabamos de ver puede ser detectada. Los rootkits esconden el malware en lo profundo del SO y no explotan vulnerabildades. Están diseñados para esconderse, operar y continuar su misión usando las funciones habituales del sistema.

El rootkit se instala, una vez penetrado el sistema objetivo, mediante un «dropper». El dropper sirve para verificar que el rootkit no exista ya, verificar si máquina es una VM y demás que servirá para decidir si la máquina es un objetivo válido o no. Si lo es, el dropper insertará el rootkit, se asegurará de que puede iniciarse tras un reinicio, y lo iniciará.

Los rootkits están diseñados para no ser detectados por los IDS. El mejor lugar para esconderse es en el kernel del SO, lo cual requiere que el rootkit esté programado como un módulo cargable del kernel (driver). Microsoft proporciona Windows DDK (driver development kit) para desarrollar módulos así. Los drivers operan en lo profundo del SO, el anillo 0 (ver «contextos» en el post de enumeración) lo cual también les otorga elevados privilegios.

Ser un proceso con privilegios elevados en el kernel le permite hacer DKOM (Direct Kernel Object Modification) para por ejemplo, esconderse en el listado de procesos que corren en el sistema, la lista de drivers, puertos abiertos, etc.

Automatizando malware con botnets

Los cybercriminales necesitan hacer ataques a gran escala, para lo cual se usan botnets. La botnet consta de un botmaster que controla múltiples sistemas C&C (Command and Control), accediendo de forma oculta a éstos, que a su vez controlan infinidad de hosts zombies infectados con backdoors.

Webs legítimas son comprometidas y usadas para C&C y posteriormente descartadas y reemplazadas por otras. Cuando ésto ocurre, tanto los zombies como el botmaster necesitarán encontrar el nuevo C&C mediante un algoritmo de generación de dominios que permite al malware saber qué URLs/IPs pueden estar activas en el futuro.

Virus construction kits

Se tratan de programas que permiten a un usuario crear viruses sin necesidad de picar código. Pueden tener una GUI con un menú en el que ir configurando el virus o directamente permitir usar un fichero de configuración.

Hay muchos kits pero de los primeros fueron GenVir Kit, Virus Creation Lab y su variante Phalcon o en cuanto a botnets el propio Zeus Builder o Spy Eye Builder.

Construyendo malware moderno

FireCrypt es un malware actual (2017) con doble propósito: DDOS y ransomware. Fué creado con un malware builder llamado BleedGreen. Se presenta como un fichero PDF o Word ligeramente modificado que al ejecutarse en Windows mata el Task Manager y cifra los ficheros de usuario con AES-256.

Hay incluso malware builder para Android, llamado TDK (Trojan Development Kit), que corre como una app en teléfonos Android y permite crear los troyanos desde el propio teléfono.

En resumen, gran parte del malware hoy en día se crea a través de los builders existentes.

El repositorio MITRE ATT&CK

Mitre provee un repositorio de técnicas y tácticas de ataque que se han usado para infiltrar malware. También tiene un listado de organizaciones de cybercriminales.

Detección de malware

La mayoría de sistemas usan firmas basadas en hashes de malwares ya conocidos para detectar instalaciones o intentos de intrusiones.

Indicator of Compromise (IOC) es una firma de malware más avanzada, como uno o más hashes md5, nombres de dominio de C&C, direcciones IP maliciosas o entradas en el registro que se saben son usadas por malware. Los IOC facilitan compartir información sobre malwares conocidos.

Stix y TAXII son dos estándares diseñados para dar soporte al intercambio automático de información sobre amenazas. Stix define la información de la amenaza y TAXII el cómo se comunica esta información, que puede usarse para los IOC.

Los IOC sin embargo, son insuficientes para prevenir las amenazas de hoy. Por otra parte, los Indicator of Attacks (IOA) se centran en detectar los métodos e intentos de ataques en lugar de en el marware o el exploit usado.

El cyber hunting es la búsqueda de señales de intrusión, que se suele hacer a mano. Están apareciendo soluciones de última generación como Darktrace para su automatización.

Algunos ataques no tienen una firma específica que pueda ser detectada, pero se comportan de una forma que podría ser detectada como actividad maliciosa. Para ésto último, existen los Anomaly Detection System (ADS).

Hay firewalls avanzados que monitorizan el tráfico (usando filtros de firmas conocidas) y ante indicios de software malicioso lo ejecutan en un entorno cloud de sandboxing para analizarlo y verificar si se trata de una amenaza. Ejemplos son SonicWall High End, Sophos Sandstorm o WatchGuard APT Blocker.

Técnicas avanzadas

El malware puede hacer uso de técnicas de ofuscación para esconder el código malicioso, por ejemplo enmascarando ese código con XOR y volviendo a pasarle XOR al inicio de la ejecución. Puede ser útil cargar el malware en x64dbg para debugar su funcionamiento.

Hay dos categorías de malware que pueden cambiar su binario a medida que se propaga:

  • Polimórfico: consta de un de-ofuscador que elimina la capa de ofuscación o cifrado y que se mantiene siempre igual, y del malware ofuscado que es quien cambia. Una vez ejecutado, el malware se vuelve a esconder o a cifrar con una clave de cifrado diferente antes de propagarse a otro host.
  • Metamórfico: el código cambia con cada iteración. Contiene el payload con el malware y un motor mórfico, que es quien re-escribe el código.

EternalBlue es un exploit de la NSA que fue liberado por el grupo Shadow Brokers, usado como base para muchos malwares como WannaCry.

Una buena fuente de información sobre APTs (Advanced Persistance Threats) es Kaspersky Lab. Los APTs son una forma sofisticada de malware y habitualmente se suele tardar meses en detectarlos, hasta que no intentan conectar con su C&C

Reverse Engineering Malware

Reverse engineering es la técnica que reconstruye el código de la aplicación a partir de un ejecutable. Requiere de buenos conocimientos de lenguajes de bajo nivel, criptografía y paciencia, así como de un entorno de sandbox robusto que prevenga interacciones externas por parte del malware (por ejemplo un entorno sin conexión a internet, fuera de tu red habitual). Se trata de la fase más complicada en el análisis de malware.

La herramienta preferida para desmontar código creando mapas de los caminos de ejecución es IDA, que además permite debugar y es extensible. Para el análisis interactivo es mejor el debugger x64dbg.

Hay muchos sandboxes que automatizan el análisis de malwares como cuckoo y múltiples sites con ejemplos de malware como virusshare o malware-traffic-analysis.

Hybrid Analysis es una herramienta online para el análisis de malware e incluye tanto el análisis estático como dinámico. Usa el analizador Falcon Sandbox para relizar el análisis dinámico del malware.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.