はまやんはまやんはまやん

hamayanhamayan's blog

CYBERGON CTF 2023 Writeups

[stegano] Warm Up 1

exiftoolの情報から得られるCreate Dateを答える。

$ exiftool IMG_6380.HEIC 
...
Create Date                     : 2023:07:31 10:14:57.296+07:00

[stegano] Catch Me If You Can

拡張子がgifだが開けないファイルが与えられる。
ちゃんと開けるgifファイルとバイナリエディタで見比べてみる。

$ hd Stegano1.gif | head
00000000  39 61 f4 01 f4 01 f7 00  00 03 03 03 7f 81 80 92  |9a..............|
00000010  94 93 94 d1 ec 2f c1 ed  5b ba e2 cb cd cd 5e cb  |...../..[.....^.|
00000020  f3 ca e9 f5 43 b9 e6 97  e5 f3 ea ed ec 3d 40 40  |....C........=@@|
00000030  c6 ca c9 7e cf e2 43 c8  e5 7a c5 e4 ca f4 fa 5b  |...~..C..z.....[|
00000040  c1 e2 93 db ee ef f5 f2  43 be e4 7d db e9 b3 e7  |........C..}....|
00000050  f8 6b c2 e6 df e3 e2 5e  60 60 1e 21 21 a2 de f3  |.k.....^``.!!...|
00000060  37 bb f2 fc f6 e7 ad af  af 8c d0 eb b5 f1 f9 37  |7..............7|
00000070  c1 e3 53 c2 e5 6b ce e2  5a c4 f0 51 b9 e2 7b d1  |..S..k..Z..Q..{.|
00000080  f5 45 cf f2 2f 31 31 dc  f7 fa ec fd ee 6f 71 71  |.E../11......oqq|
00000090  d6 da d9 ce ef f7 97 e0  f3 c4 e9 f6 da f1 f5 4e  |...............N|

$ hd sachiko.gif | head
00000000  47 49 46 38 39 61 0e 01  40 01 f7 00 00 0c 0c 14  |GIF89a..@.......|
00000010  18 18 28 1f 20 31 29 29  37 2c 2c 3b 24 24 35 33  |..(. 1))7,,;$$53|
00000020  2d 3b 31 2a 32 27 1d 25  45 33 3b 47 32 38 26 29  |-;1*2'.%E3;G28&)|
00000030  48 2c 32 43 33 32 42 3a  36 45 32 3b 46 3d 39 47  |H,2C32B:6E2;F=9G|
00000040  3c 3b 49 36 39 4b 2a 2b  57 31 2c 59 31 2a 57 29  |<;I69K*+W1,Y1*W)|
00000050  31 56 32 32 56 33 32 5a  3a 37 59 31 2f 41 2b 29  |1V22V32Z:7Y1/A+)|
00000060  65 2d 29 6a 31 2a 66 32  29 6a 3c 2d 69 36 34 64  |e-)j1*f2)j<-i64d|
00000070  3b 36 64 39 38 6e 3b 37  68 31 28 76 32 28 79 3b  |;6d98n;7h1(v2(y;|
00000080  36 72 2c 2a 6f 1e 1d 4c  43 3a 47 49 3c 4f 43 3a  |6r,*o..LC:GI<OC:|
00000090  66 4b 36 6b 48 37 78 52  37 7a 53 38 79 46 2b 72  |fK6kH7xR7zS8yF+r|

先頭4bytesが欠けている気がする。

$ echo -en '\x47\x49\x46\x38' > magic
$ cat magic Stegano1.gif > fixed.gif

こんな感じで修復すると開けてフラグが書いてある。

[IR] Basic系

ディスクイメージが与えられて問いに答えていく問題群。
FTK Imagerで開きながら答えていく。
とりあえず、以下を抽出しておく。

  • レジストリ C:\Windows\system32\config
  • イベントログ C:\Windows\system32\winevt
    • 何で見るか迷ったが、とりあえず純正のイベントビューワーで見ていく
    • 細かい解析が必要な時はEvtxECmdでcsvにして解析

以下問題。

  • Basic - 1
    • the timezone name and hostname
    • Flag Format - CyberGonCTF{Timezone Name_Hostname}
    • timezone -> レジストリ SYSTEM\ControlSet001\Control\TimeZoneInformation -> SE Asia Standard Time
    • hostname -> レジストリ SYSTEM\ControlSet001\Control\ComputerName\ComputerName -> CYBERGON-CTF
  • Basic - 2
    • the previous second hostname and timeline of changing from second hostname to third hostname
    • Flag Format - CyberGonCTF{DD/MM/YEAR hh:mm:ss AM/PM, Second Hostname} (Note: To adjust the timeline with host timezone)
    • ホスト名は変更されていたようだ。変更履歴はイベントログに残っていそうではある。
    • System.evtxのイベントログID 6011を見るとホスト名の変更を追跡可能。確かに2回変更履歴がある。
      • WIN-OS9LHVGJOHH から DESKTOP-1INR457 に変更 2023/07/17 17:27:45 (JST)
      • DESKTOP-1INR457 から CYBERGON-CTF に変更 2023/07/22 18:46:34 (JST)
        • これが目的のイベント
    • 時間の変更
      • JSTUTC+9で、SE Asia Standard TimeはUTC+7なので2時間引いてやればいい
    • 答え CyberGonCTF{22/07/2023 04:46:34 PM, DESKTOP-1INR457}
  • Basic - 3 解けず
    • which user has logged in the most, the total login count and last incorrect password time of that user
    • Flag Format - CyberGonCTF{numberonly_year-mm-dd hh:mm:ss} Note: to adjust the time with host timezone
    • Security.evtxにログイン成否が4624と4625で記録されているので確認する
    • システムのユーザーを消していくと、CyberGon-Adminというユーザーのログが一番多く記録されているが…色々試しても正答できなかった

[forensics] Device Info系

E01ファイルでディスクイメージが与えられるので、問いに答えていく問題群。

  • Device Info (ep1)
    • Flag Format : CyberGonCTF{osname 00.00.0 XXX} eg. CyberGonCTF{Windows 11.22.1 ABC}
    • the operating system information -> /usr/lib/os-release -> Ubuntu 20.04.5 LTS
  • Device Info (ep2)
    • Flag Format: CyberGonCTF{xxx.xxx.xxx.xxx_hostname}
    • device ip
      • \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}grepしながら探した
      • /var/log/kern.log -> 192.168.1.72
    • hostname -> /etc/hostname -> ubuntu
  • Device Info (ep3)
    • Flag Format: CyberGonCTF{ssid_password}
    • the first connected WiFi (SSID) and password -> /etc/netplan/50-cloud-init.yaml
      • SSID: Ko_Koe_Lo_Ko_Ko
      • password: Ah_Nge_Chaw_Yal_Tae_Inn_Tae
  • Device Info (ep4)
    • Flag Format: CyberGonCTF{Full Information} #included Device Name, Series Number, Model, Version example flag - CyberGonCTF{ThinkPad X1 Carbon Gen 11}
    • the device model details of this host -> /var/log/dmesg -> Raspberry Pi 3 Model B Rev 1.2
  • Attacker IP (ep5)
    • Flag Format: CyberGonCTF{xxx.xxx.xxx.xxx}
    • the ip address of Attacker
      • /var/log/auth.logを見るとJul 15 14:20:35 ubuntu sshd[1093]: Failed password for ubuntu from 192.168.1.67 port 44008 ssh2のようにssh経由での失敗ログが多数残っていた -> 192.168.1.67
  • Success Logon (ep6)
    • Flag Format: CyberGonCTF{total failed numbers_Mon dd hh:mm:ss} eg. CyberGonCTF{10_Jan 01 01:01:01}
    • the total number of failed logon from attacker and When attacker got the success
      • 引き続き/var/log/auth.logを見る
      • Failed password forで検索すると652件ヒット
      • Jul 15 16:55:26 ubuntu sshd[1984]: Accepted password for ubuntu from 192.168.1.67 port 54296 ssh2Jul 15 16:55:26が答えだった
  • New User (ep7) 解けず
    • Flag Format: CyberGonCTF{username, password} password hint- husband name (included two capital letters) +4 digits
    • attacker added the new user for Persistence. Can you find the username and password
      • /home/ubuntu/.bash_historyadduser shwehmoneyatiとされている
      • /etc/shadow shwehmoneyati:$6$8Da3ntmDvkfqYTP6$V3XYeRQdVVfDvQD157uLpoDFP8lFI5We3qmWpO0Zr.Enrg1ZcLVUdU9lJ0a1VPsUg1iL8FowgLAgWXczUgQ28.:19553:0:99999:7:::
      • /etc/passwd shwehmoneyati:x:1005:1005:Shwe Hmone Yati,105,09450062226,:/home/shwehmoneyati:/bin/bash
    • 辞書を作ってshadowのハッシュをクラックするんだろうが…husband name?

[forensics] Hide and Seek

とりあえずoleidで解析してみるが、特筆すべきものはなし。
zipにして解凍して、中を眺める。

word/header1.xmlに妙なものがある。

++++++++++[&gt;+&gt;+++&gt;+++++++&gt;++++++++++&lt;&lt;&lt;&lt;-]&gt;&gt;&gt;---.&gt;+++++++++++++++++++++.-----------------------.+++.+++++++++++++.&lt;++++.&gt;---.-.&lt;----.+++++++++++++++++.--------------.&gt;+++++++++++++.&lt;-----------------.--.&gt;------------------------.-----------------.&lt;.++++.&gt;+++++++++++++.&lt;+++++++++++++.----------------.+++.---.&gt;.&lt;---.&gt;+++++++++++++++.---------------.&lt;+++++++++++++++++++++++.&lt;+++++++++++++++++++++.+.&gt;&gt;+++++.&lt;&lt;-.&gt;++++++++++.&gt;+++++++++++++++++++++++++.

無茶苦茶見たことがあるが、思い出せない…なんだっけ…
と思いgoogle検索にそのまま突っ込むとbrainfuckだった。
https://www.dcode.fr/brainfuck-language
ここで実行するとフラグが出てくる。

[forensics] Frozen Xip

謎の開けない拡張子PNGのファイルが与えられる。
開けないのでとりあえずバイナリで眺める。

$ hd xipper.PNG
00000000  50 4b 04 03 14 00 00 00  08 00 1b 18 ec 56 46 cc  |PK...........VF.|
00000010  51 d1 da 00 00 00 31 02  00 00 14 00 00 00 66 6c  |Q.....1.......fl|
00000020  61 67 2e 74 78 74 6d 50  cb 6e c2 30 10 3c af bf  |ag.txtmP.n.0.<..|
00000030  62 d4 33 82 6f 28 52 2b  71 05 24 ce 46 d9 42 44  |b.3.o(R+q.$.F.BD|
00000040  f0 46 b6 09 ca 8d 8f e8  b1 5f 97 2f 69 42 6c ec  |.F......._./iBl.|
00000050  00 3e ec 78 66 67 c7 8f  ed 91 71 15 29 1c b4 65  |.>.xfg....q.)..e|
00000060  54 d2 70 d5 ce 50 68 7b  82 36 05 0a e6 1a 0b 2c  |T.p..Ph{.6.....,|
00000070  2f 1e 2b 1c 75 c3 a8 ad  9c 4b c7 0e 5e 70 1a bb  |/.+.u....K..^p..|
00000080  9f bd f1 5c 56 a3 76 10  ec f9 47 fa b0 15 5c d5  |...\V.v...G...\.|
00000090  1b e6 aa bb fd 62 2d 7b  b6 1e df 56 9c 9f a1 bb  |.....b-{...V....|
000000a0  fd 6d bc d4 75 69 0e 58  b6 d8 dd 2f 20 06 1a 1b  |.m..ui.X.../ ...|
000000b0  23 d7 16 5f 0d 9b be f7  41 18 16 41 21 6c 88 46  |#.._....A..A!l.F|
000000c0  0c 85 a2 8e 87 33 f4 02  64 24 d1 14 4a 49 cb 3c  |.....3..d$..JI.<|
000000d0  34 a5 18 9c 99 8d 22 a3  84 f4 64 7d 4e 98 90 74  |4....."...d}N..t|
000000e0  4a 94 d4 cb 4b de c3 38  98 a8 ca c4 2c 2e 96 3b  |J...K..8....,..;|
000000f0  4e be 26 cf 89 83 8f 12  fa 2a 90 a9 37 be ef 1f  |N.&......*..7...|
00000100  50 4b 01 02 1f 00 14 00  00 00 08 00 1b 18 ec 56  |PK.............V|
00000110  46 cc 51 d1 da 00 00 00  31 02 00 00 08 00 24 00  |F.Q.....1.....$.|
00000120  00 00 00 00 00 00 20 00  00 00 00 00 00 00 66 6c  |...... .......fl|
00000130  61 67 2e 74 78 74 0a 00  20 00 00 00 00 00 01 00  |ag.txt.. .......|
00000140  18 00 03 16 8b 66 32 b4  d9 01 bc e1 a2 78 31 b4  |.....f2......x1.|
00000150  d9 01 d1 3d 59 69 31 b4  d9 01 50 4b 05 06 00 00  |...=Yi1...PK....|
00000160  00 00 01 00 01 00 5a 00  00 00 00 01 00 00 00 00  |......Z.........|
00000170

flag.txtという名前が見える。pngファイルというよりzipファイルのようだ。
TSXBINで正規のzipファイルと比較しながら修復していく。
正規のzipでは先頭4bytesは50 4b 03 04なので、それをまず直す。
これで解凍してみるとファイル名がなんか変な感じになる。
0x1Aから2bytesでファイル名の長さが格納されるが、0x0014となっている。
flag.txtだと思われるので、0x0008に直すと正しく解凍できるようになる。

タブと空白がたくさん書かれたファイル。
stegsnowで解読可能。

$ stegsnow -C flag.txt
CyberGonCTF{Z1pp3R_4nD_573G5n0W}

[forensics] 8cel

zipファイルが与えられる。
解凍するとofficeファイルっぽい見た目をしているので、oleidを使ってみる。

$ oleid 8cel.zip 
XLMMacroDeobfuscator: pywin32 is not installed (only is required if you want to use MS Excel)
oleid 0.60.1 - http://decalage.info/oletools
THIS IS WORK IN PROGRESS - Check updates regularly!
Please report any issue at https://github.com/decalage2/oletools/issues

Filename: 8cel.zip
--------------------+--------------------+----------+--------------------------
Indicator           |Value               |Risk      |Description
--------------------+--------------------+----------+--------------------------
File format         |MS Excel 2007+      |info      |
                    |Workbook (.xlsx)    |          |
--------------------+--------------------+----------+--------------------------
...

xlsxファイルだった。
/xl/worksheets/sheet2.xmlを見ると、なんか色々書いてある。

<row r="2" spans="2:8" x14ac:dyDescent="0.25">
    <c r="B2" t="e" cm="1"><f t="array" aca="1" ref="B2" ca="1">EMBED("Package", "Q3liZXJHb25DVEZ7ZjRrM19GMTRnfQ==")</f><v>#NAME?</v></c>
    <c r="C2" t="e" cm="1"><f t="array" aca="1" ref="C2" ca="1">EMBED("Package", "Q3liZXJHb25DVEZ7RjRrM19GMTRnfQ==")</f><v>#NAME?</v></c>
    <c r="D2" t="e" cm="1"><f t="array" aca="1" ref="D2" ca="1">EMBED("Package", "Q3liZXJHb25DVEZ7RjRrM19GMTRHR30=")</f><v>#NAME?</v></c>
    <c r="E2" t="e" cm="1"><f t="array" aca="1" ref="E2" ca="1">EMBED("Package", "Q3liZXJHb25DVEZ7RjRrM19GMTRHfQ==")</f><v>#NAME?</v></c>
    <c r="F2" t="e" cm="1"><f t="array" aca="1" ref="F2" ca="1">EMBED("Package", "Q3liZXJHb25DVEZ7ZjRLM19GMTRnfQ==")</f><v>#NAME?</v></c>
    <c r="G2" t="e" cm="1"><f t="array" aca="1" ref="G2" ca="1">EMBED("Package", "Q3liZXJHb25DVEZ7ZjRLM19GMTRHfQ==")</f><v>#NAME?</v></c>
    <c r="H2" t="e" cm="1"><f t="array" aca="1" ref="H2" ca="1">EMBED("Package", "Q3liZXJHb25DVEZ7RjRrM19GMTRHR30=")</f><v>#NAME?</v></c>
</row>

こういう感じに各セルにbase64の文字列が書かれている。
何パターンかあるが、そこから目立つものを持ってきてbase64デコードするとフラグ。

<c r="E14" t="e" cm="1"><f t="array" aca="1" ref="E14" ca="1">EMBED("Package", "Q3liZXJHb25DVEZ7eTB1X0cwN183aDNfNTNjUjM3XzFOZjB9")</f><v>#NAME?</v></c>