Ir al contenido

FLOSS - Extracción de cadenas ofuscadas para malware

FLOSS - Extracción de cadenas ofuscadas para malware

FLOSS (FLARE Obfuscated String Solver, por Mandiant) extrae automáticamente cadenas ofuscadas de malware. Los autores rutinariamente ocultan URLs, claves de registro y comandos para que la utilidad clásica strings no encuentre nada útil. FLOSS va más allá: identifica rutinas de decodificación dentro del binario, las emula, y recupera el texto plano — descubriendo cadenas de pila, cadenas ajustadas y cadenas decodificadas que la extracción estática pierde. Es una herramienta de clasificación de primer paso para cualquier muestra de malware de Windows.

Analiza malware solo en una VM/sandbox aislada. FLOSS emula código de la muestra.

Instalación

MétodoComando
Binario independienteDescarga desde GitHub Releases (Windows/Linux/macOS)
pippip install flare-floss
Verificarfloss --version

Uso básico

ComandoDescripción
floss malware.exeExtrae todos los tipos de cadena
floss -j malware.exeSalida JSON
floss --no static malware.exeSalta cadenas estáticas simples
floss -n 6 malware.exeLongitud mínima de cadena 6
floss --helpLista completa de opciones

Tipos de cadena que FLOSS recupera

TipoQué es
EstáticaCadenas ordinarias (lo que strings encuentra)
PilaConstruida carácter por carácter en la pila en tiempo de ejecución
AjustadaConstruida en bucles ajustados, nunca completamente en memoria a la vez
DecodificadaProducida por una rutina de decodificación (XOR, RC4, personalizada)

Los últimos tres son el valor agregado — son invisibles a strings porque nunca existen como bytes contiguos en el archivo.

Selección de tipos de análisis

BanderaEfecto
--only staticSolo cadenas simples (rápido)
--only stackSolo cadenas de pila
--only tightSolo cadenas ajustadas
--only decodedSolo cadenas emuladas/decodificadas
--no decodedSalta la fase de emulación (lenta)
# Clasificación rápida: salta emulación
floss --no decoded sample.exe

# Paso profundo: todo, JSON para herramientas
floss -j sample.exe > strings.json

Señales de clasificación para grep

PatrónSugiere
URLs / IPsInfraestructura C2
HKLM\, HKCU\Persistencia vía registro
cmd.exe, powershellEjecución de comando
CreateRemoteThread, VirtualAllocInyección de proceso
Blobs Base64Cargas incrustadas
.onion, direcciones de carteraRansomware/exfiltración
floss sample.exe | grep -iE "http|\.exe|HKLM|powershell|AppData"

Salida e integración

OpciónPropósito
-j / --jsonSalida legible por máquina para pipelines
-v / -vvDetallado / depuración
--functions 0x401000Enfoca emulación en funciones específicas
Scripts de IDA/GhidraAnota cadenas recuperadas de vuelta al desensamblado

Alimentar la salida de FLOSS de vuelta a Ghidra como comentarios hace el análisis manual posterior mucho más rápido.

Flujos de trabajo comunes

# Secuencia de clasificación de malware estándar
floss -j sample.exe > floss.json          # recupera cadenas
jq -r '.strings.decoded[].string' floss.json | sort -u   # enfoca en decodificadas
# → pivota a Ghidra/x64dbg en las funciones que produjeron cadenas interesantes

# Compara variantes: ¿qué cadenas cambiaron entre muestras?
floss --no decoded a.exe > a.txt; floss --no decoded b.exe > b.txt
diff a.txt b.txt

FLOSS vs herramientas relacionadas

HerramientaRecupera
FLOSSEstática + pila + ajustada + decodificada (emulación)
stringsSolo bytes imprimibles contiguos
capaCapacidades/comportamientos, no cadenas
Detect It EasyIdentificación de empaquetador/compilador

Un trío de clasificación estándar: Detect It Easy para identificar empaquetado, FLOSS para recuperar cadenas, capa para enumerar capacidades.

Recursos