概要
Stringsは、Microsoft社のSysinternalsで提供されているツールの1つです。
Linuxのstringsコマンドと同様に、実行可能ファイルに含まれる文字列を抽出することができます。ASCIIおよびUnicodeの文字コードに対応しています。CLI(コマンドラインインターフェース)のツールで、Windowsのコマンドプロンプトから実行することができます。
コマンドラインの構文は以下のとおりです。
strings [-a] [-f offset] [-b bytes] [-n length] [-o] [-q] [-s] [-u] <file or directory>
各パラメータの詳細は以下のとおりです。
パラメータ | 説明 |
---|---|
-a | ASCIIのみ検索(既定はASCIIとUnicodeの両方) |
-b | スキャンするファイルのバイト数 |
-f | スキャンを開始するファイルのオフセット(位置) |
-o | 文字列の存在するファイルのオフセット(位置)を出力 |
-n | 文字列の最小長(既定値は3) |
-s | サブディレクトリの検索 |
-u | Unicodeのみ検索(既定はASCIIとUnicodeの両方) |
-nobanner | 起動時のバナーと著作権メッセージの非表示 |
マルウェア解析における利用方法
マルウェア解析の分野では、Stringsは表層解析で利用されています。マルウェアを実際に実行する必要がないため、特別な環境を用意せずとも安全にマルウェアの情報を得ることができます。
VBAダウンローダーを模したファイルに含まれる文字列(通信先)を取得する手順を以下に示します。
- コマンドプロンプトを実行する
- マクロファイルから文字列を抽出する
- CyberChefなどのツールで符号化された文字列をデコードする
詳細な手順
①コマンドプロンプトを実行する
stringsのあるフォルダーでアドレスバーに「cmd」と入力してコマンドプロンプトを実行します。もしくは環境変数のPATHにStringsフォルダーを追加し、任意の場所で実行します。
解析対象のマクロファイル(vbaProject.bin)を同じフォルダーに配置します。vbaProject.binはマクロ有効Office文書の中に含まれているファイルです。
Stringsには以下の3つのバージョンがあります。通常はstrings64.exeを使用します。
ファイル名 | 説明 |
---|---|
strings.exe | x86-32アーキテクチャ用 |
strings64.exe | x86-64アーキテクチャ用 |
strings64a.exe | arm64アーキテクチャ用 |
②マクロファイルから文字列を抽出する
パラメータに「-n 15」を設定し、vbaProject.bin に対してStringsを実行します。短い文字列の中には意味を持たないものも多く含まれるため、はじめは文字長を長めに指定して調べることを推奨します。
実行結果から以下のことがわかります。
- URLDownloadToFileA関数の使用
- Base64と思われる文字列(末尾が==)
- DecodeFromBase64関数の使用
③CyberChefなどのツールで符号化された文字列をデコードする
Base64をデコードすると通信先と思われるURLを取得できます。以上のことから、このマクロファイルがURLにある画像ファイル(.png)をダウンロードすることを推測できます。(画像のURLは悪性のものではありません)