ご無沙汰しております。みらい(@Minimal_Mirai)です。
先日、OSCPの合格通知を頂きましたので合格記としてここまで学んだことや試験時の注意点について共有したいと思います。
OSCPを知ったきっかけ
まず私は現在22歳、情報系の専門学校4回(24卒)です。
私がOSCPを知ったのは、2021年頃でコロナ禍のリモート期間中でした。
この頃は、もっと手を動かして攻撃技術を学ぶことに集中しており、主にTryHackMeやHackTheBox、常設型のCTF攻略をメインに行なっていました。
その中でとある方のDiscordコミュニティにお誘い頂き、CTFにチーム参加させて頂いたりしていました。
かなりセキュリティに対するモチベーションの高い方々が多く、コミュニティ内でOSCPを取得された方が現れました。
英語試験+スキル感の違い+受講費用の高さといった点から社会人になったら取りたいなぁくらいに思っていました。
そんな時、某社にOSCPの90日間のラボアクセス可能なバウチャー(おそらく当時のドル円レートで15万円前後だったと思います)を購入して頂けることとなり、とても興奮していました。
本人確認には、免許証ではなくパスポートが必須ということですぐに琵琶湖沿いの滋賀県パスポートセンターに向かいました。
その後、Lab攻略開始までにtib3rius氏のLinux/Windows権限昇格に関する動画を購入しました。
また動画コンテツだけでなく、Try HackMeでBOFやAD関連の演習を行っていたことでスムーズにLab攻略に移れました。
OSCP開始前のスキルについて
当時のスキル感としては、インフラ・ネットワーク分野を専門的に学んでおり、Linuxはある程度触れて、Pythonの読み書きも問題ないレベルでした。
また元々セキュリティについては興味を持ちつつもCTFには参加して間もない頃であったため、実践的なマシンへの攻撃についてかじった程度の知識しかありませんでした。
Lab攻略開始
2021年8月頃からLabの攻略を開始。
Lab攻略時には、元よりチートシートの作成+各マシンの攻略記録を取ると良いとされていたため、OneNoteにまとめていきました。
基本的な部分は、HackTricksやGTFOBins等の既存リソースに頼りつつ、そこに記載のないツールの挙動やトラブルシューティング、TIPS的な事をメインにチートシートにまとめていきました。
途中チートシートとして利用していたOneNoteのバグを引いてしまい一部のページにアクセスできなくなり、色々なエディターを試しましたが最終的にはログの追いやすいGitBook or Notion辺りが最強だと思います。
特にGitBookの場合、GitHubリポジトリと連携できる点が便利でした。
Labマシンの難易度としては、慣れるまで少し分かりにくい部分もありましたが、触りどころが理解できるとそれほど難しくないと思います。
また一部のマシンは、不安定であったりExploitが上手く刺さらなかったりしてrevertしてから攻略を開始することを意識していました。
また古いOSで稼働しているマシンもあり、すぐにカーネルエクスプロイトで攻略してしまうと試験時に困りそうだったのでなるべく規定路線(Labマシン制作者が意図したであろう解法)での攻略を意識しました。
ただ最終手段としてのカーネルエクスプロイトの利用や、PoCのコンパイルみたいな部分は学ぶことも多いのでやっておくと良いのかなと思います。
当時はBOF問題が建材で、あまり解析経験のない低レイヤの部分も触れられて楽しかったです。
AD周りの知識も少なくTryHackMeやHackTheBoxで学んだり、Writeupを読んだりしていました。
また私の1度目のLab攻略時にはボーナスポイントの付与にラボレポートの提出が必須であったため(2023年現在はボーナスポイントの付与条件が改定されています)、攻略を優先し、ボーナスポイントは諦める形で進めました。
Lab攻略終了後は、IppSec氏の動画を見ながらHackTheBoxのマシンを攻略していく毎日でした。
HTBに関しては、OSCPを最短で攻略したいという場合必須でない気もしますが、様々なサービスに触れたり、それに付随するOSCPのカバー範囲外の攻撃手法等、学びが多いので興味があれば一度登録してみることをおすすめします。
1回目の試験
2022年2月に試験を受けることを決めました。
試験開始前に、試験監に「使用しないPCやモニター・デバイス類を全て部屋の外に持ち出すように」と指示されたため、少し時間を要しました。
正直ある程度の自信はあったのですが、ADセットを攻略しきれず完敗に終わりました。
後からログを見返すと、とても単純な点でかなり詰まっていたことが分かりました。
かなり高難易度のマシンが出題されるのではないかと身構えている節があり、winPEASany等の権限昇格に関するツールを回して出力を見ていても、あまりに単純すぎてそれはないだろう...という思い込みが敗因だったと思います。
これは今思えば的な所感ではあるのですが、個人的にOSCPで求められるのは、基礎的な列挙やPDF内の演習に沿う事だと思っていてどんな単純な箇所も思い込みで確認しないムーブを無くし、列挙していけば攻撃できるポイントは見つかるなと感じました。
RedditやDiscord等で「複雑に考えず、シンプルに考えろ」と言われる所以がよく理解できた試験でした。
PGを利用したスキル鍛錬とLabの延長
2022年3月からは、1度目の試験に失敗したため全体を通してもう少しEnum力を鍛えたほうが良いと考え、VulnHubやProving Groundsといったサービスでマシンを攻略していきました。
基本的には、以下のスプレッドシートにあるようなマシンがメインの攻略対象でした。
2回目の試験
そこから少し期間が空いてしまい、2023年2月 周りにボーナスポイント(10pt)さえあれば合格範囲だったという悔しい思いをされている方も何人かいらっしゃたので、とりあえず30日のLabアクセス延長権($356)と試験のリテイク($249)の購入を行いました。
米金利は絶賛上昇中、円安の中で学生がバウチャーを購入するとなると、決して安い資格ではないなと思いました。
また2023年3-4月頃にOSCPの内容が一部変更(BOFが廃止され、新しい内容となった2023コースが登場)された際に、Offsec側のシステム改修が入ったと思われ試験予約が行えないトラブルが発生しました。
Offsec側に問い合わせ、トラブルは解決しましたが当初予定していた時期よりも試験を遅らせる形になりました。
Lab攻略・エクササイズの演習は続け、結果的にボーナスポイントを獲得することができました。
2023年7月時点のボーナスポイントの付与条件は以下のとおりです。
- エクササイズで80%以上の解答を提出
- 30個のproof.txtの提出
またAD周りの認識を確認していき、コマンドをチートシートに追記していきました。
この点、AD周りの攻略法についてはOffsec公式からも動画が配信されており、どのような意図を持ってツールを動かすか解説されているためとても参考になりました。
以前よりもOffsec公式から配信される動画コンテンツが多く、興味があれば一度調べてみることをおすすめします。
色々とトラブルが発生しがちなファイル転送・ポートフォワードについては、いくつか代替手段を持っていた方が良いとご助言頂き、HackTricksに加え下記のサイトを参考にコマンド等をチートシートに追記させて頂きました。
またWindows周りの攻撃手法(mimikatzの利用・権限昇格/AV-Bypass)については、以下の2冊が非常に分かりやすく学びが多かったです。
試験本番
半ば精神論的ではあるのですが、23時間45分+24時間以内のレポート提出という試験時間が与えられている中で試されているのは技術力とEnum力、そして試行錯誤(Try Hader)だと自分に言い聞かせ、脆弱性は必ず盛り込まれているのでそれを見つけるだけだとシンプルに考えることを意識していました。
試験時間自体も長いのでどこかでダレるタイミングは出てくると思うのですが、適度な休憩(ウォーキングやランニング)とカフェインを取ることが私にとっては有効でした。
試験自体は、以下のような時間配分で行いました。
- 8時から試験開始
- 12時頃に昼休憩
- 13時頃に1台目のADマシンの初期シェルを獲得
- 13時半頃に1台目のADマシンの権限昇格を完了
- 16時頃にpivotを確立し、安定して他のADマシンにアクセスできるようになりました
- 17時頃には2台目のADマシンと、DCの侵害を完了しました
- 18時頃から19時半まで休憩
- 19時半頃から独立マシンの攻略を開始
- 翌日1時頃、中々独立マシンの初期シェルを獲得できず一度睡眠を取りました
- 翌日2時半頃に目覚め、再び独立マシンの攻略を開始
- 翌日3時頃には、初期シェルの取得+権限昇格が完了しました。この時点でADセット+独立マシン(local.txt+proof.txt)+ボーナスポイントの取得が完了しているため合格点に達しました
- そこから適度に休憩を挟みつつ、レポートのためのスクリーンショットを取ったりコマンドのログを見返したりして翌日7時45分に試験終了
試験中にautoreconを稼働させる影響からか自身のVMがクラッシュしたり、重くなる場面が何度かありました。
そのままレポートを書こうと思っていましたがアドレナリンが出て、興奮状態だったため、あまりよく眠れなかったこともあり試験終了後に再びシャワーを浴びて就寝。
14時頃に目覚め、15時から試験中のメモを見返してレポートを書き始めました。
私の場合、レポートに減点要素があれば即不合格になってしまうため、レポートを書く際は特に注意していました。
英文で書くこともあり普段以上に気をつける点も多く、翌日朝6時頃まで確認を繰り返しながらレポートが完成しました。
7時頃には全ての提出物をアップロードし、疲れからその後はグッタリしていました。
合格通知
試験終了後、5日後に合格通知が届きました。
注意点
- 年度末にはOffsecの試験制度が変更される可能性があり、Lab攻略・試験予約時期はズラした方が良さそう
- 試験前にどのように攻略していくか計画を立てて置くと良い
- 試験前に使用しないPC・モニター・デバイス類は部屋の外に出しておくこと
- 行き詰まっても1つのマシンに執着せず、勇気を持って切り替えること(Rabbit-Hole対策)
- マシンのrevertは大事
- 脆弱性は絶対に盛り込まれているので諦めない
学生の間にOSCPの取得を目指す方へ
個人的には、リモートでの授業・アルバイト・インターン等が当たり前になったことが追い風となり、移動時間がなくなりOSCPの学習に上手く充てられたと思います。
また学生(大学 or 専門学校等)の間にOSCP取得を目指す方は、1・2回生の間にがっつり勉強し始めると良いと思います。
理由として、私は2-3回生の期間にOSCPを学習していたため長期インターンシップやアルバイトに応募したり就活に向けての動きも取り始めていました。
どうしても忙しい時期はOSCPを保留する期間が出てしまい、ずるずると試験を引き伸ばしてしまった節があります(これは私自身の管理能力の無さなので今回の反省点です)。
意を決してLab+試験対策を再開しましたが、就活とOSCPの学習を並行して行う事は非常に体力がいるなというのが正直な感想で、ありがたい事に私は選考に通過する事が多く各社最終面接(現地)に行かせて頂くことが多かったため、そうした中でラップトップを抱えてホテルへ移動しVMを動かしてLab攻略を行うのはそこそこ疲れました。
当然、面接や選考結果がどうなるだろうという不安もある訳で同時並行するには負荷の高いタスクであったと思います。
まとめ
学生の間にOSCPを取得することを目標にしていたので、達成できたことを非常に嬉しく思います。
同じくOSCPの取得を目指す方に少しでも役立つことを願います。
記載内容に間違いがあればTwitter(@Minimal_Mirai)へのDM、またはコメントを頂けますと幸いです。