#include <sys/socket.h>

あとで書く Twitter:@sys_socket

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っぽい

f:id:socketo:20181028152538p:plain

$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}