甘めな技術。

セキュリティ多めの甘めな技術ブログ

OSCPに合格した (PEN-200 2023)

OffSec Certified Professional (OSCP) に合格しました。

費用は会社に出してもらっていたので私は1銭も払わなかったのですが、落ちたときの再受験料については特に聞かされていなかったので多分出ないのだと思います。

まあつまりなんとか1回で受かることができました。

8月

2023年の9月からOSCPに挑戦すると決めたため、それまでHack The Boxをしたり、ADについて勉強したりしていました。

HTBについてはこちらの記事にも書いています。 amame.hateblo.jp

また、TryHackMeのADモジュールを8割ぐらいやりました。基本TryHackMeのVPNに接続してWindowsをRDPで操作するのですが、なかなか重たくて辛かったです。

あとは『ミミミミミッミ』という本を読みました。

techbookfest.org

他のOSCP受験記で聖書と呼ばれていたので読んでみたのですが、とても分かりやすかったです。

TryHackMeでADの基礎を学んで『ミミミミミッミ』で攻撃について学ぶというのは自分としてはとても良かったかなと思います。おかげでOSCPの限られた時間で躓かずに済みました。

ADの基礎についてはTryHackMeよりもいい教材があるかもしれません。

9月

3か月のコースがスタートしました。

9月前半は学校が無かったのでその間に結構進めたかったのですが思ったよりも成果は出ませんでした。 モジュール1つ1つに骨があり、想像以上に大変で連続してやるには集中力が足りなかったです。

まあこれに関しては私の精神力と体力不足ですね。

結局教科書読みとExerciseは18日かけて終わらせました。 やっと本番とも言われるChallenge Labの攻略に入れます。

が、ここらへんから学校が始まりました。最終学年の後期なので暇だろ思っていたんですがめっちゃ忙しかった(泣)

なので基本的に平日はほとんど進めなかったです。

OSCPは1日3時間以上勉強するべきという言説(私自身は資格合格のための勉強量は当人のバックグランドに大きく依存するだろと思っていますが)をよく見かけるので、焦燥感は感じていました。

10月

ひたすらChallenge Labを進めていました。

と言いたいところですが、前述の通り学校が忙しく基本的に土日にしかできず、10月15日時点で57個中25個という記録でした。

ADはDCさえ侵害できれば芋づる式に傘下のマシンへのアクセス権を得られるので、思ったよりも楽でした。

また、パスポートを申請していました。私含め多くの日本人は有効な本人確認手段がパスポートしかないため、試験までに取得しておく必要があります。

OffSecに身銭を切ることはありませんでしたが、10年用パスポートの取得に1万6千円程度かかりました。

10月28日~29日で模擬試験のような事をやりました。結果は惨敗でしたが、レポートまでしっかり書いたので結構身になりました。

本番でレポートを書いて結構時間がかかったという人をネットでよく見たのですが、1回書いておくだけで次からはサクサク書けるようになるので、レポートも少なくとも1回は練習で書いておくことをお勧めします。

11月

Challenge Labです。海外の体験談やRedditを見ているとProving Groundsとかもやっている方が多い感じでしたが、PEN-200の契約期間中はそっちを優先すべきとの投稿に納得したため、基本的に手を付けませんでした。

11月に入ったあたりからプレッシャーが大きくなり、体験記やRedditの投稿を読み漁ったりしていました。対して意味は無かったと思います。

11月30日にLabへのアクセス権が失効し、最終的に57個中46個のマシンのproof.txtを提出しました。

12月1日は、Proving Groundsで1つのマシンをユーザー権限まで取得しました。特権昇格までやりたかったのですが、お金を払っていなかったので3時間の時間制限が来てしまい諦めました。

試験開始は12月の2日(土)の11時に設定していました。

試験本番

12月2日 10:40

portalにログインしました。

試験開始15分まえにログイン可能になると説明されていたのですが、実際はもう少し早いようです。

画面共有とウェブカメラの共有に少し躓きました。まず、モニターは3台用意していたのですが、3台ともネットワーク越しに共有するのに結構時間がかかりました。

また、iVcamをインストールしていたのですが、portal上でメインのウェブカメラがiVcamになってしまい、それを変更する方法が分からず(多分ない)結局アンインストールすることになりました。

スマホ等をウェブカメラにして使う事は禁止されているので、ちゃんとしたウェブカメラが必要です。普段私はミラーレス一眼レフをウェブカメラとして使っていましたが、大事をとってankerの7千円程度のウェブカメラを購入しました。

11:02

前述のようなこともあり、2分遅れてスタートしました。

戦略としては、AD攻略+独立Local×3+ボーナスポイントの80ポイントで合格しようと思っていました。

なのでまずADの攻略を進めました。

18:00

7時間かけてなんの進捗もありませんでした。

ADの初期侵害すらなんの糸口も見つけられませんでした。

この時点で状況は絶望的であり不合格を確信していました。

半ば諦めていた私は、監視されている中OSCPの不合格体験記を読み、自らを慰める方向に舵を切りました。今思うと試験中に体験記読むのはなかなかリスキーな行為でした。

いわゆるネタバレが含まれていた場合カンニング扱いされてもおかしくないので。

完全に精神は闇落ちしていた私はいくつかの体験記・Redditを漁った後、以下の記事に出合います。

medium.com

これはOSCPに2回落ちた筆者が3回目で合格する話です。

意訳ですが、途中こんな話が書いてありました。

OSCPに2回落ちた筆者、ペンテスターの求人に応募し面接を受けます。

面接官からOSCPに合格したかと聞かれ、恥ずかしながらも「いえ、2回落ちました。でもまだ挑戦中です。」と答えました。 すると面接官は笑って、ジュニアのほとんどはOSCPに挑戦さえしていない。あなたの方が先を行っているよと返します。続けて「私は合格するまでに7回落ちた。」と言うのです。 私は驚き、そしてこれが突破口になりました。

7回も落ちた人もいるのかと私も驚きました。そういう話を聞くと、1回くらい落ちても平気だと楽観的な気持ちになれます。そして文章は以下のように続きます。

この試験は敗北をもたらすものです。あなたを破滅させ、あなたを完膚なきまでに打ちのめし、負け犬を淘汰するように作られている。努力を続け、挑戦し続ける限り、私も合格できるのだと悟った。失敗は進歩である。これを理解するのに時間がかかりすぎた。失敗しても、その失敗から学べれば、それは失敗ではない!本当の失敗は挑戦をやめることである。失敗し続けろ!そして全てが変わった。

完全に安西先生です。「あきらめたらそこで試合終了ですよ」という声がここまでマッチする状況はあるでしょうか。

私はこの時まで、精神論というものを完全に馬鹿にしていたことを謝らねばなりません。

もちろん適所適材ではありますが、気持ちの力というのはこんなにも大きいものなのかと身をもって実感することができました。

それほどまでに私はこの文章を読んで自信をつけることができたのです。

もし私が試験中にこの文章に出合っていなければ、途中で諦め、合格していなかったかもしれません。

私はこの文章に感謝してもしきれないほど救われました。

また、このような記述もありました。

Don’t overthink it. OSCP is using publicly known vulnerabilities with publicly known exploits.

考えすぎるな。OSCPは既知のエクスプロイトで既知の脆弱性を使うだけだ。

この文章を読んだ時点で私の気持ちは、独立×3 + ボーナスポイントの合計70ポイントで合格する方向へと切り替え終えていました。

7時間何もできなかったからってなんだ。23時間45分の試験だぞ。あと16時間以上時間は残っているじゃないか。Redditだと12時間以内に全完した奴だって珍しくない。21時間ADが侵害できなくて、3時間で独立3台攻略して受かった奴だっていた。まだチャンスは残っているぞ!うおおおおおお。

19:30

独立1個目Local取得。

この後一旦風呂に入ったのですが、我が顎ゆるまずんば非ずといった状況で、冷静に見れば8時間以上かけて10ポイントしか取得していなくとも、もう試験に合格したかのような気持で湯船につかっていました。

20:15分

風呂から出て、独立1個目Root取得。

23:20

独立2個目のLocal取得。

12月3日 00:25

独立2個目Root取得。

01:05

独立3個目Local取得。

01:30

独立3個目Root取得。

なんと方針を変えてから7時間程度で独立を全て解くことができました。

この時ほど嬉しかったことは人生でもほとんどないでしょう。ガッツポーズを何回もしていました。深夜でなかったら雄叫びを上げていたと思います。

その後は証跡集めをし、3時半ごろに就寝しました。

07:00

アラームなしで起床。アラームは一応7時半に設定していました。

レポートを作成しつつADを見ますが進展はなし。この時点でレポートに不備がなければ合格できることが分かっていたのでぶっちゃけADをやる気は薄れていました。

10:30

15分早めに終了しました。

14:50

レポートを提出。

ちなみにレポートですが、一人称I + 過去形の形式で進めました。テンプレートは三人称Johnが使われていましたが、一人称でレポートを書いたという日本人の体験記を確認できたので大丈夫だろうという判断です。

Iを多用するのは流石に良くないかなと思い、The result showed ~ みたいな文もちょくちょく挟むようにしました。

完全に機械翻訳に頼ってレポートを進めましたね。

16:35

OffSecにログインしたらExamのところに「合格した」という表示がありました。流石に早すぎだと思うのですが、これは暫定みたいなものなのですかね。

12月4日 15:20

レポート提出から24時間30分後、メールで合格通知と証明書の案内が来ました。 ウェブサイトの表示が早すぎて信用しきれなかったので、正式に証明書を貰えてやっと安心できました。

まとめ

技術というよりもセンスを磨く試験であると感じました。Redditの受け売りですが、too hardというよりtoo trickyであると強く感じます。

問われている技術はコースの範囲内に収まっていたと思います。ただChallenge Labよりも明らかに試験問題の方が複雑でした。

一筋縄ではいかない、trickyな細工がどのマシンにも施されています。

知識を知っている知っていないではなく、どこに当たりをつけて試すかの思考が問われていると感じる試験でした。

目標にしていた資格なので合格出来てめっちゃうれしいです!!