マルウェア解析の基礎: 表層解析とは
セキュリティを高めたい
「表層解析」って、どんなことをするんですか?
情報セキュリティ専門家
良い質問ですね。「表層解析」は、怪しい computer program を実際に動かさないで、その program が何者なのかを調べる方法です。
セキュリティを高めたい
実際に動かさないで、どうやって調べるのですか?
情報セキュリティ専門家
computer program を例えるなら、人間でいうところの顔つきや服装をチェックするようなものです。 program のデータの一部を覗いて、怪しい部分がないか、どんな種類か、などを調べます。
表層解析とは。
「表層解析」は、悪いソフトを調べる時、実際にソフトを動かさずに、ファイルに書かれている情報から、そのソフトが何をするものなのか、どんな目的で作られたのかを突き止める方法です。具体的には、「PE」と呼ばれる実行ファイルの形式情報や、ファイル内に書かれている文字列(例えば、インターネット上の住所やファイル名)を手がかりにして分析します。この方法では、実際にソフトを動かして確認するわけではないので、ソフトがどのように動くのかまでは分かりません。また、分かりにくく書き換えられたソフトの全体像を把握することも難しいです。
表層解析の概要
– 表層解析の概要表層解析とは、疑わしいファイルを実際に動作させずに、ファイルそのものが持つ情報だけを手がかりに、安全かどうかを判断する手法です。これは、例えるなら、怪しい箱を開けずに、箱の外見や表面の表示だけで中身が安全かどうかを推測するようなものです。具体的には、ファイルの種類、作成日時、ファイルの大きさ、含まれているプログラムの断片などを調べます。例えば、ファイルの種類が実行ファイルなのに、画像ファイルの拡張子がついている場合や、作成日時が未来になっている場合は、ファイルが悪意のあるものである可能性が高いと判断できます。表層解析は、ファイルの中身を詳しく調べる前に、まずは表面的な情報から危険性を推測する予備的な段階といえます。この段階で怪しいと判断されれば、より詳細な解析を行う必要があると判断されます。逆に、この段階で安全性が確認できれば、時間と労力をかけずに、安全なファイルだと判断できるというメリットがあります。
項目 | 内容 |
---|---|
定義 | ファイルを実際に実行せずに、ファイルの持つ情報だけを元に安全性を判断する手法 |
手法 | ファイルの種類、作成日時、ファイルの大きさ、含まれているプログラムの断片などを調べる |
例 | 実行ファイルなのに画像ファイルの拡張子がついている場合、作成日時が未来になっている場合 |
メリット | 安全なファイルを時間と労力をかけずに判断できる |
表層解析の利点
コンピュータウイルスなどの悪意のあるプログラムを解析する手法の中でも、「表層解析」は、プログラムを実際に実行することなく、ファイルの表面的な情報だけを調べる方法です。この方法には、幾つかの大きな利点があります。
まず第一に、解析中にプログラムが活動を始めるリスクがありません。悪意のあるプログラムは、実行されることで、コンピュータシステムに損害を与えたり、情報を盗み出したりする可能性があります。しかし、表層解析ではプログラムを実行しないため、このような危険性を回避できます。これは、セキュリティの観点から非常に重要です。
第二に、解析に必要な時間が比較的短い点が挙げられます。プログラムを実際に実行してその挙動を詳しく調べる方法と比べて、表層解析は短時間で解析を完了できます。
さらに、表層解析は自動化しやすいという利点もあります。そのため、大量のファイルを効率的に処理する必要がある場合に適しています。例えば、毎日大量のメールを受信する企業において、添付ファイルに潜むウイルスを検知する際に、表層解析は有効な手段となります。
手法 | 利点 | 説明 |
---|---|---|
表層解析 | 安全性が高い | プログラムを実行しないため、システムへの悪影響がない |
表層解析 | 解析時間が短い | 実行して挙動を調べる方法と比べて短時間 |
表層解析 | 自動化しやすい | 大量のファイル処理に効率的 |
表層解析の対象
コンピュータウイルス対策の分野では、怪しいプログラムを解析し、安全かどうかを判断する必要があります。しかし、怪しいプログラムの内部構造を詳しく調べるには、多大な時間と労力を要します。そこで、まずはプログラムの表面的な情報だけを調べる「表層解析」と呼ばれる手法が用いられます。
表層解析では、主に「PE」と呼ばれるWindowsの実行ファイル形式を対象とします。PEファイルは、Windowsで動作するプログラムの設計図のようなものであり、ファイル名や作成日時、バージョン情報といった基本的な情報に加え、プログラムの構造や使用する部品に関する情報などが記録されています。
表層解析では、これらの記録を読み解くことで、対象のプログラムが安全かどうかを大まかに判断します。具体的には、ファイル名やバージョン情報に偽りがないか、プログラムの構造に不審な点がないか、悪意のあるプログラムによく使われる部品が使われていないかなどを確認します。もし、これらの情報から悪意が疑われる場合には、より詳細な解析を行い、プログラムの危険性を評価します。
項目 | 内容 |
---|---|
手法 | 表層解析 |
目的 | 怪しいプログラムの安全性を大まかに判断する |
対象 | PEファイル (Windowsの実行ファイル形式) |
内容 | PEファイルに記録されているファイル名、作成日時、バージョン情報、プログラムの構造、使用する部品などの情報を読み解く。 |
具体的なチェック項目 | ・ファイル名やバージョン情報に偽りがないか ・プログラムの構造に不審な点がないか ・悪意のあるプログラムによく使われる部品が使われていないか |
次のステップ | 悪意が疑われる場合は、より詳細な解析を行い、プログラムの危険性を評価する。 |
ファイルの文字列情報
コンピュータで使用されるファイルは、プログラムや画像、文書など様々なデータを含んでいます。これらのファイルの中身は、コンピュータが理解できる0と1の数字の羅列で表現されていますが、特定の規則に従って解釈することで、人間が理解できる文字列を取り出すことができます。この文字列情報は、ファイルの表面的な分析を行う上で、重要な手がかりを提供してくれます。
例えば、悪意のあるプログラムが外部と不正な通信を行う際に使用するインターネット上の住所(URL)や、重要な情報を不正に解読しようとする者が設定したパスワード、さらにはプログラムの作成者を示唆するような名前や符号などが、文字列としてファイルに含まれている場合があります。
これらの文字列を抽出・分析することで、セキュリティ専門家は、ファイルが悪意のあるプログラムであるかどうか、そのプログラムがどのような動作をするのか、どのようにして拡散するのか、などを推測することができます。 また、これにより、適切な対策を講じ、被害を未然に防ぐことができるのです。このように、ファイルの文字列情報は、情報セキュリティ対策において重要な役割を果たしています。
ファイルの種類 | 文字列情報の内容例 | 情報セキュリティ上の意義 |
---|---|---|
悪意のあるプログラム | 不正な通信先URL、パスワード、作成者を示唆する名前や符号 |
|
表層解析の限界
– 表層解析の限界コンピュータウイルスや不正プログラムといった悪意のあるソフトウェアを解析する手法の一つに、表層解析があります。これは、ファイルの構造や特徴を、それを直接実行することなく調べることで、不正なプログラムが含まれているかどうかを判断する分析方法です。この手法は、比較的簡単に実施できるため、広く利用されています。
しかし、表層解析は万能なわけではありません。高度な技術を持つ攻撃者が作成した悪意のあるプログラムは、表層解析を困難にするための様々な工夫を凝らしていることがあります。例えば、プログラムのコードを人間にとって理解しにくい形に変形させることで、解析を妨害する「難読化」と呼ばれる技術や、プログラム本体を圧縮したり暗号化したりすることで、ファイルの構造を隠蔽する「パッキング」といった技術が用いられます。
こうした技術が使われた場合、表層解析だけではプログラムの全体像を把握することが難しくなります。プログラムの真の目的や動作を明らかにするためには、難読化されたコードを元の状態に戻したり、圧縮や暗号化を解除したりするなど、より高度な解析技術が必要となります。そのため、表層解析はあくまでも初期段階の分析手法と捉え、その結果だけでプログラムの安全性を判断することは避けるべきです。
項目 | 内容 |
---|---|
表層解析の概要 | ファイルを直接実行せずに、構造や特徴を調べることで悪意のあるプログラムを検出する手法 |
メリット | 比較的簡単に実施できる |
限界 | – 高度な技術を用いた悪意のあるプログラムには通用しない場合がある – 難読化、パッキングなどの技術によって解析が困難になる |
高度な解析技術の必要性 | – 難読化されたコードの復元 – 圧縮や暗号化の解除 |
注意点 | 表層解析は初期段階の分析手法であり、結果だけでプログラムの安全性を判断すべきではない |
表層解析と動的解析
コンピューターウイルスなど、悪意のあるプログラムの解析には、プログラムの構造や特徴を調べる方法と、実際にプログラムを動かしてその動きを調べる方法の二つがあります。プログラムの構造や特徴を調べる方法を「表層解析」と呼ぶのに対し、実際にプログラムを動かしてその動きを調べる方法を「動的解析」と呼びます。
動的解析では、隔離された安全な環境を用意し、その中で疑わしいプログラムを実行します。そして、プログラムがどのような情報を外部に送信するのか、どのようなファイルを新たに作るのか、コンピューターの設定情報をどのように変更するのかといった、プログラムの具体的な行動を詳しく調べます。この方法は、表層解析では見つけるのが難しい、巧妙に隠された悪意のあるプログラムを分析するのに特に役立ちます。
しかし、動的解析を行う場合は、実際に悪意のあるプログラムを実行することになるため、コンピューターやデータが危険にさらされるリスクを十分に考慮する必要があります。具体的には、仮想環境やサンドボックスと呼ばれる、コンピューターの中に隔離された安全な領域を作り、その中でプログラムを実行します。さらに、万が一、悪意のあるプログラムが隔離された領域から外に影響を及ぼそうとしても、それを検知して阻止する仕組みが必要です。このように、動的解析は有効な手段である一方、リスクと隣り合わせであることを理解しておく必要があります。
解析方法 | 説明 | メリット | デメリット |
---|---|---|---|
表層解析 | プログラムの構造や特徴を調べる | – | 巧妙に隠された悪意のあるプログラムは見つけにくい |
動的解析 | 実際にプログラムを動かしてその動きを調べる | 表層解析では見つけるのが難しい、巧妙に隠された悪意のあるプログラムを分析するのに役立つ | コンピューターやデータが危険にさらされるリスクがある |