@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

例題「電子メールに添付されたマルウェア」に感染を分解する

例えばトレーニングで「電子メールに添付されたマルウェアに感染」したケースを説明しなければいけないとします。

受講者が事前に学習する必要がある項目には何があるのでしょうか?、関連する技術要素として、どこまで事前に知っている必要があるのか?という点を考えてみたいと思います。

受信した電子メールには圧縮ファイルが添付されていました。この圧縮ファイルにはパスワードが設定されており、展開ツールを使ってファイルを取り出す際にパスワードが求められるようになっており、ウイルス対策ソフトは中身を確認する事ができない仕組みになっています。

圧縮ファイルのパスワードは電子メール本文に書かれており、本文内に書かれたパスワードを入力する事でファイルを取り出す事ができます。取り出されたマルウェアプログラムが人間により“実行”される事でコンピュータがマルウェアに感染する事になりました。

この例を理解し調査する為には、どの程度の知識が必要になるか?を把握したいわけです。まずは、理解が必要な技術的な要素に分解してみます。(項目によっては更に詳細に分割できる項目もありますが、まずは大き目に分解してみます)

項目によっては必須の項目・別に知らなくても困らない項目もあると思います。分解した項目に対して、更に必須項目を絞り込んでいく必要があります。(事前に知っているべき事柄と、上記例題を説明していく際に、何を理解いただくのかは分離して考える必要がありますが)

 

■電子メール関連

  1. SMTPプロトコル(TCP、IP、MACアドレス、ルーティング)
  2. DNS MXレコード(ドメイン名とMXの関係)
  3. メールの配信(MUAとMTAの関係、配信経路、時刻情報)
  4. メールサーバのログ(SMTPログ、時刻情報)
  5. メールアカウント(Userと認証、容量制限、ログイン日時、etc)
  6. メールボックス(POP・IMAPプロトコル、Web経由のアクセス、転送)
  7. メールヘッダ(日付、配信、各種ヘッダ)
  8. メールアドレス(TO、CC、BCC、From)
  9. メールソフトウェア(MUA)
  10. メールソフトウェア毎のメールボックス形式
  11. メールの保存形式(Mbox、PST、EML、etc)
  12. メールボックスの所在(ファイルシステム上のパス又はCloud)
  13. メールボックス内のメタデータ(MAPI情報、作成・更新、フラグ etc)
  14. メールのソースデータ(オリジナルのデータ)
  15. メールを開いた(読んだ)日時
  16. 文字コード(ISO-2022-JP、UTF-8、etc)
  17. 添付ファイル(ファイル名、エンコード形式、MIMEエンコード)
  18. 添付ファイルのタイムスタンプ
  19. 電子メールソフトウェアでの添付ファイルの取り扱い(一時フォルダ)
  20. 添付ファイルをオープン(取り出し)した日時
  21. オープンされた添付ファイルが持つファイルシステム上のタイムスタンプ

■ファイル形式

  1. ファイル名と拡張子(データ内容)、拡張子の種類
  2. ファイル名の長さ、文字コード
  3. 拡張子の表示
  4. 拡張子とアプリケーションの関連付け
  5. ファイル形式(実行ファイル、圧縮ファイル、etc)
  6. 圧縮ファイルとその種類
  7. 圧縮ファイルの作成・展開ツール
  8. 圧縮ファイルのパスワード設定、暗号化
  9. 圧縮ファイル内ファイルのタイムスタンプ
  10. 圧縮ファイル自体のファイルシステム上でのタイムスタンプ(作成・更新)
  11. 圧縮ファイルを展開した際のファイルタイムスタンプ
  12. 実行形式ファイル(OSやアーキテクチャによる違い)
  13. 実行形式ファイル内のタイムスタンプ
  14. 実行ファイルのファイル名偽装方法
  15. 実行ファイルのアイコン偽装

■プログラム実行

  1. プログラムの実行の仕組み(実行方法)
  2. プログラムの権限
  3. プログラムの実行痕跡
  4. マルウェアプログラムの特性
  5. マルウェアの感染痕跡
  6. マルウェアの追跡(発見)

 

前提としてWindowsを想定していますが、スマートフォンを含めていくと更に項目が増えていきますね。

2015年時点での自分的 EnCaseスキルセットを棚卸し(2)

基本的な処理(調査を開始する前に行う下ごしらえ?と言えるのかもしれませんが)に関する項目は以下でしょうか。

主にはファイルの種類を特定したり、既知ファイルを除外する、検索を行い関連するデータを特定するといった部分になり、アーティファクトのパースなどは含んでいません。

 

■シグネチャ分析

  1. ファイルタイプの定義内容の理解(ヘッダ・フッタ パターン、サイズ、カテゴリ)
  2. 既存のシグネチャタイプをカスタマイズして利用する(シグネチャをカスタマイズする事でより分類を詳細に行う)
  3. 自分で必要なシグネチャをファイルタイプに登録・テストする
  4. 予め定義されているファイルタイプで不要(ノイズ)となるパターンの変更
  5. シグネチャ分析の実行(Evidence Processor又は選択対象に対して手動実行)
  6. シグネチャ分析結果の確認とフィルタ(コンディション・フィルタの利用)
  7. ファイル拡張子が変更されているパターン(エイリアス)の確認・フィルタ
  8. シグネチャ分析の結果がマッチするケース(TXTなど)の理解
  9. シグネチャ分析の結果がBadまたはUnKnownになるデータ内容の理解
  10. ファイルが暗号化されているパターンをシグネチャ分析の結果から確認する
  11. ファイルシグネチャを利用したUnallocated Clustersからのカービング
  12. File Carverモジュールを利用したファイルのカービングと制限事項
  13. File CarverモジュールのOptimizedオプションの利用方法
  14. ZIPファイルのカービング(破損データの修復)
  15. Recover Foldersにより表示されているファイルに対するシグネチャ分析実行による破損ファイル等の検出・フィルタ
  16. 拡張子が変更されていた画像ファイルのギャラリービューでの閲覧(シグネチャ分析の実施後)

■コンパウンド(複合)ファイルの取り扱い

  1. EnCaseでマウント可能な複合ファイル、マウントできない複合ファイル(LZH etc...)の理解
  2. View File Structure のマウント時のオプションに関する理解(Unallocated Clustersの計算、削除メールの検索等)
  3. EnCaseがマウントに失敗したファイルの特定(原因の確認)
  4. 複合ファイルに含まれるファイル名が文字化けする場合の原因と対処方法
  5. Evidence ProcessorのExapnd compound filesが対象とするファイルタイプの理解(レジストリは対象外となる)
  6. パスワード付きZIPファイルのマウント(パスワードを入力したかった場合、Secure Storageへのパスワード登録)

■パスワード保護・暗号化されているファイルの分析

  1. Evidence ProcessorのAnalyzing Protected(Passware Toolkit)を使った保護ファイルの検出
  2. 検出された保護ファイルの確認(フィルタ)
  3. Passware 連携機能の理解
  4. エントロピー値の計算手順

■ハッシュ分析

  1. 既知ファイルからハッシュセットの作成
  2. ハッシュセットに含められるメタデータの理解
  3. ハッシュ分析の実行(ハッシュセットの選択)
  4. NSRL、NSRLJP の利用手順の理解
  5. 既知ファイルのハッシュセットを利用したファイルの除外
  6. 既知ファイルのハッシュセット、ハッシュ値を利用したファイルの特定

■RAW キーワード検索

  1. RAWキーワードの登録と適切なCode Page設定の理解
  2. RAWキーワード検索ではヒットしないデータタイプや文書ファイルタイプの理解(ZIP, DOCX, PDF, Base64,Protected Files etc...) 
  3. RAWキーワードとして日本語文字列を検索する場合に指定する適切な Code Page の理解(932,51932,20221 etc...)
  4. RAWキーワードの一括登録(Code Page 指定含む)
  5. RAWキーワード検索の実行・結果(ヒット)の確認
  6. GREP パターンの登録・事前検証

 ■インデックス検索

  1. インデックスが作成される仕組みの理解(Outside In、Transcript、文字化け)
  2. インデックスされるデータ範囲の理解(メタ、本文、対象文字コード、埋め込みデータ部分)
  3. 圧縮ファイル、PDFの添付ファイル、メールの添付ファイルなど他のデータを含んでいるデータに対するインデックス処理の理解
  4. インデックスされない(検索できない)ファイルタイプやデータ内容に対する正しい理解
  5. インデックスされない(されていない)ファイルの検出・フィルタ
  6. 日本語を含むアジア言語を含むデータのインデックスオプションの設定
  7. 日本語文字列に対するインデックス段階での正規化処理の理解(カタカナ、濁点・半濁点、全角英数の処理)
  8. 日本語文字列を利用したインデックス検索と、ハイライトの関係(正規化処理の影響)
  9. 日本語文字列の形態素解析(ワードブレイカーの動作)の理解
  10. 中国語・韓国語に対する形態素解析と正規化処理の影響の理解
  11. インデックス内容のエクスポート(IndexDataExtractor)

 

2015年時点での自分的 EnCaseスキルセットを棚卸し(1)

EnCase を使い始めてかなりの年数が経過していますが、他のツールも使うようになりつつあるので、一度 EnCase に対して(自分にとって)必要な項目を棚卸ししてみたいと思います。まずは、データの取得から表示辺りまで。

 

■インストール・設定・ケース作成

  1. 最新版EnCaseのダウンロード&適切なインストール
  2. EnCaseが利用するフォルダパスとそれぞれの役割理解
  3. ダウンロードしたCertファイルの役割と配置方法
  4. EnCaseの起動モード(AcquisitionとForensics)の違いについての理解
  5. EnCase のバージョン番号や追加モジュールの有無をHELPから確認
  6. Options⇒Globalタブの設定項目についての理解
  7. Options⇒Code Page設定の役割と、各OSに応じた設定すべきCode Pageについての理解
  8. Options⇒Code Page設定が誤っている場合に発生する、文字化け範囲の理解
  9. Options⇒Flag Lost Filesの設定に関連するFATファイルシステムの仕組の理解
  10. Options⇒Dateタブで日付形式の設定や表示方法の変更。
    曜日表示、タイムゾーン表示の設定変更。
  11. Options⇒Colors上の配色変更、それぞれの色がどこで使われるかの理解
  12. Options⇒Fonts設定で多言語を表示する為の変更、Arial Unicode MS の役割理解
    フォントセットとCode Pageの役割理解
  13. Options⇒Data Pathタブの内容理解
  14. 新規ケースの作成方法(ケースフォルダの適切な配置)
  15. Evidence Cacheフォルダの役割理解
    セカンダリEvidence Cacheの役割理解
  16. バックアップ設定の理解と適切な設定
  17. バックアップ対象と制限事項の理解
  18. バックアップからのリストア手順の理解

■イメージコピーの取得・証拠ファイル形式

  1. 証拠ファイル形式についての理解(E01,Ex01)
  2. 論理証拠ファイル形式についての理解(L01,Lx01)
  3. 証拠ファイル形式の内部構造の理解(CRC,ハッシュ値)
  4. 証拠ファイルの作成時に設定するオプション項目の理解
  5. 証拠ファイルの圧縮方式の違いと、コピー速度への影響についての理解
  6. 証拠ファイルのパスワード設定と暗号化の違いについての理解
  7. イメージコピー作成中の中断処理と再開処理の理解
  8. イメージコピー作成中に発生するエラー処理と設定の理解
  9. 証拠ファイルのベリファイ手順・処理の理解
  10. 証拠ファイルのベリファイ処理でエラーになった場合の対処
  11. 証拠ファイル・イメージファイルの手動でのハッシュ計算
  12. 証拠ファイルの再取得・圧縮方法
  13. 証拠ファイルをRAW形式へ変換する
  14. 物理ディスク・論理ボリュームの取得
  15. デバイス追加時、Edit 画面で設定可能な項目の理解
  16. RAIDボリュームの取得
  17. 暗号化ディスク・暗号化ボリュームの取得
  18. 稼働中システムの取得
  19. RAW形式を証拠ファイル形式へ変換する
  20. FastBloc SEの利用方法&書き込み禁止措置の理解
  21. HPA・DCO設定と対応方法に関する理解
  22. Linenの利用方法(OS起動メディアの準備)
  23. サーブレットの作成手順、Direct Network Previewの利用方法
  24. サーブレットを使ったメモリイメージの取得方法
  25. Winenを使ったメモリイメージの取得方法
  26. Winacqを使ったディスクイメージの取得方法
  27. WIPE機能の利用方法
  28. イメージファイルの物理ディスクへのリストア方法

■ケースへの証拠ファイル追加(Add Eviddnce)

  1. プレビューとイメージ閲覧の違いの理解
  2. ローカルディスクのプレビュー方法
  3. サーブレットを使ったプレビュー方法(Direct Network Preview)
  4. クロスケーブルを使ったプレビュー方法 (Crossover Preview)
  5. RAW形式イメージファイルの追加(DD、ISOイメージ等)
  6. 証拠ファイルの追加
  7. GUIDとEvidence cacheファイル内の関係についての理解
  8. Singleファイルの追加(Singleファイルの制限・注意事項)

■パーティション・ボリュームの追加・閲覧・コピー

  1. ドライブ文字の付与ルール、ドライブ文字の変更方法
  2. デバイス・ボリュームの詳細情報確認(レポート)
  3. 未使用範囲の確認
  4. (削除)パーティションの追加・削除
  5. (削除)パーティションの検索(VBRの検索)
  6. バックアップVBRを利用したパーティションの復元
  7. BitLocker暗号化ボリュームの追加
  8. RAIDボリュームの再構成手順
  9. LVMボリュームの再構成手順(Scan for LVM)
  10. EFS暗号化の利用確認(Description)と対応(Analyze EFS...)
  11. Windows タイムゾーンの確認方法(SYSTEMレジストリ)
  12. Linux タイムゾーンの確認方法
  13. Mac OS X タイムゾーンの確認方法
  14. タイムゾーンの設定、反映確認方法
  15. FATボリューム上の削除ファイルにおいて、日本語だと先頭が正しく扱われないケースへの対応
  16. FATボリュームのボリューム名が文字化けする場合の確認方法
  17. FATボリューム上のInvalid Cluster表示に関するクラスタ開始位置に関する理解
  18. Unallocated Clusters の意味と役割の理解
  19. VFSを利用した(仮想的な共有ドライブを通じた)エクスプローラからのデータアクセス
  20. PDEを利用した(仮想的な物理ディスクを通じた)エクスプローラからのデータアクセス
  21. PDEを利用した VSS (以前のバージョン)へのアクセス
  22. Copy Files/Copy Foldersを利用したファイルのコピー方法、コピー範囲、ファイルの連結、フォルダ構造を維持したコピー、重複ファイル名の扱い、長いパスの扱いについての理解
  23. Copy Files/Copy Foldersを利用したファイルコピー時のタイムスタンプ維持についての理解
  24. Copy Files/Copy Foldersの設定において、分割サイズを0に設定しておくことで分割を行わずに取り出す
  25. Copy Files/Copy Folders の対象に $BadClus;$Bad は含めない意図の理解
  26. View File Structureを使ったコンパウンドファイルのマウント手順
  27. View File Structureでマウントしたコンパウンドファイルのアンマウント手順
  28. デバイスのキャッシュファイル削除方法と影響の理解

■削除ファイルの取り扱い

  1. 削除ファイルに関連したアイコン、関連カラムの表示内容の理解
  2. 削除ファイル(Overwritten)の上書きファイルの名前確認と参照方法
  3. Lost Filesに含まれるファイルの意味(親が不明)とファイルシステム側での仕組みの理解
  4. Recover Foldersの手動実行と結果セットの削除方法
  5. Recover Foldersの役割(対象範囲)とNTFS・FATファイルシステム上での仕組みの理解
  6. Recover Foldersを実行した場合の、Unallocated Clusters への影響(該当クラスタの取り扱い)
  7. 削除ファイルの上書き判定(先頭クラスタによる判断)の理解
  8. FATボリューム上での削除ファイルの先頭ファイル名の取り扱い
  9. FATボリューム上での削除ファイルのサイズ(データ範囲)の取り扱い
  10. ゴミ箱フォルダへのファイル移動時に発生するNTFS上の変化についての理解
  11. ゴミ箱フォルダへのフォルダ移動時に発生するNTFS上の変化についての理解
  12. ゴミ箱フォルダ内データの表示ルール($I、$Rの取り扱い)
  13. ゴミ箱フォルダ内ファイルの削除日付の扱い
  14. ゴミ箱フォルダ内ファイルのオリジナルパス($Iとの関連、$Iが無い場合)
  15. ゴミ箱フォルダ内 INFO2 ファイルのデコード、スラック上の取り扱い
  16. ゴミ箱フォルダ内のSIDとユーザー名の紐づけ(SID、RID、プロファイル)
  17. スラック領域の表示色と範囲の理解(各スラック領域)

■画面表示

  1. セットインクルードとブルーチェックの役割理解
  2. ディクソンボックスの役割理解
  3. GPSバーに表示される各項目の理解
  4. GPSバーのLE値を使った範囲の選択
  5. GPSバーのFO, SO 値を使ったオフセット位置の確認
  6. 各カラムが表示する内容の理解
  7. テーブルペイン上カラムの表示列のロック方法・解除方法
  8. テーブルペイン上カラムの非表示設定
  9. テーブルペイン上カラムのソート方法・解除方法、6段階でのソート追加
  10. テーブルペイン上カラムの並び順の変更
  11. 特定のカラムに対応したビューペイン上のタブについての理解
  12. ビューペイン上にある各タブが表示する内容の理解
  13. ビューペイン上にあるDocビューとTranscriptタブの役割の理解
  14. ビューペイン上Textタブでの日本語(CJK)表示方法
  15. ビューペイン上TextタブでのShift_JISやUnicodeを指定した場合に、文字列が2バイト単位で扱われている方法の理解(折り返し位置で化ける場合)
  16. ビューペイン上Textタブで、複数文字コードのデータが混在する場合の表示
  17. 日本語文字列を表示する際に利用するCode Page番号の理解
  18. Outside Inの役割と制限事項の理解
  19. Go To 画面の使い方(数値変換、マイナス値非対応)
  20. ビューペイン上 Decode タブを利用したデータの変換方法
  21. ビューペイン上 Picture タブでの画像表示(Options設定との関係)
  22. ビューペイン上 Picture タブがサポートする画像ファイル形式
  23. ビューペイン上 Picture タブの画像表示制限(レイヤーを扱えない)
  24. ビューペイン上 Attributes タブの役割(表示内容)の理解
  25. ビューペイン上 Console の役割と表示される項目の理解
  26. ビューペインの取り外しと、戻し方
  27. ギャラリービューの制限事項(シグネチャ解析後でなければ拡張子に依存して画像を表示)
  28. ギャラリービューのレンダリング順序変更(Optionsでの設定変更)
  29. ギャラリービューにおける破損画像の取り扱い(Optionsでの設定変更)
  30. テーブルエントリでアイテムをダブルクリックした時の動作(呼び出されるアプリケーションとの関連付け)
  31. 外部ビューアの登録と呼び出し方、外部ビューアで扱う為の一時ファイルの取り扱いについての理解

 

 

2015年に取り組むにはちょっと出遅れかもしれないテーマ SQlite3 と Cloud

すでにエッジな話題ではなく、ツールなども充実してきているのであまり斬新な分野ではないですが、もし今年からデジタル・フォレンジック始めました!みたいな若者に「これやっとけ」と言うなら、個人的には SQlite3 でしょうかね。

まぁ、正直あまりいけてないテーマかなぁという気もするのです。実務的な部分では役立つ項目でしょうし、データベースの基本的な技術知識は他でも役立つだろうという、ちょっと保守的なテーマですけど。

SQlite3 はデータベースですので、残っているファイルを調べる部分についてはそれほど難しくないかもしれませんが、トランザクションログや、削除データの抽出といった部分はまだ少しこなれてない部分でしょうか。

また、Webブラウザやスマートフォンアプリの多くがデータの収納先として利用していますので、色々なデバイス上のデータについて理解を進める事ができそうなのも、お薦めとしている理由の一つでしょうか。

データはどんどんクラウド側に移行していますが、それにアクセスする端末やアプリケーション(Webブラウザ)には部分的には痕跡が残っており、それが SQLite3 を使っているケースも多い気が個人的にはしています。(平たく言うと、Cloud Forensics の入口としては丁度よくね?という意図だったりもします)

いずれはSQLite3ではなく、別の仕組みが利用されるようになる気もしますので、10年後でも役立つ技術かは、2025年になってこの Blog を読み返してみないと分かりません(笑)

挑戦するなら最初からエッジな分野がいい!という野望をお持ちでしたら、Cloud Forensics に突入するのも選択肢の一つでしょうか。

もし自分だったら、NIST が出している資料をベースに、課題となっている項目を確認していくアプローチをとるかもしれません。Cloud といっても、基本的にはドキュメント ライフ サイクルをベースに考えて取り組む必要があるというのが個人的な印象です。

将来的には、FATやNTFSとか読む必要がなくなり、全部 Cloud です!っていう世界であれば、ファイルシステムよりそっちを優先して取り組む方が、今からの若手にはあってそうな気がしている今日この頃です。

 

Windows レジストリ アーティファクトの参考書籍、2015年ならどれ?

Windows レジストリのアーティファクトについて良い本はないですか?という質問も良くいただく質問だったりしますが、日本語の書籍や関連資料ですぐに思いつくものがなく、良い回答が出来ていないと個人的に感じている部分だったりします。

Windowsのレジストリに特化している書籍としては洋書になりますが、RegRipperの著者Harlan Carvey氏の「Windows Registry Forensics」があります。先日、Blogの方にこの書籍の改定についての話題が出ており、(2015年中に出るかは分かりませんが)改訂版が出るようですので、これはちょっと期待してしまいます。 

Windows Registry Forensics: Advanced Digital Forensic Analysis of the Windows Registry

Windows Registry Forensics: Advanced Digital Forensic Analysis of the Windows Registry

 

 Windowsレジストリについては、書籍から入るよりも RegRipper がパース対象としているデータ項目として何があるのかを丁寧に見ていくのが一番参考になるのではないでしょうか?、RegRipper を実際に使ってみて、対象レジストリキーや値、その出力結果を読み解いていくのが参考資料としては良い気がしています。

RegRipperはパースする対象とプラグインによっては日本語文字列の扱いに問題があり、出力結果が文字化けしたり、そもそも処理段階で欠落する事があります。(日本語が関係ない場合には、それも特に困らないと思います)

RegRipperをベースに、Unicodeの処理を適切に行うように改良したものとしては、KaniRegがあります。KaniRegは基本的にRegRipperベースですが、プラグインの処理で日本語の扱いに問題がある箇所を極力対応できるようにしてくれています。極力と書いているのは、元々のプラグイン側での処理が適当だとカバーしきれず限界があるところもあり、そのあたりはReadmeの制限事項などから読み取れます。

下記はKaniReg 1.1.2 のReadmeから部分的に引用していますが、稀に誤ったパスが出力されるケースがあるなど、注意しておくべき項目があります。(これをKaniRegだけの制限と考えるべきではなく、他のパースツールでは同様のエラー発生時に実装をどうしているのか?ということを考慮する必要があります)

【ShellBagについて】
■RegiRipperの動作・仕様
・対象ハイブ:XP→NTUSER.DAT、Vista以降→UsrClass.dat
・Vista、Win7、及びWin2008R2のみに対応(bit数は記載なしのため不明)
・処理中にパースに失敗しても処理を継続する仕様のため、稀に誤ったパスが出力される可能性あり。
 (正:C:\AAAA\BBBB¥CCCC → BBBBが取得不可の場合の出力:C:\AAAA\CCCC)

■KaniRegの動作・仕様・RegRipperとの相違点など
・XP及びWin8のパースに暫定対応(Win7と共通する構造のキーのみパースされる)。
・XP及びWin8でパース未対応のデータを検知出来た場合、「パース不可」の文言を挿入。
 (出力例:「C:\AAAA\パース不可\CCCC」)
・XPの一部のデータにて、文字化けを確認済み。(Win7との構造の相違が原因?)
 →切り出すデータが長過ぎるため、本来文字でない余ったバイトがデタラメな文字に変換される。
 (出力例:「デスクトップ」が「デスクトップ獀敨汬㈳搮汬」となるなど)

 

レジストリではUnicode(UTF-16LE)でデータが保存されているのが通常です、最近のツールは Unicode 対応により文字化けせずに対応できる場合もありますが、日本語を必要としていない作者の場合、英数字以外はゴミとして落としているケースもあります。

この為、出力結果が正しいか?という点では、目視での確認や検証も必要になります。レジストリのキーや値を解釈して表示しているので、パース結果に誤りがあるかはレジストリエディタなりで自分で確認できます。値がバイナリデータで構造を保存しているケースでは、目視でパースする必要が出てきますが、慣れていないと厄介かもしれません。

 

これから取り組む若手に言えることがあるとすれば、一種類のパース結果だけで信用せずに、2種類、できれば Unicode 対応しているツールで比較を行った方がよいよ、という事くらいかと思います。(商用製品になりますが、個人的には TZworks の出力結果は化けないので結構気にいっています)

基本的には諸先輩方が必要な項目はパースするようなツールを提供してくれていますので、自力でレジストリ内のバイナリデータをパースしなければいけない領域はかなり限られると思いますし、その場合でも Google で検索すればすぐに答えが出てくるのではないでしょうか。

レジストリを今から深く探求したい!といったモチベーションがある場合には、新しく出る Windows 10 辺りのレジストリがどの様になっているかを調べ、従来値との比較結果を世界にフィードバックすると喜ぶ人が多いのではないでしょうか。(プログラム実行に関連した部分からまずは着手とか)

特にバイナリ値でデータ構造が変化している箇所があれば、その中身をいち早く解析する事は面白いネタにもなると思います。

ただ、日本語で書いても反応ないと思いますから、英語でBlogに書いて、英語で Twitter に投げておくと拾ってくれる可能性が高まります。

 

2015年でも文字コードの書籍を読むべきか?

デジタル・フォレンジック関連では、海外で作られた製品やツールを利用する事が多く、これまでいわゆる「文字化け」にはかなり苦労させられてきました。*1

とはいえ、2005年頃と比較すれば、解析対象データの多くが UTF-16 や UTF-8 になってきている事もあり、以前と比較すればかなり文字化けは解消されている部分もあるのではないかと考えています。

この為、これから取り組む若手が優先的に文字コードを覚える必要があるか?というと個人的には少し疑問があります。もちろん、知らないよりは知っている方がよいですし、何より文字化けが無くなったわけではないので、正しい手順や適切な対応を取る上で文字化けの原因を的確に判断できる方がよいですよね。

まずはUnicodeの基本的な部分が理解できていれば良いのかもしれません。最近は例えば Shift_JIS でデータ格納しているのを、UTF-8だと思って処理して落ちるとか化けるとかのパターンが多いようですから、そのあたりだけまずは理解できれいれば慌てなくても対処できる気もします。

Unicode関連の書籍も色々とありますが、今だと何を読むのがいいんでしょうねぇ、多分 Google で検索すれば色々と情報があると思いますから、強いて書籍でなくてもよいかもしれません。

Unicode については、個人的には下記を読みましたがいきなりこれではない方がよいかもしれません。図書館にあればちょっと見てみるのは良いと思うのですが、2001年の本なので、今からだと違いを意識しないといけない部分があるかもしれませんね。(最近は、絵文字もありますし)

Unicode標準入門

Unicode標準入門

 

個人的にはMLなどを通じて文字コードについて教えていただき覚えた部分が大きかったのですが、参考書籍としては文字コード関連はほとんど購入しました。

文字コードといえば CJKV !!という雰囲気がありましたが、いきなりこれ読むのは初心者には難しいのではないかと思います。外人さんに文字コード関連の書籍で何かないか?と聞かれたらこれをお薦めしていました。

図書館にあればちょっと眺めてみるといいかもしれません。 

CJKV日中韓越情報処理

CJKV日中韓越情報処理

 

 個人的に一番分かりやすかったのは、文字コード「超」研究です。現在は改定されているようで手元で持っていた版とは異なりますが、著者の書きっぷりが面白い部分もあって読みやすかったです。なんか文字コード関連の書籍は分厚いの多い気がしていますけど、避けられない運命なんでしょうか。 強いて何か読むのをお薦めするなら、これかなぁ。プログラマのための文字コード技術入門も良かった気がしていますが。。。

文字コード「超」研究 改訂第2版

文字コード「超」研究 改訂第2版

 

 あと、文字コード関連で一番読んだWeb上の記事は「文字の海、ビットの舟」ですね。

小形克宏の「文字の海、ビットの舟」
―― 文字コードが私たちに問いかけるもの
http://internet.watch.impress.co.jp/www/column/ogata/

文字コードは、なんだかんだ言っても CPCONV で HEX パターンを見ながら実際に検索とかして覚えた気がします。今は HEX で検索する必要性がほとんどなく、コードページ指定すれば済むか、そもそも意識しなくて良いツールも多いので、出番が減っていますが、トレーニングではよく紹介しています。

CPCONV で HEX 見て、istrings で文字列を取り出す、wiconv でCodePageを変換。なんかそんな事を繰り返していたらだいたい覚えた!という気がしています。

でも、今の若者はそれらのツールで試したり、文字の取り出しに悩んだりしなくても多分大丈夫です(笑)

 今から取り組む若手がやった方がよい部分があるとすれば、インデックス処理(形態素解析とかN-Gram)の理解と、機械学習の辺りでしょうか。

大量文書から必要なデータを効率良く探し出すという部分では、学習させた内容で類似文書をひっぱるとかそのあたりの技術が今後どんどん使われると思いますから、そっちから入る方が良いのかもしれません。つい最近も Microsoft 社が Equivio を買収しましたが、Equivio がどういった技術か?とか見ておくと面白いかもしれませんよ。

 

*1:もちろん今でも苦労されている方が多数いらっしゃるのは承知していますが

2015年でもお薦めとしたのは、2005年と変化なし?

改めてリストアップした書籍や映画ですが、基本的には 2005年頃にセキュリティ・キャンプの参加者へ紹介した内容と変化していません。技術的な部分ではもちろん色々と進化していますので、最近出ている書籍でもっと適したものがあるかもしれません。

今更昔の内容を覚えても意味があるのか?という素朴な疑問もありますし、今年出てくる書籍で最新の状況を習得していく方が、より効率がよい可能性も高いかもしれません。

更に新しい分野?でもある、Cloud Forensics などは参考になる文献が少ない状況ですので、むしろ自力で頑張るしかないかもしれません。

 

ざっくり書籍などを紹介しましたが、何かしら資格なりを取りたいと考えた場合、何をまずは目指すとよいのか?という部分では(そもそも、自分が持ってないので全然説得力がないですが)GIAC Certified Forensic Analyst (GCFA) 辺り、若者が挑戦するには良い題材ではないかとも考えています。(試験そのものを受けるというよりは、出題されるテーマについて、まずは学ぶという趣旨です)

昨年、SANS 508コースを受講してから、GCFA 試験を受けたいとは考えているのですが、私自身はまだ受験できていません(^^;;

GCFA の出題範囲は基本的な部分を含めかなり広範囲である事と、SIFTをベースにオープンソースツールなどであまりお金をかけずに学ぶ事ができる利点があります。

例えば、EnCaseのベンダ試験である EnCE は、そもそも受けるのに実務経験なりが求められる部分もあり、まだ実務経験が浅い若手にはハードルがあったりするかと思います。

そういった点では、GCFA の出題範囲となっている各項目を覚えていくのは、これからデジタル・フォレンジックを習得したいと考えている若手なりには、スキルセットを把握する上でも取り組みやすいのではないでしょうか。

 

2015年でもお薦めしたいインシデント・レスポンス参考書籍?

インシデント・レスポンス系の書籍は最近読んでないので、正直何がよいのか分からないのです。

個人的には下記書籍で色々と勉強させていただきました。2002年の書籍ですので、コマンドとか今では参考にならないかもしれません。とはいえ、考え方とかは参考になるのではないかと考えています。 (図書館にあるのではないでしょうか)

インシデントレスポンス―不正アクセスの発見と対策

インシデントレスポンス―不正アクセスの発見と対策

  • 作者: ケビンマンディア,クリスプロサイス,坂井順行,新井悠,Kevin Mandia,Chris Prosise,エクストランス
  • 出版社/メーカー: 翔泳社
  • 発売日: 2002/07
  • メディア: 単行本
  • 購入: 1人 クリック: 27回
  • この商品を含むブログ (17件) を見る
 

上記書籍の洋書版については、第三版が出ているようですね。私は読んでないのですが、目次だけざっと見た感じ、Live対応なども含んでいるように見えるので、ちょっと読んでみたくなる内容です。 

Incident Response & Computer Forensics, Third Edition

Incident Response & Computer Forensics, Third Edition

 

 下記はまだ出てないですが(笑)、今年出るのでちょっと注目ですね。 

Hacking Exposed Computer Forensics, Third Edition: Secrets & Solutions

Hacking Exposed Computer Forensics, Third Edition: Secrets & Solutions

 

書籍ではないのですが、トレーニングなどで紹介している資料としては、NIST SP800シリーズがあります。IPAさんが日本語訳を出してくれてます。 

SP 800-61 rev.1 コンピュータインシデント対応ガイド
Computer Security Incident Handling Guide
https://www.ipa.go.jp/security/publications/nist/

SP 800-86 インシデント対応へのフォレンジック技法の統合に関するガイド
Guide to Integrating Forensic Techniques into Incident Response

同じく IPA さんの資料としては、下記もありますね。

情報漏えいインシデント対応方策に関する
調 査 報 告 書
http://www.ipa.go.jp/files/000002223.pdf 

 

インシデント・レスポンスとは少し異なるかもしれませんが、危機管理という点で今で絶賛お薦めなのは、「危機管理のノウハウ」シリーズではないでしょうか。

単行本の方が電車などで読むのには楽だと思いますが、まとまったのも出ていますね。佐々淳行氏の書籍は結構好きなので、他のシリーズ?、著作も拝読しておりますが、残念ながら講演などを直接拝聴したことがないのが残念です。 

危機管理のノウハウ part 1 信頼されるリーダーの条件 (PHP文庫 サ 1-1)

危機管理のノウハウ part 1 信頼されるリーダーの条件 (PHP文庫 サ 1-1)

 

 

 

 

2015年でもお薦めしたいファイルシステム参考書籍?

ファイルシステムに特化した部分ですと、やはり読むべき書籍はこれですよね。高いのと英語版しかないので、若者は会社に参考書籍として買ってもらうといいかもしれません。 

File System Forensic Analysis

File System Forensic Analysis

 

 個人的には Dan Farmer 氏と Wietse Venema 氏の共著「Forensic Discovery」でファイルシステム関連というか、基本的な部分を学ばせてもらった気がしています。今はPDFで公開されているようです。

Forensic Discovery
http://www.fish2.com/security/wf-book.pdf

あとは、ハードディスク関連の書籍とかも読んでおくと良いのではないでしょうか。個人的には下記を参照したりしました。技術的に深い部分は理解できませんでしたがそれでも色々と仕組みが分かって面白かったです。最近は SSD などもあるので、SSDなども含めた記述がある書籍の方が役立つのかもしれません。 (特にSSDのTrimとかそのあたりの記述があるといいと思いますが、具体的な書籍名は思い浮かばず)

  

改訂 ハード・ディスク装置の構造と応用―記録/再生の原理とメカニズム&インターフェース (レベルアップ・シリーズ)
 

 デジタル・フォレンジック用の複製装置のマニュアルが公開されていれば、それを参照するのも結構勉強になる気がします。

最近の複製装置は機能的にもイメージ出力やエラー処理が強化されている部分があると思いますので、その辺りの機能を知るのは面白いのではないでしょうかね。

国内企業が出している製品のマニュアルがもし参照できれば、米国製品の機能と比較してみると結構面白い気もします。

合わせて、NIST の Computer Forensics Tool Testing (CFTT) Project についても知っておくと良いでしょうね。

Computer Forensics Tool Testing
http://www.cftt.nist.gov/

 

2015年でもお薦めしたい参考書籍?

最近、デジタル・フォレンジックをお仕事で担当する事になった方々などとお会いした際に、どの様な書籍を読むと良いのか?という質問をよくいただきます。

今からデジタル・フォレンジック分野を学ぶ際、どのような書籍から入るのがよいのか?という点では、自分が勉強を始めた頃とは状況が異なる部分もありちょっと回答に困ってしまうわけです。

軽い?読み物などであれば、個人的には「カッコーはコンピューターに卵を産む」辺りが記憶に残っている本になります。この本は1991年が発売日になっていますので、現在のようなインターネットが発達した世界のお話ではないので、今の若者が読んで理解できるか懸念はありますが、たぶん図書館に行けばあるのではないかと思います。 

カッコウはコンピュータに卵を産む〈上〉

カッコウはコンピュータに卵を産む〈上〉

 

これ以外で自分の記憶に残っている書籍としては、ケビン・ミトニックを題材とした書籍でもある「テイクダウン」ですね。この本も1996年の発売ですので、やはりちょっと時代としては古いのですが、個人的には印象に残っています。 

テイクダウン―若き天才日本人学者vs超大物ハッカー〈上〉

テイクダウン―若き天才日本人学者vs超大物ハッカー〈上〉

 

 書籍ではないですが、映画という点では「ウォーゲーム」と「スニーカーズ」でしょうかね。

ウォーゲームはブルーレイ版が出ていることを知ってびっくりですが、パスワードを知る方法とか古典的な部分については、昔はこの映画がよく引き合いに出されていたと思うのですが、いまこの話題を出しても一人で滑って終わりですね。 

ウォー・ゲーム [DVD]

ウォー・ゲーム [DVD]

 

 

ウォー・ゲーム [Blu-ray]

ウォー・ゲーム [Blu-ray]

 

 その昔?、タイガーチームって言葉がよく出ていた時期があった気がするのですが、この映画を見たのもその頃だった気がします。スニーカーズもブルーレイになっているんですねぇ。

スニーカーズ [Blu-ray]

スニーカーズ [Blu-ray]

 

 後はなんですかね、滑るネタとしては文字化けした文字列を表示したところで「これはクリンゴン語ですね!」といっても分かってもらえない辺りでしょうか。

後は、SANS 508とか受講した人なら、やはりシャーロックホームズくらいは分かった方がよいのでしょうか。シャーロックホームズは色々と出ていますが、考え方について言及していたり、引用されているのは「緋色の研究」が多い印象があります。
今からなら、いっそBBCの「SHERLOCK」を楽しむのもありかもしれませんね。 

緋色の研究 (新潮文庫)

緋色の研究 (新潮文庫)

 

 やや異色?になるのかもしれませんが、考え方の解釈については、下記の書籍も面白い本だと思います。ホームズや下記書籍も含めて図書館に行けばあると思いますし、最近はホームズ関係は著作権が切れている部分は Web で探せば読めますね。 

シャーロック・ホームズの思考術

シャーロック・ホームズの思考術

 

 だいたい、この辺りの書籍とかを紹介したりしますが、書いてみて思ったのですが、技術的には全然参考にならないですね(^^;;