証跡採取
レジストリ解析
- WindowsRegistoryRecovery
- Regshot
- SAMInside
プロセス監視
- Process Explorer
- Process Hacker
- 性能は Process Hacker > Process Explorerか
- プロセス情報をリアルタイムで確認できる
- Stringsも確認可能
- 署名の確認 Options - Verify Image Signatures
- パッキグプロセスは紫色となる
- Process Monitor
- レジストリ、ファイル操作、実行コマンド、ネットワークアクセス等の履歴を確認
- noribenと併用
- フィルタを使用する
- フィルタルール
- 意味
- Process Name is explorer.exe
- プロセス名指定
- Operation is WriteFile
- ファイル書込み指定
- Operation is SetDisposition InformationFile
- ファイル削除指定
- Operation is RegSetValue
- レジストリ値設定指定
- Category is Write
- 書込み全般指定
メモリ解析
- Volatility
- # メモリイメージプロファイル取得
- $ volatility -f FILE_NAME imageinfo
- # SYSTEMとSAMレジストリアドレスを取得
- $ volatility -f FILE_NAME --profile=Win7SP1x64 hivelist
- # パスワードハッシュを求める
- $ volatility -f FILE_NAME --profile=Win7SP1x64 hashdump -y SYSTEM_ADDRESS -s SAM_ADDRESS
- # プロセスツリーを表示する
- $ volatility -f FILE_NAME --profile=Win7SP1x64 pstree
- # プロセスリストを表示する
- $ volatility -f FILE_NAME --profile=Win7SP1x64 splits
- # ロードDLLリストを表示する
- $ volatility -f FILE_NAME --profile=Win7SP1x64 dlllist
- # ネットワーク情報を表示する}
- $ volatility.exe -f FILE_NAME --profile=Win7SP1x64 netscan
ファイル解析
- fileコマンド
- $ file FILE_NAME
- Bulk Extractor
- カービングを実施
- binwalk
- ファイル展開
- $ binwalk -e FILE_NAME
- シャドウコピー解析
- vssadminコマンド
- >vssadmin list shadows /for=E:
- >mklink /d E:\shadowcopy \\?\GLOVALROOT...
- >vshadowmount
プログラム表層解析
- EXE Explorer
- File Alyzer
- CFF Explorer
- Stud_PE
- Python + PEFile(Pythonライブラリ)
デバッガ
- Immunity Debugger
- OllyDbg
- x64dbg
- IDA
逆コンパイラ
DLL実行
テキスト抽出
- BinText
- 収集率は良くない
- stringsコマンド
ウェブ解析
- Fiddler(ローカルプロキシ)
- Google Chrome 開発者モード
解析環境
擬似サーバ
通信傍受
- WireShark
- iptables
- -snat
- -redirect
MacOS
Notes(メモ帳)のsqlite解析
- sqliteファイル抽出
- ~「/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite」を取り出す
- メモの記録箇所
- 「ZICNOTEDATA」テーブル
- 「ZDATA」列(BLOB型)
- メモの記録内容
- sqlite browser等で確認すると、「ZDATA」列の中は「0x1f 0x8b」で始まる値
- 「0x1f 0x8b」はgzipファイルなので、sqlite browserの機能からエクスポートし、解凍することで復元できる
印刷履歴の解析
- プリンタ設定
- ~/Library/Preferences/org.cups.printers.plist
- /Library/Preferences/org.cups.printers.plist
- /etc/cups/printers.conf
- 印刷ジョブ
- /private/var/spool/cups
- 印刷履歴
- /private/var/log/cups/access_log
iPhone
iSafePlayのパスワード解析
- パスワードファイル抽出
- net.fanship.iSafePlay\Library\Preferences\net.fanship.iSafePlay.plist
- パスワード記載箇所
- <key>isafepw</key>
- <string>(パスワードハッシュ)</string>
- パスワードハッシュはBase64でエンコードされているため、デコードを実施
- デコードした値(16進数)はMD5ハッシュであるため、パスワード解析ソフト等により解析を実施
※version 10.26で確認
iTunesバックアップの保存場所変更
- iTunesバックアップのデフォルトの保存場所(以下のいずれか)
- - C:\Users\[user name]\AppData\Roaming\Apple Computer\MobileSync\Backup
- - C:\Users\[user name]\Apple\MobileSync
- デフォルト保存場所にある「Backup」フォルダの名前を変更するか削除する
- 変更先のフォルダを作成する
- デフォルトの保存場所から「Backup」として変更先フォルダに向けたシンボリックリンクを作成
- mklink /d "C:/Users/[user name]/AppData\Roaming/Apple Computer/MobileSync/Backup" "D:\Backup"
- ※「D:\Backup」は変更先のフォルダ
iPhone入力サジェストの解析
- 入力サジェストの保存場所
- /private/var/mobile/Library/Keyboard/DynamicBigramPharseLexion_ja_JP.db
IoT
UART(Universal Asynchronous Receiver Transmitter)
- 調歩同期方式のシリアル通信装置で、マイコン等で使用されることが多い
- 最も単純な構成は[GND][TX][RX]の3線構成
- [TX]は送信、[TR]は受信
- 他の機器と接続する際は、[GND-GND][TX-TR][TR-TX]のようにクロス接続する
- 同期速度(ボーレート)を設定する必要がある
- 110bps,150bps,300bps,600bps,1200bps,4800bps,9600bps,19200bps,38400bps,57600bps,115200bpsなど
IoT機器のUARTとPCの通信方法
- UARTと思われる4ピンから、テスタ等で抵抗値を測定し、導通している箇所が[GND]
- 機器の電源投入後テスタで各ピンの電圧を測定する
- 3.3V(5V)で安定しているピンが[VCC]、電圧が変動するピンが[TX]、他が[TR]
- USB-Serial変換機とIoT機器の[TX][TR][GND]をそれぞれ接続する
- PCのターミナル等でボーレートを設定する
- IoT機器の電源を投入すると起動時のメッセージが確認できる
フラッシュメモリ
バイトオーダー
ビッグエンディアン
- バイト列をバイトの上位から順番に並べる方法
- 「1234ABCD」をビッグエンディアンで並べると「12 34 AB CD」となる
- メモリに格納した場合は、メモリアドレスの低い番地番地に「12」が格納され、メモリアドレスの高い番地に「CD」が格納される順番となる
- ネットワーク上ではビッグエンディアンでデータが送信される
リトルエンディアン
- バイト列をバイトの下位から順番に並べる方法
- 「1234ABCD」をリトルエンディアンで並べると「CD AB 34 12」となる
- メモリに格納した場合は、メモリアドレスの低い番地番地に「CD」が格納され、メモリアドレスの高い番地に「12」が格納される順番となる
- Intel互換のCPUではリトルエンディアンでデータが格納される
プログラミングにおける留意事項
- ネットワークプログラミングにおいてデータ送信順序に関係する
- C言語ではネットワークとホストのバイトオーダーを変換するために以下の関数がある
- 関数
- 説明
- ntons()
- network to host short
- ネットワークバイトオーダーからホストバイトオーダーへ変換(16bit)
- ntonl()
- network to host long
- ネットワークバイトオーダーからホストバイトオーダーへ変換(32bit)
- htons()
- host to network short
- ホストバイトオーダーからネットワークバイトオーダーへ変換(16bit)
- htonl()
- host to network long
- ホストバイトオーダーからネットワークバイトオーダーへ変換(32bit)