セキュリティアカデミー『 コンピュータ・フォレンジックにおける文字列の検出 』 - 適宜覚書-Fragments

セキュリティアカデミー『 コンピュータ・フォレンジックにおける文字列の検出 』

      2017/03/02

  • 文字列検出ツール "istrings" の使い方
  • フォレンジックにおける文字列抽出と検索

行ってきました。ハンズアウトの配布が無かったので、ちと捉えきれてないとこあるけど、とりあえず覚書程度をこれから追記。レポートというにはおこがましい。

文字列検出ツール "istrings" の使い方(id:hasegawayosukeさん)

文字扱いに関する基本用語
  • 文字集合(character set/字文セット):コンピュータ上で文字を扱う際、現存する文字のうち、どの文字を扱うかを決めたもの。集合体。
  • 符号化文字集合:文字に番号を付けて一つの番号が一つの文字だけに対応する(一意の符号化)ように決めたもの。集合体。
  • 文字エンコーディング:文字セットの構成要素 (文字、表意文字、数字、記号、制御文字) と特定の数値コードの明白なマッピング
  • 符号化文字集合は単に文字集合の要素である文字毎に対し番号を付けただけのものでエンコーディングとは違う。
istringsとは
  • 日本語やUnicodeの文字エンコーディングを指定して抜き出すことが出来るstringsコマンド
  • UNIX等でバイナリファイルなどの中に文字化して表示可能なデータがあれば、それを表示してくれるstringsというコマンドがある。しかし、これは基本的にASCII文字しか対応しない。
  • Sysinternals Freeware - StringsではStrings just scans the file you pass it for UNICODE (or ASCII) strings of a default length of 3 or more UNICODE (or ASCII) charactersとUNICODE対応を書いているが、UTF-16のみ対応。
  • jstringsも、はせがわさんの作成した日本語文字コードに対応した strings コマンド。但し、EUC-JP/Shift_JIS/Windows-31J/ISO-2022-JP/ASCIIに対応は固定されている。文字集合は外部ファイル化しているので拡張出来るが、文字エンコーディングハードコーディングでアプリケーション内部にあるためである。
  • istringsは指定されたエンコーディングにおいて有効な文字の範囲を定義したファイルとしてマッピングファイルが外部ファイルとなっている。また、UTF-8/UTF-16LE/ UTF-16BEに対応したのがjstringsからの優位点となっている。逆にiso-2022系についてはエスケープシーケンス解釈扱いが難しく現状のistringsでは拾うことが出来ない。
    • 個人的に面白かったのは、伊原さんが「日本語のメールだとISO-2022-JPを拾う必要があるので拡張するよね?するよね?」と突っ込み、はせがわさんが「えー、本業が楽になったらするかなぁ。ははは(^^;;;」という掛け合いが何度か発生していたこと。
    • また、伊原さん=>はせがわさん。「複数文字エンコーディング同時に出来ませんか?」「混ざるので無理です。バッチファイルで毎々処理が確実です」
istrings関連ファイルの構成

istrings.txtを読むのが一番です。

設定ファイル

istrings起動時にまず読み込む設定内容のファイル(名前:istrings.ini)。設定ファイルの場所は、-eオプションで毎回場所指定するか、環境変数 ISTRINGS_INIで場所指定しておくか、或いは素直にハードコーディングされたC:\Program Files\istrings-0.1に放り込んでおくか。(俺は素直で面倒くさがりなんで最後ね)

指定内容はiniファイル形式で以下のようになる。

systemだけ分かりにくいパラメータ。単純に分けるならユニコードとそれ以外で、それ以外は全てDBCSになる。(DBCSはDouble Byte Character Set通称2バイト文字なので実際はSBCSを含むのにちょっと変かなあ…というツッコミはあったが、そこは現状仕様ザンス。)

マップファイル

指定されたエンコーディングにおいて有効な文字の範囲を定義したファイル。 最初の行には bytecountパラメータで二行目以降の指定範囲が何バイト文字であるかを定義する。まあ、1か2です。後は指定範囲。連続しているコードは20-7eのように-で繋ぐことが出来る。

実験君
  • EXCELファイルでやってみよう(作成者プロパティもよくわかるのさ)
  • WORDファイルでやってみよう(変更履歴もばっちりさ。)
  • PDFファイルでやってみよう(やってないよ。でもやってみるときっと面白いのさ。どうせpsファイルなんだしPDFファイルは文字列データをそのまま内包していて防御していないからReader経由じゃなきゃ脇が甘い。守りたければ画像をPDFにするくらいせんとね。)
  • メモリダンプファイルも(やってないよ。でもやってみるときっと面白いのさ)

まあ、怖いですねー。更新しまくって履歴が凄いことになってるファイルや、コピー・印刷禁止PDFファイルを安全と思って公開してると大事な情報が大変なことになりますよ。少しでもおかしいと思ったら近くの専門家までどうぞ(ブラックホスピタル調)

フォレンジックにおける文字列抽出と検索(id:hideakiiさん)

発表の伊原さんが書いてるから省略。楽でいいや。うへへ。

バイナリから文字解析する際istrings使ったりして文字と思しき部分を取り出し(これまでは日本語についてこの部分が上手く取り出しにくかったがistringsがカバー出来ることを期待)、然る後cpconvwiconvでパイプしてコンソールに表示したり(Windowsのコマンドプロンプトだとこの処理しないと化ける)してインデックス化して解析する。或いはファイルに吐き出してきとーなエディタで見ていじる。

Rootkitのように偽装、隠蔽が強力なものでは、設定ファイルを単純に正規表現でなめて検索するには検索パターンの複雑化が伴う。一旦文字列抽出した後なら人の目で見て判断出来発見しやすい場合がある。

コアファイル(id:wakatonoさん)

怖い怖い。ひー。まあ、コア吐いて死んだらshcのようなスクリプト暗号化を使っててもコアにまんま吐き出されている。とかくメモリイメージは何でもカオスなあれこれを差し出すので管理しとかんとあかん。

有志のistrings強化

  • openmya Hiki - istringsにみんなで色々くっつけよう

参考

適宜覚書-Fragmentsは、筆者が興味をもった様々な情報やネタを筆者が忘れても後で思い出せるよう覚書として公開するBlogです。Google Chrome拡張、Facebook、Google、Twitter、Windows、各種Webアプリなどを扱うことが多いです。この覚書が、もし何かお役立ちになれば幸いです。

 - Webブラウザ, Windows, 覚書 , , , , , ,