OSCP (Offensive Security Certified Professional) に無事に一発合格できました。

サポートしてくれた家族と、職場の上司と、会社と、あと面識は全くないんですが間接的にお世話になった高林さんに、この場を借りてお礼を言いたいと思います。ありがとうございました。


これからOSCPを受験する方々に役に立ちそうな内容から書いていこうと思います。



PC環境

  • Macbook Air (メモリ16GB)
    もともとWindows 8の上でVirtualBoxを使ってKaliをメインに使っていたんですが、OSCPの試験も見越して新しいMacbook Airを買いました。メモリ多めで。

    Macにしてからは、Macをメインに、Kaliはサブで動かしました。OpenVPNとBurp SuiteだけKali上で起動して、後はMacからiTerm2を使ってKaliにSSHして使う感じです。あとは、WiresharkもKali上でたまに動かしました。

  • VirtualBox
    VMWare Fusionが推奨されていて、丁度9月にVMWare Fusion 12のフリー版が出てきたので試してみたんですが、VirtualBoxでCTF用にそれなりに使い込んでいたKaliがあったしコンバートするのも面倒だったので、それをそのまま使いました。いちおうVirtualBoxでも、ラボも試験も特に問題はなかったです。

    ただ1点、連続クリックをした際に、マウスカーソルは動くけどクリックやタイプができなくなる現象が起きることがたまにありました。Mouse Integration絡みの問題っぽいです(これをオン/オフすると直ります)。Chromiumを使っているときに起きやすい気がします。

    ちなみに、Kali上のユーザもcaptureamericaを使っていて、レポートも試験もcaptureamericaユーザをそのまま使いました。

  • Emacs
    エディターはいつも使っているEmacsです。マシン攻略のメモも、レポートもEmacsを使いました。あと後述しますが、Powerless.batの出力なんかも、Emacs側で色を付けて見るようにしました。

  • LibreOffice
    チートシートには、LibreOfficeを使いました。
    Google Sheetも試しましたが、シート名のサイズがデカイ、という理由で使うのを止めました。(全部のシートが1画面の表示におさまらないから)

  • 外部モニターx2

  • スタンディング デスク
    OSCP試験も、21時間ほぼ立ちっぱなしで奮闘しました。



TIPS

  • バージョンアップの停止
    ラボを始めてから、VirtualBoxの更新を行った際にKaliが起動できなくなる問題が起きました。幸いすぐに直せたんですが(確かAudioの設定絡み)、試験が終わるまではなるべくアプリやOSの更新はしない方がいいと思います。MacのBig Surの更新も出てきましたが、試験が終わるまで放置しました。

  • RDP
    ラボマシンにRDPする場合は、以下のようにSSH Tunnelを使ってKali経由でアクセスするようにしました。Mac上でMicrosoft Remote Desktopが使用できて、ファイルのコピー等が楽になります。

    $ ssh captureamerica@kali -L 13389:IPADDR:3389

    OSCP_RDP.png

  • Emacsで色付け
    ほんとはちゃんとメジャーモードを作ってやった方がいいんだろうけど、とりあえず行き当たりばったりで.emacsに定義しました。最初はPowerless.bat用に設定を追加してたんですが、他にもgobusterやnmapの出力にも色を付けるようにしました。
    OSCP_Emacs.png

    Powerless.batの結果をEmacsで開くと以下のようになります。
    OSCP_Emacs_Powerless.png
    Metasploitable3で取ったものです。OSCPのマシンではありません。)

    nmapの結果をEmacsで開くとこんな感じ。
    OSCP_Emacs_nmap.png
    Metasploitable3で取ったものです。OSCPのマシンではありません。)

    色が付いていないと大事な部分を見逃すことがあるし、目Grepにも余分な労力を費やすので、色って大事だと思います。

  • 自分のIPアドレスを辞書登録
    自分のIPアドレスをコマンドで使うことは多々あるので、VPNで接続した後に辞書登録をしてすぐ出せるようにしました。
    OSCP_IME.png
    (OSCPで使ったIPアドレスではありません。)

  • コマンドはコピペで
    ひとつのテキストファイルに、よく使うコマンドをまとめておいて、「IPADDR」「MYADDR」をEmacs、もしくはsedで書き換えて使うようにしました。
    タイプするのに比べて時間も節約できるし、タイプミスでコマンドエラーになることも防げるのでオススメです。
    OSCP_ToDo.png

    ただ、自分でタイプしない分、コマンドはなかなか覚えられないです。



レポート作成

Mark Down方式でOSCPのレポートが書ける以下のものを使いました。
https://github.com/noraj/OSCP-Exam-Report-Template-Markdown

利点

  • Emacsで書ける。

  • 軽い。(LibreOffice使って300ページ超えの文章書いたら、なんとなく重そうな気がして。。試してないからわからないけど。)

欠点

  • PDFにしてみたときに、思った通りになってないことがある。(これは、Office系のソフトでも同じかもですが)

  • Code部分の色付けが変。

併用したツール

  • typora
    Emacsで編集しつつ、Typoraで完成形を見ながらやりました。でも、PDFにすると結構見た目が違ってたりしました。

  • PDF Element
    前述した欠点「Code部分の色付けが変」がどうにも気に入らなくて、これを購入しました。
    とりあえず、Mark Downでは、Code部分をHTMLにしておいてなるべく色が付かないようにして、PDFとして一旦完成させた後にPDF Elementを使って色を変えました。
    ところどころ、文字の追加や削除もPDF Elementを使ってやりました。
    他のPDFツール(MacのPreview.app、Adobe Acrobat DC、Google DocのPlugin等)も試したのですが、少ないクリックで文字の色を変えるという点では、PDF Elementが一番優れていたので、これにしました。

    こんな感じです。
    Codeにbashを指定してMark Downを書いた場合:
    OSCP_bash.png

    CodeにHTMLを指定して、後でPDF Elementで色の変更:
    OSCP_HTML_PDFElement.png
    (Metasploitable3に対してpsexec.pyを実行したものです。OSCPのマシンではありません。)



ラボレポート

Exerciseに結構時間を取られるので、ラボレポートをやらないという手もアリかとは思いますが、個人的にはやった方がいいと思います。

理由は、

  • 試験に5点加算される。
    たかが5点ですが、試験が始まってからどの時点で70点を超えるかで精神的にも変わってくるので、そういう意味ではこの5点は結構大きい気がします。

  • 試験レポートの練習になる。
    試験の2日目は相当疲れているし、時間の制限もあるので、レポートの作成自体にはある程度慣れておいた方がいいです。

  • Exercise自体が勉強になる。
    自分がレポートに書いたExerciseの内容を後々参照することも何度かあったし、それなりに勉強になります。(あ〜、これExerciseでやった覚えあるなぁ、みたいなやつ)

  • CPE 40点もらえる。
    これは後日わかったんですが、CPE 40点もらえました。
    Submitの仕方に毎回悩むので、以下にスクリーンショット載せておきます。

    OSCP_CPE1.png

    OSCP_CPE2.png

    OSCP_CPE3.png



OSCPを受ける前に持っていたスキル

  • GPEN
    3年前に取りました。ちょうど2020年12月でExpireだったので、それの代わりにOSCPを取りたかったというのもあります。SANSのトレーニング中に取ったメモとか、時々参照しました。

  • CISSP
    6年くらい前に取りました。2020年はCPEを貯めるためにHTBをやりました。CISSPの6時間の試験もかなり長いと思ってましたが、OSCPに比べたら短いもんですね。

  • LPIC-2
    Level 2まで取ってます。

  • Pentest
    いちおうセキュリティ関連のIT企業で働いてますが、Pentestは本業とはほぼ無関係です。HTBはCPE貯まった時点でやめちゃったので、半年前に40台くらいをWriteupを見ながらやっただけです。

  • プログラミング
    だいぶ前ですが、開発の仕事をしてたときにC言語を使ってました。あとCTFを1年半くらいやって来たので、そこでPythonも勉強してます。

  • 英語力
    いちおう、英語圏に住んで15年目くらいです。OSCPのマニュアルもビデオもForumもちろん英語ですし、ネットで見つかる情報も英語であることが多いので、それなりに英語ができた方がプラスだと思います。

  • Windows
    Windowsは使う分には使えますが、コマンド、PowerShell、Active Directoryとかあまり知らなくて、OSCP試験日を100%の状態とすると、当初は10%くらいの知識しかなかったです。



3ヶ月の過ごし方

自分がやった方法が必ずしもベストとは限らないので、以下、参考まで。

  • 最初の1ヶ月
    後で全て見直す前提で、ひたすらラボのマシンをやっつけました。詰まったらすぐForumを見るようにしてやったので、1ヶ月でPublic(一部を除く)とDEVは終わりました。普通に楽しかったです。
    もらったビデオは、傍らで繰り返し流して聞いてました。

  • 2ヶ月目
    3週間ですべてのExerciseとラボ13台分をレポートに書きました。その他、最初にやったPublicとDEVの見直し、読書(「ミミミミミッミ」、「サイバーセキュリティレッドチーム実践ガイド」←長い間本棚で寝てたやつ)、Udemy(「Practical Ethical Hacking - The Complete Course」←無料だったときに登録してたやつ)とかやりました。
    Exerciseの辺りは、ちょっとしんどかったけど、頑張りました。

  • 3ヶ月目
    10日くらいでラボの残り(IT、ADMIN)はやっつけて、ここで全マシン終了。
    残りの期間は、Metasploitable3や、OSCPっぽいと言われているHTBやVulnHubのマシンをひたすらやりました。試験日が近づいているのに、全然自力で解けなくてモヤモヤしました。
    試験は月曜日だったんですが、直前の土曜日と日曜日は、消化できなかったHTBとVulnhubのWriteupだけをひらすら読みました。(結構な台数が残っていて、がっつりやってる時間はなかったので)
    試験前日は、BOFも1個やりました。

    ちなみに、緊張のためか、試験前日はよく眠れませんでした。。



試験

  • Proctorセットアップ (45分)
    準備は15分で終わるはずだったのに、なんやかんややってて45分かかりました。

    パスポート発行国と住んでいる場所が異なる人は、別途IDの提示を求められるので、予め用意しておいた方がいいです。

  • BOF (50分、25ポイント)
    まずはBOFからやるのが定番のようで、自分もそうしました。

  • マシンA(45分、20ポイント)
    比較的、すんなりいけました。

  • マシンB (3時間、10ポイント)
    やむなくMetasploitで解きました。

  • マシンC (7時間、20ポイント)

  • マシンD (6時間、25ポイント)

    休憩や最後の見直し等入れて全部で21時間かかりました。上記の各マシンにかけた時間は多少曖昧ですけど、時間配分はだいたいこんな感じでした。

    時間経過で言うと、朝7:00に開始して、70点に到達したのが18:00時点辺りです(ラボレポートの5点加算を含む)。この辺りから、Spofityをかけて歌を歌いながらやりました。

    朝4:00に試験を終了しました。

  • レポート
    少し寝てからレポート作成を開始。4時間くらいで書けたかな。40ページくらいです。

  • 結果
    試験結果は、翌日にメールで来ました。
    どこかでうっかりミス(レポートのファイル名が間違っているとか)をしてないか非常に不安になる期間なので、すぐに結果がもらえたことにはとても感謝です。



まとめ

いろんな事が勉強できたし、とても楽しくて、大変有意義な3ヶ月間でした。まだまだ知らない事はいっぱいあるし、最後のOSCP試験でもわからない事が残ったままでクリアしたし、これからも続けて勉強していかなきゃな〜と思います。

大事なのは、とにかく楽しんでやることです。自分はぶっちゃけPentesterになるわけでもないし、CTFをやっている感覚で楽しんでやるのを心がけました。3ヶ月間、NetFlixも一切見ず、ゲームもほとんどやらずに結構ストイックに勉強しましたが、そんなに苦ではなかったです。

OSCPのマニュアル、ビデオ、ラボ、試験、どれもよくできているし、コース代を払うのに十分な価値はあると思います。

これからOSCPを始めてみようという方、OSCP試験を間近に控えている方、どうぞ楽しんで頑張ってください。

TRY HARDER!!