OSWA 受験記(追試込み)
先日 OSWA(WEB-200: Offensive Security Web Assessor) に合格したので、トレーニングや受験に関する自分の体験をまとめました。
そしてタイトルに「追試込み」と付記している通り、1 度落ちています。
OSWA は比較的新しいコースということもあって OSCP ほど情報は多くなく、特にこうした失敗体験についての日本語の記事は自身の観測範囲では見つかりませんでした。
恥を忍んでもその辺りで誰かの何かの参考になれたら、というのが本記事執筆のモチベーションです。
OSWA とは何か
Offensive Security が提供する OSWA (WEB-200: Offensive Security Web Assessor) は、Webアプリケーションのペネトレーションテストに特化したオンラインコースおよびその認定資格です。
OSCP が一般的なペネトレーションテストに焦点を当てているのに対し、OSWA は Web 特有の脆弱性や攻撃手法に深く掘り下げています。
難易度としては OSWE(WEB-300:Offensive Security Web Expert) と基礎コンテンツ的な WEB-100 の中間、概ね中級者向けの位置付けです。
具体的には OWASP Top 10 のような代表的な Web セキュリティの脆弱性を対象としたコースで、Web Security に関わる人たちには馴染み深い内容となっています。Syllabus はこちら。
扱う脆弱性の内容としては、OWASP Top 10 であれば 2021 よりも 2017 の方が近い印象を受けました。
コース全体について
受験にあたって、Learning Course の購入、受講が必要です。
得られるもの
- Web Application を取り巻く脆弱性の基礎的な知識
- 完全な Black Box 環境での効果的な攻撃アプローチの方法
知識面においてこのコースで学べる攻撃手法は非常にベーシックなものですが、自分で Exploit を書いたことがない人にとっては、基礎から教えてくれる非常に丁寧なコースです。
私は前職で Exploit を書くことが多かったですが、反射型以外で野生の Stored XSS のような脆弱性に出会うことは稀で、なんとなく頭ではわかっていながらも改めてこのコースで実際に手を動かしながら学ぶことで得るものは少なくありませんでした。
Black Box 環境での効果的なアプローチやスコープに応じた攻撃手法の選別ついては Hack The Box のようなサービスや現実世界で学ぶことも可能ですが、
- 受講料金や期間の制約という心理的な圧力
- 必ず答えがある
という環境に身を置くことで、安易に諦めない心の先で素敵な Exploit と出会えることができると思います。
OffSec Discord Server
また、今回初めて知ったのですが、コースを受講しなくても OffSec Learning Library platform には参加可能であり、ここから OffSec の Discord Server に参加できます。
コースの詳細をやりとりするチャンネルは受講しない限り参加できませんが、Web や Mobile Security についての Technical Chat やハッカーたちの雑談チャットは無料でも参加できます。
ゆるふわなコンテンツなどもあり、個人的には food-and-recipes のチャンネルで日々のハッカー飯を見るのが好きでした。
失うもの
- 時間
- お金
(副次的に各自が失うものはさておき)この 2 点のみです。すでに勘所のある人はトレーニングに時間を掛けずにすぐに試験を調整できますが、コースをすべて通して学習する場合には 4〜50 時間程度はかかる印象でした。Challenge Lab の進捗によってはもっと掛かる人もいるでしょうし、すっと読み飛ばせる人もいると思います。
お金については選ぶプランによりけりですが、私が選択した Course + Cert Exam Bundle は $1,649、当時の日本円で 26 万円強でした💸💸💸
1 回落ちたので retake のために追加の費用も掛かりましたが、retake の金額は $249 と大変お安くなっています(26 万払ったあとなのでやや金銭感覚が壊れています)。
あと、身分証明のために政府発行の証明書が必要となるため、受験までにパスポートなどを用意しておく必要があります。
試験
さて、試験についてです。
試験予約
OffSec のダッシュボードから予約します。
自分の体験だと、1 週間以上前であれば、概ね希望する日程で予約が取れると思います。
事前準備
事前にインストールしておく拡張機能などがあるので、Exam Guide は必ず試験前日までには確認し、試験の準備をしておく必要があります。
当日の準備
15 分前頃に Proctoring ページへアクセスし、身分証明、試験環境のチェックを行います。
私はこのチェックで試験に使わないディスプレイの撤去を求められましたが、
- プラグ抜くだけじゃだめ?
- もしかしてどかすの大変?
- うん大変
- じゃあプラグを抜いて、壁の方に向けておいて
みたいな形でゆるく許してもらえました。杓子定規な対応をされないのは好印象です。
試験開始
5 台のターゲットマシンの IP が提示され、それぞれのマシンに潜む脆弱性を悪用し、
- 管理者用ダッシュボードへのアクセス: 10pt
- サーバー上に置かれたフラグ情報の奪取: 10pt
の 2 つの目標を達成していき、合計で 70pt 取得することが合格ラインです。
マシンへ攻撃する時間は23時間45分、その後の24時間以内にレポートを提出する必要があります。
試験1回目(不合格)
初回受験では、6つのフラグを取得しましたが、合格ラインの70点には届かず不合格となりました。敗因は主に以下の 2 点と考えています。
罠に惑わされすぎた
試験用のマシンには見るからに脆弱そうな機能が多々ありますが、この試験では 1 つでも多くの脆弱性を見つけることは重要ではなく、加点につながる 2 つの目標、スコープにフォーカスする必要があります。
さらに、全体の傾向から最初に管理者権限を奪取する必要があり、次のフラグを取得できるのは管理者のみに解放された機能にあることが推測できます。
つまり、OSWA で学ぶ脆弱性を並べて
- 管理者権限を奪うのに適した脆弱性
- バックエンドサーバー上のファイルを参照するのに適した脆弱性
という分類をすると、その段階に応じて攻撃するべき Attack Surface はかなり限定できます。
こうした試験テクニックのような対策は自身の学びにおいて本質的ではないようにも思えますが、スコープに応じて特定の攻撃箇所に集中するのは実際のペネトレーションテストでも効果的です。
現実世界ではさまざまな脆弱性を針の糸を通すように慎重に組み合わせて初めて大きな成果を上げるケースもありますが、本試験ではそこまでのことを考える必要はなさそうでした。より Effective な場所に注力して攻撃していきましょう。
Enumeration に頼りすぎた
ここでいう Enumeration とは、Fuzzing などを駆使して攻撃対象のアプリの情報を列挙する手法です。
community chat でも Enumeration の重要性は至る所で語られており、実際に Black Box な検証では Enumeration は非常に重要な要素です。
ただ、自分は Enumeration で必ず攻撃の糸口が見つかるのではと思い込み、特定の Enumeration に重きを置きすぎてしまいました。
現実世界の攻撃手法においても Enumeration が重要なことに変わりはありませんが、アセスメントやペネトレーションテストにおいて、変なバイアスを持って過度なリソースを投入してしまうことは避けるべきです。
※とはいえ私は全てのフラグを取れていないので、raft large な Enumeration によって取得できるフラグもあったかもしれません。
Retake(再受験)
Exam Retake Policy はドキュメントにまとまっているので、再受験する際はこちらを参照してください。
私の条件では、
- 以前の購入から 120 日以内
- 前回の受験から 6 週間後
に再受験できました。
途中でサボったりしながら最初の学習に 2 ヶ月強を使ってしまったので、再受験の対策をする頃には 90 日限定のコースのテキストや Challenge Lab へのアクセスはできなくなっていました。というか途中で山々に紅葉の時期が訪れたので趣味の登山に注力していました。
(OSINT 問題ではありません)
コースの内容は自分で噛み砕いて厚めの Cheat Sheet を作っていたのでそんなに困りませんでしたが、最初の 1 ヶ月くらいで全体を把握してから 1 回試験を受けて雰囲気を知っておくといったアプローチの方がトータルでは良かっただろうなと思います。
特に私のように初めて OffSec の受験をする場合、試験の準備や通しの手順を知るためにも、1 度試験を体験しておくというのは心理的な余裕につながります。
実際、再受験の際に 1 回目で全く脆弱性を見つけられず苦い思いをした Machine と再会しましたが、途中でお風呂に入ったり散歩したりとリラックスして受けた2回目の受験ではするっと解くことができました。冴えた状態で臨むことは自身が思っている以上に効果的です。これは普段の業務でもそう。
最終的に9時間で8つのフラグを取得し、Machine にアクセスできる1日目からレポートの作成に着手したり、しっかり7時間寝るなどしました。
レポーティング
2日目は英語でレポートを書く必要がありますが、翻訳技術が進んだ昨今、言語の壁はそこまで大きな障壁にはならないと思います。
私は普段から海外のセキュリティニュースやベンダの Global Report を読んでいるので Deepl のサブスクを契約していますが、これはトレーニングからマシンの攻略(攻撃対象のアプリは文章で脆弱性を匂わせることもある)、試験監督とのチャット、そして特にこのレポーティングにおいて効果を発揮してくれました。
レポートの Template は公式で用意されています。
自動生成するためのツールなども公開されていますが、私は Word Template を Google Docs に変換してレポートを書くのが慣れもあってちょうどよかったです。
途中で筆も乗ってきたので 65 ページに及ぶ大作レポートを書いたのですが、これはオーバーエンジニアリングだったかもしれません。
誤字脱字のチェックにも時間を掛けてしまい、Textlint や Review dog を噛ませるべきだったかとも執筆中に考えましたが、次のセクションで触れる通り多分それもオーバーエンジニアリングです。
最低限押さえておくべきは、フラグを取った時のブラウザと Burp Suite のスクリーンショットという印象です。
合格の連絡
提出から 10 営業日での連絡、とのことでしたが、私の場合は提出から 24 時間程度で合格の連絡がありました。
すぐに報告をもらえてとても嬉しかったですが、この速さは私の大作レポートを誰もちゃんと読んでいないなという気持ちも湧き上がりました🔥
8 つのフラグを取ったのでレポートの減点があっても合格水準に達していたのかもしれないし、そもそもレポート自体があまり評価対象に含まれていないのかもしれません。
いずれにせよ、レポートについてのフィードバックは特にありませんでした。
まとめ
- これから初めて OffSec の試験を受けていく人にとって、OSWA は取っ掛かりとして非常に丁度良いコースです
- Web のセキュリティをこれから体系的に学びたい人にとっては、さらに有益だと思います
- 自信のない人は、最初から完璧を求めずに 1 回落ちておく、くらいの勢いで突撃するのが効果的な印象
- 会社にお金出してもらってるから 1 回で受からないと・・・みたいな状況は作らない方が良さそう
ここまで偉そうなことを書きましたが、自分も最後まで 2 つの proof.txt は取れなかったのでその点は心残りでした。
OffSec に答えを教えてもらうことはできないと思うので、OSWA に受かった人たちと情報交換などできると幸いです。
Discussion