práticas
Relacionado: IDOR. Netcat. FOCA. Herramientas. Forense de memoria de sistema completo.
correo josea.medina@uah.es beca incibe jose amelio uah
Clase
Cabeceras relevantes
En Windows, las cabeceras de las librerías y APIs son esenciales para interactuar con el sistema operativo. Uno de los conceptos clave en la seguridad y análisis de binarios es la diferencia entre Virtual Size y Raw Size, especialmente cuando se trabaja con packers y otros métodos de ofuscación.
Arquitectura de Windows
Llamaremos API a las funciones ofrecidas por el sistema operativo para que las aplicaciones interactúen con sus servicios.
API Nativa y DLL Hijacking
Windows tiene una API nativa proporcionada principalmente por ntdll.dll, una de las primeras capas de interacción con el kernel. A lo largo del tiempo, se han desarrollado otras API más especializadas, como:
kernel32.dll: Funciones básicas del sistema, como manejo de memoria y procesos.ole32.dll: Funciones para el modelo de objetos componentes (COM).user32.dll: Manejo de la interfaz gráfica de usuario (GUI).wininet.dll: Gestión de conexiones de red.gdi32.dll: Funciones para la representación gráfica.
El DLL Hijacking es una técnica en la que un atacante coloca una librería maliciosa en un directorio que el sistema operativo verifica antes que la ubicación original de la DLL legítima. De esta manera, cuando una aplicación carga la DLL, en realidad ejecuta el código malicioso.
Funcionamiento de las APIs de Windows
Las API de Windows se han ido ampliando a lo largo del tiempo, comenzando con ntdll.dll, que es la más baja a nivel de usuario, y luego evolucionando con otras librerías. En programación:
windows.hincluye varias de estas librerías, proporcionando acceso a la API de Windows.- Windows utiliza el modelo de comunicación COM (Component Object Model) para la interoperabilidad entre componentes de software.
En C++, los namespace ayudan a evitar colisiones de nombres entre funciones. En C, al no existir namespace, cada función debe tener un nombre único.
Técnicas de Hooking y Seguridad
Los EDR (Endpoint Detection and Response) suelen monitorear las llamadas a las API de Windows, interceptándolas mediante técnicas de hooking para detectar comportamientos sospechosos. Muchos malwares intentan utilizar funciones poco comunes o desviarse de los patrones normales para evadir detección.
Convención de nombres en Windows
En la API de Windows, las funciones siguen una convención de nombres que indica su tipo de entrada o comportamiento:
A: Función que trabaja con strings en ASCII.W: Función que usa wchar_t para cadenas en Unicode.Ex: Indica una versión extendida de la función original.
Ejemplos:
CreateFileW: Crea un archivo utilizando Unicode.WriteFile: Escribe datos en un archivo.ShellExecuteEx: Ejecuta un programa con una versión extendida deShellExecute.
Crear un archivo en Windows (CreateFileW) es equivalente a open() en sistemas Unix.
Evolución y compatibilidad en Windows
Para mejorar la portabilidad del código y unificar entornos, Microsoft ha migrado hacia C++ en sistemas como Xbox y Windows 10/11, introduciendo WinRT (Windows Runtime).
.NET facilita la ejecución de código en distintos entornos a través de una máquina virtual (CLR). Sin embargo, en su núcleo, .NET sigue dependiendo de Win32 y ntdll.dll.
Ejemplo de creación de un hilo en .NET:
new System.Threading.Thread(() => { /* Código del hilo */ }).Start();Llamadas a la API de Windows:
CreateProcessA() // Definida en processthreadsapi.h
CreateProcess() // Definida en kernel32.dll
NtCreateProcess() // Definida en ntdll.dll (nivel más bajo)NtCreateProcess es la función más cercana al núcleo del sistema operativo.
Laboratorio
Hemos modificado rsrc1, eliminando los primeros dígitos para remover ciertos bytes y convertirlo en un archivo PE válido (cuyo encabezado comienza con 5A).
Análisis inicial
-
Comprobación del tamaño
- Examinamos el Raw Size y el Virtual Size para determinar si el binario está empaquetado.
- Realizamos un análisis de entropía con PID para verificar posibles indicios de packing.
- El fast check indica la presencia de un packer.
-
Identificación de funciones sospechosas
- En el análisis de importaciones, encontramos dos librerías clave:
WS2_32.dll: Se utiliza para manejar sockets.wininet.dll: Contiene funciones para conexiones HTTP, comoInternetOpenA, que se usa para realizar peticionesGET.
- Observamos llamadas a funciones como
CreateFileyMoveFileExA.- La función
MoveFileExAes obsoleta, probablemente utilizada para evadir detección por EDR (Endpoint Detection and Response).
- La función
- En el análisis de importaciones, encontramos dos librerías clave:
Gestión de artefactos
Cada artefacto identificado será inventariado y documentado en el archivo README.
Análisis de recursos
- Durante el análisis de las DLLs, encontramos
rsrc1.dlldentro de los recursos del ejecutable. - Para hacer el binario legible, es necesario eliminar los bytes iniciales hasta recuperar una cabecera PE válida.
Herramientas utilizadas
- CFF Explorer: Para analizar el PE. Sin embargo, algunos malwares explotan vulnerabilidades en CFF Explorer para hacerlo fallar.
- PEStudio / PE-Bear: Alternativas para verificar la estructura del binario.
El malware parece haber sido diseñado específicamente para dificultar su análisis, empleando técnicas de packing y manipulación de encabezados para evadir herramientas convencionales.
Comando para procesar archivos ZIP y extraer información
Para iterar sobre archivos .zip, calcular su hash y buscar información en un archivo de texto, se usa el siguiente comando:
for i in *.zip; do
hash=$(echo $i | cut -d'.' -f1);
grep $hash ../nfo/dkjflkasdjfkldj/nems.txt | cut -d':'
doneCorrecciones:
- Se cambió
ehcoporecho. - Se corrigió la ruta de búsqueda en
grep.
Explotación de plantillas en Word
Las plantillas en Word permiten ejecutar código desde una línea, lo que puede ser aprovechado para conectarse a una ruta de Cobalt Strike, una herramienta de post-explotación utilizada en auditorías de seguridad.
Ejemplo de comando para escuchar conexiones en el puerto 445 (SMB) con netcat:
nc -l -p 445Autenticación en SMB mediante NTLM
Cuando nos conectamos a un recurso compartido mediante SMB, podemos utilizar autenticación basada en hash NTLM en lugar de contraseñas en texto claro.
Este método permite capturar los hashes con herramientas como netcat para su posterior reutilización o cracking.
Archivos OLE y macros maliciosas
Los archivos OLE (Object Linking and Embedding) contienen objetos incrustados dentro de documentos de Office y pueden almacenar macros maliciosas.
Herramientas para analizar OLE
-
olebrowse: Permite inspeccionar macros dentro de un archivo OLE. -
oledump.py:-
Extrae contenido en binario con:
oledump.py archivo.ole -s <número_de_recurso> -
Para descompilar y ver el código en texto claro:
oledump.py archivo.ole -x -S -
Esto es útil para identificar Indicators of Compromise (IoC).
-
-
olevba:- Extrae y analiza código de macros dentro de archivos OLE.
- Permite inspeccionar el código con
less.
Ejemplo de extracción de código VBA en OLE
olevba archivo.ole | lessLas macros en Office no se ejecutan por defecto, sino cuando el usuario concede permisos de ejecución.
Indicadores de compromiso (IoCs)
- Un posible IoC en procesos de Windows es
hProcess, donde la “h” representa un handle a un proceso específico.
Cobalt Strike y su uso en auditorías de seguridad
Cobalt Strike es una herramienta usada para simular ataques avanzados. Se implementa comúnmente mediante macros maliciosas o técnicas de hijacking en aplicaciones legítimas.
Análisis de binarios con radare2
Si se usa rabin2 para analizar binarios, se recomienda el flag -zzz para incluir datos adicionales más allá de la sección de datos:
rabin2 -zzz archivo.dllAnálisis de DLLs en .NET
Las DLLs en .NET rara vez exportan funciones de manera convencional, ya que están comprimidas y diseñadas para ser interpretadas por la Máquina Virtual de Windows, no por el procesador directamente.
Herramientas para analizar DLLs en .NET
- dnSpy: Depurador y decompilador de .NET.
- dotPeek: Decompilador de JetBrains.
- ILSpy (con
ilspycmdpara línea de comandos). - FLARE ILSpy: Variante de ILSpy enfocada en análisis de malware.
Para analizar sunburst.dll (relacionado con ataques avanzados), se puede usar:
dnSpy sunburst.dll
dotPeek sunburst.dllSolarWinds y monitoreo de redes
SolarWinds es una plataforma de monitoreo de infraestructura que se usa para:
- Supervisar redes y dispositivos en tiempo real.
- Detectar cambios y anomalías en tráfico de red.
- Analizar actividad de hosts y servidores. SolarWinds
CyberChef y Base64
CyberChef es una herramienta versátil utilizada para realizar transformaciones de datos de manera sencilla. Entre sus muchas funciones, permite decodificar y codificar en Base64, facilitando la manipulación de datos cifrados o codificados en este formato.
Cifrado Afín
El cifrado afín es un esquema similar a los cifrados de César y Vigenère, pero con una diferencia clave:
En lugar de simplemente desplazar caracteres (como en César) o aplicar claves de sustitución (como en Vigenère), en el cifrado afín se combinan sumas y multiplicaciones modulares.
La fórmula general para cifrar un carácter xx es:
C=(a⋅x+b)mod mC = (a \cdot x + b) \mod m
Donde:
- aa y bb son claves numéricas.
- mm es el tamaño del alfabeto (por ejemplo, 26 en el caso del alfabeto inglés).
- aa debe ser coprimo con mm para garantizar que el cifrado sea reversible.
Para descifrar, se usa la inversa modular de aa:
P=a−1(C−b)mod mP = a^{-1} (C - b) \mod m
Análisis de binarios .NET
Si queremos verificar si un binario pertenece al entorno .NET, podemos inspeccionarlo con ILSpy, un decompilador que permite analizar y visualizar el código fuente de ensamblados .NET.
Comando en ILSpy para abrir una DLL:
ilspy archivo.dllAlternativas:
- dnSpy: Para análisis dinámico y depuración de ensamblados .NET.
- dotPeek: Decompilador de JetBrains para .NET.
Captura de paquetes en un entorno de análisis con FLARE-VM y REMnux
Si estamos analizando tráfico de red en un entorno con FLARE-VM y REMnux, podemos usar Wireshark para detectar posibles comunicaciones sospechosas.
-
REMnux como gateway
- Cuando conectamos una máquina comprometida (ejemplo: con Word ejecutando una macro maliciosa), REMnux actúa como puerta de enlace.
- Esto nos permite monitorear el tráfico que pasa a través de ella.
-
Word y telemetría
- Al abrir un documento en Microsoft Word, este realiza conexiones de telemetría a servidores de Microsoft.
- Podemos capturar estos paquetes con Wireshark y analizar las solicitudes de red que realiza Word por defecto.
Ejemplo de captura con Wireshark:
wireshark -i eth0 -kAquí, eth0 es la interfaz de red que estamos monitoreando.