ブログ(脅威調査)

オープン・ソース:StringSifter

マルウェア・アナリストは、静的解析においてバイナリに含まれる文字列を検査するために、Stringsプログラムを定期的に使用します。ただし、関連する文字列を手作業で識別することは時間がかかり、間違いやすい作業です。大きめのバイナリでは数千以上の文字列が生成され、アナリストをすぐに疲弊させます。そのうえ、関連性のある文字列は、そうでないものよりも発生頻度が低く、「関連性のある」という定義もアナリスト個人個人で著しく異なることがあります。誤りがあると、マルウェア解析に費やす全体所要時間を短縮できるかもしれない手がかりを見逃したり、最悪な場合、不完全または不正確な結論を導き出す可能性があります。

FireEye Data Science(FDS)とFireEye Labs Reverse Engineering(FLARE)チームは、これらの問題を解決するために、文字列を自動的に格付けする機械学習モデルを説明したブログ記事を公開しました。そして、2019年9月7日、FireEyeの開発チームは、マルウェア解析の関連性に応じて文字列を識別して優先順位を付けるユーティリティ、StringSifterの一部として、この機械学習モデルを公開しました。

達成目標

StringSifterは、Stringsプログラムの下流に位置するように作られています。文字列の一覧を入力とし、マルウェア解析の関連性に基づいて格付けされたリストを出力します。これは、アナリストの作業を容易にすることを目的とし、アナリストは予測された出力の上位に位置する、最も関連性の高い文字列だけに注力することができます。StringSifterは、ユーザーのマルウェア解析スタックにシームレスに統合できるように設計されています。GitHubリポジトリをコピーしてローカルにインストールしたら、以下のとおり、デフォルト引数を指定して、コマンドラインで簡単に呼び出すことができます。

strings <sample_of_interest> | rank_strings

また、移植性とユーザビリティを高めるため、Dockerコマンド・ライン・ツールも提供しています。オプション引数を指定する方法など、StringSifterの詳しい使い方については、GitHub上のREADMEファイルを参照してください

StringSiferは、FireEyeのリバースエンジニア、SOCアナリスト、レッド・チーム担当者、インシデント対応担当者から、内部的に非常に良い評価を受けました。うれしいことは、FireEyeトレーニング・コースの一部として初めてマルウェア解析する初心者から、最前線から入手するサンプルを調査する専門家のマルウェア研究者までが、このツールが役に立つと認識していることです。StringSifterを公開することで、さまざまなユーザー層、ユースケース、独創的な下流アプリケーションで活用されることを望みます。今後のリリースに向けて、フィードバックをぜひお寄せください。ツールの正確性や有用性の向上に役立てさせていただきたいと思います。

結論

StringSifterは、2019年9月7日、DerbyConでのプレゼンテーションと同じタイミングでリリースされました。また、10月に開催される「Applied Machine Learning for Information Security」のカンファレンスでは、このモデルを技術的に深く掘り下げる予定です。このリリースによってStringSifterは、FireEyeが公開用に選択した最近の多数のマルウェア解析ツールの1つとして、FLARE VMFakeNetCommandoVMと肩を並べることになるでしょう。不正な活動を見つけやすくし、セキュリティ・コミュニティに役立つデータ主導ツールの開発に関心を持たれましたら、採用情報のページから応募して、FDSまたはFLAREチームの一員になってください。

本ブログは、米FireEyeが公開した「Open Sourcing StringSifter」(英語)の日本語抄訳版です。

日本語版:Reviewed by Takahiro Sajima