SECCON 2018 Online CTF Forensics問題 Write-up
はじめに
SECCON2018のオンライン大会のForensics問題のWrite-up
フォレンジック問題はやるかと腰を上げてやるだけやった
UnzipとHistory
Unzip
問題文
Unzip flag.zip.
Write-up
ファイル名:unzip.zip_26c0cb5b40e9f78641ae44229cda45529418183f
のZIPファイルが落ちてくる.
$ file unzip.zip_26c0cb5b40e9f78641ae44229cda45529418183f unzip.zip_26c0cb5b40e9f78641ae44229cda45529418183f: Zip archive data, at least v1.0 to extract
普通にzipファイルなのでunzipする
$ unzip -d unzip unzip.zip_26c0cb5b40e9f78641ae44229cda45529418183f Archive: unzip.zip_26c0cb5b40e9f78641ae44229cda45529418183f extracting: unzip/flag.zip inflating: unzip/makefile.sh
unzipするとflag.zipとmakefile.shが出てくる flag.zipは暗号化されたZIPファイル
$ ls -la .rw-r--r--@ 225 socketo 27 10 0:10 flag.zip .rwx---r-x@ 99 socketo 27 10 0:10 makefile.sh
makefile.shの中身を見ると,zipパスワードにperl -e "print time()"
で出力されたunixtimeが設定されていることがわかる
echo 'SECCON{'`cat key`'}' > flag.txt zip -e --password=`perl -e "print time()"` flag.zip flag.txt
このzipファイルが作成された時の時間を調べる為にexiftoolで調べる
$ exiftool flag.zip ExifTool Version Number : 11.01 File Name : flag.zip Directory : . File Size : 225 bytes File Modification Date/Time : 2018:10:27 00:10:41+09:00 File Access Date/Time : 2018:10:27 00:47:28+09:00 File Inode Change Date/Time : 2018:10:27 23:09:08+09:00 File Permissions : rw-r--r-- File Type : ZIP File Type Extension : zip MIME Type : application/zip Zip Required Version : 20 Zip Bit Flag : 0x0009 Zip Compression : Deflated Zip Modify Date : 2018:10:27 00:10:42 Zip CRC : 0x571b1069 Zip Compressed Size : 43 Zip Uncompressed Size : 32 Zip File Name : flag.txt
このzipファイルのmodify dateが2018:10:27 00:10:41+09:00
だというのが分かる
dateコマンドでunixtimeに変換する
$ date -j -f "%Y-%m-%d %H:%M:%S" "2018-10-27 00:10:41" "+%s" 1540566641
unzipする
$ unzip -P 1540566641 flag.zip Archive: flag.zip inflating: flag.txt
$ cat flag.txt SECCON{We1c0me_2_SECCONCTF2o18}
FLAG:SECCON{We1c0me_2_SECCONCTF2o18}
History
問題文
History Check changed filename. file:J.zip_4c7050d70c9077b8c94ce0d76effcb8676bed3ba
Write-up
ファイル名J.zip_4c7050d70c9077b8c94ce0d76effcb8676bed3ba
のzipファイルが落ちてくるので,unzipするとJ
というファイルが展開される
fileコマンドで見てもdataとしか出ない
$ file J J: data
BZで開いてhexで見てみると$USNジャーナルの$Jっぽい
$USNジャーナルについては日本語だと,JSAC2018の@4n6istさんの"USNジャーナル解析の追求"がとても詳しく書いてあるので参考.
USNジャーナル解析の追求 https://www.jpcert.or.jp/present/2018/JSAC2018_03_yamazaki.pdf
そもそもファイルの名前もJ
なので$Usnjrnl$Jファイルとして解析する
JSAC2018で@4n6istさんが発表していたUSNAnalyticsを使う
USN Analytics _ Forensicist : https://www.kazamiya.net/usn_analytics
HIstory >usn_analytics.exe -o outdir -u J 4093104 bytes (J) Search USNRECORD.........Done 0 corrupt records skipped 43313 records found Check records....................Done Path construction...................Done 4880 records after packing Write records.........Done Check executed trace...Done Check opened trace...Done Check suspicious trace...Done CPU Time: 14.684000 Processed Time: 14(s)
出力されたusn_analytics_records-20160107T154818.csv
を見る,問題文にあるようにファイルのRENAMEだけを出力すると,それっぽいファイルがあるのでそのファイルのFIle IDで絞り込むと以下のような感じになる
"24920792" "3" "2018/09/29 07:50:47.256606" "0.000000" "SEC.txt" "CREATE|EXTEND|CLOSE" "ARCHIVE" "60666" "48" "" "24922120" "3" "2018/09/29 07:51:24.557945" "0.000000" "SEC.txt -> CON{.txt" "RENAME" "ARCHIVE" "60666" "48" "" "24928696" "3" "2018/09/29 07:52:22.779984" "0.000000" "CON{.txt -> F0r.txt" "RENAME" "ARCHIVE" "60666" "48" "" "24936008" "3" "2018/09/29 07:52:53.691992" "0.000000" "F0r.txt -> ensic.txt" "RENAME" "ARCHIVE" "60666" "48" "" "24936544" "3" "2018/09/29 07:53:08.622815" "0.000000" "ensic.txt -> s.txt" "RENAME" "ARCHIVE" "60666" "48" "" "24943752" "3" "2018/09/29 07:54:24.492611" "0.000000" "s.txt -> _usnjrnl.txt" "RENAME" "ARCHIVE" "60666" "48" "" "24944768" "3" "2018/09/29 07:54:38.376635" "0.000000" "_usnjrnl.txt -> 2018}.txt" "RENAME" "ARCHIVE" "60666" "48" ""
RENAMEされたファイルの名前から".txt"を抜いて繋げるとFLAGになる
FLAG:SECCON{F0rensics_usnjrnl2018}