4/5(金) 18:00~4/7(日) 18:00まで開催されたUNbreakable International 2024 - Team Phaseに参加してきました。
トータルで1494pt(24位/241チーム)でした。
以下、writeupとなります。
wicked-firmware(Reverse Engineering、Forensics)
firmware.bin
というファイルを渡されて、以下の問題の答えを投入する形でした。
Q1. Provide the u-boot version. Flag format: numbers only.(u-bootのバージョンは?)
ファームウェアという事なのでbinwalkを実行したところ複数のファイルを確認することができました。
┌──(kali㉿kali)-[~/Desktop/20240406]
└─$ binwalk -e firmware.bin
┌──(kali㉿kali)-[~/Desktop/20240406/_firmware.bin.extracted]
└─$ ll
total 46592
-rw-r--r-- 1 kali kali 13908480 Apr 6 10:27 118582.squashfs
-rw-r--r-- 1 kali kali 95068 Apr 6 10:27 5CF0
-rw-r--r-- 1 kali kali 15261605 Apr 6 10:27 5CF0.7z
-rw-r--r-- 1 kali kali 51200 Apr 6 10:27 E5F27C
-rw-r--r-- 1 kali kali 3155856 Apr 6 10:27 FA30
-rw-r--r-- 1 kali kali 15221349 Apr 6 10:27 FA30.7z
drwxr-xr-x 16 kali kali 4096 Apr 6 10:27 squashfs-root
抽出できたファイルを色々とstringsで覗いていたところ、Q1の答えっぽい文字列を見つけることができたので、1.1.4
と入力したところflagを獲得。
※以下はここのサイズの関係上でgrepしていますが実際には大量に文字列が出てきます。
┌──(kali㉿kali)-[~/Desktop/20240406/_firmware.bin.extracted]
└─$ strings 5CF0 | grep 1.1.4
U-Boot 1.1.4-g4df6eb16-dirty (Nov 30 2018 - 12:33:00)
Q2. Provide the admin password. Flag format: Unix-like shadow password format.(adminのパスワードは?)
squashfs-root
をさらに調査してみたところ、どうやらファームウェアという事でLinuxのディレクトリ構成になっていました。
なので、パスワードは?という事なので/etc/passwd
をのぞいてみたところ一覧があったので、adminの行をそのまま投入してflagを獲得。
Q3. Provide the hostname added besides localhost.(localhost以外に追加されたホスト名は?)
/etc/hosts
を調査したところ、localhost以外のホスト名を見つけることができたので、これを投入してflagを獲得
wicked-monitoring(Forensics)
wicked-monitoring.evtx
というwindowsのイベントログが記録されたファイルを渡されて、以下の問題の答えを投入する形でした。
とりあえずログの時刻の順番で眺めていたら怪しいログを見つけたので、これを投入したらFlagを獲得できました。
Q1. Identify the compromised account(漏洩したアカウントは?)
Userの欄からIEUser
が答え。
Q2. Provide the name of the malicious executable used in the attack.(攻撃に使用された悪意のある実行ファイルの名前は?)
CommandLineの欄からplink.exe
が答え。
Q3. What is the protocol exploited in the attack?(攻撃にしようされたプロトコルは?)
CommandLineの欄に宛先ポートで3389があり、RDP
が答え。
secrets-secrets-secrets(Cryptography)
decrypt.py
とsecret
というファイルが渡されました。
decrypt.py
については以下の左側の通りだったので見やすくするために右側の通り変数の置換を行いました。
15行目で入力した文字列を受け取り、19行目で一致していると判定できたら突破できると見込みました。
色々といじっていると15行目で必要な文字列はload_file
という事が分かりましたので実行したところ、secret
の中身が変わりました。
┌──(kali㉿kali)-[~/Desktop/20240406/_firmware.bin.extracted]
└─$ python .\decrypt.py
load_file
PASS
Enter the decryption key: load_file
load_file
Decryption successful.
左側が最初のsecret
で上記の通りdecrypt.py
が成功したところ右側の出力を受け取りました。
後はCyberChefにかけたところ、無事にFlagを獲得。
threat-monitoring(Threat hunting、Incident Response)
Elasticを使ってログを分析する問題。
色々とフィルターをいじったりして眺めていると、こんな感じのログがあったのでalnera●euに設置されたjsファイルがspammer-paradise●comから別のサイトにリダイレクトしたのだと判断。
Flagのフォーマットがドメインという事でTLDは不要という事を理解するのに少し手間取った。
Q1. Provide the name of the compromised domain.Flag format: term1-term2(侵害されたドメインは?)
spammers-paradise
Q2. Provide the name of the malicious domain where victims were redirected (リダイレクトされた悪意のあるドメインは?)
alnera
Q3. Provide the IP of the compromised website(侵害されたページのIPは?)
94●76●245●25
※別のログに記載があったのでそこから引用
sums-up(Network)
DNSだけのpcapファイルが渡される。
ログのudp.checksumのみを抽出するとFlagになるCTFありがちな問題。
まずはTsharkでudp.checksumのみを抽出。
┌──(kali㉿kali)-[~/Desktop/20240406]
└─$ tshark -r malicious_sums.pcap -T fields -e udp.checksum > result.txt
result.txtの内容を復号化して、内容を人力で抽出してFlagを投入。
最後に
ほかにもいくつか解けた問題もあるのですが、なぜかフラグが取れてしまったものもあるのでそちらは省略しています。
OSINTやReverse Engineering 関連が途中までわかったがフラグにたどり着けない、などもあったので引き続き勉強したいと思います。
こんなコメントもありましたがあいにくそんな友人はいない。
PS: Playing in teams is highly encouraged in this phase but individuals are also welcomed. :)