技術と判断をつなぐ“仕組み”を整備し続けた一年間と、休憩の価値を最後に理解した話
この記事は、OSCPの具体的な解法や手順ではなく、「技術をどう使うかを決めるための判断」をどう整備したかを振り返る体験記です。
巻末に、最近OSCP+を取得した4名の感想を併記しました。皆さんにも共感いただけた内容ですので、これから合格を目指す方のヒントになれば幸いです。
はじめに
サイバーディフェンス研究所の安井です。日頃、制御システムのペネトレーションテストに携わっており、体系的にペネトレーションテストの基礎を学ぶべく、OffSecのPEN-200コースを受講しOSCP+を取得しました。
学習と試験を通じて強く感じた「判断」と「休憩」についてお伝えしたいと思います。 私にとってOSCPは、「技術力そのもの」ではなく、技術をどう使うかを決める“判断の試験” でした。
この記事を見ていただいている方は、PEN-200 や OSCP の体験記などを読み漁っている方だと思いますので、OSCP, OSCP+ に関する基本情報や、一般的な学習体験は割愛します。
「判断」と「休憩」、この2つは、他の方も言及していることですが、学習当初の私は、本当の意味では重要性を理解していませんでした。せっかく書いてあるのに、チートシート(技術)、使用ツール、学習内容ばかりに目が行っていた気がします。
学習開始時から、この2つの重要性を知っておくと、泥沼にハマらなくて済む方もいるかと思い、この記事を書きました。
判断のマニュアル化こそが重要だった
OSCPを一年かけて取り組んでみて、重要だと感じたのは「判断の質」でした。
ただし、ここでいう「判断」とは、単なる判断力などという曖昧な話ではなく、具体的には次のような内容です。
- 調査の順番
- ADの流れ
- PrivEsc の確認手順
- 認証試行ルール
- ラビットホールの回避(見切りの基準)
- 試験中の「休憩を取る判断」
このような “仕組みとしてあらかじめ準備した判断” のことです。
技術は必要条件。しかし、それだけでは安定しなかった
私は一年間、断続的にOSCPを勉強してきました。仕事の都合もあり、全く学習しない期間も多くありましたが、各種テクニックやツールの使い方は、人並みには身につけてきたつもりです。
誰もが行うことだと思いますが、ノーティング(ノート作成)や効率アップのためのオリジナルツールの整備も進めました。
しかし、演習(challenge lab)を進めるうちに、早々に気づいたのは、
技術(チートシートや個別テクニックを記載したノート)があっても、判断を誤ると前に進めない
という現実でした。
調査において、それまで得られた情報をもとに「今、何をすべきか?」──この判断にブレがあると、突破力が極端に不安定になりました。
「記憶力ゼロ」を自負する私は、以前やったことでも毎回新鮮な脳で取り組まざるを得ず、調査漏れを繰り返し、ストレスを増大させていました。
そこで私は、技術と同じくらい “判断” を整理し始めた
私は50代半ばです。学習に取り組み始めた当初は、PEN-200 を学び理解できれば、OSCP試験は通らなくてもいいかな、と正直思っていました。自分の空き記憶容量はゼロで、24時間試験の徹夜を乗り切る体力も無いと考えていたからです。
しかし、学習を進めるうちに、「どうせならOSCP資格を取得したい」と思うようになりました。
- 記憶力なしでも試験突破するには?
- 体力がなくても試験突破するには?
試験中に迷っている時間などありません。
こう考えた私は、「すべてを手順化して、試験を作業にしよう」という戦略を立てるに至ります。
そこで私は比較的早い段階から、
自分のノートを、チートシートなどの個別技術(Technique)部と、判断条件分岐戦術(Decision Tree)部の2つの観点から整理する
こととしました。
これは“高尚な戦略”ではなく、「毎回同じ判断を再現可能とする」という“愚直な戦略”です。
解けない項目に出会い、なんとか解答を得たのち、解法の個別技術のみならず判断条件分岐戦術もノートに追加し、「ノートの条件に当てはめれば同じ問題は解ける状態」にすることを、学習項目ごとに愚直に繰り返しました。
たとえば、「このポート番号とこのサービスが見えたら、まずはこの3つだけ試す」といった形で、“次の一手”を自分の頭ではなくノート側に持たせていきました。
世の中には Cheat Sheet は溢れています。しかし、Decision Tree について「これがお勧め」というものはあまりない気がしています。なぜでしょうか?個々人の理解度や習熟度にあわせ、既知の内容は省略していた方が書いた本人にはわかりやすかったりしますし、あまりに細かく書くと Challenge Lab の中身の情報漏洩リスクがあったりするのかなぁ?などの理由が想像できます。
それ以上に、Decision Tree を整理すること自体の労力が大変なことが大きな要因な気もします。
しかし、一定程度の個別技術を習得した人にとっては、この Decision Tree の充実こそが、合格確率を上げる鍵な気がしてなりません。
余談: 初学者で短期間でOSCP取得される方がいますが、学習能力の高さ・試験内容との相性もさることながら、「良質の Decision Tree を授かった」という方もいるのではないかと推測します。
Decision Tree の整備が、突破力の安定につながっていった
こうして「Technique」と「Decision Tree」の二軸でノートを育て続けるうちに、演習での突破力が少しずつ安定していくのを実感しました。
- 技術はあるのに解けない
- 解法は知っているのに、そこにたどり着けない
- 見落としていることに、あとから気づく
- 次にどこを見るべきか、判断が揺れる
こうした“ブレ”が減り、同じ状況で同じ判断ができるようになっていきました。
この感覚は、私のように
「毎回、新鮮な脳で取り組まざるを得ないタイプ」
の人間には特に大きかったと思います。
技術は覚えても、判断が揺れれば意味がありません。 判断を手順に落とし、ツリー化することで、ようやく技術が“使える技術”に変わっていきました。
2度の受験
私は2回目の受験で合格しました。
1回目は、個別ラボで20点を取得した後、ADのラビットホールで4時間以上を浪費するも、なんとか別ルートに着想し40点を追加。合計60点で合格直前まで到達。しかし、そこから睡眠時間を含めて8時間、一歩も進まず撃沈しました。
このとき、Initial Access 系の Decision Tree をほとんど整備していませんでした。 原因は Initial Access 系の経験不足であったと判断し、次の試験に備えOffSec PG Practice で個別テーマの手順を充実化しました。
2回目は、12時間弱で合格基準である70点に到達し、そこで報告書エビデンス整備モードに切り替えました。睡眠後に残りに取り組むも、そのまま時間終了でした。
ここで正直に書いておきたいのは、「2回目の合格が、手順や判断の改善のおかげだったのかどうか」は、自分でも確信が持てないという点です。
試験はそのときの体調、集中力、問題との相性、偶然のひらめきなど、どうしても運に左右される要素があると思います。
ただ少なくとも、1回目のように判断がぶれて深追いしてしまう場面は減っており、「沼に入りにくくなっていた」という実感はありました。Decision Tree をより整備したことで、迷走するリスクを減らせたのは間違いないと思います。
また今になって思うのは、「試験中の調査記録詳細をもっと残しておけば、再試験時の振り返りがもっと容易だっただろう」ということです。クリアできなかった項目が、どうやれば攻略できたか可能性を絞り込むためにも、少なくともすべての組み合わせの認証試行は実施し、その記録を残しておくべきだったと後悔しています。
試験本番で気づいた「休憩」の真の意味
休憩は、時間の浪費ではなく、判断の精度を守るための“投資”だった
休憩について語る方は多いです。 私も学習中に何度もその文言を目にしました。
しかし、正直に言えば──
あの重要性は、合格してみて初めて腑に落ちる種類のものだったと感じています。
試験中は、とにかく焦りが生まれます。
- 時間が減っていく
- このルートで合っているのかわからない
- ラビットホールかどうかの判断がつかない
人間の判断は、焦りによって驚くほど簡単に狂います。
私の場合、Decision Tree を整備していたにもかかわらず、焦りによって一瞬で“その場の思いつき”に引っ張られそうになった場面がありました。1回目の試験では、残り8時間、がっつりとラビットホールにはまっていたのだと思います。
ここで、なぜ休憩の大事さを痛感したかというと、それは2回目の受験時の「試験終了後」の体験です。
2回目試験終了ぎりぎりまで、権限昇格を試行錯誤していて試験が終了しました。
試験から解放され、リラックスして朝食をとり30分後、すっきりした頭で試験の振り返りを開始して10分。取得していた情報の中に、権限昇格のネタを発見しました。
「もし1回目のように60点で終わったあとの10分だったら、悔やむに悔やみきれなかっただろう」
「あの10分を試験時間中に確保できていれば」と今でも何度か思い返します。
休憩は、試験監督の監視から離れて心理的余裕がある中、試験PC環境から物理的にも離れて、頭の中だけで情報整理できる時間です。
きっと、この時間が大切なのだと思います。 これは、ラボ環境だけではなかなか再現できない “本番独特の感覚” でした。
重ねて言います。 休憩 ほんと大事です。
本番24H試験のリハーサルが重要だということを書いている方は多くいますが、時間配分の確認もさることながら、この休憩の重要性に気づく事の大切さもあるのではないかと思います。
challenge labなどで24時間試験の体験を模擬する際は、「休憩時間も含めてメモを取り、休憩後に何が起こったかを体験する」ことも良いのではないかと思います。
まとめ:OSCPは「技術 × 判断 × 休憩」が揃って初めて前に進んだ
OSCPは人によって攻略法が異なる試験です。 私のやり方が万人に合うとは思いません。
ただ、一年を通して振り返ると、私の場合は最終的に次の三つが揃って初めて突破力が安定しました。
- Technique(個別技術)
- Decision Tree(判断の再現性)
- Rest(判断の質を保つための休憩)
特に「休憩」が、判断の質を支えるための柱になるという感覚は、本番で経験してはじめて理解できたものでした。
もし、
- 技術はあるのに結果が安定しない
- ラビットホールから抜け出せない
- 判断にブレがあると感じている
という方がいるなら、“判断を手順化する”という考え方が役立つかもしれません。
OSCPは、技術だけでも、判断だけでも突破できない試験でした。 私にとっては、「技術を判断に結びつける仕組み」を作ったことが、最終的な突破の鍵になりました。
この記事が、誰かの何かの役に立てたとしたら幸いです。
最後に
誰かが作成した良質な Decision Tree を入手すれば、あきらかに合格への近道になると思います。 ただし、それが本当に「自分のため」なのかは、よく考えた方がいいとも感じています。
技術が無いのに、やみくもに試行錯誤しても一生解答には届きません。これは時間の無駄かもしれません。 一方で、マニュアルに頼りすぎると、マニュアルに記載がない例外に出会った時の対応力はなかなか養われません。
いまになって、Try Harder という言葉は、一人ひとりの経験によって解釈が異なるのだと強く感じます。私にとっての Try Harder は、「判断と仕組みを自分で組み立てること」でした。 資格取得そのものはもちろんですが、この感覚を自力で体験できたことは、自分にとって大きな財産だったと思います。 ……が、やらなくてもよい無駄な試行錯誤も、たくさんしたなぁとも感じています。
あなたは、どのように判断しますか?
OSCP+取得者による、本ブログへの感想座談会
-
yasui: 1人だけの感想だけど、これ読んだ、他の最近のOSCP+取得者の感想はどうなのかな
-
Aさん: ほぼ同意です。長文になってしまいましたが以下感想です。
- 「判断の試験」について まさにそのとおりと思いました。 私も一回目の試験は不合格で、そのとき思ったのは「どこまでやればいいの?」でした。 おそらく合格者に聞いてもはっきりとした答えはなく、人それぞれ異なるだろうなと思いました。 もともとチートシートが不十分だったのもあったので、自分でチートシートを見直して、 「このポートが開いていたらここまでやる。これでダメなら別の手段を考える。」 と(なんとなく)決めてました。
- 「休憩」について 2回目の試験でAD攻略していたとき、権限昇格で5~6時間溶かしました。 もともと用意していた権限昇格のチートシートのとおりにやってもできず、無駄に何回も繰り返していました。 このままじゃだめだ、もう一度Enumerationからやりなおそうと考え、手を動かしていたら、そういえば怪しいxxxがあったな...となり、試行錯誤の結果、無事権限昇格できました。 xxxは、はじめにEnumerationしたときに見つけていて、20-30分くらい考え、これは違うなとなり放置していたものですが、改めて考えると、権限昇格ができそうな何かであることは明白でした。 休憩と似たような感じになるのですが、頭の中をリセット(やりなおす)するというのは、大切かなと思っています。
-
Bさん:
- 確かになぁと思いながら読ませていただきました。良質な decision tree があれば、OSCP の合格は問題なくできるのだろうと感じます。不要とは思いますが満点を目指すならひらめきや運が必要でしょうから難しいかもしれません。
- 列挙している際についつい気になり逸れてしまうことがあるので、decision tree などにより自身に制約を課すのは必要だったなと思いました。実体験として、入手した認証情報でRDP試したつもりなのに、試せていなかったことに気づくのに数時間要したり。。
- decision tree 通り試して仮に何もできなかった場合、実際の試験でどう処理することを想定しているのか(したのか)気になりました。
- yasui: 2回目は、Decision Treeはずれたことはやらない覚悟(その程度には仕上げたつもり)で臨みました。この質問への回答は、どうするか方針決めておき、Decision Treeに追記しておくネタですね。この試験、大抵は、上記「RDP試したつもり」で書かれているように試したつもりが漏れていた(自分で決めたルール通りにやれていない)となる確率が高いと思います。未知の範囲を探るよりは、自分で決めたルールに従って、もう1度やり直す方が合格に近い気がします。それで駄目なら、今回は勉強が足りていなかったと思い後で分析するためにエビデンスを残しまくるのがいい気がします。ちなみに、私が点取れなかった部分は、ルール通りに網羅したかというと、おなじように、全パターン認証試行やってみていなかったりします。 満点を目指すのは、膨大な経験・運・ひらめき の順で必要だと思います。 試験中Decision Treeをすべてやったつもりが合格点に足りず、パニック状態で、ひらめきをもとめて未知領域をさまようのは、結局、合格は遠のく気がします。この試験、点取れなかったところは、ログや記録残して分析して弱点補強した上で、何度も受ければ合格率UPする試験と思うので、ログや記録残さずさまようのはやめたほうがいいかなと思います。
- Bさん:「試験中Decision Treeをすべてやったつもりが合格点に足りず、パニック状態で、ひらめきをもとめて未知領域をさまようのは、結局、合格は遠のく気がします。」この部分、まさにその通りだと思いました。
- yasui: 2回目は、Decision Treeはずれたことはやらない覚悟(その程度には仕上げたつもり)で臨みました。この質問への回答は、どうするか方針決めておき、Decision Treeに追記しておくネタですね。この試験、大抵は、上記「RDP試したつもり」で書かれているように試したつもりが漏れていた(自分で決めたルール通りにやれていない)となる確率が高いと思います。未知の範囲を探るよりは、自分で決めたルールに従って、もう1度やり直す方が合格に近い気がします。それで駄目なら、今回は勉強が足りていなかったと思い後で分析するためにエビデンスを残しまくるのがいい気がします。ちなみに、私が点取れなかった部分は、ルール通りに網羅したかというと、おなじように、全パターン認証試行やってみていなかったりします。 満点を目指すのは、膨大な経験・運・ひらめき の順で必要だと思います。 試験中Decision Treeをすべてやったつもりが合格点に足りず、パニック状態で、ひらめきをもとめて未知領域をさまようのは、結局、合格は遠のく気がします。この試験、点取れなかったところは、ログや記録残して分析して弱点補強した上で、何度も受ければ合格率UPする試験と思うので、ログや記録残さずさまようのはやめたほうがいいかなと思います。
-
Cさん:
- decision treeは合格ライン突破という点においてとても有効だと思います。私自身もport,挙動ごとに必ず試す観点・レスポンスによるネクストアクションの場合分けは手元に資料にまとめてあります。linux machineの初期アクセス(web)は、見る観点が膨大なのでAD攻略などとは違いなかなかパフォーマンスが安定しませんでした。が、問題として出しやすい脆弱性があるので、そこに絞ってdecision treeのようなものを作成して試験は対応しました。
- labに関してもコメントしておきます。私は一応全machine解きましたが、machine解答によるポイントがなくなった今、labを解く意味はoffsecの問題の出し方の特徴をつかむ以外にないと思います。受講者の技術的なレベルにもよりますが、事前にhtbなどに触れている人は2~3個labをやれば十分かなと思います。(X,X,X あたりはやる意味はなかったです。この辺は試験対象外だったりするので、学習効率が悪いです)。勉強方法としては、ある程度数を解く前提で、解いた脆弱性に関して「発見方法・誤検知の挙動・コマンド」などを含む攻撃再現性の高いメモを手元に残すことを意識することが大切かなと思います。
-
Dさん: わかる、超わかると思いながら読ませていただきました🙂↕️ 共感ポイントが高い箇所は以下の通りです
- 「毎回、新鮮な脳で取り組まざるを得ないタイプ」, 「Decision Tree の整備」
- 私も同じく記憶力があまりないタイプなので、侵入後に真っ先に確認すること、初期侵入フェーズで行うことなどの行動指針をある程度決めていました。また過去に実行実績のあるコマンドも例としてまとめノートに記載して、攻撃が再現するようにしていました(SeImpersonatePrivilegeがあれば🥔系を数パターン, C:\配下に謎のフォルダが無いか, sudo -lをとりあえず確認...etc.) 併せてメモのテンプレート化もしていたのですが、結構役に立ったように思います。
- 「休憩は、時間の浪費ではなく、判断の精度を守るための“投資”」
- 調子がいい時はサクサク休憩なしでも行けるんですが、休憩しなかったことにより体力・精神力を使い果たしてしまい、後々ラビットホールにはまることもありました
- 休憩中、次に確認する箇所を整理できて次の行動に繋がることも多々ありました。あえて休憩を多めにとることが、判断精度を守ることにも繋がったなと思っています(ポモドーロ最高)
- 余談
- 試験中のやり取りは英語のみであったこともあり、なるべく判断力を維持するためにも「xx分休憩に行ってくる」、「猫の世話をしてくる」といったやり取りが発生しそうなことも一種のDecision Treeと考え、全てテンプレ化してました。コピペで済むので滅茶苦茶楽でした
- yasui: 同じく。試験中はほぼTaking 5-minute break now. Back now. の繰り返しだった思い出。
- 試験中のやり取りは英語のみであったこともあり、なるべく判断力を維持するためにも「xx分休憩に行ってくる」、「猫の世話をしてくる」といったやり取りが発生しそうなことも一種のDecision Treeと考え、全てテンプレ化してました。コピペで済むので滅茶苦茶楽でした
- 「毎回、新鮮な脳で取り組まざるを得ないタイプ」, 「Decision Tree の整備」