- 2024年6月28日
- 受験記
Webペンテスト系の資格「OSWA」「OSWE」受験記
みなさんこんにちは。調査・監視部に所属する宮﨑です。
普段の業務ではブルーチームとして、SOC監視・調査やフォレンジック調査、マルウェア解析などを行なっています。
今回はOffsec社が提供する、Webペンテストの資格 2種へ挑戦し合格したため、受験記を投稿します。
OSWA・OSWEとは
これらはOffsec社が提供するWebペンテスト系の資格で、それぞれの正式名称は以下のとおりです。
- OSWA (Offsec Web Assessor)
- OSWE (Offsec Web Expert)
資格の難易度とレベル
Offsec社のコンテンツの難易度は、100から400まで存在し、通常の契約プランで購入できるコンテンツは300までになります。そして、OSWAは200、OSWEは300の位置付けにいるため、単純にOSWEの方が難易度としては高いです。また、300のコンテンツ・試験ではエクスプロイトを自作する必要があるため、これが難しくもあり楽しいポイントです。
OSWAとOSWEの違い
OSWAとOSWEでは調査方法が異なります。OSWAはブラックボックス形式での調査に焦点を当てており、適宜、短いスクリプトを作成する必要があります。
一方、OSWEはホワイトボックス形式が採用されています。ソースコードを読んで推察し、デバッグ調査を行い脆弱性を発見する調査方法です。また、合格するためには取得したフラグを見つける以外にも、初期進入からリバースシェルを取得するまでの一連のプロセスを、一つのスクリプトにまとめて実際に動作させる必要があります。
これらの違いから、OSWEはより高度なスキルを必要とするアドバンスドな資格として位置付けられています。
試験については、OSWAとOSWEどちらも学びが多い試験でしたが、特にOSWEは非常に楽しい時間を過ごすことができました。
「ソースコードを読み、デバッグを行い、最終的なPOCを自作する」この一連の流れを経験できたことで、自信とスキルの向上につながったと感じています。
挑戦した理由
今回挑戦した資格は、Webのペンテストになるため私の普段の業務とは少し異なります。
そのような状況でも資格取得に挑戦した理由は4つあります。
- Webアプリに対する攻撃の理解と、攻撃者がどのように脆弱性を見つけているのかを知りたかった
- 経済産業省が推奨資格として挙げている
- OSCE3を目指すため
- Offsec社の資格コンプリートを目指しているから
1. Webアプリに対する攻撃の理解と、攻撃者がどのように脆弱性を見つけているのか知りたかった
攻撃者が用いる技術や考えを理解することは、調査・監視を行ううえで不可欠です。特に、インシデント発生時に初期侵入の手がかりを迅速に見つけるためには、レッドチーム側の知識が極めて重要です。調査作業者のスキル不足によって「重要な証跡を発見できなかった・発見が遅くなってしまった」といった、知識不足による問題を起こさないためにも、今回は普段関わりが少ないWebのペンテストに挑戦しました。
2. 経済産業省が推奨資格として挙げている
経済産業省の「情報セキュリティサービスにおける技術及び品質の確保に資する取組の例示 第3版」では、OSWA・OSWEが脆弱性診断サービスの提供に必要な専門性を満たす資格とされています。これにより、私のスキルの向上のみならず、会社としても対外的なアピール材料として利用できます。
画像引用:https://www.meti.go.jp/policy/netsecurity/shinsatouroku/reiji3.pdf
3. OSCE3を目指すため
OSCE3はOffsec社の上位資格であるOSEP、OSED、OSWEの3資格をすべて取得することで授与される資格です。これらはすべて300の難易度のため高い、合格するまでに多くの時間が必要です。現在、私はOSWEとOSEPに合格しており、最後のOSEDの取得を目指しています。
OSCE3の認定を得ると、現物の証明書やコイン等をOffsec社からいただけるので、それを目標に頑張っています。
4. Offsec社の資格コンプリートを目指しているから
現在、Learn Unlimitedというプランを会社に購入していただき、日々学習している最中です。
Learn Unlimitedでは、1年間の間はすべての教材と資格挑戦が可能です。(OSEEは除く)
現在私が保持しているOffsec社の資格は以下の5種類です。
- OSDA(Offsec Defense Analyst)
- OSWA(Offsec Web Assessor)
- OSWE(Offsec Web Expert)
- OSEP(Offsec Experienced Pentester)
- OSWP(Offsec Wireless Professional)
今後、取得予定の資格は以下の6種です。
- OSED(OffSec Exploit Developer)
- OSCP(Offsec Certified Professional)
- OSMR(OffSec macOS Researcher)
- OSCC(OffSec CyberCore Certified)
- KLCP(Kali Linux Certified Professional)
- OSCE3(Offensive Security Certified Expert 3)
コンプリートを目指すと非常にタイトなスケジュールであるため、継続した学習が求められますがスキルの底上げにはちょうどよい機会でした。
執筆時点では、Learn Unlimitedは契約から3ヶ月が経過したため残り9ヶ月で5個(OSCE3はカウントせず)の資格に合格する必要があるため、この1年間は幸せなことにOffsec漬けです。
OSWA(Offsec Web Assessor)
コンテンツ範囲
Webペンテスターとしての基礎を学べる教材・資格です。
Offsec社の公式サイトからコンテンツを確認可能で、範囲自体はそこまで広くありません。
- Cross-Site Scripting (XSS)
- Cross-Site Request Forgery (CSRF)
- SQL Injection (SQLi)
- CORS
- OS Command Injection
- Directory Traversal
- XML External Entity (XXE)
- Server-Side Template Injection (SSTI)
- Server-Side Request Forgery (SSRF) など
既にOSWAの受験記を投稿されている方も書かれていましたが、普段脆弱性診断を担当されている方からすると聞き馴染みがあるワードのはずです。
私自身、学習を進めるうえで既に知っていた知識(XSS、CSRF、SQLi、SSRFなど)もあれば、SSTIやXXEは初めて学習したため、非常に学びも多く知識の整理ができました。
事前知識
Webペンテストの知識は以下の方法で事前にある程度学習していました。
- PortSwigger Lab
- TryHackMe
- 他資格取得を通して得た知識
全くの初学者ではないものの、頻繁に技術を磨いている分野でもないためOSWAの教材を通して、知識の再確認や新しい知識の習得を行いました。
教材・試験をとおしてBurp Suite(Community版)を使う必要があるため、ある程度利用した経験があるとよいです。その他、複数のツールを組み合わせた列挙を行いますが、私の場合、教材で学びながら身につけることができました。
試験について
この試験は他のOffsec社の資格と同様に、実技とレポートの形式で行われます。監視カメラによって常に作業内容が監視されています。
試験時間は23時間45分、加えてレポート作成のための24時間が与えられ、合計で47時間45分の試験です。合格基準は100点満点中70点です。
試験では全10個のフラグが設定されており、5つの環境が提供されます。各環境には「local.txt」と「proof.txt」が存在し、これらのうち7つを取得すれば合格となります。
フラグについて「local.txt」はWebアプリの管理画面に侵入した際に、そして「proof.txt」は管理画面の機能や管理者のみ利用できる機能を悪用した場合に取得可能です。
各フラグはそれぞれ10点だったため、最低でも合計7つのフラグをゲットする必要があります。
また、試験では列挙する箇所が多く環境も5つあるため、限られた時間の中で迅速な調査が求められます。そのため、自作のスクリプト等は用意しておくことを推奨します。
試験の制限
試験で禁止されている内容です。(公式サイトから翻訳)
- スプーフィング(IP、ARP、DNS、NBNSなど)
- 商用ツールまたはサービス (Metasploit Pro、Burp Suite Enterprise Edition など)
- 自動エクスプロイトツール (例: db_autopwn、browser_autopwn など)
- 大規模な脆弱性スキャナー (例: Nessus、NeXpose、OpenVAS、Canvas、Core Impact、SAINT など)
- AI チャットボット (例: ChatGPT、YouChat など)
- 禁止または制限された試験制限のいずれかを利用する他のツールの機能
ただし、Nmap (およびそのスクリプト エンジン)、Nikto、Burp Suite (Community または Professional)、DirBuster、SQLMap、Tplmap などのツールや、msfvenom や ysoserial などのペイロード ジェネレーター ツールを任意のターゲット システムに対して使用することはできます。
学習期間
OSWAは2週間で教材とChallenge Labsに挑み、試験を受けました。
ある程度の事前知識はあったため、どのように脆弱性を悪用して「認証回避」や「RCEが実行できるか」の知識があればよいと考えていた為、そこまで時間は必要ではありませんでした。
試験結果
試験では10個中7個のフラグを取得しました。レポートは、各環境への攻撃の再現手順を詳細に記述し、攻撃過程を明確にまとめました。
私の場合、レポートを提出してから4日後に合格通知が届きました。Webペンテストの資格はこれが初めてだったため、保有資格の幅が広がり大変嬉しかったです。
試験を終えて
基礎的なWebペンテストの内容を学べたため、普段専門としていない方には非常に良いコンテンツであると感じました。
通常の脆弱性診断では「脆弱性を見つけること」が最終目標ですが、この試験では見つけた脆弱性をどのように悪用できるかまで試行錯誤する過程を経験でき、これが非常に有意義でした。
その一方で、Web脆弱性診断士の場合は、最初からOSWEへ挑戦してしまった方がよいと感じました。
OSWE(Offsec Web Expert)
コンテンツ範囲
OSWEでは、ホワイトボックスの調査スキルを身につけることができます。
Offsec社の公式サイトからコンテンツを確認可能です。
以下は、一部を抜き出したものです。
- JavaScript Prototype Pollution
- Session Hijacking
- Advanced Server-Side Request Forgery (SSRF)
- .NET Deserialization
- Web Security Tools and Methodologies
- Remote Code Execution
- Source Code Analysis
- Blind SQL Injection
- Persistent Cross-Site Scripting
- LMS Type Juggling
- Cross-Site Scripting (XSS)
- Server-Side Template Injection (SSTI) など
事前知識
OSWEのコンテンツを受講するにあたって、以下の事前知識がある状態で挑みました。
個人的には、全くレイヤーは異なるもののマルウェア解析で培ったスキルが活きたと感じました。
- Webアプリに対する基本的な攻撃の理解
- ソースコードを読む力
- デバッグ作業
- Pythonを用いたコーディングスキル
Webアプリに対する基本的な攻撃の理解
OSWAを事前に学習・合格したうえでOSWEに挑戦したため、Offsec社が想定する模範的な進み方だったと思います。
ソースコードを読む力
試験でも教材でもソースコードを読む必要があります。
静的解析時に、ユーザーから受け取った値がどのように処理しているかコードを追っていき、想像できる力が必要です。
私の場合、マルウェア解析の静的解析(デコンパイラした内容を読む)を通して、ソースコードを読む力が養われました。
デバッグ作業
VSCode等を用いてデバッグを行い調査を進める必要があります。
例えば、何らかのエスケープ処理を実装された箇所に、バイパスできる文字列を調査するためにどのような処理になっているか、実際に処理を追って確認する必要があります。
その際に、デバッグの経験が無いとスムーズに進めないため、事前知識としてあるとよいです。
私の場合は、マルウェア解析でデバッグの経験があり、例えば「特定の関数にどのような引数が渡されて処理されているか」などを調査することが多かったため、そのまま知識を活かすことができました。
Pythonを用いたコーディングスキル
試験に合格するためには、初期進入からリバースシェル取得の一連の動作を自動で行うスクリプトを作成し、実際に動作検証を行いレポートに記載する必要があります。
私は業務で使い慣れているPythonを選びましたが、言語に縛りはありません。
これまで作成してきたスクリプトでは「サーバーに対してリクエストを送って、レスポンスを加工して〜」といったものを作る機会が多かったので、その時の経験が活きました。
試験について
この試験も他のOffsec社の資格と同様に、実技とレポートの形式で行われます。監視カメラによって常に作業内容が監視されています。
試験時間は37時間45分、加えてレポート作成のための24時間が与えられ、合計で71時間45分の試験です。合格基準は100点満点中85点です。
試験では全4個のフラグが設定されており、2つの環境が提供されます。認証回避でlocal.txt、RCEでproof.txtが獲得できます。
試験の制限
試験で禁止されている内容です。(公式サイトから翻訳)
試験環境のマシンにはRDPで接続しますが、「環境が重いので、ソースコードをローカルに落として調査」や、OSWAでは使用できたSQLMap等のツールも違反行為にあたるため、必ず受験前に確認しておく必要があります。
- ソースコードアナライザー
- 自動エクスプロイト ツール (例: db_autopwn、browser_autopwn、SQLmap、SQLninja など)
- 脆弱性スキャナー (例: Nessus、NeXpose、OpenVAS、Canvas、Core Impact、SAINT など)
- AI チャットボット (例: ChatGPT、YouChat など)
- 禁止または制限された試験制限のいずれかを利用する他のツールの機能
- アプリケーションソース コードのリモート マウントは許可されていません (例: sshfs、sftp などを使用)
学習期間
OSWEは4週間で教材の内容を3周ほど読み、用意されたコースの内容をハンズオン形式で進めて、POCの作成練習など経験を積みました。
試験結果
結果は2日後に届き、無事に合格でした。
4つすべてのフラグを取得でき、2つのエクスプロイトの作成・動作検証も確認できた状態でレポートを提出したので、比較的安心した状態で待機していました。
あっという間の3日間でしたが、試験の1日目はデバッグやソースコードの読み込みなどで、1つもフラグが取れなかったため非常に絶望的な状態でしたが、何とか2日目で挽回できてよかったです。
また、コーディングの時間も非常に楽しく全体通してスリルと満足感のある試験でした。
最後に
初めに、弊社に対してOffsec社のプランを全額負担で契約してくださりありがとうございました。
まだまだ、Offsec社の資格コンプリートへの道は遠いので、これからも学習を続けて資格コンプリートと知識の底上げを目指して頑張ります。
最後までこのブログを読んでいただき、ありがとうございました。