白状すると8月に1回落ちました。
自分史上、本気で準備して不合格だった試験は初めてで、超へこみました。
というか「これ落ちるかも…?」と試験終盤に頭をよぎった時からへこんでました。
でも案外、試験後に寝て起きたらすっかり回復してました。
9月に自費で再受験してようやく合格。
嬉しさもあるけど、それより「もう受けなくてもいいんだ」という安堵感の方がよっぽど強い。
OSCPがハードな試験なのは間違いない。
技術的スキルも必要だが、それよりも精神力が重要な試験だ。
つまり、OSCP受験を通して、自分は技術的にも精神的にも成長したと言える。
思うさまメモする。
準備
過去の投稿でも書いている通り、ガイドを読了した後、残る休暇3週間はほぼ1日1台のペースでラボマシンを攻略していた。
難しいやつでも簡単なやつでも、とにかく目標は1日1台。
30分で終わることもあれば17時間かかることもあったが、とにかく毎日新しい挑戦をする。
使ったことのない攻撃手法やツール、名前も知らなかったサービス、ニッチな脆弱性攻撃。
ターゲットを攻略していくことで少しずつ自信を積み重ねていく。
実際、この期間で合格に必要な技術的スキルはほぼ身に着いていたと思う。
休暇が明け、7月1日に仕事に復帰すると、さすがにペースを保つのがきつくなってきた。
何しろ7月中旬から1か月以上ほぼ間断なく出張なのだ。
現地での仕事に備えてやっておくことも多い。
そういうわけで、7月上旬はBOFを復習。
ガイドを読み、エクササイズをやり直し、『dostackbufferoverflowgood』と『Brainpan』もやった。
7月中旬から7月末にかけて再びラボに戻り、5台ほど攻略。
8月上旬はHTBをいくつかやってみたが、正直あまり面白くなかったのでこれはすぐやめた。
受験(1回目)
会社の都合で8月中に受験しなければならなかったため、3連休で受験。
エナジードリンクを買い込み、お夜食も用意して臨んだ。22時開始。
開始3時間で2台攻略し、35得点。
かなり良いペースだった。
更に6時間後、3台目を攻略。この時点で55得点。
残る15時間で15得点できれば合格。20点のマシンを1台倒せばいい。
少し頭が疲れているがエナジードリンクで誤魔化す。この調子でもう1台攻略してしまおう。
この時はかなり希望を持っていた。
数時間が経過し、一向に糸口が掴めずにいた。
管理者権限どころかinitial shellも取れずにいる。
稼働しているサービスに対し、考えられるあらゆる攻撃を仕掛けた。
しかしいずれも奏功せず。時間だけが過ぎていった。
さらに数時間が経過。まったく進展なし。
何かを見落としているのだろうとは思っていたが、頭が疲れ果てており何も思いつかない。
少し休むべきではないかと思ったが、同じ配点だった3台目に6時間かかったことを考えると、寝てしまっては時間が足りなくなる可能性があった。
焦りが大きくなり、それに比例して「落ちたくない」という心理も強くなっていき、
しかし活路は見出せず、ノイローゼのような精神状態である。
もう1台の方に切り替えようかとも考えたが、行き詰っているマシンよりも配点が高い相手を今から倒せるとも思えず。
結果として、15時間まったく進捗なし。55得点で不合格が確定した。
これが60点ならまぁ、残り24時間でラボレポートとエクササイズレポートを提出すれば10点が加点されて70得点となり、合格ラインに達する可能性はあった。
しかし55点。レポートを作る元気もなく、OSCPの窓口に「レポートは出さない」とメールしてバタンキュー。
こうして1回目の挑戦は終わった…。
反省点
寝なかったこと。それに尽きる。
事前に、「睡眠は重要です」とか「睡眠が奨励されます」とか、そういった内容の受験記はいくつか読んではいた。
しかし睡眠の重要性を過小評価し、自分の体力や気力を過信していた。そんなつもりはなくても、そうだった。
試験後に疲れ果てて眠り、目を覚ました瞬間に4台目の攻略法がわかったと同時に、自分の過ちに気付いた。。
試験機の難易度
どんなマシンが出てくるのか事前にはわからないので、難易度の感じ方は自分の得手不得手に左右されると思う。
自分の感覚だと、ガイドの内容を正しく理解していれば35点(一番簡単なマシンで10点+BOFマシンで25点)は間違いなく取れる。
20点マシンとBOFじゃない方の25点マシンはラボの多くのマシンより難しく、しかしラボの最難関級のマシンほどではないと感じた。
準備(2回目)
再受験まで4週間空けなければならない決まりだったが、その間は正直ほとんど何もしなかった。
技術的には充分合格ラインだと思っていたし、仕事が忙しかったというのもある。
HTBで1つ2つやってはみた。それだけ。結果には全然寄与しなかったと思う。
受験(2回目)
21時開始。
2時間で2台攻略し、35得点。さらに2時間弱でもう1台攻略し、開始4時間ほどで55得点。
前回を上回るハイペースでかなり順調だったが、前回はここから詰まったんだよなと思い返し、少し緊張した。
その後4時間、4台目の20点マシンに取り組むも進展なし。前回と同じ展開になるかと少し暗い気持ちになるも、前回の反省を活かしてここで仮眠を取ることに。
寝ることで時間が足りなくなったらどうしよう、と思わないでもなかったが同じ轍を踏みたくなかった。
他人には理解し難いかもしれないが、自分が「試験中に寝る」など従来あり得なかったことだ。
6時間睡眠。残り時間は10時間。
2時間ほど4台目に取り組むもやはりまったく進まない。少し焦り始めた。
思い切って5台目に取り組む。
実はここまでの間に使えそうな脆弱性は見つけていて、なんとなく攻略の仮説は立てていたが、決定的なピースが欠けているような状態だった。
3時間ほどかけてinitial shellを取得し、さらに1時間ほどで権限昇格に成功。
この時点で80得点、残り6時間弱。
点数は充分だしレポート用の証跡の確認がしたかったので、4台目は捨てて、他の4台で攻撃手順を再現しながらスクリーンショットやコマンドを集めていった。
2時間ほど残して試験を終了した。
レポート作成
有志が作ったテンプレートを使った。
日本語訳して内容を確認し、いくらか文章と構成を変えた。
内容を細かく作り込むのに案外時間がかかり、10時間ほどかけて45ページ作成。
この時、記載したExploitの証跡に若干の不備があることに気付いた。
(実行結果に影響はないが、レポートとしては美しくないものだった)
とはいえもうVPNは切られているし、証跡を取り直すことはできない。
そのまま決められた手順でレポートをアップロードし、窓口にメール連絡した。
その後
数時間後、レポートを受領した旨の通知が来ていた。
さらに50時間ほどして、合格を知らせる通知が届いた。
全体の振り返り
5月にトレーニングを開始してから合格するまで約4か月。
この間、ペネトレーションテストの方法論を体系的に習得し、効果的な手順で侵入・権限昇格するスキルを得ることができた。
様々なプロトコルやサービス、製品に対する攻撃ベクトルを理解し、OSごとの着眼点を把握できた。
トレーニング期間や試験はハードだったが、おかげで独学より圧倒的に早く成長できた。
ある程度は基礎知識が必要だが、この分野でキャリアを積みたいと考えているあらゆる人におすすめできる良いトレーニング・試験だと思う。
ちょっとお高いけどね。