LoginSignup
4
0

More than 3 years have passed since last update.

表層解析入門

Last updated at Posted at 2020-12-27

表層解析

サマリ(目的/ツール、コマンド類/アウトプットデータ)

  • ファイル形式の特定/PPEE(Win)、pestudio(Win)、trid(Win)、file(Linux)/OS、アーキテクチャ
  • ハッシュ値の取得/PPEE(Win)、pestudio(Win)、sha1sum(Linux)、ssdeep(Linux)/インジケータ
  • 文字列の抽出・難読化検出/Exeinfo PE(Win)、Detect It Easy(Win)、FLOSS(Linux)、strings(Linux)/インジケータ
  • PE解析/Resource Hacker(Win)/プログラムの挙動、内蔵されたコンテンツ

表層解析とは

解析対象となるプログラムを実行せずに情報を得る方法。
ハッシュ値やメタデータなどを取得でき短時間で情報を得られるため初動として表層解析を行い、
詳細な解析を行う上での方向性やインシデントレスポンスとしての一時措置の方針決定などの根拠として活用することができる。

ファイル形式(実行環境OS/アーキテクチャ)の特定

ファイルのヘッダに書き込まれているマジックナンバー/シグネチャ(ファイルシグネチャ)から
ファイルの実行環境OSやアーキテクチャを特定する。

ハッシュ値の取得

ファイル全体をハッシュ関数を用いてハッシュ値を取得する。得られたハッシュ値は
様々なソフトウェアやツールへの情報展開が容易となり、インジケータとなる。
また、インジケータとしてオンライン上から有益な情報を探すキーワードとなる。

類似性を用いた解析

現実的には、マルウェアはインジケータ部分が日々変化するためハッシュ値を
インジゲータとして有効活用できるライフタイムは短い。よって類似性を定量的に
算出する解析手法が有効となっている。

  • ファジーハッシュ(fuzzy Hashing)
    コンテンツ内のデータを対象に類似度を算出する。
    算出された値は類似度が高いほど算出されたハッシュ値の文字や文字の並びが近くなる。
    ファジーハッシュは概念であり、具体的な手法はツール等により違いがある。

  • インポートハッシュ(Import Hash)
    PEのインポート関数とその順序性からハッシュ値として算出する。
    同一のマルウェアであり接続先などのみ変化している場合、類似性を算出する有効的な手段となる。
    しかしながら機能追加された場合はハッシュ値が異なる特性がある。

  • セクションハッシュ(Section Hash)
    PEヘッダの各セクションを対象にハッシュ値を算出する手法。

  • impfuzzy
    インポート関数のテーブルを対象にファジーハッシュで算出する手法。
    機能追加や一部変更程度にも対応できる手法であり、類似度が近くなる。
    マルウェアファミリー、亜種などに対応できることが期待できる。

文字列の抽出

プログラムの動作に関する文字列やインジケータとなる情報を取得できる。
コーディングプログラムはASCII以外にもUnicodeを利用していることが多いため
両方を対象にデータを取得する必要がある。

FLOSS(FireEye Labs Obfuscated String Solver)を用いることにより
容易にデコードし結果を確認できる。

難読化対策

解析妨害を目的に難読化されていることが多い。難読化されたファイルをデコードする
手段としては、難読化方法を特定し最適な手段を選択する必要がある。
大きくパッカーやクリプターを用いた難読化が代表的である。
Exeinfo PEを用いることにより難読化方式などを容易に検出することができる。

パッカーはプログラムを圧縮することによりコンテンツの難読化を行う。
パッキングされたプログラムに解凍モジュールが同梱されており、モジュールを利用して
圧縮されたコンテンツをメモリ上に展開し、もとの実行形式に復元する。
パッカーとして有名なのはUPX形式である。

クリプターはコンテンツを暗号化し難読化を行う。
暗号化されたプログラムに復号モジュールが同梱されており、モジュールを利用して
暗号化されたコンテンツをメモリ上に展開し、もとの実行形式に復元する。

PE解析

Windowsの実行ファイル形式であるPEファイル形式はコンパイル時にヘッダ領域に
参照するライブラリや関数、リソースなど様々な情報を付与されるため、ヘッダから
プログラムの挙動など重要な情報を取得することが可能。
通常のプログラムは難読化されることがないため、呼び出すAPIの数があまりにも
少ない場合は難読化されている可能性が高い。

また、リソース領域にはプログラムに内蔵された別のファイルなどを取得することも可能である。
Resource Hackerを用いることにより内蔵されたファイルを抽出することが可能である。

4
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
0