Strings

この記事をシェア

概要

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は悪性のものではありません)

この記事をシェア
サイバーセキュリティ
情報局の最新情報を
チェック!