コンテンツにスキップ

FLOSS - マルウェア用 難読化文字列抽出 チートシート

FLOSS - マルウェア用 難読化文字列抽出 チートシート

FLOSS (FLARE Obfuscated String Solver、Mandiant製)は、マルウェアから難読化された文字列を自動的に抽出する。著者は定期的にURL、レジストリキー、コマンドを非表示にし、古典的なstringsユーティリティはまったく役に立たない結果を見つける。FLOSSはさらに進む:バイナリ内のデコード処理を特定し、それらをエミュレートし、プレーンテキストを回復 — 静的抽出では見ることができないスタック文字列、タイト文字列、デコード文字列を表示する。これはWindowsマルウェアサンプルのトリアージの最初のステップツール。

マルウェアは分離されたVM/サンドボックスでのみ分析する。FLOSSはサンプルからコードをエミュレート。

インストール

方法コマンド
スタンドアロン バイナリGitHub Releasesからダウンロード (Windows/Linux/macOS)
pippip install flare-floss
確認floss --version

基本使用法

コマンド説明
floss malware.exeすべての文字列タイプを抽出
floss -j malware.exeJSON出力
floss --no static malware.exeプレーン静的文字列をスキップ
floss -n 6 malware.exe最小文字列長 6
floss --help完全なオプション一覧

FLOSS が回復する文字列タイプ

タイプ何か
静的通常の文字列 (stringsが見つけるもの)
スタック実行時にスタック上に文字単位で構築
タイトタイトループで構築され、一度にメモリ全体に存在しない
デコード済みデコード処理 (XOR、RC4、カスタム)によって作成

最後の3つは価値追加 — stringsでは見ることがないなぜなら、ファイルに連続バイトとして存在しないから。

分析タイプの選択

フラグ効果
--only staticプレーン文字列のみ (高速)
--only stackスタック文字列のみ
--only tightタイト文字列のみ
--only decodedエミュレート/デコード文字列のみ
--no decodedエミュレーションフェーズをスキップ (遅い)
# 高速トリアージ:エミュレーションをスキップ
floss --no decoded sample.exe

# ディープパス:すべて、ツール用JSON
floss -j sample.exe > strings.json

トリアージシグナル グレップ

パターン示唆
URL / IPC2インフラストラクチャ
HKLM\HKCU\レジストリ経由で永続性
cmd.exepowershellコマンド実行
CreateRemoteThreadVirtualAllocプロセスインジェクション
Base64 ブロブ埋め込みペイロード
.onion、ウォレットアドレスランサムウェア/流出
floss sample.exe | grep -iE "http|\.exe|HKLM|powershell|AppData"

出力と統合

オプション目的
-j / --jsonパイプライン用のマシン読み取り可能出力
-v / -vv詳細 / デバッグ
--functions 0x401000特定の関数にエミュレーション焦点
IDA/Ghidra スクリプト回復した文字列を逆アセンブリに戻して注釈付け

FLOSSの出力をGhidraにコメントとして戻すことで、その後の手動分析がはるかに高速化される。

共通のワークフロー

# 標準マルウェア トリアージシーケンス
floss -j sample.exe > floss.json          # 文字列を回復
jq -r '.strings.decoded[].string' floss.json | sort -u   # デコード済みに焦点
# → 興味深い文字列を生成した関数で Ghidra/x64dbg にピボット

# バリアント比較:サンプル間で変更された文字列?
floss --no decoded a.exe > a.txt; floss --no decoded b.exe > b.txt
diff a.txt b.txt

FLOSS vs 関連ツール

ツール回復
FLOSS静的+スタック+タイト+デコード (エミュレーション)
strings連続するプリント可能バイトのみ
capa能力/動作、文字列ではない
Detect It Easyパッカー/コンパイラ識別

標準トリアージトリオ:Detect It Easyでパッキングを識別し、FLOSSで文字列を回復し、capaで機能を列挙。

リソース