Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ReconVillage CTF2022 参加報告

meow
September 11, 2022

ReconVillage CTF2022 参加報告

2022/08/30(火)に 第22回 初心者のためのセキュリティ勉強会(オンライン開催) で発表したスライドです。

https://sfb.connpass.com/event/256452/

■リンク
・ReconVillage公式
https://reconvillage.org/

meow

September 11, 2022
Tweet

More Decks by meow

Other Decks in Technology

Transcript

  1. 最⾼難易度のOSINT CTF
    『ReconVillage CTF』(2022)
    参加報告
    第22回 初⼼者のためのセキュリティ勉強会(オンライン開催)
    meow ( @meow_noisy)
    2022/08/30(⽕)
    たぶん

    View Slide

  2. 背景
    u 1年前 ReconVillage CTFに初参加
    u →難しすぎて1問も解けなかった
    u 2022年もオンライン開催だったので
    チームを組んでリベンジすることにした
    https://speakerdeck.com/meow_noisy/rvctf2021-
    overwhelmed-me

    View Slide

  3. おしながき
    u ReconVillage CTFとは
    u ReconVillage CTFに向けた対策
    u 各チームメンバーによるCTFの解答過程の報告
    u 私
    u kmrrさん
    u okukenさん
    u ところてんさん
    u CTFふりかえり
    ※資料では割愛

    View Slide

  4. ReconVillage CTFとは

    View Slide

  5. Recon Villageとは
    u DEF CONのVillageの⼀つ
    u DEF CON
    u アメリカのラスベガスで毎年開催される、コンピュータや
    情報セキュリティーに関係した世界最⼤規模のイベント。
    u 引⽤: DEF CONとは - コトバンク
    u https://kotobank.jp/word/DEF+CON-1612587
    u 今年は第30回。現地/オンライン 併催。
    u Village
    u セキュリティの各トピックのコミュニティ
    u “XXX Village”という⾵にトピックを名に冠している
    u 今年のVillageリスト
    u https://forum.defcon.org/node/239770
    u 右図は⼀例

    View Slide

  6. Recon Villageとは
    u Recon
    u Reconnaissance; 偵察
    u 標的型攻撃のサイバーキルチェーンの第⼀段階
    u OSINTを⽤いて成される
    → Recon Villageは
    サイバーインテリジェンスの
    トピックが議論される場
    画像引⽤: 標的型攻撃対策 - マクニカネットワークス
    https://www.macnica.net/solution/security_apt.html/

    View Slide

  7. ReconVillage CTFとは
    u DEF CON期間中にReconVillageで開催されるCTF
    u 去年に引き続き今年もオンライン開催
    u 今年の開催期間(JST)
    u 2022年08⽉13⽇(⼟) 02:00〜2022年08⽉14⽇(⽇)15:59
    u トータル37時間59分
    u チームは4名まで加⼊可能
    u 参加者情報
    u チーム数: (おおよそ) 140チーム
    https://twitter.com/OSINT_Tactical/status/1518228924030984192
    4⽉の時点では現地開催の話もあった。
    オンラインになってよかった。

    View Slide

  8. 去年との差分
    u チームメンバ定員の減少
    u 5→ 4⼈
    u 1分短くなった
    u 例年 “12:00 AM”を昼だと勘違いする⼈が出ていた
    u 「あと12時間ある」と思って休憩しているうちに
    CTFが終了していたなんてことも
    u 個⼈的に良アプデ
    u 上位⼊賞者へ景品が出る
    u 現地参加者のみ。
    u 4⼈チームで参加した所はどう分けるのだろう…

    View Slide

  9. ReconVillage CTFの難易度に関して
    u 最⾼難易度だと思う
    u そう感じる理由
    u フラグのあるソースを⾒つけるのが難しい
    u ターゲットが⾒つからない
    u 他のOSINT CTFだと名前を検索するだけで
    ⾒つかることが多いのだが…
    u 全く⾒当違いな調査をしてしまうことに…
    u 出題範囲が広い
    u OSINTカテゴリでは出題頻度の低い、
    ペンテストや脅威インテリジェンス関係の
    問題が出る
    u Web問に限りなく近い問題も存在
    u 問題⽂が曖昧
    u 普通なら「電話番号を求めよ」のように
    取得すべきフラグが明⽰的に指定されている
    u ⼀⽅このCTFは「私のサイトをチェックしてみ
    て!」みたいな⽂章であり、何がフラグかわかり
    にくい。
    体感
    難易度
    ReconVillage CTF
    Open xINT CTF
    Cyber Detective CTF
    Search Party
    CYBAR OSINT CTF
    Cyber Investigator CTF

    View Slide

  10. ReconVillage CTFに向けた対策

    View Slide

  11. 対策⽅針
    u 去年は単騎でReconVillage CTFへ突撃して
    1問も解けなかった
    u Webサービスの調査問題が多く、私が解けるレベルなのかすら
    判断不能だった
    u → 脆弱性診断経験のある⼈をチームに呼ぶ

    View Slide

  12. チームメンバー
    u ところてん(@tokoroten0813)さん
    u セキュリティエンジニア(業界12年⽬)
    u この勉強会の主催
    u CISA / CISM / CDPSE / GCP PCA
    u okuken (@okuken3)さん
    u セキュリティエンジニア
    u MBSD所属
    u Burp Suiteの拡張機能『ISTE』の開発者
    u kmrrさん
    u セキュリティエンジニア
    u 勉強会「ゼロから始めるCTF」主催
    u 著書「After CTF(@技術書典8)」は良本
    u 私(@meow_noisy)
    u ただのOSINT CTF好き
    全員この勉強会グループ(Security for beginners)の関係者だったことから、
    チーム名もそのようにした。

    View Slide

  13. チーム内準備
    u CTFに向けた環境準備依頼
    u 過去問の共有
    u チームの⽅針決定
    1. ⽬標設定
    u →なるべく低く
    2. どういう⼿段で作業するか
    u → Discordのテキストチャット
    3. 問題の解答の進捗共有
    u → Googleスライドを使⽤

    View Slide

  14. 環境準備の依頼
    u 最⾼難易度ということもあり若⼲こだわった依頼
    u Chrome拡張機能
    u Search by Image, Wayback Machine, Windscribe
    u SMS認証が必要なアカウントの作成依頼
    u LinkedInのアカウント作成
    u インスタのアカウント作成
    u Facebookのアカウント作成

    View Slide

  15. 過去問の共有
    u ReconVillage CTFの過去5年分のwrite-upをすべて⼀箇所
    に集めて共有
    u メンバーに問題の肌感覚を掴んでもらう
    https://meow-memow.hatenablog.com/entry/2022/08/12/091522

    View Slide

  16. チーム内⽬標設定
    u 次の2つ
    u チームで1問解く
    u 楽しむ
    u 低い⽬標に設定することで、リラックスしながら
    CTFに取り組めることを狙った

    View Slide

  17. コラボレーション⽅法
    u 38時間ということもありDiscordのテキストチャットで
    基本的にやりとり
    u 雑談しながら適度に相談する
    u コアタイムを決めてボイチャ
    u とはいえお互い会話するのも数カ⽉ぶりなので雑談に華が咲く😅

    View Slide

  18. 問題の解答の進捗共有ツール
    u Googleスライドを使う
    u 準備不要で使い慣れたUIというのが選定理由
    u 各⼈の調査内容をスライドで貼り付けていく
    u それを⼿がかりに後の⼈が引き継ぐという協⼒体制を実現
    u 他⼈がスライドを編集している状況もわかるので、メンバーが⼀緒に
    解いている雰囲気を感じられて良かった

    View Slide

  19. 私の回答状況

    View Slide

  20. 私の回答状況
    u 起きている時間(合計26時間)はCTFに張り付いていた
    u 8/13(⼟): 2:00〜4:00、8:00〜24:00
    u 8:14(⽇): 8:00〜16:00
    u 3問フラグを提出した(≠私が解いた)
    u Challenge 4 (友⼈の誕⽣⽇の特定)
    u Challenge 16 (レビュー投稿⽇の特定)
    u Challenge 5 (プールパーティの開催⽇の特定)
    u 以下では上記の問題と解答を紹介する
    u 解答は簡素に書いているが、26時間分試⾏錯誤した末に掴んだ答え
    であることは強調しておきたい

    View Slide

  21. Challenge 4 (友⼈の誕⽣⽇の特定)
    u Wanting to remain
    anonymous online,
    discreetly named
    'Phonenumber' from
    Costa Rica has a friend
    who works for Facebook.
    When did his friend get
    married? (MM/DD/YYYY)
    u ‘Phonenumber’ という
    ⽬⽴ちにくい名前のコスタ
    リカ出⾝のユーザがいます。
    u 彼には、Facebook で働く
    友⼈がいます。
    u 彼の友達はいつ結婚しまし
    たか。(MM/DD/YYYY)

    View Slide

  22. Challenge 4 (友⼈の誕⽣⽇の特定)
    u Phonenumberのユーザ名検索を⾏ってみる。
    u ありきたりな名前だからかさまざまなSNSがヒットしてしまう。

    View Slide

  23. Challenge 4 (友⼈の誕⽣⽇の特定)
    u Facebookでそれとなく「phonenumber Costa Rica」で検索。
    u それらしき⼈がいた。

    View Slide

  24. Challenge 4 (友⼈の誕⽣⽇の特定)
    u 友達にFacebookで働いている⼈がいた
    友達のページ パートナーがいることを確認

    View Slide

  25. Challenge 4 (友⼈の誕⽣⽇の特定)
    フラグ
    flag:{11/03/2007}
    パートナーのプロフィールを調査

    View Slide

  26. Challenge 16 (レビュー投稿⽇の特定)
    u Can you locate this field on
    the outskirts of London in the
    image attached below. Once
    you do, what date did “⽒名”
    leave a review for this place?
    Copy the date from the
    review as is in the flag format.
    u [google訳]
    添付された画像で、ロンドンの郊
    外にあるこのフィールドを⾒つけ
    ることができますか. “⽒名” がこ
    の場所のクチコミを投稿した⽇付
    はいつですか? フラグ形式のまま、
    レビューから⽇付をコピーします。
    ※⼀応ユーザ名は伏せて
    “⽒名”としておきます

    View Slide

  27. Challenge 16 (レビュー投稿⽇の特定)
    u 撮影場所を特定するための試⾏錯誤
    u EXIF → なし
    u 画像で検索 → ヒットせず
    u カラフルなグラウンドを切り取って検索→ヒットせず

    View Slide

  28. Challenge 16 (レビュー投稿⽇の特定)
    u カラフルな画像に着⽬
    u オープンな2階建ての建物があり、セクションに分かれている
    u 芝⽣をネットが囲んでいる
    u ゴルフの“打ちっぱなし”だと推理
    u 英語だと、”Golf driving range” というらしい

    View Slide

  29. Challenge 16 (レビュー投稿⽇の特定)
    u 「London Golf driving range」でgoogle mapで検索
    u 候補がいくつか出てきたが、衛星写真の結果、 更地ではあるが、
    形状の似た区域を発⾒
    Google map お題の写真

    View Slide

  30. Challenge 16 (レビュー投稿⽇の特定)
    u 打ちっぱなしの場所のレビューの中に“⽒名”⽒を発⾒
    u しかし、3 weeks ago でサブミットしても不正解だった

    View Slide

  31. Challenge 16 (レビュー投稿⽇の特定)
    u 正確なフラグが必要と考えて、レビューの時間を取り出す
    ⽅法を調査
    u GCPのAPIだとunix時間をとれることがkmrrさんの調査でわかる
    u 私がやってみたが、APIでは先頭5件のレビューしかとれず、
    試みは失敗

    View Slide

  32. Challenge 16 (レビュー投稿⽇の特定)
    u レビューを⾒れないか 悪戦苦闘していると、“打ちっぱなし”
    の公式サイトがあることがわかった
    u 公式のレビュー閲覧ウィジェットからレビューを閲覧可能
    u ウィジェット越しだとフルの⽇付が閲覧可能でフラグだった
    公式サイトをクリック
    Read our 48
    Reviewsをクリック
    右側に
    Googleの
    レビューが
    ⽇付レベルで出てくる。

    View Slide

  33. Challenge 5 (プールパーティの開催⽇の特定)
    u You're investigating a
    missing person who went
    missing following a party in
    2019. While working
    through case notes you've
    come across the following
    NTIyMyBTb3V0aCBCcmFlc3
    dvb2QgQm91bGV2YXJkLCBI
    b3VzdG9u What date was
    the pool party?
    u あなたは、次に⽰す2019 年
    のパーティーの⾏⽅不明に
    なった⾏⽅不明者を調査して
    います。
    u 事件を調べているときに、次
    のことに気付きました:
    NTIyMyBTb3V0aCBCcmFlc3
    dvb2QgQm91bGV2YXJkLCBI
    b3VzdG9u
    u プールパーティーは何⽇でし
    たか。

    View Slide

  34. Challenge 5 (プールパーティの開催⽇の特定)
    u 謎の⽂字列の解明
    u ところてんさんがBASE64エンコードだと気づく
    u NTIyMyBTb3V0aCBCcmFlc3dvb2QgQm91bGV2YXJkLCBIb3VzdG9u
    u → 5223 South Braeswood Boulevard, Houston
    u あとはヒューストンの2019年の⾏⽅不明者のうち、プール
    パーティーの後に⾏⽅不明になった⼈を探せば良い

    View Slide

  35. Challenge 5 (プールパーティの開催⽇の特定)
    u プールパーティーの⾏⽅不明者が⼀向にみつからず
    u Twitterで当該の住所でプールパーティーを開くものがあっ
    たが、4/25だとincorrect
    u プールパーティがあったのは2019年
    u ブルートフォースで365⽇やればみつかるはず
    u あとはフラグフォーマットだけわかればよい

    View Slide

  36. Challenge 5 (プールパーティの開催⽇の特定)
    u 最後の⼿段: 運営へDMで聞く
    u 運営からフラグフォーマットの回答が来た
    u フラグフォーマットがわかったのでブルートフォース開始
    u フラグも無事ゲット
    u flag:{04/20/2019}

    View Slide

  37. Challenge 5 (プールパーティの開催⽇の特定)
    u 正攻法
    u “5223 South Braeswood Boulevard, Houston”とクオートでくくれば
    pastebinが⾒つかったらしい
    u そのpastebin内にプールパーティーの開催⽇が書かれていた
    u つまり問題⽂の⾏⽅不明者は全く関係なかった
    u 参加者の5分の4はこの問題を解いていた
    u 何で他チームは解けるのかと思っていたらあまりにも簡単なことだった
    u クォートでくくらずに調べたのが
    悪⼿だった

    View Slide

  38. CTFのふりかえり

    View Slide

  39. 最終順位
    u 6問正解し9位でフィニッシュ
    u ⽖痕を残せたのではないかと思う

    View Slide

  40. 9位(1,100ポイント)という成績の⾃⼰評価
    u 「解ける問題を全て拾った」という実⼒
    u 先に1,100ポイントに達していたチームは結構いた印象だが、
    それらのチームがヒント閲覧でポイントを消費したことにより、
    我々の順位が相対的に上がった
    u チーム⽬標が1問正解だったことを考えると
    上出来すぎる結果である

    View Slide

  41. [備考]上位チーム
    u 1位: alligator hunters
    u Google、Amazon、Pinterest等のエンジニア集団
    u write-up: https://andrew.cloud/blog/dc30-writeup/
    u 2位: pinja
    u おなじみ。今回はコアメンバーのみ。
    u 3位: Delaware
    u おそらくフランスのチーム
    u HEXA OSINT CTFの運営の⽅がチームの代表(右図)
    https://twitter.com/_IWHere

    View Slide

  42. CTF後の私の所感[1/2]
    u やっぱり難しい
    u フラグのあるソースを当てることができなければ詰み
    u 問題はその探し⽅を思いつくかどうか
    u インスタで”vegas birthday”と検索
    u githubで”cryptorama” で検索
    u …など。
    u このクエリを思いつけるかどうかの運ゲーになってしまっている
    u ここを技術でカバーできるか分からず、OSINT CTF⼒が伸び悩んでいる
    u WebサーバへのOSINT問について
    u 今年も出た
    u しかし、お題のサーバを⾒つける必要があった
    u お題のサーバを⾒つけるのが私の役⽬なのにそれができず、脆弱性
    診断のメンバーへ作業をつなぐことができなかったことが悔い

    View Slide

  43. CTF後の私の所感[2/2]
    u そろそろ、ブルートフォース&運営へゴネる⾏為で
    ポイントを増やすのはやめたい
    u この辺りはxint ctf2021からまるで成⻑していない…
    u まともにインテリジェンスして点を取れるようになりたい
    u 上位チームとの差
    u 得点的には上位チームの半分程度だが、もう1000ポイント取ると
    なると、とてつもない技術的な差がある
    u 分厚い壁が5枚くらいありそう
    u 特にペンテスト、脅威インテリジェンス関係も学ぶ必要がある
    u 1枚2年ずつかけてでも丁寧に壁を破っていきたい!
    上位チームのポイント

    View Slide

  44. まとめ
    u ReconVillage CTF2022にチームで参加した
    u 出題された問題と解答を紹介した
    u 去年よりも好成績を残せたものの、平均の実⼒よりも
    上に⾏くには、さらなる勉強が必要
    u write-upも出ているのでこれを⾒ながらOSINTの勉強に励んでいく

    View Slide

  45. CTFチームメンバへの謝辞
    u お盆シーズンかつ⻑丁場のCTFにもかかわらず、
    ご都合をつけていただき、本当にありがとうございました!

    View Slide

  46. ご清聴ありがとうございました
    @meow_noisy

    View Slide