Salta ai contenuti

FLOSS - Foglio di aiuto per l'estrazione di stringhe offuscate del malware

FLOSS - Foglio di aiuto per l’estrazione di stringhe offuscate del malware

FLOSS (FLARE Obfuscated String Solver, di Mandiant) estrae automaticamente stringhe offuscate dal malware. Gli autori nascondono regolarmente URL, chiavi del registro e comandi in modo che l’utility classica strings non trovi nulla di utile. FLOSS va oltre: identifica le routine di decodifica all’interno del binario, le emula e recupera il plaintext — scoprendo stringhe dello stack, stringhe strette e stringhe decodificate che l’estrazione statica manca. È uno strumento di triage del primo passo per qualsiasi campione di malware Windows.

Analizza il malware solo in una VM/sandbox isolata. FLOSS emula il codice dal campione.

Installazione

MetodoComando
Binario autonomoScarica da GitHub Releases (Windows/Linux/macOS)
pippip install flare-floss
Verificafloss --version

Utilizzo di base

ComandoDescrizione
floss malware.exeEstrai tutti i tipi di stringhe
floss -j malware.exeOutput JSON
floss --no static malware.exeSalta le stringhe statiche semplici
floss -n 6 malware.exeLunghezza minima della stringa 6
floss --helpElenco completo delle opzioni

Tipi di stringhe che FLOSS recupera

TipoCosa è
StaticStringhe ordinarie (ciò che strings trova)
StackCostruite carattere per carattere sullo stack in fase di esecuzione
TightCostruite in cicli stretti, mai completamente in memoria alla volta
DecodedProdotte da una routine di decodifica (XOR, RC4, personalizzata)

Gli ultimi tre sono il valore aggiunto — sono invisibili a strings perché non esistono mai come byte contigui nel file.

Selezione dei tipi di analisi

FlagEffetto
--only staticSolo stringhe semplici (veloce)
--only stackSolo stringhe dello stack
--only tightSolo stringhe strette
--only decodedSolo stringhe emulate/decodificate
--no decodedSalta la fase di emulazione (lenta)
# Triage veloce: salta l'emulazione
floss --no decoded sample.exe

# Passaggio profondo: tutto, JSON per gli strumenti
floss -j sample.exe > strings.json

Segnali di triage da cercare

ModelloSuggerisce
URL / IPInfrastruttura C2
HKLM\, HKCU\Persistenza tramite registro
cmd.exe, powershellEsecuzione di comandi
CreateRemoteThread, VirtualAllocIniezione di processo
Blob Base64Payload incorporati
.onion, indirizzi del portafoglioRansomware/exfil
floss sample.exe | grep -iE "http|\.exe|HKLM|powershell|AppData"

Output e integrazione

OpzioneScopo
-j / --jsonOutput leggibile dalla macchina per le pipeline
-v / -vvVerboso / debug
--functions 0x401000Metti a fuoco l’emulazione su funzioni specifiche
Script IDA/GhidraAnnota le stringhe recuperate nel disassembly

Alimentare l’output di FLOSS in Ghidra come commenti rende l’analisi manuale successiva molto più veloce.

Workflow comuni

# Sequenza standard di triage del malware
floss -j sample.exe > floss.json          # recupera le stringhe
jq -r '.strings.decoded[].string' floss.json | sort -u   # focus su decodificate
# → pivot a Ghidra/x64dbg sulle funzioni che hanno prodotto stringhe interessanti

# Confronta varianti: quali stringhe sono cambiate tra i campioni?
floss --no decoded a.exe > a.txt; floss --no decoded b.exe > b.txt
diff a.txt b.txt

FLOSS vs Strumenti correlati

StrumentoRecupera
FLOSSStatica + stack + stretta + decodificata (emulazione)
stringsSolo byte stampabili contigui
capaCapacità/comportamenti, non stringhe
Detect It EasyIdentificazione packer/compilatore

Un trio standard di triage: Detect It Easy per identificare il packing, FLOSS per recuperare le stringhe, capa per enumerare le capacità.

Risorse