概要
ヘキサエディターとは、ファイルを16進数(Hex)の形式で表示するエディターのことです。
バイナリファイル を扱うため、バイナリエディターと呼ばれることもあります。
代表的なヘキサエディターは以下のとおりです。
- Stirling
- BZ (Binary Editor BZ)
- 010 Editor
本記事では、Stirlingを例にヘキサエディターの利用方法を紹介します。
*1 テキスト形式ではなく、コンピューターが理解できる形式(0と1)で構成されたファイルのこと。実行形式ファイルや動画ファイルなどがこれに該当する。
マルウェア解析における利用方法
1.ファイル形式を判別する
ヘキサエディターを使用することで、ファイル形式の判別が可能です。
マルウェアは拡張子が偽装されていることがあります。ファイル先頭の数バイト(マジックナンバー)を見ることで、ファイル形式を判別することが可能です。以下の図ではマジックナンバーが4D 5A (MZ)であることから、このファイルがPE(主にWindowsで使用される形式)の実行ファイルであることが分かります。
■マジックナンバーの一例
ファイル形式 | 先頭バイト列 (HEX) | 先頭バイト列 (UTF-8) |
---|---|---|
PE実行ファイル | 4D 5A | MZ |
ELF実行ファイル | 7F 45 4C 46 | .ELF |
BMPファイル | 42 4D | BM |
PNGファイル | 80 50 4E 47 | .PNG |
GIFファイル | 47 49 46 38 | GIF8 |
PDFファイル | 25 50 44 46 2D | %PDF- |
ZIPファイル | 50 4B | PK |
Microsoft Office文書(.docx等) | 50 4B | PK |
2.プログラムを書き換える
マルウェアのバイト列を直接書き換えることでマルウェア解析妨害 解説で紹介しているさまざまな解析妨害を回避し、マルウェアを実行できるようになります。以下の例では解析妨害ルーチンにジャンプする命令コード(74 2A)を何も行わない命令コード(66 90)に書き換えることで、解析妨害ルーチンが実行されないようにしています。
3.バイナリファイルの全体構造を可視化する
一部のヘキサエディターには、バイナリファイルのバイト列を色分けして可視化できる機能が備わっています。(Stirlingでは設定 -> ビットイメージにチェック)
この機能によって、テキストデータ(スクリプトコード等)とバイナリデータ(コンパイルされたプログラムコードや画像データ等)をひと目で見分けることができます。
高度なマルウェアはステガノグラフィと呼ばれる技術を悪用して、画像等に悪性コードを隠蔽することがあります。ヘキサエディターを使うことで、隠されたプログラムコードの存在を発見できることがあります。