好奇心の足跡

飽きっぽくすぐ他のことをしてしまうので、忘れないため・形にして頭に残すための備忘録。

setodaNote CTF writeup [Forensics]

これは、2021/8/21~2021/9/4の期間で開催された、setodaNote CTFの Forensics 分野のwriteupです。全体writeupはこちら

tech.kusuwada.com

paint_flag (50)

要調査対象者の端末からあるファイルを押収することに成功しました。どうやら外部の協力者に機密データを送ろうとしたようです。組織内の監視網をかいくぐるため、一見すると機密データが含まれていなかのように加工がされているようです。ファイルを解析して機密データを取得してください。

添付されたファイルを解析し、フラグを入手してください。

添付ファイルを解凍すると、paint_flag.docxというドキュメントが。
開いてみると、こんな感じ。

f:id:kusuwada:20210904232336p:plain:w400

Microsoft Officeのdocxは、実質…zipとして解凍できるのでしてみると、奥深くに黒塗りする前のイメージが隠れていました。

unzip paint_flag.docx 
Archive:  paint_flag.docx
  inflating: docProps/app.xml        
  inflating: docProps/core.xml       
  inflating: word/document.xml       
  inflating: word/fontTable.xml      
  inflating: word/media/flag.png     
  inflating: word/media/image1.png   
  inflating: word/settings.xml       
  inflating: word/styles.xml         
  inflating: word/theme/theme1.xml   
  inflating: word/webSettings.xml    
  inflating: word/_rels/document.xml.rels  
  inflating: [Content_Types].xml     
  inflating: _rels/.rels

f:id:kusuwada:20210904232357p:plain:w400

Mail (50)

あなたはメールデータの調査を依頼されました。組織内の要員が規定に反して組織内のデータを個人利用のクラウドサービスにバックアップとしてコピーしていたもののようです。メールデータに機密情報が含まれていないか、調査してください。

添付されたファイルを解析し、フラグを得てください。

添付されたファイルを解凍し、中身を確認してみます。

$ unzip mail_0805f895cca0c713b0fa499b1671d4948bae4172.zip 
Archive:  mail_0805f895cca0c713b0fa499b1671d4948bae4172.zip
   creating: ImapMail/
   creating: ImapMail/mail.setodanote.net/
  inflating: ImapMail/mail.setodanote.net.msf  
  inflating: ImapMail/mail.setodanote.net/Archives.msf  
  inflating: ImapMail/mail.setodanote.net/Drafts.msf  
  inflating: ImapMail/mail.setodanote.net/filterlog.html  
  inflating: ImapMail/mail.setodanote.net/INBOX  
  inflating: ImapMail/mail.setodanote.net/INBOX.msf  
  inflating: ImapMail/mail.setodanote.net/Junk.msf  
 extracting: ImapMail/mail.setodanote.net/msgFilterRules.dat  
  inflating: ImapMail/mail.setodanote.net/Sent-1  
  inflating: ImapMail/mail.setodanote.net/Sent-1.msf  
  inflating: ImapMail/mail.setodanote.net/Sent.msf  
  inflating: ImapMail/mail.setodanote.net/Templates.msf  
  inflating: ImapMail/mail.setodanote.net/Trash.msf  

一つずつ確認していると、Sent-1のファイルに気密情報が載っていそう。

サーバから依頼のあったファイルを取得しておきました。 メールに添付いたしますので、ご確認ください。

というbodyで、Base64 encodeされた添付ファイルkiimitsu.zipが。
base64部分を抜き出してkimitsu.txtとして保存し、これを下記コマンドでbase64 decodeしてzipファイルに書き出し。

base64 --decode kimitsu.txt > kimitsu.zip

このkimitsu.zipを解凍すると、flagの書かれた画像が出てきました。

f:id:kusuwada:20210904232427p:plain:w400

Deletedfile (80)

そのファイルを削除した瞬間にそれが誤りであることをあなたは悟ります。どうやら重要なファイルが削除されてしまったようです。あなたはディスクのイメージファイルの入手に成功しました。削除されてしまったファイルを復元し、窮地を脱してください。

添付されたファイルを解析し、フラグを得てください。

添付ファイルを解凍すると、rawファイルが。flieコマンドで中身を見てみます。

$ file deletedfile.raw 
deletedfile.raw: DOS/MBR boot sector MS-MBR Windows 7 english at offset 0x163 "Invalid partition table" at offset 0x17b "Error loading operating system" at offset 0x19a "Missing operating system"; partition 1 : ID=0xee, start-CHS (0x0,0,2), end-CHS (0x0,254,63), startsector 1, 4294967295 sectors

data partitioin までのoffsetがありそうなので、mmlsコマンドで調べてみます。

$ mmls deletedfile.raw 
GUID Partition Table (EFI)
Offset Sector: 0
Units are in 512-byte sectors

      Slot      Start        End          Length       Description
000:  Meta      0000000000   0000000000   0000000001   Safety Table
001:  -------   0000000000   0000000127   0000000128   Unallocated
002:  Meta      0000000001   0000000001   0000000001   GPT Header
003:  Meta      0000000002   0000000033   0000000032   Partition Table
004:  000       0000000128   0000016511   0000016384   Basic data partition
005:  -------   0000016512   0000020479   0000003968   Unallocated

offsetに128を指定して、削除されたファイルも含めて表示してくれるコマンドflsを使ってファイル一覧を表示してみます。

$ fls -o 128 deletedfile.raw
r/r 3:  FOR001      (Volume Label Entry)
d/d 6:  System Volume Information
r/r * 9:    secret_word.jpg
r/r 10: word.jpg
d/d 11: $RECYCLE.BIN
v/v 261635: $MBR
v/v 261636: $FAT1
v/v 261637: $FAT2
V/V 261638: $OrphanFiles

このinode=9secret_word.jpgが怪しい。icatコマンドでinodeを指定して抽出します。

$ icat -o 128 deletedfile.raw 9

flagの書かれたjpgが出てきました!

[secret_word.jpg]

Timeline (100)[未solve]

君はタイムラインを知っているかね。ベンチに腰かけた老紳士がこちらに向かって話しかけてきます。あまり使われてはいないようだがね。老紳士はそう話を続けながら正面に向き直りため息をつきます。だが、完全に消えてしまう前にどんなアーティファクトであったか確かめてみてもいいとは思わんかね。そういって老紳士は1枚のディスクを私に手渡すと、静かに去っていきました。どうやらディスクを解析する必要があるようです。

添付のファイルを解析し、フラグを入手してください。

添付ファイルを解凍すると、db系のファイルがいくつか出てきました。

$ unzip timeline_12296f199f1eb1c6d327a469af6b8e4fd8b83374.zip 
Archive:  timeline_12296f199f1eb1c6d327a469af6b8e4fd8b83374.zip
   creating: C/
   creating: C/Users/
   creating: C/Users/stella/
   creating: C/Users/stella/AppData/
   creating: C/Users/stella/AppData/Local/
   creating: C/Users/stella/AppData/Local/ConnectedDevicesPlatform/
   creating: C/Users/stella/AppData/Local/ConnectedDevicesPlatform/L.stella/
  inflating: C/Users/stella/AppData/Local/ConnectedDevicesPlatform/L.stella/ActivitiesCache.db  
  inflating: C/Users/stella/AppData/Local/ConnectedDevicesPlatform/L.stella/ActivitiesCache.db-shm  
  inflating: C/Users/stella/AppData/Local/ConnectedDevicesPlatform/L.stella/ActivitiesCache.db-wal

fileコマンドで中身を確認してみます。

$ file C/Users/stella/AppData/Local/ConnectedDevicesPlatform/L.stella/ActivitiesCache.db
C/Users/stella/AppData/Local/ConnectedDevicesPlatform/L.stella/ActivitiesCache.db: SQLite 3.x database, user version 27, last written using SQLite version 3025003

ということで、SQLite 3.x っぽいです。中身を色々と見てみましたが、flag見つからず。

$ sqlite3 ActivitiesCache.db
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
sqlite> .tables
Activity            Activity_PackageId  DataEncryptionKeys  Metadata          
ActivityOperation   AppSettings         ManualSequence      SmartLookup       
sqlite> select * from xxx...

そういえば、他にもファイルが有りました。db-shmdb-wal。調べてみたところ、SQL3.7の新機能らしく、ロールバックするための一時ファイルとのこと。これらを適切に開くと良さそう。

更に調べると、windows10のtimelineという機能のtopicが引っかかるように。

Additional information about deleted records may be contained in unused space, freelists, and the WAL file.

ということで、WALファイルをテキストにして読んでみると

ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\lookllookdammyflag.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\local\_.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\local\_.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\local\U.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\local\U.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\local\F.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\local\F.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\l.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\l.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\h.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\h.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\g.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\g.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\f.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\f.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\e.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\e.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\a.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\a.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\_.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\_.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\T.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\T.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\OKdammyFlag.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\OKdammyFlag.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\NiceTry.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\NiceTry.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\N.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\N.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\Heart.tif
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\Heart.tif
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\Heart.bmp
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\Heart.bmp
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\7.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\7.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\3.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\3.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\1.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\1.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\0.txt
ECB32AF3-1440-4086-94E3-5311F97F89C4\E:\AppData\0.txt

こんな場所が。非常に怪しい。
同じファイル名が2回ずつ出てきているけど、1回ずつに直して一文字のtxtファイルの名前をつなげると lhgfea_TN7310 flagの文字を除き、数字をleetcodeとみなしてアルファベットに直すと he_TNteio

これをアナグラム風に並び替えたりするとflagになるのかと思ったけど、通らなかった…。要復習。

browser_db (100)

調査対象者のパソコンから Web ブラウザの情報を取得しました。ファイルを解析して調査対象者が怪しい行動をしていないか調査するのが今回のあなたの仕事です。

添付されたファイルを解析し、フラグを得てください。

sqliteファイルが渡されます。

$ file stella_9s84jetw.default-release_places.sqlite 
stella_9s84jetw.default-release_places.sqlite: SQLite 3.x database, user version 54, last written using SQLite version 3035004

そのままsqliteで開いてみます。

$ sqlite3 stella_9s84jetw.default-release_places.sqlite 
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
sqlite> .tables
moz_anno_attributes    moz_historyvisits      moz_meta             
moz_annos              moz_inputhistory       moz_origins          
moz_bookmarks          moz_items_annos        moz_places           
moz_bookmarks_deleted  moz_keywords

tableがたくさん。
このなかの moz_places の中身を抜き出してみます。(他のテーブルはほとんど情報がなかったので)

sqlite> .output places.log
sqlite> select * from moz_places;

抜き出したplaces.logflagで検索すると https://duckduckgo.com/?q=flag%7Bgoosegoosego%7D&t=ffab という文言が。これをパーセントエンコード、ないしブラウザのURLバーにに直接入力すると、flagが得られました。

MFT (100)

内部告発によりある要員が極秘情報をファイルサーバからダウンロードしていることが判明しました。組織は要員の身柄を抑え、端末から証拠となるデータを抽出しました。今回のあなたの仕事は、端末から抽出したデータを解析し、ダウンロードされた極秘情報のファイル名を特定することです。組織からは極秘情報のダウンロードされた日時が 2021-07-18 18:30頃 であることと、ファイルサイズが 465030 であることのみが伝えられています。

添付ファイルを解析し、極秘情報のファイル名を特定してください。例えばファイル名が file.txt の場合は flag{file.txt} と回答してください。

配布されたファイル名はC_$MFT。調べてみると下記のようなサイトがヒット。

NTFSファイルシステムの"マスターファイルテーブル"で、ここからファイいるの作成・アクセス・修正・変更などの履歴を解析したり、情報を抽出したりできるようだ。

windows環境はないので、今回はMacやLinux上で使える、pythonのMFT解析ライブラリを使って情報を抽出しました。

GitHub - dkovar/analyzeMFT

## install
$ pyenv local 2.7.15  #3系では動かない
$ git clone https://github.com/dkovar/analyzeMFT.git
$ cd analyzeMFT
$ python setup.py install

## extract
$ cd ..
$ analyzeMFT.py -f C_\$MFT -o extract.csv

これで、86.6Mもあるcsvが生成されました。
ヒントに日時やファイルサイズがあるので、これで検索してみます。

$ grep "2021-07-18 18:" extract.csv > date.txt

こんな感じで抽出したテキストの、怪しい時間帯を見ていると

"101525","Good","Inactive","File","8","91553","1","/Users/stella/Downloads/kimitsu.zip","2021-07-18 18:35:21.555244","2021-07-18 11:34:14.857170","2021-07-18 20:24:31.343565","2021-07-18 20:24:31.359190","2021-07-18 18:35:21.555244","2021-07-18 11:34:14.857170","2021-07-18 18:35:21.593037","2021-07-18 18:35:21.608727","76fdd5ce-e7df-11eb-8474-000c2951bb7b"...(略)

こんなレコードが。ファイルサイズを使う方法がわからなかったのだけど、(csvに載っている?)、いかにも怪しいファイル名だったのでflagに突っ込んだら通りました👍

tkys_another_day (100)

無事でいてくれているだろうか。あなたは後輩の端末に残されていたある画像ファイルが気になっています。作成された日付は音信不通となる前日。ファイルは作りかけなのか、断片的な情報しか表示されません。もしかすると後輩の消息についての重要な手がかりが隠されているのではないか。あなたはファイルを詳しく解析することにしました。

添付されたファイルを解析し、フラグを入手してください。

pngファイルが配布されます。
これ、macのfinderでサムネイル表示していると、しばらくして青い文字が浮き出てくる…。なんだこれ。
なんとmacのpreviewで開いたら、隠しファイルっぽいのも全部表示されてしまった。

f:id:kusuwada:20210904232634p:plain

これは想定解ではなさそう…。

TITLE (120)[未solve]

仕事を終えて帰宅の途につくあなた。人通りの少ない住宅街を通り過ぎ、自宅のマンションにたどり着きます。ちょうど部屋のドアの前に立った時に手に持っていた携帯が鳴りメールを受信したことを伝えます。

件名:これが最後の警告だ

そのメールには画像が添付されていました。

添付されたファイルを解析し、フラグを得てください。

こんなjpeg画像が添付されています。

f:id:kusuwada:20210904232707p:plain:w400

この問題のタイトルから、このイメージのタイトル lo3rs1tkd.jpg が怪しいかなと思って調べてみると、シュタインズ・ゲートで使われた画像と同じ名前らしい。

ということで、lo3rs1tkdとかSTEINS;GATE, steinsgate, patghqwskm あたりをpasswordやkeyにしてstego-toolkitを一通り試してみたけど、特に何も出てこず。

正解者が少ない問題だったので、真相が気になる。

CSIRT_asks_you_01 (150)

組織内のインシデント対応部署から急ぎ解析してほしいとの依頼が舞い込みました。不正侵入が確認された端末の Windows イベントログの調査で、状況把握のために侵害に関する詳細な日時を確認してほしいということのようです。

今回のあなたの仕事は送られてきたファイルを解析し、不正な方法によってネットワーク経由のログインが成功したことを示している最初の記録日時(TimeCreated SystemTime) と Event ID を特定することです。

フラグは UTC での記録日時 を yyyy/mm/dd_hh:mm:ss 形式にし、最後に Event ID をアンダースコアでつなげた形で答えてください。例えば 記録日時 が 2020/01/10 7:05:13.9234567Z 、Event ID が 1234 の場合は flag{2020/01/10_07:05:13_1234} となります。記録日時は UTC+0 で回答することに注意してください。

Security.evtxというファイルが配布されます。

$ file Security.evtx 
Security.evtx: MS Windows Vista Event Log, 145 chunks (no. 144 in use), next record no. 13877

GitHub - williballenthin/python-evtx: Pure Python parser for recent Windows Event Log files (.evtx)

$ git clone https://github.com/williballenthin/python-evtx.git
$ python python-evtx/scripts/evtx_dump.py Security.evtx > data.xml

この出力されたdata.xmlを解析します。

Windows Security Log Event ID 4624 - An account was successfully logged on より、ログオンが成功したときのEventIDは4624とのことなので、これで絞ります。良いxmlパーサーがあればササッとできそうだけど残念ながら用意が無いのでgrepで…。

$ grep ">4624</EventID>" data.xml -A 40 > log.txt

700件くらい見つかってる。この中で、"ネットワーク経由のログイン" とのことなので、上記ページよりLogonType=3で絞ってみます。

LogonType: 3 更に、IpAddressが外部ネットワークっぽいやつを探します。
こちら作業風景。

f:id:kusuwada:20210904232929p:plain:w400

<TimeCreated SystemTime="2021-07-18 20:09:21.904846"></TimeCreated>

このレコードが上記条件に合致したので、flag{2021/07/18_20:09:21_4624}を入れると通りました👍