親記事 → CTFにおけるフォレンジック入門とまとめ - はまやんはまやんはまやん
CTFのフォレンジックにおけるメールフォレンジックまとめ
親記事 → CTFにおけるフォレンジック入門とまとめ - はまやんはまやんはまやん
メールフォレンジック
- 怪しいメールに対して調査してくださいという問題
- それほど難しくはできないので、そんなに頻出ではないイメージ
- だが、現在フィッシングメールが初期攻撃の大きな要因の1つであることを考えると、興味深い分野ではある
- フォーマット
- MBOX: テキストフォーマットなので自然にみられる
- PST:
readpst [pstfile]
としてMBOXに変化して確認する - Outlook Expressでdbxファイルが得られた場合はそのフォルダに移動して
undbx .
でメール内容が復元できるかも - emlファイル: 中身はMBOXと同じっぽい?
- テキストフォーマットでのメールの確認
- メールヘッダーの確認
- とりあえず、Receivedヘッダーが転送時の区切りになるので、Receivedの上にスペースを入れていくと、メールの中継点でどのようなヘッダーが追加されていったかが分かる
- 他にも以下のようにたくさんある
- From: 送信元
- To: 宛先
- Subject: メールの題名
- Date: メーラーでのメール送信日時
- Message-ID: メールの識別子
- メールヘッダーの確認
- 特にメールの添付ファイルや一部本文は、base64エンコードや、Quoted Printableエンコードされているので、復号化して更に中身を解析することがよくある
CTFのフォレンジックにおけるネットワークフォレンジックまとめ [Wireshark, pcap]
親記事 → CTFにおけるフォレンジック入門とまとめ - はまやんはまやんはまやん
ネットワークフォレンジック
- ネットワークのパケットログに対してフォレンジックを行う
- ネットワークに関する基礎知識やプロトコルの知識が必要
- Wiresharkというツールを使って解析する。cap, pcap, pcapngファイルが扱える
Wireshark
- パケットを右クリックすると使える「追跡」機能は無茶苦茶便利
- Follow TCP Stream
- 解析の初手として統計/分析情報も使える。特に以下2つが初手眺めるのに良い
- Protocol Hierarchy : 利用されているプロトコルの統計を知りたい
- Endpoints : どのような端末が通信しているかの統計を知りたい
- とある端末で採取しているので最も多いendpointは自分(被害端末)が多い。次に多いのが攻撃端末かも
- フィルタもIP絞り込みとかさっと行えるといい
http
でhttp通信に絞れる(ip.src == 192.168.100.103) || (ip.dst == 192.168.100.103)
とか便利
- 後は雑に探したいときは文字列検索も可能(Ctrl+F)
- 通信されているファイルを抜き出したいときは
ファイル/オブジェクトをエクスポート/????で取る
- 他
- 破損したpcapファイルの修復 PCAP ファイルの修復 - CTF Wiki
- コマンドで色々処理したい場合はtsharkが使える
- pythonで弄りたいときは
import dpkt
- snortルール: ネットワークパケットに対して適用可能なルール
TCP/UDP通信
- TCP通信 -> Follow TCP Streamで通信を盗み見る
- UDP通信
ICMP通信
- ICMPでDNSのOOB抽出っぽくやってる問題しか見たことない
無線通信 IEEE 802.11
- 「無線 > 無線LAN統計」で通信元の一覧が見れる
- Wiresharkで無線LAN(802.11)のデータを見てみよう! - シアトル生活はじめました
- 802.11のパケットの種類は大まかに三種類ある
wlan.fc.type == 0
でフィルタ- Management frames: APと接続したり切断したり認証したり・・ (0)
- Control frames: 他のフレームを運ぶため。ヘッダーしかない (1)
- Data frames: 実際にデータを含むパケット (2)
wlan.fc.subtype
でサブタイプもある- 「Wireshark 802.11 Display Filter Field Reference」が良い資料になる
wlan.ra == 88-00-00-00-00-00
で特定の送り先(元?)に限定する
- 802.11のパケットの種類は大まかに三種類ある
- 「統計 > フローグラフ」がすごい使えそう
USB, Bluetooth
- USB通信
- キーボード、マウスの挙動を復元する問題が出るかも。以下に一例を乗せるが、結構バグるから、毎回試行錯誤してる
- 基本HIDに従っているので、HIDのドキュメントに従ってあれこれやるのが本来は正しい
- https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf
- キーボード復元 -> sabh05/CTF-Usb_Keyboard_Parser: USB Keyboard Parser Tool is an automated script that can extract HID data from.pcap or.pcapng files.
- マウス復元 -> For2 - HackMD
- キーボード、マウスの挙動を復元する問題が出るかも。以下に一例を乗せるが、結構バグるから、毎回試行錯誤してる
- Bluetooth通信
- あんまりUSB通信と変わらない。データのやり取り部分を見つけたら、あとはハード固有の話か、HID準拠の話になる
CTFのフォレンジックにおけるメモリフォレンジックまとめ [Volatility 3, Volatility 2]
親記事 → CTFにおけるフォレンジック入門とまとめ - はまやんはまやんはまやん
メモリフォレンジック
- メモリダンプが与えられて解析をする問題
- Volatility Foundation
- メモリダンプ解析のスタンダード。これ以外で解析している記事を見たことが無い。(Redlineとか昔はあったぽいが)
- Volatility2(無印)とVolatility3があるが、全くの別物。今から学習を始めるなら、絶対にVolatility 3から始めること
- コマンド実行は結構時間かかるので、プロファイルの特定までは手動でやって、コマンド実行についてはよく使うコマンドを適当なシェルスクリプトで一括で持ってくるといい(その間にご飯)
- Volatility使わなくてもバイナリ解析でやるようなことをやれば時間はかかるけど、使える情報が抜ける可能性は大いにある
- 例えばFile Carvingを使ってファイルを抜き出したり、stringsでそこそこ有益な情報が得られたりもする
解く流れ
- メモリダンプがどのOSのものかを特定する
- volatilityの解析機能ですぐに特定できるかも
- できなければ、
strings -n 10 mem.bin | grep "ubuntu"
みたいに根性で種類とビルドバージョン(カーネルバージョン)を特定する
- シンボルテーブルがなければ作る(メモリのどこに何があるかをまとめたもの…だと思っているが)
- なければ作るしかないが、想像よりも大変ではない
- 頑張って解析する
- これは頑張る。メモリ解析は時間がかかるのでよく使うコマンドをシェルスクリプトにまとめて一括実行するのがおすすめ
Volatility 3(ちょっと情報薄い。ドキュメント見るといい)
- https://qiita.com/ninja400/items/f3dd1e6eb80fd5b39ba9
- windows
python3 /opt/volatility3/vol.py -f image.raw windows.info.Info
WindowsInfoが読み取れるNTBuildLab 7601.17514.amd64fre.win7sp1_rtm.
-> win7sp1が入ってるIs64Bit True
-> 64bits
python3 /opt/volatility3/vol.py -f image.raw windows.pstree.PsTree
プロセスツリーが見られるcmd.exe
が実行されているなら、コマンド系を深堀りしてみる
python3 /opt/volatility3/vol.py -f image.raw windows.netscan.NetScan
ネットワークコネクションが見られる- 怪しいIPを見つけたらVirusTotalで確認
python vol.py -f image.raw windows.cmdline.CmdLine
現在実行中のプロセスがどのような引数で実行されたかが見られるpython vol.py -f image.raw windows.dumpfiles --pid="1676"
メモリ上にあるpidが1676の関連ファイルをdumpしてくれるpython vol.py -f image.raw windows.mutantscan.MutantScan
使用されているミューテックスを出力する- 通常、悪意のあるプログラムの作成者は、そのプログラムが二重起動するを避けるためミューテックスを使用する
python3 /opt/volatility3/vol.py -f image.raw windows.filescan
files scanningpython3 /opt/volatility3/vol.py -f image.raw windows.dumpfiles --pid="2760"
Dump Filespython3 /opt/volatility3/vol.py -f physmemraw windows.hashdump.Hashdump
hashdump- Volatility 3のWindows symbolic table
- Linux
- OS特定
python3 /opt/volatility3/vol.py -f dump.mem banner
- シンボルテーブルの作成 Volatility 3のシンボルテーブルを手動で作成する - NFLabs. エンジニアブログ
- コマンド
python3 /opt/volatility3/vol.py -f dump.memの後に
- OS特定
Volatility2
本当は載せるべきではないんだろうけど、こっちじゃないとたまーに動かなくて未だに動かす。
今から始める人は絶対にVolatility3から始めること。
- 情報セキュリティ技術のスキルアップ・イベント 仙台CTF 2017
- よい日本語資料
- 解析前にprofileを特定、または、用意する必要がある
python2 /opt/volatility/vol.py -f memory.raw imageinfo
でひたすら待てば可能性のあるprofileが提案されてくる- 得られない場合は、デフォルトでないということなので、何とか調べてプロファイルを作って解析する
- profileを自分で作るとき
module.dwarf
(Kernel Data Structures)とSystem.map
(Debug Symbols)があれば、profileを自分で作れるzip _phillip.zip module.dwarf System.map
でzipを作る- できたzipを
volatility/plugins/overlays/linux/
に置く vol2 --info | grep Profile
をすると追加されているので、その名前で使える
- CTFtime.org / HTB Business CTF 2021 / Compromised / Writeup
- GitHub - volatilityfoundation/profiles: Volatility profiles for Linux and Mac OS Xにあるかも
python2 /opt/volatility/vol.py -f memory.raw --profile=Win7SP1x64 [command]
みたいにプロファイルをつけてコマンド実行する- windows
- プロセスを確認してみよう
pslist -P
実行中のプロセスリストが得られるpstree
実行中のプロセスツリーが得られるcmdline
動いているコマンドを一覧表示できるcmdline -p [pid]
で実行時のコマンドラインが得られる
- 怪しいプロセスのpidが得られたら…
dumpfiles --pid="[pid]" --dump-dir=./
で関連ファイルを抜き出してみる- stringsしてから関連キーワードでgrepしてやれば何か出てくるかも
procdump -p [pid] -D output
pidのプロセスのexeを出力するmemdump --pid=[pid] -D .
指定pidのメモリダンプ
cmdscan
cmd.exeで使用したコマンドが見られる(パスワードとか抜けたりするかも)consoles
よくわかってないけど、cmdscan使っておけばいいと思う
envars
環境変数が見られるfilescan
現在開かれているファイル一覧が得られる- grepをうまく使うといい
もろもろ filescan | grep hosts
みたいに dumpfiles -D . --name -Q [offset]
offsetのファイルをdumpする- offsetはfilescanで得られたオフセットを入れる ex.
0x000000004fa23f0
- offsetはfilescanで得られたオフセットを入れる ex.
- grepをうまく使うといい
hashdump
ユーザーアカウントのパスワードハッシュを取得するclipboard
クリップボードを取得するnotepad
ノートパッドにある文字列を抜き出してくるscreenshot -D screens/
スクリーンショットを持ってくることができる?- 通信系
iehistory
IEの履歴を取得するyarascan -Y "[keyword]"
yaraを使ってキーワードスキャンする- レジストリ系
lsadump
LSAメモリをダンプしてくる
- プロセスを確認してみよう
- linux Linux Command Reference · volatilityfoundation/volatility Wiki
linux_bash
bashの実行履歴を確認するlinux_enumerate_files
ファイル列挙ができる- ここでメモリアドレスも一緒に得られるので
linux_find_file -i [address] -O [output filename]
で取り出せる
- ここでメモリアドレスも一緒に得られるので
- linuxのバージョンを把握するとき
grep -a "Linux version" mem.lime
のように関連ワードで直接grepWelcome to Ubuntu 20.04.1 LTS
- TAMU CTF 2021だと、ISOダウンロードしてきてvolatilityツールでdwarfとmapを取得してきて使っている。
linux_lsof
lsofコマンドと同等の結果が得られる- すべてのプロセスがオープンしているディスク上のファイル、名前付きパイプ、ネットワークソケット、デバイスが含まれる
- オープンしているものとしては
/dev/pts/0
ファイルか名前付きパイプ(?)socket:[xxx]
ネットワークソケット xxxにある数字はなんだろうanon_inode:[xxx]
わからんpipe:[xxx]
pipe?:[xxx]
anonymous file createdらしい- ctf-writeups/2022-HTB-Business at master · Zarkrosh/ctf-writeups
- 何かが書き込まれた可能性があるので、プロセスが使っていたinodeを検索して、片っ端からダンプしてみる
- pidからメモリマップを取得
linux_proc_maps -p [pid]
0xffff911935415b00 9260 bash 0x00005574f0196000 0x00005574f02a2000 rw- 0x0 0 0 0 [heap]
0xffff911935415b00 9260 bash 0x00007ffc9446d000 0x00007ffc9448e000 rw- 0x0 0 0 0 [stack]
- こんな感じでheap領域やらstack領域やらも表示してくれるので持ってきてstringsとかすると面白いデータが転がってるかも
linux_dump_map -p [pid] -s 0x00007ffc9446d000 -D .
のような感じでstack領域をダンプしてこれる- 指定しているのは仮想アドレスみたいで物理アドレスに変換する必要があるが、Volatilityがうまくやってくれる
- 理論は19: Intro to Memory Forensics | COMPSCI 590F | Advanced Digital Forensics (Spring 2019)
- メモリマップから使っているライブラリを推定して、そこで使われている構造体が分かれば、stack領域とかから構造体を引っ張ってこれるかも
linux_volshell
pythonコンソールを起動して、色々やるcc(pid=[pid])
でコンテキストを指定pidに移す(色々やる前にやる)- 使用されている(いた?)inodeを抜き出す
for filp, fd in self._proc.lsof():
としてprint("{}: {} (INODE: {})".format(fd, filp, filp.f_inode))
として更に改行0: 18446622369272764928 (INODE: 18446622369302465544)
という感じで色々出てくる。先頭の0:部分はファイルディスクリプタでlsofした結果と紐づくlinux_find_file -i [inode] -O out.bin
としてファイルをダンプしてくる
- OpenSSHのカギを取得するためのプラグインがある
- windows
CTFのフォレンジックにおけるディスクイメージフォレンジックまとめ [ファイルシステム]
親記事 → CTFにおけるフォレンジック入門とまとめ - はまやんはまやんはまやん
(若干、工事中)
ディスクイメージフォレンジック
- ディスクイメージをそのままダンプしてきて解析する問題
- ファイルシステムを仕様に沿ってちゃんと解析する難しい問題も見たことはあるが、基本的にはマウントして中に入っている情報から有意な情報を抜き出してくるような問題が多い
- そのため、ファイルシステムに対する理解というよりかは、入っているOSのファイルを保存のされ方とか解析方法が要求されている
ファイルシステム自体
- (あんま自信ないな。変なのが紛れ込んでるかも)
- ツールについて
- とりあえずFTK Imagerに突っ込めば中に入っているデータは見られる
- AutoPsyが読み込み対応していれば、自動で色々解析してくれる
- 削除済みアイテムも自動で復元してくれる
- mountコマンドでマウントできるかも
- ジャーナルファイル
- パーティション方式 MBR, GPT, ...
- ブートローダーの解析とかってCTFで出たことあるんでしょうか…?
- ファイルシステム ext4, NTFS, ...
- 暗号化ディスク
- TrueCrypt
- VeraCrypt
- BitLocker
- 削除済みファイル
- 普通の削除では参照が切れているだけでデータはまだ残っている。ツールを使えば復元可能。なんでもいいが、AutoPsyが使えるならオススメ
- RAIDの解析という難題もあるっぽい
Windows
- NTFS
- ADS: Alternate Data Stream
- USNジャーナル
- $MFT
- Windowsの見るところはたくさんあるが、有名どころを紹介しておく
- WindowsのアーティファクトのあれこれはだいたいEric Zimmerman's toolsで分析可能
- レジストリ
- ZimmermanToolsのRegistryExplorerで開いて読めばいい
- 保存場所
- PC全体
%SystemRoot%\System32\Config\
(%SystemRoot%はC:\Windows) - ユーザー固有
~\Ntuser.dat
- PC全体
- イベントログ
- evtxファイルであればイベントログ
%systemroot%\System32\winevt\logs
に入っている
- 標準のイベントビューワーで見てもいいし、ZimmermanToolsのEvtxECmd.exeで変換してTimelineExplorerやExcelで見るのがオススメだが、なんでもいい
- 経験値があれば見る場所の当たりがついたりするが、もう頑張って漁るしかない
- evtxファイルであればイベントログ
- 主要フォルダを漁ってみる
- Cドライブ直下
- Usersフォルダの中(特に%appdata%)
- ProgramData
- Program Filesから入っているソフトウェアを特定して設定ファイルとかログとか漁る
- プリフェッチ
C:\windows\Prefetch
に保存されている。exeの起動履歴を確認可能- WinPrefetchView
- WMIレポジトリ
- C:\WINDOWS\setupapi.log
- ドライバとかのログが入っている
- RDP Bitmap Cache (BMC)
- BMCとはRDPの画面キャッシュのこと。取り出して画面を一部盗み見れる
- ツール
- bmc-tools キャッシュを持ってきて、断片的な画像復元までできる
- RdpCacheStitcher 断片的な復元画像から画面全体の復元までできる
- 手動で置いていくのだが、隣り合っている可能性を色の濃淡で教えてくれる
- 他にもSRUMなど、ほんとに色々ある
- PowerShell解析
- よくWindows向けの攻撃で難読化されたPowerShellを解析する問題がよく見られる
- 難読化されたPowershellを解読していく
- 自分は実際のpowershellを使いながら、部分部分ちょこちょこ解読進めている
- 実際に動かすときは注意すること。せめてWindows Sandbox使うこと
- VBAスクリプト解析
- クラッシュログ
Linux
- あんまり知見なし
- inode
- 確認フォルダ
- カーネルクラッシュログ
- crashコマンドで開いてみていく
crash /usr/lib/debug/boot/vmlinux-5.4.0-99-generic ./ubuntu20.04-5.4.0-99-generic-cloudimg-20220215.kdump
- crashコマンド使い方(
>help
でヘルプが見られる)- 起動時
PANIC:
パニック理由が分かるCOMMAND:
パニックが起きたコマンド
>bt
back traceを確認可能>ps
タスクリスト> bt [pid]
でスタックトレースが見れる
>p [変数名]
グローバル変数が見れる>files [pid]
タスクごとのファイルディスクリプターが見られる>files
と単にやるとクラッシュしたもので見られる- foreachを使うやり方も色々紹介されている
>foreach files -R /var/log
foreach files -R /home
>mod
モジュール一覧表示- 実はgrepも使える
`>mod | grep xxx
- 実はgrepも使える
>net
IF表示
- 起動時
- crashコマンドで開いてみていく
- クラッシュログ
- クラッシュを引き起こすには
- Ctrl+zで離れてpsでPID探して
kill -SIGSEGV [pid]
でkillしてfg
で戻るとクラッシュするかも - クラッシュダンプは
/var/crashes
に置かれる
- Ctrl+zで離れてpsでPID探して
- apport-unpackでクラッシュダンプを解析する
apport-unpack _opt_count.1000.crash /tmp/crash-report
みたいに解凍- CoreDumpにメモリダンプが置かれる?
- クラッシュを引き起こすには
macOS
闇だとは聞くが、知見なし
.DS_Store
find . -name .DS_Store
- mnrkbys/DSStoreParser at fix_bug_non-ascii
Android環境の解析問題もある
- ログ解析
- 全体解析
- abファイル: Android Debug Bridge(adb)を使用したシステムバックアップ
( printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" ; tail -c +25 cat.ab ) | tar xfvz -
とすれば解凍可能
dockerコンテナ
- ディスクイメージとちょっと違うかもしれないが、dockerコンテナ自体が与えられて解析ということもある
- dive
- Dockerイメージを分析するツール
- Layer毎で何が起きたのかを一目で確認可能
- dockerイメージに対して何かする問題では試してみる価値あり
docker save test/xyz > dumped.tar
- レイヤー毎のダンプができる。diveでレイヤーのIDを取得してきて対応するフォルダを見てみる
CTFのフォレンジックにおけるファイルフォレンジックまとめ [MS Office, PDF]
親記事 → CTFにおけるフォレンジック入門とまとめ - はまやんはまやんはまやん
ファイルフォレンジック
- よくわからないファイル、壊れたファイル、悪性なファイルが与えられて解析するタイプ
- ファイル毎にできることやツールがあるので、それを解析する技能を鍛える。ファイルごとにできることは結構決まっている
- 難しい問題ではファイルフォーマットをきっちり理解して解く必要がある。仕様書を読み漁ること
- 簡単な問題では、ファイルからデータを適切に抽出できますか?
- 難しい問題では、フォーマットを理解して欠損部分を復元したり、隠されたデータを取得できますか?みたいな所まで問われる
- フォレンジックというよりステガノグラフィーの場合があるので注意
バイナリ全般
バイナリ全般に使える知識
- バイナリエディタ
- ファイルフォーマット
- エントロピーテスト
- fileコマンド
- そもそも。何のファイルかも明かされないときがある。単純にfileコマンドで通すと分かるかも
- fileコマンドの結果で検索すると開けるソフトが出てくるかも
- stringsコマンド
- 文字列を抜き出せる。何のファイルか分からないときにググるキーワードが見つかったりする
- File Carving: バイナリからフォーマットを検索して、ファイルを無理矢理抜いてくること
- メタデータ取得
- yaraルール
- ルールベースでバイナリのパターン判定するルール。
- あんまり見ないけど。
ファイル種別ごと
- 画像
- MS Office関連ファイル
- oletools - OLEおよびMS Officeファイルを解析するためのPythonツール - setodaNoteで困ったことなし
- とりあえず
oleid [file]
で全般的に解析する - VBA Macros ->
olevba -c [file]
- XLM Macros ->
olevba -c [file]
- External relationships ->
oleobj [file]
- とりあえず
- 実態はzipファイルなのでzipに拡張子を変えて解凍して中身を見てみる
- だいたいVBAを頑張って解析していくことになる
- 本当は教えたくない、むっちゃ使える動的解析ツール decalage2/ViperMonkey: A VBA parser and emulation engine to analyze malicious macros.
- Microsoft AccessのMDBファイル
sudo apt install mdbtools
でmdbファイルを見る- テーブル一覧取得
mdb-tables [mdb-file]
- テーブルの中身取得
mdb-export [mdb-file] [tablename]
- テーブル一覧取得
- 資料集 CTF-Heaven/office-tools.md at master · thezakman/CTF-Heaven
- oletools - OLEおよびMS Officeファイルを解析するためのPythonツール - setodaNoteで困ったことなし
- XML
- KMLファイル。ジオデータ、地点データを保存するフォーマット
<kml
みたいなタグがある
- Google Earthを起動し、左のメニューから辿っていくとインポートできる
- KMLファイル。ジオデータ、地点データを保存するフォーマット
- フォント
- odttfファイル: 暗号化されたttfファイル 解析例
- ttfファイル
- 圧縮ファイル
- パスワードクラッキング
- CTFのWebセキュリティにおけるPassword Cracking, ハッシュ, 暗号化 - はまやんはまやんはまやん
- パスワードクラッキング試行能力が問われたりする
- パスワードクラッキング
CTFにおけるフォレンジック入門とまとめ
この記事はCTF Advent Calendar 2022の13日目の記事です。
昨日はゼオスTTさんのevilなnpmパッケージでRCEでした。
最近は依存関係が多くてサプライチェーン考えるのも天文学的な感じですよね…恐ろしさをとても実感できる良記事でした…
はじめに
本記事では、CTFでフォレンジック(Forensics)と言われる分野についてまとめる。
後半からは辞書的に使ってください。
注意事項
- 本知識をそのまま実世界で使用するのは推奨しません。ちゃんと勉強してください(自戒)
- フォレンジックの一分野であるような気はするが、ステガノグラフィについては記事を分けています。(毛色が違いすぎるため)
CTFにおけるフォレンジック問題
CTFとはセキュリティを題材にしたコンテストの総称であるが、特にその中でもフォレンジックと呼ばれる分野について説明する。
CTFにおけるフォレンジックを一個人の意見としてまとめると、以下のように言える。
とあるファイルが与えられて、そこから有意な情報を抜き出す問題
脆弱性を発見することは求められない。
このカテゴリでは、与えられたファイルによって何が起きるのか、起きた後のログやデータを元にどのような有意な情報が抜き出せるかという部分が問われる。
「とあるファイル」は本当に何でもいいのだが、体感、実際のサイバー犯罪に使われるようなファイルや、サイバー攻撃後の事後調査にまつわるファイルが多い。
他にも欠損したファイルの復元といったファイルそのものの仕様を理解したうえで、ファイルを読み取っていく問題もある。
…とそれっぽく書いたが、単純に、ファイルが与えられるので頑張って情報を読み取って、というのがフォレンジック問題での基本方針である。
カテゴリについて
フォレンジック問題周りはカテゴリ分けに好みが出る。
今回は以下のようなカテゴリにあるものをすべてフォレンジックとしてまとめて説明することにする。
カテゴリ分けにルールはないので、雰囲気でカテゴリ名からフォレンジック問だなと認識するといいと思う。
- Forensics: 特定のファイルに対して解析をして、有意な情報を抜き出してくる
- Network: ネットワークのパケットログに対して解析をして、有意な情報を抜き出してくる
- Logs: 何らかのログに対して解析をして、有意な情報を抜き出してくる
- DFIR: Degital Forensics and Incident Responseを指す言葉。この2つのセキュリティ的な役割に近い問題が多いので、こういうカテゴリ分けもある
- BlueTeam: 組織でサイバー攻撃の防御側のチームを指す言葉。主に防御側が解析する対象が題材になりがちなので、BlueTeam向け問題とか言われたりする
- (Steganography: これは明日の記事へ)
あとmiscに入れ込まれていたりもします。
解き方/初学者に向けて
フォレンジック問題はアドホックな解法が多いので、こういう知識が必要で…という初学者にストレートに役立つ情報が出せそうにない。
以下、小話レベルでまとめておく。
- よく出る解析対象というのはあるので、その手法を学んでいくといい。得意分野を作って解けるようにすると楽しくなってくる
- grep力を鍛える
- ツールアシストに頼る
- 根本を理解することも大事だが、フォレンジックではツールを知っているか、適切に扱えるかということも影響してくる
- Writeupを見ると、新しいツールを使って解きましたみたいな解法も時々見かけるのでアンテナを張っておくといいかもしれない
- 幅広い知識が要求されるので、幅広に知識を取り入れよう
- フォレンジックは他のジャンルと違って毎回出るようなジャンルではないし、出ても好みの解析対象であるとは限らないので、毎週CTFを覗いて問題を漁ること
…つまり第一歩目は?
CTFにどんどん参加して、たたき上げで成長していくのももちろんおすすめではあるが、Blue Team向けに出されている学習教材を使って勉強するのがいい。
はっきり第一歩を言い切るなら「TryHackMeで学習したい分野について、順番に埋めていくのがいい」と思う。
- TryHackMeのBlueTeam系の学習教材を利用する
- 今なら2022 SANS Holiday Hack Challenge & KringleCon
- SANSが毎年12月に出しているチャレンジ。BlueTeam系の問題が多いイメージ。手取り足取り教えてくれる系ではない。
- 去年までの資料を使って勉強してもいいし、今年の問題をチャレンジしてみるのもいい
- ほかにもBlueTeam系のチャレンジサイトが多くある(本記事の末尾にちょっと書いておきました)
…ほんとにたたき上げです。
手取り足取り教えるような入門記事もいつか書きたいですが、時間が…
サブジャンルについて
サブジャンルについて記事を分けて、キーワード形式でまとめていく。
学習の参考にしてください。
- CTFのフォレンジックにおけるファイルフォレンジックまとめ(MS Office, PDF) - はまやんはまやんはまやん
- CTFのフォレンジックにおけるディスクイメージフォレンジックまとめ [ファイルシステム] - はまやんはまやんはまやん
- CTFのフォレンジックにおけるメモリフォレンジックまとめ [Volatility 3, Volatility 2] - はまやんはまやんはまやん
- CTFのフォレンジックにおけるネットワークフォレンジックまとめ [WireShark, pcap] - はまやんはまやんはまやん
- CTFのフォレンジックにおけるメールフォレンジックまとめ - はまやんはまやんはまやん
- CTFのフォレンジックにおけるログフォレンジックまとめ - はまやんはまやんはまやん
- CTFのフォレンジックにおけるブラウザフォレンジックまとめ - はまやんはまやんはまやん
Challenges
フォレンジック問題と銘打って問題が出題されていたり、blue team向けの学習サイトがあったりもします。
ほぼ書きなぐりですが、書いときます。
- おすすめ
- TryHackMe
- フォレンジック学習向けのイメージデータ - setodaNote
- 仙台CTFの解説
- 常設CTFやCTFの過去問
- picoctf
- FreeHackQuest
- HackTheBoxのChallenges
- blue team向け
- Splunk解析
- メモリフォレンジック
- メモリフォレンジックCTF「MemLabs」Lab1のWriteUp: NECセキュリティブログ | NEC
- GitHub - stuxnet999/MemLabs: Educational, CTF-styled labs for individuals interested in Memory Forensics
- https://www.tryhackme.com/room/memoryforensics
- Memory Samples · volatilityfoundation/volatility Wiki · GitHub
- やられメモリダンプ
- メモリフォレンジックCTF「MemLabs」Lab1のWriteUp: NECセキュリティブログ | NEC
- Memory Forensics: How to Pull Passwords from a Memory Dump – CYBER ARMS – Computer Security
- 「Volatility Frameworkを使ったメモリフォレンジック」と言うハンズオンに参加させて頂きました。 | DevelopersIO
- ネットワークフォレンジック
- ログフォレンジック
- 未分類
- Defcon DFIR CTF 2019
- Challenges - Aspire CTF
- Ali Hadi, Ph.D.
- Challenge Forensic - Challenges Windows
- Digital Forensics Challenge Treasure Hunt - Round 1
- Challenges and Images - Forensic Focus
- Digital Forensics Challenge
- Digital Forensics Challenge
- Challenges and Images - Forensic Focus
- hack the box forensics challenges
- PicoCTF 2019 — Forensics Challenges | by Kamran Saifullah | Medium
- Challenges/Forensic [Root Me : Hacking and Information Security learning platform]
- SANS Digital Forensics and Incident Response Challenge
- 3 Challenges in Digital Forensics for Crime Investigation - Lumix
- Home | CyberDefenders ® | Blue Team CTF Challenges
- https://dfrws.org/dfrws-forensic-challenge
- https://www.hecfblog.com/2018/08/daily-blog-451-defcon-dfir-ctf-2018.html
- https://www.cfreds.nist.gov/
- Digital Forensic Challenge #1 - Web Server Case Write up - #include <sys/socket.h>
- Digital Forensics challenge まとめ(随時更新) - 4ensiX
- ForensicChallenges
- Ali Hadi, Ph.D.
- DFA & CCSC Joint Spring 2020 CTF
明日も自分の記事ですね。ステガノグラフィーについて書きます。