ブログ(脅威調査)

マルウェアのデバッグ内容の決定的な調査資料  第1部:PDBパスとマルウェア

マルウェア作成者の考え方を知りたいと思ったことはありますか?ツールをどうやって作成するのか。開発プロジェクトをどのように編成しているか。どのような種類のコンピュータやソフトウェアを使用しているか。このブログでは、マルウェアのデバッグ情報を調べることで、このような質問のいくつかに回答してみようと思います。

マルウェア開発者は、自分のフォルダーやコード・プロジェクトに意味のある名前を付けることがわかっており、開発中のマルウェアの機能を記述することがよくあります。したがって、これらの記述名は、マルウェア・プロジェクトがデバッグシンボル付きでコンパイルされるとPDBパスに現れます。デバッグ情報はマルウェア開発環境への知見、つまりマルウェアがどこでどのように開発されたかについて、細かくとも重要な情報を提供してくれます。この新しい知見を用いることで、PDBパスや他のデバッグ情報の一部を元に、悪意のある活動を検知することができます。

この記事は、Twitterに触発された記事シリーズの第1部で、PDBパス、マルウェアとの関係、そして、これらが防御と攻撃の両方のオペレーションにどのように役立つかについて解説します。

人間とコンピュータの規約

デジタル記憶装置システムは、我々の世界に革命をもたらしました。しかし、保存されたデータを利用したり、効率的に取り出すためには、データを上手に整理しなければなりません。ユーザーは、ディレクトリ構成を慎重に作り、ファイルおよびフォルダーに一意の記述名を付けます。たいてい、その名前は内容に基づいています。コンピュータは、ユーザーに、データの種類や役割、目的等に基づいてデータにラベル付けし、注釈を付けるよう指示します。この「人間とコンピュータの規約」により、ほとんどのデジタル・コンテンツには何らかの説明的な側面を持っている、つまり多くのファイルには記述された「特徴」があるということです。それはマルウェア・ファイルも例外ではありません。

FireEyeはさまざまな角度から検知とハンティングにアプローチしますが、FireEyeのアドバンスト・プラクティス・チームの場合、「微弱信号」に活用することが多いです。些細なことで、それそのものは悪いわけではありませんが、珍しいまたは個性的で、マルウェアの識別に十分に役立つであろう属性を探すよう心がけています。FireEyeでは条件付きルールを作成し、条件を満たしたときには、ファイル・オブジェクトやプロセスなどのデータの一部が何らかの変則的あるいは興味深い特徴を持っていることを示す「微弱信号」となります。これらの特徴はたいてい、攻撃者の方法または手口の二次的な結果であり、マルウェア開発者または侵入攻撃のオペレーターによって行われた意図的な選択を表します。これらの特徴すべてが意図的にもたらされたわけではなく、防御側が気付くことを想定していないことは確かです。これは、コンパイル・プロセスの結果、すなわち開発環境を記述するマルウェアに残された痕跡として記述されるPDBパスに特に当てはまります。

結論

ここまで、これはすべてばかげたことと考えていたなら、心配はいりません。そう思うことは不思議ではないからです。PDBパスは、実際には、やや的外れなファイル属性です。実行ファイル内にこれらのパスが存在すること自体は決して悪いことではありません。しかし、これらのパスがマルウェアに存在する場合はたいてい、攻撃者の運用的瑕疵を示します。PDBパスに基づいてマルウェアを検出するアイデアは、着用している帽子の種類で、ある人が強盗かどうかを判別するようなものです。

FireEyeはPDBパスを元にマルウェア・ファミリーをまとめたり、マルウェア開発者を追跡したりしてきました。PDBパスを総合的に研究し始めたとき、多数のマルウェア作成者がフォルダーやプロジェクト・ファイルに同じ命名規則を多用していたことに気付いたからです。彼らは、マルウェア自体の機能を元にマルウェア・プロジェクトを命名し、プロジェクトには意味のあるラベルを付けていました。

多数のマルウェア作成者やオペレーターはマルウェア自体の機能を記述したPDBパスを流出させ、開発状況への知見を私たちに与えていることにFireEyeは気づきました。さらに、マルウェア開発ファイルや開発環境の記述子とは別に、PDBファイルが存在する場合、FireEyeは、状況的に興味深いと考えられるファイルの特定に役立つ特徴を確認しました。レッドチームや攻撃側のオペレーターにとっては、隠蔽や撹乱のために、PDBパスを偽るなどの改善の余地があると言えます。

FireEyeとしては、PDBパスがあれば、そこから情報を絞り出すことができると考えています。約2200個の名前の付いたマルウェア・ファミリー(41のAPTと10のFINグループからのすべてのサンプル、および数百万個の未分類の実行可能ファイルを含む)の調査では、約5%の確率でPDBパスがマルウェアに存在することがわかっています。悪さをしない特徴を使用して、5%以上のマルウェアを検知するための「バックアップ・プラン」があるとしたら、すばらしいと思いませんか?

PDBパス分類の効率化にむけた将来の作業

ConventionEngineルール・パックを用いたPDBパス・キーワード、用語および特徴検出の作業は楽しく、これをなくしては見つからなかったであろうマルウェアを多数検出しました。しかし、マルウェアには、このような明白なキーワードがないPDBパスが数多くあるため、これまでのような非常に手間のかかる手作業はとても効率的とは言えません。

このブログシリーズの第2部では、PDBパス属性の汎用化と分類を効率的に行うソリューションを検討します。我々はデータ・サイエンスに基づいた手法の方が、特徴的なPDBパスを取り出すのにより良いアプローチであり、ルールを使わない分類ソリューションに移行することを可能にするものだと考えています。ご期待ください!

推奨する記事とリソース

Inspiring Research
Debugging and Symbols
Debug Directory and CodeView
Debugging and Visual Studio
PDB File Structure
PDB File Tools
ConventionEngine Rules

 

本ブログは、米FireEyeが公開した「Definitive Dossier of Devilish Debug Details – Part One: PDB Paths and Malware」の要約版です。技術詳細を含むブログ全文は英文記事をご参照ください。

日本語版:Reviewed by Takahiro Sajima