問題
J.zip_4c7050d70c9077b8c94ce0d76effcb8676bed3ba
というファイルが配られているので、そこからflagを見つけ出す。
解法
fileコマンドで先ほどのファイルを見ると普通にzipファイルであることがわかる
J.zip_4c7050d70c9077b8c94ce0d76effcb8676bed3ba: Zip archive data, at least v2.0 to extract, compression method=deflate
unzipコマンドで解凍する。するとJというファイルが出てくる
Archive: J.zip_4c7050d70c9077b8c94ce0d76effcb8676bed3ba
inflating: J
このファイルをfileコマンドでみると、dataとしか出ず詳しいことが分からない。
file J
J: data
stringsコマンドで可読部分を取り出してみるも参考となりそうな部分はない。
今度はhexdumpで直接バイナリ部分16進数とASCIIで確認する。
hexdump -C J | head
00000000 60 00 00 00 02 00 00 00 55 ed 00 00 00 00 23 00 |`.......U.....#.|
00000010 61 08 00 00 00 00 01 00 d0 73 3f 01 00 00 00 00 |a........s?.....|
00000020 a4 df f6 d3 62 49 d1 01 00 01 00 00 00 00 00 00 |....bI..........|
00000030 00 00 00 00 20 00 00 00 22 00 3c 00 6e 00 67 00 |.... ...".<.n.g.|
00000040 65 00 6e 00 5f 00 73 00 65 00 72 00 76 00 69 00 |e.n._.s.e.r.v.i.|
00000050 63 00 65 00 2e 00 6c 00 6f 00 63 00 6b 00 00 00 |c.e...l.o.c.k...|
00000060 60 00 00 00 02 00 00 00 a7 56 00 00 00 00 01 00 |`........V......|
00000070 61 08 00 00 00 00 01 00 30 74 3f 01 00 00 00 00 |a.......0t?.....|
00000080 a4 df f6 d3 62 49 d1 01 02 00 00 00 00 00 00 00 |....bI..........|
00000090 00 00 00 00 20 00 00 00 20 00 3c 00 6e 00 67 00 |.... ... .<.n.g.|
念の為マジックナンバーを確認してみるも、どのファイルにも合致しなかった。
しかしながらhexdumpでのASCII部分をよくみると.<.n.g.のような表記になっていて.と文字が入り混じっていることから1バイトではなく2バイト文字列であると推察できる。
iconv -f UTF-16LE -t UTF-8 -c J | stringsでmacOSでも行うことができる。
以下に出力の一部を抜粋します。
<tmp.edb
X<Microsoft-Windows-Windows Defender%4WHC.evtx
"<WindowsUpdate.log
n<Microsoft-Windows-WindowsUpdateClient%4Operational.evtx
d<Microsoft-Windows-WindowsBackup%4ActionCenter.evtxX
<OBJECTS.DATA
<OBJECTS.DATA
<INDEX.BTR
<MAPPING2.MAP
<CiST0000.000
<MSDTC.LOG
<SOFTWARE.LOG1
<ntuser.dat.LOG1
<NTUSER.DAT?
WindowsUpdate.logという部分やntuser.dat.LOG1という部分からwindowsでのUSNジャーナルファイルであることが推察できる。
python3 -m venv venv
source venv/bin/activate
pip install usnparser
その後usn.pyで実行catでそのまま実行するとあまりにも長いので最初の5行のみ表示。
usn.py -f J -o output.txt
head -n 5 output.txt
以下のように表示されるとおもいます。
2016-01-07 15:48:18.224937 | ngen_service.lock | ARCHIVE | FILE_CREATE
2016-01-07 15:48:18.224937 | ngen_service.log | ARCHIVE | DATA_EXTEND
2016-01-07 15:48:18.224937 | ngen_service.log | ARCHIVE | DATA_EXTEND CLOSE
2016-01-07 15:48:18.224937 | ngen_service.lock | ARCHIVE | FILE_CREATE FILE_DELETE CLOSE
2016-01-07 15:48:18.224937 | ngenservicelock.dat | ARCHIVE | FILE_CREATE FILE_DELETE CLOSE
注目してほしいのは一番右の部分です。これはUSN REASONと呼ばれこのファイルが作成された理由にあたります。
そこでファイル名変更に関するものはRENAMEという文字列で始まるので、それらを抽出します
cat output.txt | grep RENAME
となっていてこれらのうち.txtの部分の変更をつなぎ合わせるとflagが出現する。
SECCON{F0rensics_usnjrnl2018}となる。