Analisis estático del Ransomware Wannacry usando SSMA
Primero vamos a descargar el ransomware WannaCry desde algun repositorio de malware y validamos con un algoritmo HASH tipo MD5 o SHA1 para validar que el archivo sea el correcto y no haya sido modificado:
- WannaCry: ed01ebfbc9eb5bbea545af4d01bf5f1071661840480439c6e5babe8e080e41aa.exe
- MD5: 84c82835a5d21bbcf75a61706d8ab549
- Size: 3514368 bytes
- Fuente: https://github.com/ytisf/theZoo/blob/master/malwares/Binaries/Ransomware.WannaCry/Ransomware.WannaCry.zip

Luego vamos usar una herramienta llamada SSMA (Simple Static Malware Analyzer) que ha sido desarrollada por un colega de Seguridad del CERT de Georgia, llamado: Lasha Khasaia, Malware Researcher / Reverse Engineer, Tbilisi.


Instalando SSMA sobre una maquina con Linux, debemos tener Python para poder correr sin problemas::
- Installar: #git clone https://github.com/secrary/SSMA
- # sudo pip3 install -r requirements.txt
- You are using pip version 9.0.1, however version 10.0.1 is available.
- You should consider upgrading via the ‘pip install — upgrade pip’ command.
- # pip install — upgrade pip
Para poder usarlo desde Kali:
- #sudo apt install pyhton3-pip ( Desde KALI)
- # sudo pip3 install -r requirements.txt
Para ejecutarlo desde línea de comando:
# python3 ssma.py -h
Como pre-requisito se necesita tener instalado: Python, PIP3, https://www.python.org/

Ahora vamos a ejecutar en análisis del ransomware utilizando SSMA, primero se valida el archivo, tipo, MD5 y SHA de acuerdo al archivo descargado luego las secciones y tiene un nivel alto de Entropia PE File: 7.995470941164686. Entropia se podría definir como una medida de la “aleatoriedad” de los datos en un archivo, medida en una escala de 1 a 8 (8 bits en un byte), donde los archivos de texto típicos tendrán un valor bajo y los archivos cifrados o comprimidos tendrá una gran medida.

Funciones, llamadas y DLLs del sistemas Operativo Windows, que frecuentemente son usadas por código malicioso:
- CreateFileA — Creates a new file or opens an existing file.
- GetTempPathW — Returns the temporary file path.
- LoadResource — Loads a resource from a PE file into memory
- LoadLibraryA — Loads a DLL into a process that may not have been loaded when the program started.
- GetProcAddress — Retrieves the address of a function in a DLL loaded into memory.
- CreateProcessA — Creates and launches a new process. If malware creates a new process, you will need to analyze the new process as well.
- FindResourceA — Used to find a resource in an executable or loaded DLL.
- CreateServiceA — Creates a service that can be started at boot time

Reglas Yara que tienen como objetivo detectar técnicas anti-depuración y anti-virtualización utilizadas por el malware para evadir el análisis automatizado.
- win_registry — Affect system registries
- win_files_operation — Affect private profile
Reglas Yara tienen como objetivo detectar empaquetadores de sofware bien conocidos, que el malware puede usar para ocultarse:
- IsPE32
- IsWindowsGUI
- IsPacked — Entropy Check
- HasRichSignature — Rich Signature Check
Dominios y correos electrónicos usados:

Reglas de Yara apuntan a detectar la existencia de algoritmos criptográficos usados por el ransomware para encriptar los archivos locales:
- CRC32, Codigo de redundancia ciclica, frecuentemente usado para validar la no alteración de los datos.
- AES Advanced Encryption Standard, algoritmo simetrico que se usa frecuentemente para encriptar.
