@port139 Blog

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

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 で探せば読めますね。 

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

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

 

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

 

sqlparse v.1.1 を試す(2)

引き続き、sqlparse v.1.1 のテストを行ってみます。

昨日はページ内の削除レコードを検出する部分を試したわけですが、ページ内での上書きが発生した場合やページ再利用時にどうなるかテストしてみます。

まず、昨日と同じくサンプルのデータベースファイルとテーブルを作成します。下記は5件のレコードが存在しているリーフページです。

f:id:hideakii:20140907080156p:plain

Secure Deleteがオフの状態で、このテーブル内のデータ 5件を全て一括削除してみます。

f:id:hideakii:20140907080742p:plain

この状態であれば、Sqlpaeseで処理すると以下のように削除レコードを検出してくれます。

Type Offset Length Data
Unallocated 520 504 T#hogehoge005C#hogehoge0042#hogehoge003!#hogehoge002#hogehoge001

現在、ページ内には過去のレコード5件が残っていますが、この状態のまま新規にレコードを作成すると、以下のように過去のレコードが上書きされていきます。(1件だけレコードを追加)

f:id:hideakii:20140907081257p:plain

この状態でも、Sqlpaeseで処理すると以下のように削除レコードを検出してくれます。

Type Offset Length Data
Unallocated 522 486 T#hogehoge005C#hogehoge0042#hogehoge003!#hogehoge002

 次は若干トリッキー?なことをしてみます。レコード2はとても長い文字列を入れていますので、1レコードには収まりませんので、別のページが割り当てられた状態になります。

f:id:hideakii:20140907082831p:plain

部分的に別ページにデータが存在する状態で、このレコードを削除してみたのが下記の状況です。

f:id:hideakii:20140907083403p:plain

青い線の下にあるページ内には文字列が存在していることを目視であれば確認できますが、sqlparseで処理した結果は下記です。

Type Offset Length Data
Unallocated 524 298 6
Free Block 839 169 ?port139port139port139port139port139port139port139port139port139port139port139port139port139port139port139port139port139port139port139port139port139port139por

Free Block 839 の位置は青い線より上の部分にあり、ページが再利用されている青い線より下にあるデータは拾えてないことが分かります。

仕様を詳しく確認していないのですが、ページが別用途で再利用されていたりする場合には、そのページ内にレコードが残っていても検出しないかもしれません。

 

sqlparse v.1.1 を試す

SQLite の削除データをパースするツール sqlparse v.1.1 を試してみたいと思います。

sqlparse v.1.1
https://github.com/mdegrazia/SQLite-Deleted-Records-Parser/releases/tag/v.1.1

コマンドライン、GUI、Python スクリプトが提供されていますが、今回は GUI 版を使ってみたいと思います。

f:id:hideakii:20140906145416p:plain

SQLite3 のテスト用データベースを FireFox の SQLite Manager を使って作成します。削除レコードの復元テストという観点から、DB設定で以下の設定を行います。

  • ページサイズは 512byte(全体サイズを小さくして目視しやすくする為)
  • Secure Deleteはオフ

テーブル sample を作成し、レコードを 6件ほど登録します。

ページ内のレコードが削除されたケースを想定し、4番目のレコードを削除してから、このDBファイルをsqlparseで処理してみます。

SQLite Managerからテスト用のデータベースファイルの sample テーブルを表示すると以下のようになっています。No 4のレコードがない状態です。

f:id:hideakii:20140906143546p:plain

バイナリエディタでデータベースファイルを開き、ページ内を確認すると、レコード4の残骸が残っていることを確認することができます。(削除の影響で値として 4 は消えてしまっていますが。。。)

f:id:hideakii:20140906143858p:plain

Secure Deleteの場合には該当レコード部分はゼロ埋めされますが、今回 Secure Deleteをオフにしてあるので、データを確認できました。

このデータをsqlparseで処理してみます。処理方法として、Formatted Output(strip non printable characters)と、Raw Outputを選択できます。

残念ながら、日本語文字列が入っている影響なのか、Formatted で処理してもヘッダ部分しか出力されない状況でしたので、Raw Output を使ってみた出力結果が下記になります。

Unallocated, Offset 530 Length 264
Data:

Free Block, Offset 930, Length 42
Data:
*Wsasasasakld;akd;skd;lsakd;sakd;lsak;l

 

バイナリエディタで発見した削除データ部分を検出していることが確認できます。 

次に、日本語文字列を含んでいるデータを Secure Deleteオフの状態で削除し、同じ処理を実施してみたいと思います。

 No 5 として登録していたレコードを削除します、HEX 内容を確認してみると以下の状況であることが確認できます。日本語文字列は UTF-8 ですので、ちょっと分かりにくですが、残っていることを確認できます。

f:id:hideakii:20140906144905p:plain

 sqlparseで処理してみます。RAW Outputで処理した結果を UTF-8 としてエディタで開き、該当レコード部分として出力されたのが下記になります。

Free Block, Offset 863, Length 109
Data:
m?これは日本語文字列のテストThis is japanese test. *Wsasasasakld;akd;skd;lsakd;sakd;lsak;l

  

 二つの削除レコードが連続しているため連結して表示されてきますが、日本語文字列も RAW の出力結果から確認できました。

ページごと削除された場合などはテストしていませんが、ページ内レコードの残骸を拾ってくれるのはかなり便利だと思います。

  • Formatted Output(strip non printable characters)は日本語が存在するとうまく動かない?
  • Raw Outputを選択し、UTF-8で出力結果を読めば日本語も確認できる
  • Secure DeleteがONの場合、ページ内で削除されたレコードの位置は特定するが、データ自体はない(削除レコードが存在している事は認識できる

 

 

雑談: 転職して一カ月

前職を 7/31 付で退職してから、新たな会社に入ってやっと一カ月が経過しました。

劇的に変わった事といえば日々スーツになった事がありますが、仕事内容としては今のところまだまだ見習い状態です(笑)

転職したことをご報告していなかった方々に急に遭遇する機会も多く、若干ビックリされてしまう事もありますが、元気にお仕事させていただいております。

新たに覚える必要がある技術的な項目も多く、自分の不得意なところも良く分かってきた部分もありますが、やりがいのあるお仕事ですので焦らずじっくり取り組んでいかないといけないと、二ヶ月目突入前にちょっと考えている今日この頃です。

 

Android の自動バックアップ(写真や動画)

Android のバックアップについては下記 URL で説明されていますが、写真や動画、については自動バックアップの設定を行う事ができます。

データをバックアップ、消去する
https://support.google.com/nexus/answer/2819582?hl=ja

自動バックアップのオン/オフを切り替える
https://support.google.com/plus/answer/1647509

 写真アプリを開き、 メニュー アイコン/ボタン> [設定] > [自動バックアップ] の順にタップし、[オン] または [オフ] を切り替えます。

この写真アプリの自動バックアップを有効にしている場合、自動的に写真がバックアップされますが、この内容は Google+ 側で確認する事ができます。

Android で設定している Google のアカウントで Google+ にアクセスし、左上のプルダウン メニューから「写真」を選択します。

次に検索のウインドウにあるプルダウンメニューから「自動バックアップ」を指定するか、直接 #AutoBackup を入力して検索すると、自動バックアップによりアップロードされた写真などを確認することができます。

複数のデバイスを使っている場合には、それら全ての自動バックアップされた画像が表示されますので、場合によっては現在使っていない端末で過去に自動バックアップされたものが含まれていたりするケースもあります。

Google+ で自動バックアップした画像ファイルをダウンロードする事ができますが、この時に「写真をダウンロード」の選択肢として、①元の写真、②補正済み、のいずれかを選択する事になります。この時、補正済みの写真をダウンロードすると、端末にあるオリジナルの写真とはファイルサイズなどが異なる状態でダウンロードされる事が分かります。

自動的に補正がかかっているケースでは、意識せずにダウンロードすると補正された写真のほうがダウンロードされることになるので注意が必要です。

(対象をチェックしておいてから)自動補正を適用⇒オフ、とし元に戻してからダウンロードすることで元のファイルサイズの画像をダウンロードする事が可能になります。

補正の影響は、データツール⇒データをダウンロード⇒データコピーのダウンロード、でアーカイブを作成してバックアップを取る場合にも影響します。自動補正したままアーカイブを作成すると、アーカイブに含まれる写真は補正された状態のものになります。補正を先に解除し、それからアーカイブを作成すれば元サイズの画像がアーカイブされる事になります。

 なお、ファイルサイズはだいたい同じ様なサイズになると思いますが、EXIF が変更されていますので同じにはなりません。また、ハッシュ値も当然ですがオリジナルとは一致してきません。エクスプローラのプロパティでみると分かりますが、元の場所のプログラム名が Google になるなど、EXIF 値がオリジナルと異なった状態で保存されているようで、ハッシュ値による同一確認がそのままではできませんね。

 

 

 

Android のマルチユーザと adb backup (2)

Android のマルチユーザー機能に関連して「制限付きプロフィール」というユーザーを作成する事ができます。このユーザーは、Owner と同じ Google アカウントなどを使用しつつ使えるアプリケーションを制限したりする事ができます。ぺレンタルコントロールなどで使うケースを想定している機能のようですね。

制限付きプロフィール
https://support.google.com/nexus/answer/3175031?hl=ja

何が制限されて、何が許可されるのか?
Android 4.3の制限付きプロフィールを試す
http://internet.watch.impress.co.jp/docs/column/shimizu/20130903_613668.html

制限付きプロフィールのユーザーを追加すると、まず(Ownerアカウントについて)画面ロックを有効にするように求められます。 制限付きプロフィールのユーザーがOwner側のユーザーにアクセスできない様にする為だと推測していますが、単純にユーザーを追加した場合には求められないんですよね>画面ロックの有効化

制限付きプロフィールでは、許可したアプリケーションが利用可能になる仕組みになっているので、ここでは例えば LINE を Owner 側の設定から許可して、制限付きプロフィールで使った場合に、どこにデータが置かれるかを確認してみます。

root@generic_x86:/data/user/11/jp.naver.line.android/databases # ls -l
ls -l
-rw-rw---- u11_a52 u11_a52 16384 2014-07-20 19:18 NewBadge.db
-rw------- u11_a52 u11_a52 8720 2014-07-20 19:18 NewBadge.db-journal
-rw-rw---- u11_a52 u11_a52 16384 2014-07-20 19:18 cafecache.db
-rw------- u11_a52 u11_a52 8720 2014-07-20 19:18 cafecache.db-journal
-rw-rw---- u11_a52 u11_a52 311296 2014-07-20 19:18 naver_line
-rw------- u11_a52 u11_a52 12824 2014-07-20 19:18 naver_line-journal

データとしては/data/user 配下に 11 という番号で新規のフォルダが作成され、その配下にデータベースファイルが配置されている状況です。

この時点では、まだ LINE を制限付きプロファイルでは実行していませんので、Owner アカウント側ので DB がコピーされている状況に見えます。

※LINE 自体が制限付きプロフィールの環境化で使えるのか未確認です、検索してみると制限付きプロフィールではうまく動作しないアプリケーションもあるようですね。

 

制限付きプロフィールについても、データの保管場所はユーザ用のフォルダが /data/user 配下に作成され、そこに置かれています。

このパスにあるデータは、adb backup の対象範囲外になりますので、制限付きプロフィールを使っている場合にも、追加したユーザと同じくバックアップはかなり難しい状況になるという事ですね。

 

 なお、マルチユーザー環境におけるAndroid のバックアップ設定については、現状では Owner アカウントしか設定できない仕様のようです。追加したユーザーでは「バックアップとリセット」も使えないと。

データをバックアップ、消去する
https://support.google.com/nexus/answer/2819582?hl=ja
複数のユーザーで 1 台のタブレットを使用している場合、[バックアップとリセット] オプションが表示されるのは、タブレットの所有者のみです。

 

 

 

Android のマルチユーザと adb backup (1)

AVD 上の Android でマルチユーザーを設定し、adb install コマンドで LINE をインストールしてみました。Owner と新しいユーザーの両方から LINE アプリケーションを起動する事ができますが、それぞれアプリケーションデータの保管場所は異なっています。

最初の Owner アカウントで LINE を実行すると以下二つのフォルダ配下にデータベース関連のファイルが存在している事を確認できます。

/data/data/jp.naver.line.android/databases

/data/user/0/jp.naver.line.android/databases

追加したユーザーのデータのデータベース関連ファイルは下記フォルダ配下になります。

/data/user/10/jp.naver.line.android/databases

作成した順番に 10,20 と番号が付与されるようですが、Owner については /data/data 配下と /data/user/0 配下の両方にデータがある事になりますが、/user/0 は /data/data へのリンクになっています。

新しく作成したユーザーでアプリケーションをインストールした場合、そのアプリケーションは Owner のアカウントからは見えません。とはいえ、アプリケーションのフォルダ自体は /data/data 配下に作成されてはきます。

追加したユーザーがインストールしたアプリケーションが、pm list packages コマンドで確認できるか試してみたのですが、別ユーザーでインストールしたアプリケーションはパッケージリストの中に表示されませんでした。この為、マルチユーザの端末については pm list packages でインストールされているアプリケーションを全て把握するのは難しそうです。

 

マルチユーザ環境で adb backup コマンドを実行した場合ですが、基本的にはシングルユーザーでバックアップ対象としている範囲だけをバックアップするようです。

まず、adb backup を実行した際の確認画面が、追加ユーザーでログインしている状態では表示されません。Owner アカウントでログインしている場合にはバックアップの確認画面が表示されます。

次にバックアップされるデータですが、例えば adb install でインストールした LINE は、apps\jp.naver.line.android としてバックアップされます。しかし、これは Onwer アカウント側のデータのみで、追加しているユーザーがある /user/10 配下のデータはバックアップに含まれていません。

また、追加ユーザーでインストールしたアプリケーションは、/data/data 配下にフォルダはありますが、バックアップにはこのフォルダが含まれてきません。

adb backup で -shared を指定した場合、/shard/0 としてバックアップが取れ、Ownerアカウントでは見えなかった Download フォルダ配下も取れているのですが、AVD 上での動作ですので実機でも同じ動作となるのかが分かりません。

 

adb backup コマンド自体はマルチユーザー環境を想定していないようですので、タブレットでマルチユーザーが使われている場合には、adb backup では不完全なバックアップしか取れない状況です。