Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
stringsifter — マルウェア解析における関連性に基づいて文字列をランク付けする機械学習ツール。 | Kitploit
ツール/GitHubGitHub/mandiant/stringsifter
リバースエンジニアリングマルウェア分析バイナリ解析機械学習
GitHubmandiant/stringsifter

stringsifter

マルウェア解析における関連性に基づいて文字列をランク付けする機械学習ツール。

リポジトリを見る
7611261ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

StringSifterは、マルウェア解析における関連性に基づいて文字列を自動的にランク付けする機械学習ツールです。

クイックリンク

  • 技術ブログ記事 - より高速なマルウェア解析のための文字列出力のランク学習
  • 発表ブログ記事 - StringSifterのオープンソース化
  • DerbyCon トーク - StringSifter: より高速なマルウェア解析のための文字列出力のランク学習
  • PyPi での StringSifter リリース

使用方法

StringSifter は Python バージョン 3.9 以上を必要とします。コードを取得し、ユニットテストを実行し、ツールを使用するには、次のコマンドを実行します:

インストール

root@kitploit:~
pip install stringsifter

開発用には、poetry を使用します:

root@kitploit:~
git clone https://github.com/mandiant/stringsifter.git
cd stringsifter
poetry install --with dev

ユニットテストの実行

StringSifter のインストールディレクトリからユニットテストを実行するには:

root@kitploit:~
poetry run tests -v

コマンドラインからの実行

pip install コマンドは、2つの実行可能なスクリプト flarestrings と rank_strings を Python 環境にインストールします。ソースから開発する場合は、pipenv run flarestrings と pipenv run rank_strings を使用します。

flarestrings は GNU binutils の strings の機能を模倣しており、rank_strings はパイプ入力を受理します。例:

root@kitploit:~
flarestrings <my_sample> | rank_strings

rank_strings は多くのコマンドライン引数をサポートしています。位置引数 input_strings は、ランク付けする文字列を含むファイルを指定します。オプション引数は以下のとおりです:

OptionMeaning

ランク付けされた文字列は標準出力に書き込まれます。ただし、--batch オプションを指定した場合は、<input_file>.ranked_strings という名前のファイルにランク付け結果が書き込まれます。

flarestrings は、既定の4文字ではなく、少なくとも min-len 文字の長さの文字シーケンスを出力するためのオプション -n (または --min-len) をサポートしています。例:

root@kitploit:~
flarestrings -n 8 <my_sample> | rank_strings

は、長さ8以上の文字列のみを出力してランク付けします。

Docker コンテナからの実行

  • リポジトリをクローンした後、コンテナをビルドします。パッケージの最上位ディレクトリから:
root@kitploit:~
docker build -t stringsifter -f docker/Dockerfile .
  • コンテナを flarestrings または rank_strings の引数付きで実行すると、それぞれのコマンドを使用できます。コンテナ化されたコマンドはパイプラインで使用できます:
root@kitploit:~
cat <my_sample> | docker run -i stringsifter flarestrings | docker run -i stringsifter rank_strings
  • または、引数なしでコンテナを実行してシェルプロンプトを取得し、-v フラグを使用してホストディレクトリをコンテナに公開します:
root@kitploit:~
docker run -v <my_malware>:/samples -it stringsifter

ここで <my_malware> には解析用のサンプルが含まれます。例:

root@kitploit:~
docker run -v $HOME/malware/binaries:/samples -it stringsifter
  • コンテナのプロンプトで:
root@kitploit:~
flarestrings /samples/<my_sample> | rank_strings <options>

すべての コマンドライン引数 は、コンテナ化されたスクリプトでサポートされています。

FLOSS 出力での実行

StringSifter は任意の文字列リストに適用できるため、ライブメモリダンプ、サンドボックス実行、難読化された文字列を含むバイナリなど、代替の情報収集ソースからインサイトを得ようとする実務者にとって役立ちます。たとえば、FireEye Labs Obfuscated Strings Solver (FLOSS) は、Strings と同じように印刷可能な文字列を抽出しますが、エンコード、パック、またはスタック上で手動構築された難読化文字列も追加で明らかにします。これは Strings のインライン置換として使用できるため、StringSifter は次のコマンドで FLOSS 出力に対しても同様に呼び出すことができます:

root@kitploit:~
$PY2_VENV/bin/floss –q <options> <my_sample> | rank_strings <options>

注意:

  1. –q 引数は、抽出された文字列のみを表示するためにヘッダーと書式設定を抑制します。追加の FLOSS オプションの詳細については、Usage Docs を参照してください。
  2. FLOSS は Python 2 を必要とし、StringSifter は Python 3 を必要とします。例のコマンドでは、floss または rank_strings の少なくとも1つに Python 仮想環境を参照する相対パスを含める必要があります。
  3. FLOSS は スタンドアロン実行可能ファイル としてダウンロードできます。この場合、実行可能ファイルは Python インタープリターに依存しないため、Python 環境を指定する必要はありません。

strings の実行に関する注意

このディストリビューションには、プラットフォーム間で予測可能な出力を保証するための flarestrings プログラムが含まれています。システムにインストールされている strings を実行する場合は、そのオプションがバージョンやプラットフォーム間で一貫していないことに注意してください:

Linux

ほとんどの Linux ディストリビューションには、GNU Binutils の strings プログラムが含まれています。「ワイド」文字列と「ナロー」文字列の両方を抽出するには、プログラムを2回実行して出力ファイルにパイプする必要があります:

root@kitploit:~
strings <my_sample>       > strs.txt   # narrow strings
strings -el <my_sample>  >> strs.txt   # wide strings.  note the ">>"

MacOS

MacOS に同梱されている一部の BSD strings はワイド文字列をサポートしていません。また、ファイル全体をスキャンするための -a オプションは、デフォルト設定では無効になっている場合があることにも注意してください。-a がないと、有用な文字列が失われる可能性があります。ワイド文字をサポートする strings を入手するには、Homebrew または MacPorts を使用して GNU Binutils をインストールすることをお勧めします。正しいバージョンの strings を呼び出すように注意してください。

Windows

strings は Windows にはデフォルトでインストールされていません。動作する strings を入手するには、Windows Sysinternals、Cygwin、または Malcode Analyst Pack をインストールすることをお勧めします。

議論

このバージョンの StringSifter は、最初の EMBER データセット に関連するサンプリングされたマルウェアバイナリからの Strings 出力を使用してトレーニングされました。順序ラベルは弱監督手順を使用して生成され、教師あり学習は、Learning-to-Rank 目的関数を持つ Gradient Boosted Decision Trees によって実行されます。さらなる技術的詳細については、クイックリンク を参照してください。現在、ラベル付きデータもトレーニングコードも利用できないことに注意してください。ただし、将来のリリースではこのアプローチを再検討する可能性があります。

課題

バグや機能リクエストの投稿には GitHub Issues を使用しています。

謝辞

  • レビューとフィードバックを提供してくれた FireEye Data Science (FDS) および FireEye Labs Reverse Engineering (FLARE) チームに感謝します。
  • StringSifter は、Philip Tully (FDS)、Matthew Haigh (FLARE)、Jay Gibble (FLARE)、Michael Sikorski (FLARE) によって設計および開発されました。
  • StringSifter のロゴは Josh Langner (FLARE) によってデザインされました。
  • flarestrings は、優れたツール FLOSS から派生しています。
ツールをダウンロード
--scores (-s)出力にランクスコアを含める
--limit (-l)出力を上位 limit 個のランク付けされた文字列に制限する
--min-score (-m)出力をスコア >= min-score の文字列に制限する
--batch (-b)バッチ処理用の strings 出力フォルダを指定する