setodaNote CTF Writeup (OSINT)
この記事はsetodaNote CTF OSINTジャンルのWriteupです。
- tkys_with_love (30pts, 392solves)
- Dorks (50pts, 362solves)
- filters_op (50pts, 378solves)
- MAC (50pts, 345solves)
- tkys_eyes_only (50pts, 227solves)
- MITRE (100pts, 236solves)
- Ropeway (120pts, 285solves)
- N-th prime(200pts, 41solves)
- identify_the_source (250pts, 67solves)
- Security Oepration (300pts, 39solves)
tkys_with_love (30pts, 392solves)
コールサイン C6DF6
の乗り物を特定せよという問題。乗り物の英語の正式名所を flag{}
で囲んだものがFLAG。
C6DF6
でググるだけ。
flag{Symphony_of_the_Seas}
Dorks (50pts, 362solves)
以下のような問題。
あなたは組織が所有するドメインに関係するサイトの中で
login.php
が不用意に公開されていないかを Google を使って確認するように依頼を受けました。login.php
が利用されているかどうかは、ある5文字の検索演算子をひとつ使えば調査することができそうです。Google で login.php を URL に含むページを検索するための検索語句を検索演算子を含めてすべて小文字 でフラグ形式にして答えてください。例えばファイルタイプを限定するfiletype
の検索演算子でflag{filetype:pdf}
となります。
"Google Dorks" 等で調べるといろいろ出てくる。
URLに特定のページが含まれるかを確認するのは inurl:
flag{inurl:login.php}
filters_op (50pts, 378solves)
以下のような問題
Twitter アカウント @cas_nisc が2017年5月15日にツイートした注意喚起に付与されている英字のハッシュタグをフラグ形式で答えてください。例えば付与されていたのが「#HashTag」であればフラグは
flag{#HashTag}
となります。
"Twitter 検索 クエリ" 等で調べるといろいろ出てくる。
https://so-zou.jp/web-app/tech/web-api/twitter/search/search-query.htm
特定のユーザの指定は from:
、開始日は since:
、終了日は until:
なので、以下のキーワードでTwitter検索する。
from:cas_nisc since:2017-05-15 until:2017-05-16
すると、以下のTwitterが見つかる
⚡️ "【現在拡散中の #ランサムウェア ( #WannaCrypt )への対応方法】"をまとめました。https://t.co/aWf5dK2JPc
— NISC内閣サイバーセキュリティセンター (@cas_nisc) 2017年5月15日
FLAG
flag{#WannaCrypt}
MAC (50pts, 345solves)
以下のような問題。
友人が簡単な暗号を作ったから意見を聞かせてほしいと言ってきました。公開情報に基づき解くことができるといいます。あなたは暗号文を解いてみることにしました。
00:03:93 = A
00:01:A9 = B
04:2A:E2 = C
上記の通り変換されるとき、以下の文字列はどうなるか。
flag{2C:C2:60_FC:EC:DA_00:02:B3_AC:44:F2_FC:4E:A4}
暗号文を解きフラグを得てください。
MACアドレスの上位3bytesは各ベンダに割り当てられていることを利用した暗号。ググれば、どのベンダがどのMACアドレスを使っているかは出てくる。
例の 00:03:93
はApple、00:01:A9
はBMW、
04:2A:E2
はCiscoなので、各ベンダのイニシャルに変換すれば良い。
FLAG
flag{O_U_I_Y_A}
tkys_eyes_only (50pts, 227solves)
以下の画像から、所在地に最も関係する組織名を特定せよという問題。
URLバーを見ると、?lat=40.749444&lon=-73.968056
となっており、緯度経度の情報がわかる。
Google Mapを使うと緯度経度の情報から場所を調べることができる。調べると国連本部だった。
国連の英語名の名称のUnited_Nations
を入れるとFLAGだった。
flag{United_Nations}
MITRE (100pts, 236solves)
T1495T1152T1155T1144 T1130T1518 flag{T1170T1118T1099T1496T1212_T1531T1080T1127T1020T1081T1208_T1112T1098T1199T1159T1183T1220_T1111T1147T1220}
という文字列を解読せよという問題。
問題名がMITERだし、どこからどう見ても MITER ATT&CKの Technique ID。
最初は本家サイトで調べていたが、現在はrenameされているものもないものもあった。日本語化サイト の方だと情報が少し古かったので、全部調べることができた。
- T1495 Firmware Corruption
- T1152 Launchctl
- T1155 AppleScript
T1144 Gatekeeper Bypass
T1130 Install Root Certificate
T1518 Software Discovery
flag{
- T1170 Mshta
- T1118 InstallUtil
- T1099 Timestomp
- T1496 Resource Hijacking
- T1212 Exploitation for Credential Access
- _
- T1531 Account Access Removal
- T1080 Taint Shared Content
- T1127 Trusted Developer Utilities Proxy Execution
- T1020 Automated Exfiltration
- T1081 Credentials In Files
- T1208 Kerberoasting
- _
- T1112 Modify Registry
- T1098 Account Manipulation
- T1199 Trusted Relationship
- T1159 Launch Agent
- T1183 Image File Execution Options Injection
- T1220 XSL Script Processing
- _
- T1111 Two-Factor Authentication Interception
- T1147 Hidden Users.Hidden Users.
- T1220 XSL Script Processing
- }
各Techniqueのイニシャルを取るとFLAGになる。
flag{MITRE_ATTACK_MATLIX_THX}
Ropeway (120pts, 285solves)
以下の写真から乗ってるロープウェイの名称を特定せよ。という問題。
観覧車がある、海の上ぽい?ので、"海 観覧車 ロープウェイ" でググって、画像の検索結果を見る。
かんざじロープウェイぽい。と思って、submitしたら正解だった。(海の上じゃなくて湖の上だった…
flag{kanzanji}
N-th prime(200pts, 41solves)
72057594037927936 番目の素数を求める問題。72057594037927936で検索すると 256 。キリが良い…
n番目の素数を求めるサイトを調べると、多くのサイトが1010番目までで、一番知られられる範囲が広い https://primes.utm.edu/nthprime/ でも1012までなので無理。
こうなると、何か特殊な素数や素数リストがあるのかなと思い、"72057594037927936 th prime" とかでググるが何も出ない。
2,3日くらいわからん…わからん…と悩みながらいろいろ調べていると、OEIS(The On-Line Encyclopedia of Integer Sequences)に10n番目の素数リストがあることを見つける。
72057594037927936 = 256なので、もしかして2n番目の素数リストもあるのでは?と考えた。
OEISは数列での検索ができるので、2n番目の素数の最初の5個くらいを https://primes.utm.edu/nthprime/ で調べて、2n番目の素数の数列を作る。
2^0=1番目 -> 2 2^1=2番目 -> 3 2^2=4番目 -> 7 2^3=8番目 -> 19 2^4=16番目 -> 53
よって、数列は 2 3 7 19 53
となる。
この数列でOEISで検索するとビンゴ。
"Table of n, a(n) for n = 0..78" のリンクをクリックすると、278番目の素数までのリストが表示され、もちろん256番目もある。 https://oeis.org/A033844/b033844.txt
0 2 1 3 2 7 3 19 4 53 ... 56 2991614170035124397 ...
FLAG
flag{2991614170035124397}
identify_the_source (250pts, 67solves)
以下のような問題。
組織はある攻撃者グループの動向を調査しています。あなたは旧知の情報提供者からその攻撃者グループが攻撃に利用しようとしているというファイルを入手することに成功しました。情報提供者はファイルの配布元URLの情報も持っているようですが、そちらの情報を入手するためには高額な対価が必要となりそうです。あなたが自由にできる予算は限られています。巧みな話術でどうやらあるマルウェア解析サイトから取得した情報であるようだというところまでは聞き出せました。組織はあなたに配布元URLを特定し、攻撃を未然に防ぐとともに攻撃者グループに関する重要な情報が含まれていないか調査するよう指示を出しました。
添付されたファイルを解析して関連する配布URLを特定、調査し、フラグを入手してください。
問題ファイルは、謎のバイナリファイル。
問題文に該当ファイルが、"マルウェア解析サイトから取得した情報" と書いてあるので、Virus Totalで該当ファイルを検索するためにハッシュ値を取得する。
$ sha256sum tsuru 64f10be20a97f7d25fd23d48e563cc391c54882c97d1c232832ea6beb61ca1da tsuru
このハッシュ値でVirus Totalで検索をかけて見るが、特に有益な情報はなし。
他に思い当たる "マルウェア解析サイト" といえば any.runが思いついたので、any.runで上記のハッシュ値を検索してみる。
すると、2021/07/15にとあるURL https://yrsuccessesareunheraldedyrfailuresaretrumpeted.setodanote.net/tsuru
に設置されているファイルを検査している。
https://app.any.run/tasks/50ac34a0-c4e1-41b8-bd1f-29ec76f7164b/
https://yrsuccessesareunheraldedyrfailuresaretrumpeted.setodanote.net/ にアクセスすると NO DATA
と表示されるが、ソースコードをよく見ると、The flag is no longer here.
と書いてある。
ということは、インターネットアーカイブサイトに保存されているのでは?と考えて、WayBack Machineで検索すると、いくつかアーカイブが取られていた。
https://web.archive.org/web/*/https://yrsuccessesareunheraldedyrfailuresaretrumpeted.setodanote.net/
ソースコードに書いてあった 1626307200
Unix Timestampで、変換すると 2021年7月15日 00:00:00 GMT。ということは、この時間の直前の07月14日 16:21:01 GMTのアーカイブ を見れば何かあるかなと思い、ソースコードを見てるとコメントにFLAGが書いてあったあった。
flag{No_one_cares_the_bomb_that_didn't_go_off}
なお、Twitterにも書きましたが、VirusTotalやAnyrunなどのオンライン解析サービスは、使用のリスクを意識して使用した方がいいですね。
そういえば Identify_the_source、anyrunでハッシュ値で検索すれば一発でわかるのに、ファイルをわざわざアップロードして検査してる人がいるの、これはちょっと危険だなと思った。(今回はサイバーセキュリティの初心者から上級者まで参加しているが。 #setodaNoteCTF pic.twitter.com/NFqdEcJYXv
— ほよたか (@takahoyo) 2021年9月4日
これは、ハッシュ値検査しないでファイルをアップロードした、ということだと思ってる。
— ほよたか (@takahoyo) 2021年9月4日
今回はCTFの問題なので大丈夫だが、実務で仮に標的型が疑われるような検体だと、標的組織に特化したネットワーク情報がハードコーディングされてる可能性もある訳で、#setodaNoteCTF
あの組織やられるんじゃないか?みたいなレピュテーションの問題に発展することがあると思う。(AnyRunの結果は基本誰でも見れるし定期的にこのあたりをHuntingしてる人もいるし
— ほよたか (@takahoyo) 2021年9月4日
なので、基本的にはまずハッシュ値検索してみて、結果がなければ必要に応じて検査とした方がいいですね。 #setodaNoteCTF
Security Oepration (300pts, 39solves)
以下のような問題。
あなたと同僚は敵対組織が秘密裏に進めているオペレーションの調査を命じられました。
「どうやら事を起こそうとしているようだ。」
調査開始からしばらく経った頃、同僚からある画像が届きました。それはかなり不鮮明だったものの、どこかの Web ページを写したと思われる画像データでした。詳細を確認しようと同僚と連絡をとろうとしましたが返信はなく、同僚からの連絡はそれを最後に途絶えてしまいました。画像の Web ページを調査し敵対組織が秘密裏に進めているオペレーションを明らかにしなければ。
添付されたファイルを解析し、フラグを得てください。
問題ファイルは以下の画像。この画像からWebページを調査し、敵対組織が秘密裏に勧めているオペレーションを明らかにせよ、という問題。
まず画像に書かれているURL https://green-pond-97ff.setodanote.net/
にアクセスしてみる。自分が現在アクセスに使用しているIPアドレスから国や地域、タイムゾーンを表示しているようだった。
問題ファイルの画像では国がロシアになっていたので、アクセス元をロシアにすると問題ファイルの画像と同じ条件になるのでは?と考えた。アクセス元を変える方法はいくつかあるが、今回はTorBrowserを使用し出口ノードをロシアに固定する方法を採用した。
出口ノードの固定は、Torの設定ファイルである torrc
に以下の設定を追記する。
ExitNodes {ru} StrictNodes 1
参考: https://web.archive.org/web/20180328074444/http://www.b3rn3d.com/blog/2014/03/05/tor-country-codes/
Kali LinuxでaptでTorBrowserをインストールした場合、TorBrowserのtorrc
は /home/kali/.local/share/torbrowser/tbb/x86_64/tor-browser_en-US/Browser/TorBrowser/Data/Tor/torrc
にある。
この設定を追記してTorBrowserで先程のサイトへアクセスすると、以下のように表示が変わる。
これで隠れていた敵対組織のメンバー?のTwitterアカウントとLink先がわかった。
Link先は https://billowing-poetry-3254.setodanote.net
。アクセスすると認証がかかっていて先に進めない。
残りの手がかりはTwitterアカウントくらいなのでこれを見ていく。
Twitterのアカウントはいくつかツイートをしてるが、特に手がかりとなるツイートは見つからなかった。
あとは何か埋め込むとしたら画像かなと思い、アップロードされている画像をダウンロードしてGoogle画像検索などで元の画像を調べていると、ほとんどが他所で公開されているJPEGのサンプル画像だったが、最初のツイートの画像だけオリジナルのPNGの画像だった。
ここに何か埋まっているかなと思い、画像ファイルをバイナリエディタで見ているとZIPファイルぽいデータが埋まっていた。
ZIPのシグネチャからフッタまでデータを抜き出してみたが、うまくZIPファイルとして開くことができなかった。しかし、ZIPの格納されているPNGファイルは無圧縮のようだったので、PNGのシグネチャ (89 50 4E 47 ..
)から一番近いイメージ終端(.. 49 45 4E 44 AE 42 60 82
)までをバイナリエディタで抜き出して、拡張子の .png
をつけてファイルを保存。
画像ビューアで開くと以下のようにユーザ名とパスワードが書かれた画像が得られた。
これで認証ページの認証情報が、User名はBio(Twitterのプロフィール文)に書いてあるので J.S
、Passwordは right_next_to_you
であるとわかる。
この認証情報でページにログインすると、FLAGが表示される。
flag{=we_can_change_tomorrow=}
PNGからPNGを抜き出すのをひらめくのはエスパーだろ~と思ってたけど、この事についてツイートしてる人がいてちゃんと敵対組織のメンバー?のTwitterアカウントでもfavってた。
I found a way to stuff up to ~3MB of data inside a PNG file on twitter. This is even better than my previous JPEG ICC technique, since the inserted data is contiguous.
— Dаvіd Вucһаnаn (@David3141593) 2021年3月17日
The source code is available in the ZIP/PNG file attached: pic.twitter.com/zEOl2zJYRC