OSWE認定試験の紹介と受験記

NECセキュリティブログ

2020年10月2日

NECサイバーセキュリティ戦略本部セキュリティ技術センターの磯野です。

今回は、Offensive Security Web Expert(以降、OSWE)認定試験を紹介します。

2019年11月に受験してから既に10ヶ月程度が経過しており、少々記憶もおぼろげですが、まだまだ日本国内で受験している人が少ないように思われ、日本語の受験記も見当たらないため、「興味はあるけど情報が少なくて躊躇している方」の受験を後押しするためにもテーマとしました。

また、この記事に特に興味を持っていただける方は、Offensive Security Certified Professional (以降、OSCP)の取得者や受験予定者が多いかと思いますので、OSCPとの違いも交えて説明します。

試験概要

OSWEとは、Offensive Security社1 が開発・運営するペネトレーションテストの認定試験です。最大の特徴は、ターゲットとなるシステムに実際に脆弱性を突いた攻撃を実施して侵入することが求められる実技試験であることです。

  • 1
    ペネトレーションテスト用の各種ツールがインストールされているLinuxディストリビューションであるKali Linuxの開発や、脆弱性を突いた攻撃コードのリポジトリであるExploit DBの管理をしているアメリカのセキュリティ企業です。2020年7月にVulnHubの買収(new windowhttps://www.offensive-security.com/offsec/offsec-vulnhub/)もしています。

OSWE認定試験が開始されたのは2019年5月から(new windowhttps://www.offensive-security.com/offsec/awae-certification-exam-now-online/)ですので、比較的、新しい試験です。

Offensive Security社の認定試験と言えばOSCPというペネトレーションテストの認定試験が有名で、近年、日本国内でも受験者が増加していますが、OSWEはWebアプリケーションのペネトレーションテストに特化しています。OSCPとの主な違いは以下の通りです。

  • ターゲットとなるシステムのソースコードおよびデバッグ環境が与えられる、ホワイトボックス形式のペネトレーションテストを模した試験であること。一方、OSCPは基本的にブラックボックス形式。
  • ソースコードを読み解いて検出した脆弱性に対し、自分で攻撃データやエクスプロイトコードを作成する必要があること。一方、OSCPは既知の脆弱性に対する既存のエクスプロイトコードをそのままか、少しの手直しだけで使用可能。(一部例外あり。)

試験体系

OSWEはOSCPの次に受験するべき試験として位置付けられています。公式サイトにも、We recommend starting with PWK and earning the OSCP penetration testing certification first.(訳:まずはPWKから始めて、OSCPを取得することをお勧めします。)と記載されています。(new windowhttps://www.offensive-security.com/awae-oswe/#cert

コース紹介の難易度を見ると、OSWEはOSCPより1段階上の難易度になっています。(new windowhttps://www.offensive-security.com/courses-and-certifications/

ただ、私自身、OSCPより前にOSWEを取得しており、Webアプリケーションの診断、Webアプリケーションの開発、CTFのWebジャンルの問題に慣れていれば、OSWEからでも問題ないと感じました。

対応する研修コース

Offensive Security社の認定試験には、それぞれ対応する研修コースがあります。

OSWEの場合

OSWEの対応する研修コースはAdvanced Web Attacks and Exploitation(以降、AWAE)です。AWAEは数百ページのテキスト・動画と、演習用マシンが稼働しているラボ環境へのアクセス権で構成されており、テキストや動画を見ながら演習用マシンにアクセスして演習(Exercise)に取り組む形になります。

こちら(PDFhttps://www.offensive-security.com/documentation/awae-syllabus.pdf)からシラバスを参照できます。章や節の名前を見て、どういったテクニックかおおよそ想像つくのであれば、後述するラボ環境へのアクセス期間は短めにとってしまってもよいかもしれません。

なお、2020年7月にAWAEにコンテンツの追加がありました。OSWEの取得者は割安で新しいテキストとラボへのアクセス権がもらえるようです。(new windowhttps://www.offensive-security.com/offsec/awae-2020-update/

参考)OSCPの場合

OSCPの対応する研修コースはPenetration Testing with Kali Linux(以降、PWK)です。PWKのラボ環境にはテキストで使用するマシンとは別に数十台の演習用マシンが用意されています。OSWEのラボ環境はテキストで使用するマシンのみです。

私の場合はBlackHat2019でオンサイトのトレーニング(new windowhttps://www.blackhat.com/us-19/training/schedule/#advanced-web-attacks-and-exploitation-14402)を受けていたので、通常のAWAEの研修コースとは異なりました。ラボ環境へのアクセス権が無い代わりに、演習用マシンのVMイメージを提供されました。

余談ですが、毎年BlackHatのこちらのトレーニングは人気があり、申し込み開始数分で完売になるそうです。しかし、一度完売になっても、増員による追加募集、申込者からのキャンセル、費用未払いによる強制キャンセル等で空くタイミングがあります。定期的にサイトを確認していたところ、運よく空いていたのを発見したため受講できることになりました。

費用

ラボ環境へアクセス可能な期間によって費用が異なります。

new windowhttps://www.offensive-security.com/awae-oswe/#pricing)より(2020年9月24日時点)

当然、事前の知識や経験によって必要な期間は異なるものの、前述のとおり、OSCPと異なりテキストで使用するマシンしかないため、テキストに沿って演習が完了すれば、自ずと全てのマシンを攻略した形になります。よって「テキストが終わってからが本番」とも言われるOSCPより期間はかからないことが想定されます。

試験時間

試験は48時間(正確には47時間45分)です。通常の資格試験では考えられないような長丁場です。早く終わった場合は、管理画面から終了操作をすることで切り上げることができます。飲食、睡眠、休憩は、この48時間に含まれますので、自分で適宜取得する必要があります。

試験終了から24時間以内にレポートを書いて送信する必要があります。当然、英語で書く必要があります。

OSCPは24時間(正確には23時間45分)であり、睡眠をとらずにやりきれる人も多いと思いますが、48時間は相当厳しいですし頭が働かないことが想定されますので、あらかじめ睡眠時間を計画にいれておいた方が良いです。

なお、こちら(new windowhttps://support.offensive-security.com/oswe-exam-guide/)の試験ガイドに「You are expected to take rest breaks, eat, drink and sleep」と記載があります。no drink, no hackということでしょうか。関係ありませんが、私が所属するCTFチームnoranecoには、アルコールを摂取することで進捗が出るメンバーが一定数います。

試験環境

自分のPCから試験用のVPNに接続して行います。よって、自宅に万全な試験環境を整えるためにも、今こそ好きな設備を揃えましょう。PC本体はもちろんのこと、キーボード、マウス、マウスパッド、パームレスト、ディスプレイ、モニターアーム、デスク、ワーキングチェア、etc...すべては必要経費と考えましょう。試験のためですので仕方がありません。

さて、試験中は試験監督官のリモート監視があります。Webカメラで自分の状況とデスクトップ画面の共有を行います。音声の共有はありませんので、独り言や呻きや歓喜の叫びが相手に聞こえることはないので安心です。

休憩中であってもWebカメラと画面共有はONにし続ける必要があります。どこの部屋で受けるか、Webカメラはどこの範囲まで映るかをチェックしたうえで、特に家族がいる方は事前に周知しておいた方がよいでしょう。Webカメラに他者が映っても失格になることはないようですが、都度、試験監督官により記録されるとのことです。お風呂あがりでテンションの上がった2歳児が裸で乱入してきても失格にはならないですが、精神衛生上、あまり良くはないでしょう。

詳細はこちら(new windowhttps://support.offensive-security.com/proctoring-faq/)の公式FAQを参照ください。

余談ですが、OSCPの試験で適当な2,000円のWebカメラを使用したところ、試験開始前にWebカメラに映した身分証(パスポートなど)を試験監督官に確認してもらう際、文字にピントが合わずに確認が進まず、そこそこ慌てました。結果、試験監督官から「別のカメラで身分証の画像を撮ってPCに送り、デスクトップの画面共有で画像を見せて」と指示を受けてクリアしましたが、余計なトラブルでSAN値を削りたくない人は、そこそこの性能のWebカメラを準備したほうがよいでしょう。

試験内容・合格点

100点満点中、85点を取れば合格です。配点は試験開始メールに記載がありましたが、公開されていないため本記事でも割愛します。

試験で使用するマシン数の情報は、試験ガイドには記載がありませんが、こちら(new windowhttps://www.offensive-security.com/offsec/offensive-security-awae-oswe-review/)のOffensive Security社のサイト内のAWAE/OSWEコースレビュー記事に情報が載っています。公式のレビュー記事ですのでSpoiler(ネタバレ)ではないはずです。

OSCPのように、Exerciseとラボ環境の演習用マシンを攻略したレポートを書いて加点されるような制度はありません。

OSCPとOSWEの違い

両試験の違いを下表で簡単に整理しました。

  OSCP OSWE
研修コース PWK AWAE
テスト形式 ブラックボックス形式 ホワイトボックス形式
攻撃方法 既知の脆弱性を突いたエクスプロイトコードの利用が主 ソースコードを読み込んでエクスプロイトコードの作成が必要
試験環境 監視あり 監視あり
試験時間 24時間 48時間
合格点 70点
(ラボのレポート提出による加点あり)
85点
(ラボのレポート提出による加点なし)

受験記

ここまでは試験の紹介でしたが、ここからは私の受験記になります。

オンサイトのトレーニング受講

途中で述べたように、私は2019年8月のBlackHat2019でAWAEのオンサイトのトレーニングを受けました。日頃、CTFのWeb問題を解いたりWriteupを読み漁っていたりしていたため、既知のテクニックが多めでしたが、知らなかったテクニックもありました。例えば、SQL Injectionの脆弱性を検出後にUDF(User Defined Functions)を作成してリバースシェル獲得まで到達する方法や、.NET向けの「安全でないデシリアライゼーション」による任意コード実行の原理などです。

なお、トレーニングの後はDEFCONへの参加、グランド・キャニオン観光、シルク・ドゥ・ソレイユ鑑賞など、初ラスベガスをEnjoyしました。以下はグランド・キャニオンの写真です。(本記事のサムネにも使用。)

OSWE試験申し込み

BlackHatのオンサイトのAWAEトレーニングには、OSWE試験は含まれていませんでしたので、帰国後に別途申し込みました。先にOSCPを取得するのが一般的であると認識しつつも、トレーニングを受講した感触としては問題なさそうであったので、受験に踏み切りました。

試験日設定

試験は予約システムから希望日時を選択して予約します。最初、2019年10月に予約システムを確認したときは、2020年1月以降しか枠が無い状態でした。その後、枠が増えたので2019年11月28日に予約を変更しました。3回まで予約変更できます。いつまでに受けたいといった希望がある場合は、早めに予約だけでもしておいた方がよいでしょう。

また、試験時間48時間+レポート24時間で最大3日間の確保が必要であるため、平日にする場合は業務調整、土日にする場合も家庭調整が大変です。

試験対策

テキスト内のExerciseはオンサイトのトレーニングでほぼ完了していましたが、Extra Milesという難易度が高めな演習は未着手でしたので、それらを解きました。

演習にあたっては、Burp SuiteやcurlコマンドでHTTPリクエストを送信するような方法ではなく、シェルを取得するまでを自動で行うようなエクスプロイトコードを作りこみました。

試験当日

11月28日7時に試験を開始し、食事とトイレ以外はほぼ席を立たずに集中して取り組み、およそ15時間で攻略完了しました。一安心して、十分な睡眠をとってから、エクスプロイトコードを綺麗にしたりレポート用のスクリーンショットを取得したりしました。48時間が経過するか自分で試験終了の報告をするまでは試験環境に接続できますので、そのままレポート作成に着手しました。

一旦、日本語でレポートを作成してから、翻訳サービスを活用しながら英語に直すという作業をしたため、最終的に11月30日の23時頃にレポートを提出しました。早めに攻略完了したにも関わらず、レポート提出は結構時間をかけてしまいました。

合否連絡

レポート提出から約3日後の12月3日21時頃にメールで合格の連絡がありました。完全攻略していたため自信はあったものの、レポート提出時から、メールボックスを頻繁に確認するという動きをしていました。

合格証受領

2020年1月27日に合格証が届きました。

最後に

潤沢な時間やリソースを持つ攻撃者と比べると、脆弱性診断やペネトレーションテストは、かけられる期間も人的リソースも限られています。そのような中、効率的に脆弱性を検出するためには、攻撃者が持たざる情報である実機以外のインプットの活用が重要です。

私が所属しているリスクハンティングチームでは、実機以外にも仕様書や設計書等のドキュメントも検査対象にするケースがあります。上流工程で早めに検出することで、開発へのインパクトを低減することもできますし、ビジネスフローを観点とした問題を検出することもできます。(https://jpn.nec.com/press/202009/20200909_01.html

そして、ホワイトボックス形式であるソースコードの検査も有効な方法の一つです。ソースコードの検査により、動的な検査だけでは検出困難な脆弱性を見つけたり、効率的に脆弱性を検出することが可能となります。ただ、そのためには複数のプログラミング言語仕様や多数のフレームワークの知識、脆弱性が発生する原理の理解、それら情報から仮設を立てて自らエクスプロイトコードを書くテクニックなどが必要です。
今回紹介したトレーニングや試験を通して得られた知識やテクニックを活用して、セキュアな開発により貢献をしてまいりたいと思いますし、記事を読んで興味を持って挑戦される方のスキルアップの一助になれば幸いです。

執筆者プロフィール

磯野 亘平(いその こうへい)
デジタルビジネス基盤本部
兼 セキュリティ技術センター リスクハンティングチーム

金融機関向けシステム開発を経て、現在はペネトレーションテスト、脆弱性診断、インシデントレスポンス対応、セキュア開発支援など、セキュリティ関連の各種業務に従事。
CTFチームnoranecoのメンバーとして主にWeb問を担当し、SECCON 2018 国際決勝出場。
OSCP、OSWE、RISSを保持。
趣味はCTFとハニーポット開発・運用。