OSEP受験記

OSEPに合格したのでネタバレにならない程度に記録を残しておきます。

 

試験の概要

Offensive Security社には中級に位置する以下の3つの資格があり、OSEPはその中の1つです。

・OSWE:WebのExploit開発

・OSEP:検知回避とドメインネットワークへの攻撃

・OSED:WindowsのユーザモードExploit開発

 

この中でOSCPに合格した次のステップとして一番相応しいのがOSEPだと思います。

というのもコース名は『Evasion Techniques and Breaching Defenses』と大仰なタイトルとなっていますが、検知回避などはあくまで目的を達成するためのツールであり、基本筋はOSCPでやってきた列挙⇒悪用をドメインネットワークへ拡張するだけです。

むしろOSCPのように関係ないホストが5つ並んでいるよりも、つながりのあるホストを攻略する方が楽だとすら感じました。

 

コースの内容

OSCP、OSWE、OSEPの中で一番面白かったです。

OSEPのコースでは出来る限り公開されたコードを使わずに、shellcode実行、横移動、検知&防御回避などに使うコードの大半を独自実装します(主にC#)

ツールを使うだけではないので、攻撃の原理や成功条件をある程度深いところまで理解することができ、おまけにWin32APIやWindows内の構造体なども自然と覚えることができます。

他にもリバースエンジニアリング、プロセスへのパッチによる検知回避、プロキシやIPS/IDSなどのネットワーク構成の考慮、仮想ブラウザの侵害、ソフトウェア配布サーバの侵害など様々なトピックがあり、結構重かったです(テキストは700ページくらい)

そのため頑張れば2ヶ月コースで駆け抜けることも可能ですが、3ヶ月のコースを買うことを推奨します。

 

試験の準備

shellcodeを暗号化するrecipeをCyberChefで作ったのは結構便利でした、コース内ではそこまでC#で書かせますが正直毎回コンパイルするのは面倒です。

 

試験

試験の環境は非常によく練られていて、終始この構成ならこのような脆弱性&設定不備があるのは妥当だと感じました。

だからこそ予測がしやすく、結果的に実技は4時間で終わりましたが、レポートの枚数は80ページを超えました。 

OSWE受験記

OSWEという試験に合格したのでネタバレに触れない程度に記録を残しておきます。

 

試験の概要

OSWEはOffensive Security社が提供しているペンテストの資格です。 

特徴はWebアプリケーションのホワイトボックステストという点で、受験者には48時間で膨大な量のソースコードの中から脆弱性を探し、Exploitコードを書くことが要求されます。その後24時間でレポートを提出し、85点以上で合格です。

 

同社の資格で一番有名なのはエントリーレベルのOSCPという資格で、こちらの試験との違いは以下の記事が非常に分かりやすくまとまっています。(なおこの記事が本記事執筆時点で唯一のOSWEの日本語記事でした...)

OSWE認定試験の紹介と受験記: NECセキュリティブログ | NEC

 

OSWEはOSCPの上位資格として位置付けられているため、余程特殊な人でない限りはOSCPを先に取得するべきだと思います。OSWEはホワイトボックステストに重きを置いた資格ではありますが、決してブラックボックステストの手法が使えないわけではありません。

何よりExploitコードが上手くいかなかったときに、何度もWiresharkやBurpSuiteを通して試行錯誤するのはリモートからの攻撃である以上同じです。

 

 試験の要件

OSWEは他のOffensive Security社の資格と同様に試験だけ購入することはできません。対応する研修コースの受講が必要で、OSWEではAWAEというコースがそれにあたります。

 

AWAEを受講を申し込む際に研修環境(VPN接続)にアクセスできる期間を選びますが、現時点では基本1ヶ月で自信がなければ2ヶ月で十分だと思います。この理由としては研修のテキストを終えた後の練習ホストがOSCPの研修コースであるPWKが60-70個なのに対し、AWAEは3個だからです。私はOSCPの感覚を引きずった結果、2ヶ月で申し込みましたが半月くらいで練習ホストを含む 全ての内容を終えたので1ヶ月以上溶けました。

 

 OSCP相当の能力に加え、海外の受講者のブログを見るとPostgreSQLと.NET関連をこのコースで始めて学んだという感想が圧倒的に多かったので、公式のCOURSE OVERVIEW & SYLLABUSの内容を見てそれ以外の内容を表面的にでも知っているのであれば想定受講者だと思います。

AWAE and the OSWE Certification | Offensive Security  

 

試験の難易度

私の印象は『OSCPの3倍難しいが、2倍の時間が与えられている』です。単純にスケールアップすると、時間が足りなくなります。それに加えてOSCPは最悪寝なくても何とかなりますが、流石にOSWEは必須なので時間の制約は更に厳しくなります。このことから如何に効率良くソースコードを読み、仮説に従ってデバッグするかが問われます。

 

AWAE受講前にやったこと

私はたまに(年5回くらい)CTFに参加していたので、Web問でソースコードを読んで脆弱性を特定する経験が少しありました。無料でOSWEのトレーニングができる神コンテンツなので参加しましょう。

 

それに加え、AWAEの申し込みを行なってから研修が始まるまでの1週間くらいの期間でHackTricksというサイトのPENTESTING WEBの項目をパラパラめくり、知らない項目をVMで検証していました。このサイトはOffensive Security社の試験を受ける上では聖典と言っても過言ではなく、OSCPではPEASSツールでお世話になった方も多いのではないでしょうか。

HackTricks - HackTricks

  

AWAE受講中

テキストを進めながら、各言語ごとにデバッグ方法と各種脆弱性についてのチートシートを作成しました。

 f:id:yuyuyu_sec:20201126213139p:plain

 

脆弱性の項目は基本的にソースコードに対してどのような検索手法でその脆弱性が見つかるのかを考えて、まとめました。テキストではこの部分を強く推してはいないため、受講者が意識する必要があります。

 

注意した点は脆弱性の項目はテキスト内でカバーされている範囲に絞ったことです。

もちろん外部リソースからチートシートを構築するのであれば脆弱性の項目は大量に増やせますが、あくまでOSWEはAWAEの修了試験として位置付けられているため仮想敵を強くし過ぎない方が良いと思います。

 

私は受講中に一番時間を割いたのはURLとコードの対応付けの理解です。HTTP(S)リクエストを送信した際にWebアプリケーション内でどのようにハンドリングされ、どのようなコードが実行され、レスポンスが返されるかまでの流れはその言語やフレームワークなどに依存します。

 

テキストではサーブレットMVCモデルなど様々な例が経験できるので、少なくとも研修環境で扱う全てのWebアプリケーションに関してリクエストがどのように扱われるかを完全理解した状態で試験に向かうべきです。どんなにチートシートが優れていて脆弱そうな箇所が見つかったとしても、どのようなリクエストを送ればその箇所が実行されるかが分からなければデバッグのしようがありません。もちろんテキスト内では網羅していないので、ここだけは学習の大半を外部リソースに頼りました。

 

あと研修環境はインターネットに接続されていないため、エディタはあるもので頑張る必要があります。vimがなかった場合はnanoをPrivilege Escalation以外の用途で初めて使いました。色んなエディタに慣れていると本番での事故要素を減らせると思います。

 

OSWE試験

7時から始めて、適度に1時間の休憩を挟みつつ20時間後くらいに全てのフラグが取れました。しかしレポートを出せたのは期限の3時間前でしたので、レポートを書く時間だけでも恐らく20時間以上かかっています。

 

合計で72時間もかかるので、絶対に1回の受験で通すためにもレポートを整備するべきですし、その時間をどのように捻出するかを考えて準備しました。

 

試験後

24時間くらいで合格通知が来ました。OSCPのときよりも早かったです。

研修開始から1ヶ月もせずに試験まで終わりましたが、学ぶことが非常に多く何より楽しかったです。(レポート執筆を除けば)

テキストを読んでいる段階では『このトークン生成手法に問題があります。』と書かれているコードのどこが駄目なのか分かりませんでしたが、今ではどのような状態なら悪用出来るかが分かります。防御側としては全ての項目についてのベストプラクティスまで知りたかったですが、概ね満足です。

 

今後はお世話になったOffensive Securityのコミュニティには出来る限り貢献したいです。AWAEに関しての内容でもフォーラムなどで聞きづらい場合は、Twitterとかで聞いていただけたらネタバレにならない範囲で答えられると思います。