アンタイ・フォレンジック妖怪の独り言

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

ネットワークロケーションキーのデコード

前述の SANS の Webcast で触れられている内容ですが、Windiws Vista 以降では、以下のキーに関連する情報が保存されています。RegRipper のプラグインだと今のところ引っ張ってこない?気がするので、RegDog でも現状はこれらのキーに対応してないかと思いますが、せっかくなので対応してはどうでしょうかね?>隣の席な人

http://trycatch.be/blogs/roggenk/archive/2008/01/28/network-locations-in-windows-vista-amp-windows-server-2008.aspx

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Nla\Cache キー配下にあるキーを、キー毎の最終更新日時と共に RegDog で出力するとなかなか良いんではないでしょうか?、Intranet キーの配下に localdomain などのサブキーが作成されるみたいなので、Cache キー配下のキー毎にグループ化して出力するほうが見やすいかもしれません。

NetworkListの配下にある、Profile\GUIDキー配下の値として、DataLastConncted値に時刻情報が入っているみたいですが、これが DateTime.FromBinary とかの形式になっているんですかね?、これもデコードして GUID と共に出力すると参考値として良い気がしますがどうっすかね?
EnCase とかでは一発で変換できないので、バイナリ値変換ツールみたいなのも今後はあると便利なのかも。
まぁそもそも DateTime.FromBinary で扱われているバイナリ値がどいうものか理解できていないのですが、レジストリの DateLastConnected 値に記録されているバイナリ値はこんな感じですね。

D9 07 09 00 02 00 0F 00 0E 00 23 00 06 00 CB 00

手動で 64bit の Windows 日付データ形式に変換できれば、あとは簡単なんですけど、どうすりゃいいのかよくわかりませーん。
などと言っていたら、斜め後ろの人に教えてもらいました。

D9 07 = 2009
09 00 = 09
02 00 = 02
0F 00 = 15
0E 00 = 14
23 00 = 35

この後の 06 00 CB 00 って 6 と 203 とすればいいのか、06 00 CB 00 でデコード?
なにかが少し違う気がする。

D9 07 0A 00 04 00 08 00 0B 00 03 00 07 00 5A 03

というバイト列がある場合に、キーの最終更新日時は 2009/10/08 11:03:07 となっているので、恐らくこの値が上記に書かれていると想定すると、以下をどう読むべきか。

D9 07 = 2009
0A 00 = 10
04 00 = 04
08 00 = 08
0B 00 = 11
03 00 = 03
07 00 = 07
5A 03 = 858

04 の値って(木)とかの意味で考えればいんでしょうかね?年・月・曜日・日・時・分・秒・ミリ?
という並びなのか...いずれにしても、ローカル時間をそのまま記録しているっぽいですね。
適合した文書の検索能力が足りないらしい、適合する文書がしっかりありました。

Decoding the DateCreated and DateLastConnected SSID values From Vista/Win 7
http://cfed-ttf.blogspot.com/2009/08/decoding-datecreated-and.html

ただ、最後の2バイト分が何を意味しているかは書いてないんですかね。
コメント欄で RegRipper プラグインのパターンも書かれてますね。