🐉

未経験でOSCPに1発合格した

2024/04/02に公開

ぼくがOSCPを目指したのはかっこいいからです。

記事のサマリ

  • プログラミング経験がちょっとあるくらいのペネトレ未経験CSIRTがOSCPを取得しました
  • PEN-200受講から9ヶ月程度、受講前のTryHackMeを含めると1年かかりました

PEN-200開始前のスキル

  • 学生時代セキュリティは未経験
  • C++によるアプリ開発のバイト経験あり
    • 大抵の言語はなんとなく読み書きできます
    • PoCのちょっとしたカスタマイズやエラー修正とかは特に困りませんでした
  • 社会人になり2年半CSIRTとしてIRを実施
  • 情報処理安全確保支援士取得済み
  • ペネトレ経験なし

勉強方法

2023年4-5月(TryHackMe)

Offensiveに少し興味を持ちTryHackMeで何となく遊び始めました。
Linux Privilege EscalationやバッジがかっこいいHash CrackerのRoomをやりました。

6-8月(Hack The Box)

Hack The Boxでリタイアマシンを20個くらいやってからアクティブマシンに挑戦してHackerランクになりました。easyマシンはなんとか攻略でき、mediumは簡単なやつなら戦える程度の実力です。途中ストーンビートセキュリティ株式会社様がやっている「Hack The Boxで学ぶペネトレーションテスト」に参加して勉強させていただきました。
8月ごろにOSCPに興味を持ち始め、OSCP Likeなリタイアマシンをいくつかやりました。
雑なwalkthroughをNotionにメモするようにしました。

9-10月中旬(PEN-200 PDF)

PEN-200を受講開始し、1ヶ月半かけてPDFを完了しました。他の方の記事では2週間や1ヶ月程度で終えている方が多いですがセンスが無さすぎて時間がかかってしまいました。
1周しただけでは理解できてない部分が多く、10月以降も通勤途中などにPDFを読み返したり、TryHackMeで苦手部分の補強をしたりしました。
Exerciseはちょっと調べて分からなかったらOffsecのDiscordを見てました。テクニカルな問題については5割くらいカンニングしました。

10月中旬-2024年3月上旬(PEN-200 LAB)

PEN-200のラボをADセット1(Medtech)→ADセット2(Relia)→OSCP A→OSCP B→ADセット3(Skylark)の順にやりました。ある程度調べて分からなかったらDiscordみてどうにかしてました。3割くらいカンニングした気がします。
ADセット3についてはPDFにOSCPの範囲を超えているから無理にやらなくても良い的なことが書いてありますが、個人的にはやった方が良いと思います。そこまで難しいわけでもなく、台数が多く圧倒されますがやれないことは無くとても勉強になります。
Metasploitはそもそもあまり使いませんでしたが、Meterpreterは普通に使いました。

3月上旬-試験前(PEN-200 LAB, PDF, PG Practice)

ラボのOSCP Cを試験と同じ条件で23時間45分時間を測って取り組みました。
結果はADセット + local × 2 + proof × 1 = 70点でした。
Windowsマシンの理解が浅かったのでPDFの特権昇格のパートをやり直したり、PG Practiceで特訓しました。残った時間はフィジカルを鍛えるためにPG PracticeのOSCP Likeマシンをいくつかやりました。
また、3月に入ってからMeterpreterの使用制限があることを知ったので使わないようにしました。

試験

準備

  • 必要最小限のチートシート (Notionのメモが多くなり検索が大変になってきたため)
  • 試験監督との英語チャット用チートシート
  • 当日の気分が分からないので大量の食べ物と飲み物
  • 指温める用の貼らないカイロ
  • PCのメモリ増設 32GB→64GB
  • 試験の応援でいただいたクッキーとチョコレート

タイムライン

時刻(JST) 出来事 取得ポイント
13:00 試験開始 0
15:00 ADセットのfoothold 0
16:50 Aマシンのlocal 10
17:00 Aマシンのproof 20
20:30 Bマシンのlocal 30
21:20 Bマシンのproof 40
07:50 ADセットのproof 80

※ADセットの各マシンのフラグ取得時間は省略しています

試験開始

寝坊したくなかったので日本時間の13時スタートにしました。しかし試験監督ツールの設定に手間取ったり、使っていたWebカメラがボロいせいで試験を受ける部屋の確認に時間がかかり、実際には13:15分に攻撃を開始しました。試験時間は15分短くなりました。
本人確認の際、パスポートの文字がカメラに上手く映らずパスポートの写真をとって画面共有するように指示されましたが事前にスキャンしてPDFにしておいたのでスムーズに対応できました。

作戦

当初の方針

ボーナスポイントがあったのでADセット+20点を最低ラインの目標にしていました。
そのため、ADセットのスキャン→スキャン結果見つつ他のマシンのスキャン→ADセットの攻略→スタンドアロンのlocal→特権昇格するかもう1個localとるか選択という順番で進めるつもりでした。

焦って見逃しするのが一番嫌だったので気持ち丁寧目に進めました。
明らかに怪しいポートやディレクトリがあってもすぐ飛び付かずに事前に決めていた順番通りに確認しました。

試験中

当初は上記の進め方をするつもりでしたがNmapの上の方の結果を何故か見逃したり、普段よりタイプミスが多かったり焦っているのを感じました。
また試験監督ツールがかなり重く、全体的に普段より動作がもたついており結構気になりました。

ADセットの初期侵入ができたものの、特権昇格もピボットもできず困りました。
ずっと悩んでいるのも時間がもったいないのでスタンドアロンマシンに手を出し、2台のマシンはスムーズにproofまで行けました。

これで3個目のマシンを取り切れば合格ラインだと思ったのですが、3個目だけ難しくて初期侵入ができませんでした。ADをやるかスタンドアロンをやるかどっち付かずな時間帯が22時から3時くらいまで続き、この時間が試験中一番辛かったです。

午前3時ごろ、一旦戦略的に90分の仮眠を取り、5時ごろに攻撃を再開しました。

詳細は書けませんが、今までやった列挙を別のツールでやってみたところ6時ごろにADセットの突破口が見えました。完全に流れが変わり、多少躓きながらもDCのproofを取れました。
今まで使ったことがないツールでしたが試してみてよかったです。

難易度

ADは初期侵入さえできれば、多分分かっている人ならスムーズに攻略できそうです。
ExerciseとLab、HTBのADマシンをやっておけば十分通用するレベルでした。

スタンドアロンは攻略できた2台はPG PracticeのIntermediate、HTBのeasyくらいのレベルでした。口コミでトリッキーだと言われていたので警戒していましたが全然許容範囲でした。
こちらはExerciseとLabだけだと不安があるのでHTBやPGで練習するのが良いと思います。

攻略できなかった1台は難易度が高いのかぼくがポンコツなだけかわかりません。分からずじまいなのが悔しいので誰かに相談したい所ですが多分試験のネタバレなのでダメなんですよね...

感想

OSCPを取りたいと思ったのはドラゴンのバッジがかっこいいと思ったからです。
不純な動機でしたが無事達成できて良かったです。

勘に頼るのも大事ですが、見逃しがないように順番に列挙するのが大切だと感じました。またADセットの攻略では数時間立ち往生することもありましたが、粘り強く取り組み結果を出すことができ自信につながりました。

ただ、1回で合格したのは本当に運が良かっただけな気がしており、もう1回試験受けたら受かるか怪しいレベルなので引き続き実力磨いていきます。

何か質問などありましたらお気軽にDMください。
一緒に頑張る友達も増やしたいです。

おまけ

よく使用したツール

  • CrackMapExec
  • LinPEAS
  • WinPEAS
  • Ligolo-ng (おすすめ)
  • HackTricks
  • Notion (CheatSheet)

余談

チートシートとして使っていたNotionが試験の3日前に障害で編集も閲覧もできなくなり終わったかと思いました。数時間後に復旧したのでメモをPDFエクスポートしておきました。本番で使うメモを変えようか悩みましたがNotionを信じることにしました。
しかし試験中に再度障害が発生して編集ができなくなりました。流石に焦りましたがそのうち復旧するだろうと楽観的に考え別のツールにメモをとって耐えました。
面白すぎますね。@tweet

Discussion