好奇心の足跡

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

setodaNote CTF writeup [OSINT]

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

tech.kusuwada.com

tkys_with_love (30)

だいぶ元気なようだ。長期休暇中の後輩からメッセージが届きました。「どこにいると思います?コールサイン C6DF6 の上ですよ!!」どうやら何か乗り物に乗っているようです。後輩が何に乗っているのか特定してください。

フラグは後輩がいるという乗り物の正式名称を flag{} で囲んで答えてください。名称に空白が含まれている場合はアンダースコアでつないで回答してください。例えば This is a FLAG が名称である場合は flag{This_is_a_FLAG} のように答えてください。

C6DF6で調べると、この船が出てきた。ロイヤルカリビアンの所持するクルーズ船らしい。

f:id:kusuwada:20210904230006p:plain:w400

大文字小文字の指定がなかった&検索すると大文字の位置が説明によって微妙に違ったのでいくつか試したが、下記が正しいflagでした。

flag{Symphony_of_the_Seas}

Dorks (50)

あなたは組織が所有するドメインに関係するサイトの中で login.php が不用意に公開されていないかを Google を使って確認するように依頼を受けました。login.php が利用されているかどうかは、ある5文字の検索演算子をひとつ使えば調査することができそうです。

Google で login.php を URL に含むページを検索するための検索語句を検索演算子を含めてすべて小文字 でフラグ形式にして答えてください。

例えばファイルタイプを限定する filetype の検索演算子で pdf を検索するための検索語句を答える場合は flag{filetype:pdf} となります。

URLに特定の単語を含むかの検索は inurl検索演算子が使えるので、答えはinurl:login.php

filters_op (50)

Twitter アカウント @cas_nisc が2017年5月15日にツイートした注意喚起に付与されている英字のハッシュタグをフラグ形式で答えてください。

例えば付与されていたのが「#HashTag」であればフラグは flag{#HashTag} となります。

@cas_niscはNISC内閣サイバーセキュリティセンターの公式アカウント。

NISC内閣サイバーセキュリティセンター (@cas_nisc) | Twitter

2017年のツイートなので古い。日時を絞って検索します。

https://twitter.com/search?q=(from:cas_nisc) until:2017-05-16 since:2017-05-15

ハッシュタグが二個ついていましたが、英字のは一つ。答えは #WannaCrypt

MAC (50)

友人が簡単な暗号を作ったから意見を聞かせてほしいと言ってきました。公開情報に基づき解くことができるといいます。あなたは暗号文を解いてみることにしました。

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だったので、公開されているMACアドレスのOUI情報(MACアドレスの前半部分で、ベンダーが取得している)をhttps://ouilookup.com/search/で検索してみると、

00:03:93 = Apple
00:01:A9 = BMW AG
04:2A:E2 = Cisco

だったので、所持している会社の頭文字が暗号になっている事がわかる。問題のOUIを同様に検索して変換すると、flag{O_U_I_Y_A}

tkys_eys_only (50)

送られてきたデータが端末に表示されます。後輩の活躍により、監視対象者が操作していた端末画面の取得に成功しました。映し出された画面はある組織の所在地に関する情報を含んでいます。画像を解析し、所在地に最も関係する組織名を特定してください。

添付されたファイルを解析し、所在地に最も関係する組織の名称を英語表記で答えてください。名称にスペースがある場合はアンダースコアに置換しフラグ形式で回答してください。

例えば組織名が International Criminal Police Organization だった場合は flag{International_Criminal_Police_Organization} となります。

配布された画像は、お天気サイトの画面が。urlが途中まで載っているので見てみるとhttps://forecast.weather.gov/MapClick.php?lat=40.749444&lon=-73.968056。(lonのマイナスを付け忘れてハマってた)

google mapで 40.749444, -73.968056 と入れ、緯度経度検索すると、"United Nations Secretariat Building, 405 E 42nd St, New York, NY 10017, USA" というのが出てきました。なんのビルだろう。

United Nations Secretariat Building - Wikipedia

wikipediaによると、"United Nations"(国連)の管理下にあると考えられている、とのことなので、これをflagにして突っ込むと通った👍

MITRE (100)

識別子があることを知っておくことは共通の認識をもつために必要なことでしょう。ですが、すべての識別子を覚える必要はないと思います。そういう理由で私はこの課題に必要性を感じません。そう説得したが教官は首を縦に振ってはくれなかった。そして、私はこれからこの文字列を解読しなければならない。

T1495T1152T1155T1144 T1130T1518 flag{T1170T1118T1099T1496T1212_T1531T1080T1127T1020T1081T1208_T1112T1098T1199T1159T1183T1220_T1111T1147T1220}

フラグに英字が含まれる場合はすべて大文字で答えてください。

MITREの識別子を使った問題のようだ。MITREについては こちら のとおり、攻撃者の攻撃方法や行動・目的を明文化したフレームワークのこと。それぞれに識別子がつけられているので、これを検索して適切な文字列に置き換えられれば良さそう。

こちらの一覧から、該当する識別子のタイトルを抜き出して頭文字をつなげれば良さそう。一覧に出ていないものがあったので、https://attack.mitre.org/techniques/ の先に識別子を入れたURLにアクセスしていくと、タイトルが全部確認できました。

https://attack.mitre.org/techniques

T1495: Firmware Corruption
T1152: Launchctl
T1155: AppleScript
T1144: Gatekeeper Bypass
T1130: Install Root Certificate
T1518: Software Discovery

この時点で "FLAG IS" なのであってそう。めんどくさいけど、残りも同様に頑張った。

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
T1220: XSL Script Processing

頭文字をつなげると

FLAG IS  
flag{MITRE_ATTACK_MATLIX_THX}

Ropeway (120)

休暇中の同僚から写真が送られてきました。あるロープウェイから撮られた写真とのこと。そしてもし写真から撮影場所が特定できたらいい地酒をお土産に買ってくれると言います。あなたは仕掛中の仕事を脇に置き、写真の解析を始めました。

添付されたファイルを解析し、ロープウェイ名称を英小文字のフラグ形式で答えてください。例えばロープウェイの名前が「瀬戸田ロープウェイ」の場合、フラグは flag{setoda} となります。

こんな画像が添付されています。見たことないけど、湖が2つか3つ見える。入り組んだ地形のようだ。流石にmetadataに位置情報は載っていない。

google画像検索にエイヤッと投げてみたところ、浜名湖周りのサジェストが出たので、浜名湖のロープウェイで探してみると、「かんざんじロープウェイ」というのっぽい。
浜名湖かんざんじ温泉観光協会のサイトが「kanzanji」表記のドメインだったので、きっとこれがフラグ!とおもってflagフォーマットで囲むと、通りました👍

N-th_prime (200)

電車の中で誰かの会話が聞こえてきます。

「巨大な素数の秘密を知っているか兄者」「知っているとも弟者。巨大な素数は秘密を守る要なのさ」「兄者、1番目の素数は?」「2 だ」「2番目の素数は?」「3 だ」「数え上げて 72057594037927936 番目の素数は?」「・・・」「兄者マテッ!ときに落ち着けって!」

数え上げて 72057594037927936 番目の素数をフラグ形式で答えてください。例えば 11 だった場合は flag{11} と答えてください。

なぜこれがCryptoでなくてOSINTにいるのか…?それはきっとググれば答えが出てくるからに違いない!といういことでググってみた。

72057594037927936という数は、2の56乗らしい。
…というところまではわかったけど、全然ヒットせず。他のかたのwriteupで復習。

下記、検索のアプローチなど大変参考にさせていただきました。

まとめると、N-th prime (Nが大きい時)を求めるので使えるサイトは

特に上の2つのサイトは今後もお世話になりそう。
他、このサイズのNだと厳しかったようですが、プログラムを組んだりmessieでN-th primeを計算するというアプローチもありました。(私も最初プログラムを組みかけたが、どう考えても無理そう&OSINT枠だったので検索にアプローチを絞りました)

identify_the_source (250)

組織はある攻撃者グループの動向を調査しています。あなたは旧知の情報提供者からその攻撃者グループが攻撃に利用しようとしているというファイルを入手することに成功しました。情報提供者はファイルの配布元URLの情報も持っているようですが、そちらの情報を入手するためには高額な対価が必要となりそうです。あなたが自由にできる予算は限られています。巧みな話術でどうやらあるマルウェア解析サイトから取得した情報であるようだというところまでは聞き出せました。組織はあなたに配布元URLを特定し、攻撃を未然に防ぐとともに攻撃者グループに関する重要な情報が含まれていないか調査するよう指示を出しました。

添付されたファイルを解析して関連する配布URLを特定、調査し、フラグを入手してください。

配布されたファイルは形式不明のdata。lessコマンドで中身を見てみると、最後に

The flag was written on a website where you would have been able to download this file.

と書いてあります。

このファイルのHash(SHA256)は64f10be20a97f7d25fd23d48e563cc391c54882c97d1c232832ea6beb61ca1da
MD5は 692d63870043c597ad56bcfba440dc89

いくつかマルウェア解析サイトを巡ってみて、下記のサイトでそれっぽい手がかりを発見。

https://www.hybrid-analysis.com/

こちらで、Hash検索してみると、tsuruという検体が引っかかります。

f:id:kusuwada:20210904230159p:plain:w400

こちらのサイトは無料で検体をDLできるとの情報があったのでリンクを探してみると、

f:id:kusuwada:20210904230220p:plain:w400

hxxps://yrsuccessesareunheraldedyrfailuresaretrumpeted.setodanote.net/tsuruのhxxpsをhttpsに直して飛んでみると

f:id:kusuwada:20210904230237p:plain:w400

うーん。Nice Tryでflagではない…。
この線であってそうなので、ドメイン名yrsuccessesareunheraldedyrfailuresaretrumpetedでググってみると、web魚拓がいっぱい出てきた!その中でも7/15の魚拓には履歴がたくさん残っていて、その中の一つにflagがありました👍

f:id:kusuwada:20210904230300p:plain:w400

f:id:kusuwada:20210904230325p:plain:w400

secret_operation (300)

あなたと同僚は敵対組織が秘密裏に進めているオペレーションの調査を命じられました。

「どうやら事を起こそうとしているようだ。」

調査開始からしばらく経った頃、同僚からある画像が届きました。それはかなり不鮮明だったものの、どこかの Web ページを写したと思われる画像データでした。詳細を確認しようと同僚と連絡をとろうとしましたが返信はなく、同僚からの連絡はそれを最後に途絶えてしまいました。画像の Web ページを調査し敵対組織が秘密裏に進めているオペレーションを明らかにしなければ。

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

配布されたファイルはこの画像。この画像から読み取れる情報を手当り次第試してみます。

f:id:kusuwada:20211016150458j:plain:w400

上のバーに表示されているURLhttps://green-pond-97ff.setodanote.netを踏んでみると
自分の現在のCity, Region, Country, Timezone が表示されています。

f:id:kusuwada:20211016145530p:plain:w400

これをもしかして、画像の中の条件に合わせることができると情報が得られるかも?

Information Display
The time is always right to do what is right.
Your info
City: St Petersburg
Region: St.-Petersburg
Country: RU
Timezone Europe/Moscow (petersburgがロシアのモスクワ時刻らしいので)

まずは素の状態で得られる情報。(curl使用)

$ curl https://green-pond-97ff.setodanote.net

<!DOCTYPE html>
<body>
  <head>
    <title>Information Display</title>
    <link href="https://use.fontawesome.com/releases/v5.15.1/css/all.css" rel="stylesheet">
    <style> body{padding:6em; font-family: sans-serif;} h1{color:#f6821f} h2{color:#f6821f} .icon.brands:before {font-family: 'Font Awesome 5 Brands';} .fa-twitter:before {content: "\f099"; color: #00acee;} a {text-decoration:none; color: #00acee;} </style>
  </head>
  <h1>Information Display</h1>
  <p>The time is always right to do what is right. </p>
  <!-- <p class="icon brands fa-twitter"> Twitter </p> --><br /><h2>Your info</h2><p> City: Brighton</p><p> Region: England</p><p> Country: GB</p><!-- <p> Latitude: xxx</p> --><!-- <p> Longitude: xxx</p> --><!-- временно удалён --><p> Timezone: Europe/London</p>

はい、私今イギリスのブライトンにいます。
位置情報を取得している+ロシア語で「一時的に削除」とコメントしているようなので、これをごまかして送れないかやってみます。
ヘッダに X-Forwarded-ForでIPを偽装して送ってみたりしたが、違うところを見ているようで反映されず。

TorブラウザでIPをごまかせるなら、指定できないかといろいろ調べてみたけど方法が見つからず。メニューからNew Tor Circuit for this Siteを選ぶと出口IPが変更できるので、ランダムでひょっこり正解付近の出口ノード引くのを期待してリフレッシュしまくったけどロシアは引けず。

ここで時間切れでした。

他の方のwriteup読んでみたところ、Torブラウザの出口ノードの国固定なんて方法があるの!?これをやりたかったんだ〜!!

ということで試してみた。

web.archive.org

CTF用の仮想環境をLinuxで構築してそこでいじるのが安全面からも情報量の多さ的にも絶対良いのだけど、試しにMac上で上記をやってみた。torrcのpathは

~/Library/Application Support/TorBrowser-Data/Tor/torrc

だったので、このファイルの末尾に

ExitNodes {ru}
StrictNodes 1

を書き足してTorのidentityを更新したところ、違う画面が出てきました!

f:id:kusuwada:20211016145658p:plain:w400

さっきは見えなかったtwitterのアカウント情報もちゃんと書かれています!どんな人でしょう。

f:id:kusuwada:20211016145706p:plain:w400

このtwitterアカウントを深堀りすることに。
フォローしているのはPresident of Russia(公式)だけなので、こちらの情報はなさそう。フォロワーは0。ツイート数は59。画像つきのツイートもいくつかしています。

ダーッとツイートを見てみて、気になったのがこの最初のツイート。キリル文字で写真を撮った人の名前が書いてある。
ロシア語のアルファベット入力キーボード。変換不要!一覧から文字を選択 | やまでら くみこ のレシピでキリル文字をテキストに起こしてみました。

Лечение Наркомании

ぐぐってみると、薬物・中毒治療に関する説明やサイトがたくさん出てきた。最初の画像にあったサンクトペテルブルクにも実用医学研究所というのが有るらしい。関係あるかな?

とりあえずこの写真だけ重要っぽい雰囲気あるので、ダウンロードしてforemostかけてみた。

$ foremost suspective.png 
Processing: suspective.png
|foundat=YXV0aC5wbmc?PNG


*|

おや。様子がおかしい。出力結果をみてみると、zipファイルが抽出されていました。出てきたファイルはこちら。

$ file YXV0aC5wbmc 
YXV0aC5wbmc: PNG image data, 407 x 57, 8-bit/color RGB, non-interlaced

これファイル名をbase64 decoceすると、auth.pngだ。これは怪しい。中身はこちら。

f:id:kusuwada:20211016150216p:plain:w400

Userに関するヒントとPasswordが!UserはtwitterのbioがJ.Sとだけ書いてあるのでこれっぽい。これなんのアカウントだろう?

と思って、ロシアからしかアクセスできなかったサイトのページをもう一度見てみると、一番下にリンクがついてる。リンク先に飛ぶとUser,Passを要求されるので、上でGetしたやつを入れると通った🚩

f:id:kusuwada:20211016150307p:plain:w400

今回はTorブラウザでの出口ノード国固定を覚えたので、大収穫だった!競技中チャット調べた情報ではたどり着けなかったので、皆さんのwriteup読んでよかった。