Zum Inhalt springen

FLOSS – Obfuscated String Extraction for Malware Cheatsheet

FLOSS – Obfuscated String Extraction for Malware Cheatsheet

FLOSS (FLARE Obfuscated String Solver, von Mandiant) extrahiert automatisch obfuskierte Strings aus Malware. Autoren verstecken routinemäßig URLs, Registry-Schlüssel und Befehle, so dass das klassische strings Utility nichts Nützliches findet. FLOSS geht weiter: es identifiziert Dekodierungs-Routinen innerhalb der Binärdatei, emuliert sie und recuperiert den Klartext – recovering Stack-Strings, Tight-Strings und dekodierte Strings, die statische Extraktion vermisst. Es ist ein First-Step Triage-Tool für jede Windows-Malware-Sample.

Analysieren Sie Malware nur in einer isolierten VM/Sandbox. FLOSS emuliert Code aus der Sample.

Installation

MethodeBefehl
Standalone BinaryDownload von GitHub Releases (Windows/Linux/macOS)
pippip install flare-floss
Überprüfenfloss --version

Grundlegende Verwendung

BefehlBeschreibung
floss malware.exeExtrahieren Sie alle String-Typen
floss -j malware.exeJSON-Ausgabe
floss --no static malware.exeÜberspringen Sie einfache statische Strings
floss -n 6 malware.exeMinimale String-Länge 6
floss --helpVollständige Optionsliste

String-Typen FLOSS recuperiert

TypWas es ist
StaticGewöhnliche Strings (was strings findet)
StackCharakter-für-Charakter auf dem Stack zur Laufzeit gebaut
TightIn engen Schleifen konstruiert, nie vollständig im Speicher auf einmal
DecodedErzeugt durch eine Dekodierungs-Routine (XOR, RC4, benutzerdefiniert)

Die letzten drei sind der Value-Add – sie sind unsichtbar für strings, weil sie nie als zusammenhängende Bytes in der Datei existieren.

Analyse-Typen auswählen

FlagEffekt
--only staticNur einfache Strings (schnell)
--only stackNur Stack-Strings
--only tightNur Tight-Strings
--only decodedNur emulierte/dekodierte Strings
--no decodedÜberspringen Sie die (langsame) Emulations-Phase
# Schnelle Triage: Überspringen Sie Emulation
floss --no decoded sample.exe

# Tiefpass: alles, JSON für Tooling
floss -j sample.exe > strings.json

Triage-Signale zu Grep

PatternSchlägt vor
URLs / IPsC2-Infrastruktur
HKLM\, HKCU\Persistenz via Registry
cmd.exe, powershellCommand Execution
CreateRemoteThread, VirtualAllocProcess Injection
Base64 BlobsEingebettete Payloads
.onion, Wallet-AdressenRansomware/Exfiltration
floss sample.exe | grep -iE "http|\.exe|HKLM|powershell|AppData"

Ausgabe & Integration

OptionZweck
-j / --jsonMaschinell lesbare Ausgabe für Pipelines
-v / -vvVerbose / Debug
--functions 0x401000Fokus Emulation auf spezifische Funktionen
IDA/Ghidra ScriptsAnnotierten Sie recuperierte Strings zurück in den Disassembly

Das Füttern der FLOSS-Ausgabe zurück in Ghidra als Kommentare macht die nachfolgende manuelle Analyse viel schneller.

Häufige Workflows

# Standard Malware Triage-Sequenz
floss -j sample.exe > floss.json          # Recuperieren Sie Strings
jq -r '.strings.decoded[].string' floss.json | sort -u   # Fokus auf dekodierte
# → Pivot zu Ghidra/x64dbg auf den Funktionen, die interessante Strings erzeugt haben

# Vergleichen Sie Varianten: welche Strings änderten sich zwischen Samples?
floss --no decoded a.exe > a.txt; floss --no decoded b.exe > b.txt
diff a.txt b.txt

FLOSS vs verwandte Tools

Toolrecuperiert
FLOSSStatic + Stack + Tight + Decoded (Emulation)
stringsNur zusammenhängende druckbare Bytes
capaCapabilities/Behaviors, keine Strings
Detect It EasyPacker/Compiler-Identifikation

Ein Standard Triage-Trio: Detect It Easy um Packing zu identifizieren, FLOSS um Strings zu recuperieren, capa um Capabilities aufzuzählen.

Ressourcen