fiscsecの日記

https://twitter.com/fiscsec

OSCPに合格しました

約半年間の取り組みの末、推定90pt(AD set + rooted *2 + Bonus)OSCPに合格しました。

これを書くことで自分の中で区切りをつけられる、ということで長いですが経緯など書いていきます。

 

  • 私が受けたバージョン

2021年末からのAD set(3台)と独立ホスト(3台)のものです。

 

  • 取得の動機、バックグラウンド

セキュリティの資格はもう取らないでよいのでは?と思っていましたが、会社の予算を使えたため、前からうっすら考えていたOSCPに挑戦することにしました。
ペネトレーションテストについては技術的にはGCIH取得の過程で少し触れてはいました。取得後にほとんど触っていなかったので忘れていましたが。
Offsecが出しているPEN-200のCourse prerequisitesは満たしていました。私はやっていませんが、PEN-200に申し込めば付属するPEN-100をクリアすればそれらが身につくのかもしれません。
英語力はまぁまぁ読めれば問題ないと思います。私はTOEICスコアだけはそこそこですが、全体をとおしてほぼ機械翻訳(DeepL、Google)を使いました。(翻訳のために使う脳内リソースの余裕がない) レポート作成も同様。ただ、機械翻訳時のぬけもれや違和感のある単語など、合わない表現がないかは見直しました。(たまにある)

 

  • 勉強時間

これまでの記事でも書いているとおり、バックグラウンドによって合格に必要な時間は異なると思います。私の場合はダラダラやっていたのもあり正確ではありませんが、500~600時間程度は使っていると思います。仕事から帰宅後に休憩し22時~3時くらいまで学習、休日も6時間程度時間を使いました。

 

  • 試験までの振り返り

THMやHTBで練習してからPEN-200に取り組む人が多いと思いますが、私はすぐにPEN-200を始めました。コースとそれに対応する試験という形式である以上、十分なはずだと考えたためです。

6月上旬~8月上旬

とにかくテキスト中心で丸2ヶ月かかる。テキストに書かれていることはほぼ全てkaliとテキスト用のマシンを使い手を動かしました。今思うとちょっとやりすぎだったように思います。(すぐ忘れたし)

8月中旬~9月中旬

8月初めにボーナスポイント(10pt)が取りやすくなりました
旧ボーナスポイントは量が膨大かつテキストの指示もはっきりしておらず、これをやるなら腕を磨いたほうがマシとまで言われていましたが、新ボーナスポイントは1ヶ月位取り組めば、各章のエクササイズ80%以上クリアは仕事をしながらでもできると判断し、達成。毎日のように朝方までkaliをいじっていましたが…。わからない問題はOffsecの公式discordの検索窓から"16.2.6"などエクササイズ掲載の章番号を入れてみましょう。誰かが質問し誰かが答えてくれています。私の場合はdiscordからヒントを探し出し、クリア条件の各章80%以上を達成できました。(問題数が少ない章だと全問正解が前提です) ものによっては目標がわかりにくかったりしますが、総じて面白い課題が多かったように覚えています。
10ptプラスは本番試験時に安心感が違いますので条件は満たしておくべきだと思います。マシン攻略でせっかく70ptを取得しても、レポートで減点されたら落ちますので。(redditでもレポートの記載が悪く落ちたケースはあまり見ませんでしたが)
今でしたら1~2ヶ月かけて、エクササイズ攻略ベースでテキストの勉強をするというスタイルで取り組んでいたでしょう。

9月下旬~12月

ここから本題のラボ攻略です。Learning Pathから始めました。テキスト24章のsandbox.localもフラグを提出すればボーナスポイントのもう一つの条件(ラボ30台以上クリア)に加算されるのでLearning Path + sandbox.localでもう半分の15台達成です。
あとはひたすらラボを攻略していました。ヒントはdiscordよりもforumで調べました。(forumのアカウントはoffsecのhelp宛にメールして作ってもらった)
1日1台クリアを目標に進め、分からないところはさっさとヒントを探しちゃっていました。今思うといかにenumし攻略の糸口にたどり着けたか、見逃さなかったか、というプロセスが重要だったように思います。エクスプロイトを刺すとかフラグを取るとかは二の次かなと。特に権限昇格でkernelの脆弱性を利用したエクスプロイトの利用は最終手段にしたほうがよいと思っています。exploit DBやGitHubに落ちているものを使うことはenumの結果で設定不備の脆弱性を突くことと比べると安易ですし、マシンがフリーズする可能性もありあまりスマートではないと考えます。(熟練したペンテスターはフリーズする可能性のある方法を避けるのでは?)またenumの力も磨かれないためです。
結局55台ほどクリアしました。ラボのマシンをクリアするだけ本番の合格率も上がるのですが、有益なマシンもあればこれ意味ある?ってマシンもあるなど。55台を越えたあたりから急に燃え尽き、redditばかり読んでいました。(役に立ったような、立たなかったような)

 

  • 試験

準備

年内に一区切りするためにも受験を決意。子供には部屋に入らないよう言って聞かせ、家族は特に外出もせず在宅していました。Webカメラはメルカリで購入した定価5000円程度のもの。それでも文字がよく見えないと言われたのでパスポートをスマホで撮影し、PCに転送して画面投影しました。これは予め準備しておいてもよいかもしれません。以下、当日のざっくりな時系列です。

 

10:15 テスト開始
15:30 AD Set攻略
16:30 AD Setのスクショ、攻略手順を確認
18:30 独立ホスト1の初期シェル入手
21:00 独立ホスト2の初期シェル入手。ボーナスポイント込みで合格点到達
22:00 独立ホスト1,2のスクショ、攻略手順を確認
22:30 気分転換に20分程度入浴
3:00 独立ホスト3の初期シェルを取得しようとしていたが歯が立たず断念
4:30 独立ホスト2で権限昇格成功
7:00 独立ホスト1で権限昇格成功。
9:45 レギュレーションの確認をしつつ、漏れが無いか確認し、攻略終了
16:00 休憩、仮眠を挟みレポート作成開始
翌9:00 レポート提出、終了

 

攻略中の所感
サクッと書きましたが一睡もしていません。(軽食は適宜食べていました) そして前日は緊張からあまり眠れませんでした。
ADの足場をなかなか作れなかったのは焦りましたが、以降は運もあり、ADの攻略ができました。独立ホスト1,2についても初期シェルまでは気づきが冴え、スムーズに取れました。
一方で独立ホスト3については全く糸口をつかめない。ハマりにハマって5時間近く使い、それでもダメなので断念。ただ、70点は確定していたので気は楽でした。
残された2機の権限昇格については深入りせず、試行する手数を増やしたことが功を奏した感じ。70点が確定したときのシェル取得が一番記憶に残っています。Metasploitは使いませんでした。残っていた独立ホスト3への使い所が思いつかず。

レポートの所感
語られることは少ないですが、レギュレーションやテンプレートはしっかり確認しておいたほうがよいです。悪用した脆弱性の説明、解決方法などにも対応できるようにしておく必要があります。(英語で) ノンネイティブも多く受けているのであまり厳しいことはないと思いますが、箇条書き、短文で済ませるのがコツかなと思います。私の場合、主語は"OS-XXXXX"とUSER IDにしておきました。この例がそうしていましたので。

脆弱性の悪用については読者がコピペで再現できるように、という指定があります。ディレクトリの移動とかkaliからエクスプロイトなどを持ってきたりだとか、そういったものは省きましたが、enumやexploitなどほとんどのコマンドを記載しました。そのコマンドの出力結果はスクショで掲載しました。フラグの提出・スクショにもきっちり要件がありますので要熟読です。

私の場合は14時間ほどぶっ続けで書き、Wordで60ページ程度になりました。多くはスクリーンショットですが。redditなどでは20ページ程度で受かったという人もいるみたいですが、確実に終わらせたかったので最善を尽くしました。画像が多いからか、Wordが重いこと重いこと…いつフリーズするかストレスになり、頻繁に保存&バックアップを作成しました。PDF印刷ができるかも度々確認しました。(本番でPDF印刷がフリーズし、レポートが提出できなかったという書き込みをどこかで見ました) 。7zで圧縮し提出する、ネーミングルールもあるのでこちらも要確認です。不備があると受け付けてくれないということです。

  • 提出後

終了1時間前に疲れ切った状態で提出したため、レポートの要件を満たせていただろうか、提出の作法は守れていただろうかとモヤモヤしつつ、エナジードリンク効果であまり眠れず疲れ果てていました。翌日も仕事にならないくらい疲労困憊。レポート提出から36時間後に試験にパスしたことを告げるメールが届き、半年間に及ぶ挑戦は終わりました。ボーナスポイント込で90ptということで少々レポートでミスをしても大丈夫だろうと思ってはいたのですが、レギュレーションも気になり気を抜けませんでした。

次は…OSEPはとても楽しいみたいですが、妻子にもあまりかまってあげられなかったので今度こそ資格取得はもういいかな…と思っています。Threat Intelligence・OSINTなど、別の挑戦をしていきたいな、と。

半年間があっという間に終わるくらいに楽しい挑戦ではありましたが、正直きつい挑戦でもありました。ライフワークになっていたので喪失感もありますが、しばらく自分を甘やかしつつ、家族の時間を過ごしたいと思います。(たくさん協力してもらいました、旅行に行ってきます!)

 

  • Tips

チートシートやテキストのメモはonenoteを使いました
・ラボの攻略メモはpentest.wsを利用。3ヶ月で$9.95と安い割には使えます
・どうしても解けないラボはGoogle検索スキルがあるとわりとなんとかなる(ダメだけどネタバレしている人がたまにいる)
・スキャンはNmap、rustscan、autoreconを利用。Webについてはniktoやgobusterなど。
・pivotはchisel
・権限昇格はwinpears、linpeasの出力結果で怪しいものを浅く広く試す
・Tib3rius先生の権限昇格udemyもやりました
 LinuxWindows
・認証についてはデフォルトのものや簡単なやつをまずは試す。
https://raw.githubusercontent.com/danielmiessler/SecLists/master/Passwords/Default-Credentials/mssql-betterdefaultpasslist.txt

https://github.com/ihebski/DefaultCreds-cheat-sheet
・こちらのリバースシェルジェネレータにはお世話になりました

チートシート
自分のonenoteにあるのは、スキャン系、rdp系、ファイルアップロード/ダウンロード系のコマンドなど本当によく使うものだけにしました。
各ポート固有のenumについては先人のチートシートを複数使用しました。(あまり自分を当てにしていないので)

https://book.hacktricks.xyz/welcome/readme
https://liodeus.github.io/2020/09/18/OSCP-personal-cheatsheet.html
https://github.com/six2dez/OSCP-Human-Guide/blob/master/oscp_human_guide.md
https://totes5706.github.io/Offensive-Security-Cheat-Sheet/
https://hackerifg.com/smb-server-enumeration/

…探すと他にもたくさんありますので、いくつもブックマークしておくとよいかも。
攻略の際は対象のポートに集中して、いろいろな手法を試すと良いかもしれません。(私の場合)

・AD
こちらも皆さん言っていますが、ラボにAD Setが2つ、エクササイズにも2つあります。これらを完璧に侵害し、詳しい攻略手順を残せるくらいにしておけば大丈夫だと思います。有名なミミミミミッミも大変有効でした。
ただしそれはAD環境における横移動の話で、初期シェル取得や権限昇格は普通にWin機の攻略になります。Win機攻略の練習をたくさんすると良いでしょうが、ラボ環境ではあまりいいWin機はなかった印象…。

BoFは有名なこれでよいのだろうと思います

他にもなんか思い出したら追記します!