My OSCP Journey
OSCPに合格しました!!
まずは証拠
レポートを提出してから4日後に合格通知が届きました。
めっちゃ嬉しいです!!
OSCPとは
ペネトレーションテスト(以下ペネトレ)の資格です。
試験は48時間あります。
最初の24時間で、5台のマシンを攻略していきます。
その後の24時間で、マシンの攻略手順をレポートにまとめ、提出します。
マシンの配点は10点、20点、20点、25点、25点で、計70点以上取れれば合格です。
また、「ラボ」と呼ばれる、ペネトレの練習環境が与えられます。
ラボの期間は30日・60日・90日から選べます。
90日の場合は13万円くらいかかりますが、90日コースをオススメします。
私の経歴
大学院で暗号の研究をしていました。
一応セキュリティには携わっていましたが、ペネトレ関連の知識は皆無でした……
一年ほど前に、セキュリティの勉強としてCTFに手を出したら、いつの間にかハマっていました。
そこから、セキュリティの診断業務に興味を持ちました。
現在はとあるセキュリティ企業でWebの脆弱性診断を学んでいます。
受験したきっかけ
CTFが好きで毎週のようにやっていましたが、あまりスキルが身についている感じがしませんでした。
ならば資格を取ろう、と思い、CTFに近い形式の試験が無いか探したところ、OSCPが良さげでした。
(他にオススメがあればぜひ教えてください!)
合格までの道のり
2月~4月:ラボで勉強
テキストをさらっと読んで(exerciseは飛ばしました)、ラボのマシンを攻略していきました。
まったくの素人だったので、かなり苦戦しました。
一応ヒントらしきものが受験者専用の掲示板で見れるのですが、あまり役に立ちませんでした。
ずっと悩んでいても仕方が無いので、「3日で解けなかったら次に進む」、というルールを作って取り組みました。
結局、全部で約60台(今はバージョンアップされてもっと増えている)あるマシンのうち、20台しか解けませんでした。
もったいなかったですね。
5月:一回目の受験、不合格
一回目は落ちました。
以下の理由により、心が折れてしまいました。
- 4時間かけてもバッファオーバーフロー(以下BOF)のマシン(25点なのでこれを落とすとほぼ受からない)が解けませんでした。
- その後手を出した10点のマシンも全然分かりませんでした。
- 試験監督との画面共有が頻繁に切れてしまい、気が散ってしまいました。
かなり悔しい思いをしたのを今でも覚えています。
1,2の原因は明らかな練習量不足、3は家の回線の問題でしょう。
3の対策として、LANケーブルを買って、無線LANを有線にしました。
6月:HTB、VulnHubで勉強
一回目の反省として、練習量が全然足りないことを痛感しました。
OSCPのラボの期間を延長しても良かったのですが、Hack The Box(以下HTB)とVulnHubをやることにしました。
というのも、HTBやVulnHubは分かりやすい回答が公開されているからです。
OSCPのマシンに似たマシンのリストが公開されているので、参考にしました。
とりあえず回数をこなしたいと思ったので、30分考えて、分からなかったらすぐに答えを見るようにしました。
1台のマシンを攻略し、その過程をレポート形式でまとめる、ということを日課にしていました。
かなりハードでしたが、試験に落ちた悔しさが私を奮い立たせました。
7月:2回目の受験、合格
2回目は無事に合格することができました。
今までに解いたマシンのレポートを参考に、それらの要点をまとめたチートシートを作成することで、試験に備えました。
また、有線にしたのが功を奏したのか、一度も試験監督との接続が切れることはありませんでした。
試験当日
- 13:00
試験要項を読みつつスタンバイ
- 13:40
接続の準備
- 14:00
試験開始
まずBOFマシンに取り掛かりました。
その間にAutoReconで他のマシンの情報収集をしました。
- 16:00
なぜかBOFができない…
前回の出来事が頭をよぎりました。
一旦中断して、10点マシンに取り掛かることにしました。
- 16:30
割と簡単にroot shellを取れました!
とりあえず一安心しました。
1つ目の20点マシンに取り掛かりました。
- 18:30
local shellを取得しました。
- 19:30
root shellを取得できました!
キリが良いので、ごはん休憩を取ることにしました。
餃子を食べました。
- 20:00
2つ目の20点マシンに取り掛かりました。
- 23:00
3時間たっても何の手掛かりも得られなかったので、25点マシンに取り掛かりました。
- 24:00
途中でひらめいたので2つ目の20点マシンに戻りました。
その後すぐにlocal shellを取ることができました!
- 02:00
root shellも取得しました!
一旦BOFマシンに戻りました。
- 03:00
無事BOFを解くことができました!!
offsetの値を勘違いしていたのが原因でした…
この時点で総得点が10+20+20+25=75となり、合格点に達したので、先にレポートをまとめることにしました。
- 08:00
これまで解いたマシンをリセットし、もう一度解けるか検証しつつ、レポートにまとめ終わりました。
流石にヘトヘトだったので寝ることにしました。
- 10:00
緊張であまり寝付けませんでした…
ぼんやりとしながら、25点マシンに取り掛かりました。
- 11:00
どうにか25点マシンのlocal shellを取ることができました!
すぐに検証しつつレポートにまとめ直しました。
- 12:00
もう合格点に達しているのですが、最後までやりきろうと思い、25点マシンの権限昇格に取り組みました。
- 13:45
ここでタイムアップ!
一気に緊張が抜け、疲れが押し寄せてきたので布団に倒れこみました。
- 9:00
レポートの体裁を整え提出しました。
アドバイス
先にHTBやVulnHubなどから取り組む
OSCPのマシンは答えが公開されません(ヒントはたくさんありますが)。
なので、ペネトレ未経験だとどうしても時間がかかります。
一方で、HTBやVulnHubは分かりやすい回答が公開されています。
(ippsecさんがオススメ)
というわけで、HTBやVulnHubなどから取り組むことを強く推奨します。
バッファオーバーフローに出てくるoffsetの値に注意!
とある数列によく似ていたので空目しました。
感想
48時間の試験は疲れますね…
ただそれ以上に楽しかったです。
試験中はwebカメラごしに監視されているのですが、shellを取れたときはガッツポーズをかましてました。
資格を取るまでにかなり時間がかかりましたが、その分たくさんのことを学べました!
みなさんも挑戦してみてはどうでしょうか? -> OSCPのリンク