本サイトは、快適にご利用いただくためにクッキー(Cookie)を使用しております。
Cookieの使用に同意いただける場合は「同意する」ボタンを押してください。
なお本サイトのCookie使用については、「個人情報保護方針」をご覧ください。

最新情報

2024.06.05

Offensive Security Web Expert (OSWE) 受験記

著者:白倉 大河

セキュリティエンジニアの白倉です。今回、Offensive Security Web Expert (OSWE)を受験して、無事合格したため、次に受験する方のために受験の感想を残しておきます。

細かい試験の中身は公開されていませんが、公式のレビューにもある範囲で記載しています。

https://www.offsec.com/offsec/offensive-security-awae-oswe-review/

注意:2024年5月現在かつ、個人の感想です。最新の情報や正確な内容は公式情報やOffSec社にお問い合わせをお願いします。また、試験の内容の流出はご法度なので、曖昧な記載となることをご理解ください。

OffSec社とOSWE

Offensive Security Web Expert (OSWE)は、Kali LinuxやExploit DBを開発・運用しているアメリカのOffensive Security社(OffSec社)の認定資格です。名前の通り、Webに関するペネトレーションテストの資格となっています。

  • ホワイトボックス(ソースコードが読める)Webアプリケーションでのペネトレーションテスト
  • 47時間45分のマシン攻略(Webカメラと画面共有による監視付き)
    • 2台のマシンについて、認証バイパス+RCE(Remote Code Execution)に成功すれば満点です
  • 24時間後のレポート提出(英語)

受験費用が高額だったり、時間がかかったりしますが、会社から色々サポートしていただきありがたかったです。

AWAEトレーニング

Advanced Web Attacks and Exploitation(AWAE)というOSWEに対応するトレーニング(テキスト+対応する動画+ラボ環境)と、OSWEの試験がセットになっています。 シラバスとコースのタイトルは契約前から閲覧できます。基本的に、OSSに過去に存在した脆弱性を題材としつつ、脆弱性や調査方法を勉強していきます。教材はブラッシュアップで入れ替わることがあり、私の受講中にも入れ替えがありました。

https://www.offsec.com/courses/web-300/

https://portal.offsec.com/courses/web-300-687/learning/modules

XSSやSQL Injectionといった基礎的な箇所がわからない場合、先に本やネットで勉強しておくと理解が早いかと思います。PortSwigger社のWeb Security Academyは試験のためにも、技術獲得のためにも一巡しておいて損はないと思います。

https://portswigger.net/web-security

テキストと動画は期間中1度だけ電子透かし入りのデータが作成して、ダウンロード可能です。何度でもダウンロード可能だと勘違いして、自宅PCにPDFを置き去りにしてしまい、電車の中で読み進める計画が崩れてしまいました……。また、動画の生成には少し時間がかかるので、時間に余裕があるときに生成/ダウンロードすると良いかと思います。動画には細かいコマンドや結果など、テキストで明記されていない手順も含まれているので、困ったときは確認してみると良いかと思います。

難易度としては、私は3年ほど脆弱性診断を行ってきたため、既知の内容も多く特に困難なく読み進めることができました。業務と異なる点としては、OSWEではRemote Code Executionが目標となっており、User Defined FunctionsからRCEまでつなげるといった経験は初めてで面白かったです。(脆弱性診断だと、本番サーバーを破壊してしまうおそれがあるので、むしろここまではやらないようにしています)

受験準備

  • 受験時の注意はしっかりと読み込み、不明点はメールで問い合わせましょう。試験外で失格になるのはもったいないです。
    • ソースの持ち出しは厳禁で、リモートマウントなども禁止されています
    • SQLMapなどの自動ツール、スキャンツールが禁止されていることにも注意してください。SQL Injectionに詳しい人でも、手作業で抽出するスクリプトを書いたことがない人は、トレーニングのエクササイズを通じて事前に準備しておくと良いかと思います。
  • 部屋を整えておきましょう
    • スマホなどの電子機器持ち込みや、カメラ撮影は不可。ゲーム機や使用していないディスプレイなどは別の部屋に移しました。プリンターやWi-Fiルータは写り込んでも何も言われなかったです。
    • できるだけ一人の部屋で、休憩中もカメラONが望ましいです。家族と暮らしてる方や、ワンルームだと結構厳しそう…
  • マシン攻略時はWebカメラ+画面共有による監視があります
    • レポート時間は監視なしです。監視ありだと思いこんでいたので、提出前にさっきの終了ボタン押してよかったの?!と焦って問い合わせまでしちゃいました
  • 受験予約はお早めに
    • 受験は開始時間の枠の中から予約します。いい時間帯が空いているとは限らないのと、何度か変更可能なので早めに予約してしまうのが良いかと思います。私は1ヶ月前ぐらいに予約しましたが、すでに夜中や早朝しか空いていない日もありました。キャンセルで枠が空く場合もあるようです。
    • 英語レポートに自信がなければ、72時間分しっかり休みを確保しておいたほうが良いかもしれません。弊社はOSWE受講に理解があったので、色々と調整をしていただけました。
  • 試験環境を整える
    • ノートPCの画面+外付けディスプレイ2枚体制で挑みました。画面は多いほうが良いと思います。
    • VMWareにKali Linuxをインストールし、パッケージアップデートなどを済ませ、スナップショットを取っておくと良いです。
    • メモの取り方や、レポートの書き方などを考えておきましょう
    • 英語に不安があったので、DeepLを有料版に切り替えておきました
    • 英語表記の名前があるなどの条件を満たす身分証(基本的にパスポート)が必要なので、準備や有効期限の確認もお忘れなく
    • お菓子や飲み物も準備しておきましょう

試験開始

  • 試験システムに1時間ぐらい前にログインを試したらエラーで入れず。何か間違ってるかと焦りましたが、指示されている通り15分前には入れるようになっていました
  • カメラを動かして、部屋や机の上を撮影するように言われます。ノートPCのWebカメラの両側にケーブルが刺さってたので動かしにくかったですが、数分遅れ程度で開始できました

タイムライン

1日目 20:00 開始
02:00 マシン1の認証バイパス達成。かなりハマってしまいましたが、RCEへの道もだいたい見えたので睡眠。
2日目 08:30 起床
12:00 マシン1のRCE達成。お昼に。
13:00 マシン2の攻略開始
13:30 マシン2の認証バイパス成功。短時間でいけました。
20:00 夜休憩もはさみつつ、マシン2のRCE達成。PoCコードの作成に移る。
24:00 大体問題なくできそうな雰囲気が見えてきたので、安心して就寝
3日目 08:00 起床
13:00 うまくRCEが再現できないなどのトラブルと戦いつつ、PoCを書き上げる。レポートに向けてスクショやPoCの品質向上に務める。
19:45 マシンアクセス時間終了
4日目 19:30 提出完了
数日後 合格メール受領

試験に関して

生活面

開始前に仮眠を取ってスッキリした状態で開始できたのは良かったです。睡眠はしっかり取ったほうが良いかと思います。また、煮詰まるという点でも、集中力等の点でも積極的に休憩を取ったほうが良いかと思います。コンビニとの往復が良いリフレッシュになりました。

作業面

  • 席を立つ/戻る際に報告が必要ですが、「I'll take a break」とか「I'm back」とか、機械翻訳とかで十分かと思います
  • レポートにはスクショが求められます。WindowsならWin+Shift+S等を活用しつつ、いらないもの含めていっぱい取っておきましょう
  • 途中でVPNが正常に接続できなくなり、VMを再起動して解決しました。Burpのログやブラウザで表示中の内容、シェルのログなどが保存されていなければ失われる可能性があります。VMのスナップショットや、プラグイン、メモなどは積極的に残しておくと良いかと思います。
    • 撮影済みのスクリーンショットや、Burpのログを失うと致命的になる可能性があるので特に注意してください!
  • タイムゾーンや、48時間ではなく47時間45分であるなど、罠もあるので時間管理は気をつけてください。

マシン攻略

トレーニングをしっかりやってても難易度としてはそれなりに高く、他の方の受験期を見ても数時間で攻略完了みたいなことは難しそうです。脆弱性がありそうな箇所を見つけた後、実際に攻撃を通す必要があるため、ラボだけではなくCTF的な攻略し切る力も必要となります。ホワイトボックスなので、推測しないといけない箇所は少ないと思います。ただ、あくまで試験であるということや、問題の特性を考えればある程度ソースを読む場所は絞り込んだり、脆弱性の種類を推測できることはあるかもしれません。

重要な点として、問題はよく読みましょう。認証情報以外にも重要な情報が書かれています。また、手作業で脆弱性の攻略に成功した場合、必ずコマンドやファイルは残して置いたほうが良いです。後でPoC作成の際にうまくいかなくなって焦りました。

VMやRDPはどうしても遅いため、ストレスなく作業する環境を整えて置いたのが良かったです。VPNを接続しているKali VM上のBurp Suiteでプロキシを設定し、ホストマシンのブラウザからアクセスする。ホストマシンからKali VMを踏み台にSSHし、GrepやVimでソースを読むように切り替えてから非常にスムーズでした。Vimはすべてを解決します。

PoC作成

OSWEでは、プログラムを実行すると自動で認証バイパスとRCEを実行してくれるプログラムをPoCとして作成して提出する必要があります。Webセキュリティでここまでやることはあまりないかと思うので、非常に面白い取り組みです。

言語は任意ですが、実質Pythonが推奨されており、AWAEのトレーニングでもPythonベースで進められています。手作業でやることを順番にスクリプト化していくだけなのでそれほど高度ではないですが、おそらくGitHub Copilotなども使用禁止なので、多少練習しておくと良いかと思います。requestsやBeautifulSoupといったライブラリの使い方、Base64やハッシュの取り方、事前にテンプレートを作成しておくと良いかと思います。

また、試験にある推奨環境を使いつつ、マシンをリセットしてもちゃんと動くことを早めに、何度か確認しておきましょう。私は時間直前に一部問題を見つけて焦りました。

ちなみに、試験なので、要求されていることを満たせば点がもらえるはずです。これでもできるけど、もっと単純な方法でも課題内容を達成できるので?という発想は頭に入れておくとよいかと思います。

レポート

  • 問題文やレポートの制限を読んで必要項目は絶対満たすように気をつけました
  • 公式で見出しだけのテンプレートがありますが、サンプルレポートなどが無いので、正直何をどこまで書くのかよくわからないです。「Vulnerability 1」と「Steps」の項目はかぶる部分が多々ありましたが、とりあえず合格はしました。(具体的な点数などは合格時に開示されないので、良かったのかは不明)
  • 日本語で作成→機械翻訳を使いつつ整える。という順で行いました。英語で直にレポートがかける方はかなり時間と手間を節約できるかと思います。
  • レポートは公式テンプレートではなく、非公式のMarkdownから出力するものを使用しました。Pandocで論文まで書いた私に隙は無いですが、結構癖が有るので事前に確認しておくとよいかと思います
    • https://github.com/noraj/OSCP-Exam-Report-Template-Markdown
    • 若干余計に改行を置かないといけない箇所があります
    • コードは形式を指定しないとハイライトや適切な処理が行われないです
    • 紙面の右端を飛び出さないように注意(長い行は無理やり改行を入れないといけないこともありました)
    • トラブルに備えて、いざとなればWordやLibreOfficeに移動できるように準備しておくのがよいかと思います
  • 余裕の表情で提出するはずが、翻訳に思ったより手間取り最終的にギリギリになってしまいました…

完走した感想

提出後に追加でOffSec社から問い合わせがあった場合24時間以内に返信せよというルールがあったので、Burpは起動したまま放置しつつ、ちまちまとメール確認を繰り返していました。 数日後で合格のメールが来てやっと肩の荷がおりました。

AWAE+OSWE全体の感想としては、学ぶことも多くて面白い内容でした。一方、英語のトレーニングを読み込むのはどうしても疲れるのと、試験時間が長いのが大変ではあります。試験を考えると、テキストとラボを一通りやって、エクササイズのスクリプトをブラッシュアップしておくのがよいと思います。ただ、90日のプランは意外とタイトで、ラボはPCの前に座っていないとできないこともあり、仕事や趣味に追われているとあっという間に過ぎてしまいます。家族の不幸も重なり、ラボを一部残しての終了となったほか、試験までも少々時間が空いてしまったので、覚悟を決めて試験予約して〆切を設定したり、1年間プランを契約するほうが良いのかもしれません。

次はOSCP(24時間のラボ+24時間レポート)やクラウド資格など、もう少し短時間で受けられる資格を目指しつつ、英語力を磨こうと思います。また、受講者が入るOffSecのDiscordは技術やトレーニング関連の様々な話題で盛り上がっており、そこも楽しめれば更に勉強効果が向上すると思います。

また、PoCを提出させると言うのは、CTF等では見たことがない形式で、非常に面白い試みに感じています。環境差異で動かないなどいろいろ難点はありますが、なにかイベントなどにいかせないか検討してみたいです。

ざっくりとした感想となりましたが、診断やペネトレーションテストに関わっている方は十分取得可能な難易度かと思うので、ぜひ挑戦してみてください!

テクニカルサービス事業本部
白倉 大河