
Malpedia内のアンパック済み・ダンプ済みサンプルすべてにFLARE flossを適用し、さらに利用しやすいように前処理しました。
このリポジトリには、Malpedia 内のすべてのアンパックおよびダンプされたサンプルに FLARE FLOSS ツール を適用し、さらに利用するために前処理した結果が含まれています。
このコレクションは定期的に更新する予定です。
今年 2026 年 1 月の最後の実行では、2.136 のマルウェアファミリに関連する 9.202 ファイルが処理されました。
FLOSSing の結果、61.135.522 の生の文字列が抽出され、クリーニングと重複排除の結果、5.666.515 の一意な文字列にまで削減されました。
展開後、コレクションのサイズは約 1300 MB です。
文字列コレクションは JSON ディクショナリとして提供され(フォルダ data を参照)、3 つのセクションがあります:
about: ファイルヘッダのようなもので、このコレクションに関するメタデータを含みます。family_to_id: Malpedia にあるファミリ ID とファミリ名のマッピング(一部のライブラリを含む)。strings: 実際のデータで、文字列をキーとし、値が追加情報を含むディクショナリです。簡単に言うと、データは次のようになります:
{
"about": {
"author": "Daniel Plohmann // daniel.plohmann<at>fkie.fraunhofer.de",
"date_flossed": "2026-01-06",
"date_published": "2026-01-06",
"floss_version": "floss v3.0.1-0-g3782dc9",
"info": "This collection contains the output of applying the FLARE team's floss tool to all unpacked+dumped samples in Malpedia, with additional information in which families the respective string was found, along with its extraction method and encoding. Processing has been applied to reduce the number of mistakenly extracted data strings with no real value to further analysis, FLOSS QUANTUMSTRAND and own tagging has been applied to enrich the output.",
"license": "Creative Commons BY-SA 4.0",
"num_input_strings": 61135522,
"num_filtered_input_strings": 26844200,
"num_malware_families": 2136,
"num_samples_flossed": 9202,
"num_tagged_strings": 2421776,
"num_unique_strings": 5666515,
"reference": "malpedia.caad.fkie.fraunhofer.de/",
"source": "https://github.com/malpedia/malpedia-flossed"
},
"family_to_id": {
"elf.anchor_dns": 1121,
"elf.angryrebel": 1393,
"elf.babuk": 899,
...
"win.zupdax": 1328,
"win.zxxz": 1732,
"win.zyklon": 689
},
"strings": {
...
"Mozilla/4.0 (compatible; MSIE 6.0; Win32)": {
"encodings": [
"ASCII"
],
"families": [
79,
272,
683,
914,
918,
1000,
1572
],
"family_count": 7,
"methods": [
"static"
],
"string": "Mozilla/4.0 (compatible; MSIE 6.0; Win32)",
"tags": [
"user-agent"
]
},
...
可能なエンコーディングは ASCII と UTF-16LE で、メソッドは FLOSS の抽出メソッド decoded、stack、static、tight、language を指します。
タグは、独自のヒューリスティックセットと、FLOSS の QUANTUMSTRAND 開発ブランチにあるメソッドおよびデータに基づいて導出されています。
巨大な JSON ファイルを毎回解析する代わりに、ルックアップを可能にする Docker 化された Web サービスを提供しています。
API バックエンドに falcon を使用し、waitress を通じて WSGI 化され、デプロイメントでは nginx を介してプロキシされています。
レイアウトは awesome-compose に基づいていますが、falcon および waitress での使用に合わせて更新・適応されています。
このサービスは、GET リクエストによる単一ルックアップと POST リクエストによる複数ルックアップをサポートしています:
$ curl https://strings.malpedia.io/api/query/FIXME
{"status": "successful", "data": [{"encodings": ["ASCII"], "families": ["win.kins", "win.vmzeus", "win.zeus_sphinx", "win.citadel", "win.ice_ix", "win.murofet", "win.zeus"], "family_count": 7, "methods": ["static"], "string": "FIXME", "tags": [], "matched": true}, {"matched": false, "string": "NOT_FLOSSED"}]}
$ curl -X POST https://strings.malpedia.io/api/query --data '"FIXME","NOT_IN_THE_DATABASE"'
{"status": "successful", "data": [{"encodings": ["ASCII"], "families": ["win.kins", "win.vmzeus", "win.zeus_sphinx", "win.citadel", "win.ice_ix", "win.murofet", "win.zeus"], "family_count": 7, "methods": ["static"], "string": "FIXME", "tags": [], "matched": true}, {"matched": false, "string": "NOT_IN_THE_DATABASE"}]}
サービスとの対話方法については、デモ Python スクリプト を参照してください。
また、このサービスの公開インスタンスを strings.malpedia.io でホストしています。
Web サービスのドキュメントはこちらです。
この文字列コレクションの良いユースケースはバイナリ解析ツールにおけるものと思われるため、それを示す IDA Pro、Ghidra、Binary Ninja 互換のプラグインを構築しました:
3 つのプラットフォームすべてで同時に動作させるために、hyara をベースにした gui-plugin-template を使用しています。
プラグインのインストールと設定方法については、ドキュメント を参照してください。
Malcat 用のインテリジェンスプラグインを追加しました。このプラグインは、指定されたバイナリ内のすべての文字列を検索し、結果をカスタム Kesakode 結果としてレンダリングします。
インストールするには、./plugins/malcat/MalpediaFlossed.py にあるファイルを Malcat の data/intelligence フォルダに配置するだけです。
デフォルトでは、公開 strings.malpedia.io インスタンスがルックアップに使用されますが、独自のエンドポイントを定義することもできます。
/api/query/<needle> の適切なデコード、contains クエリの機能を追加データは CC BY-SA 4.0 ライセンス の下でリリースされており、商用利用が可能です。