kuzushikiのぺーじ

セキュリティに関することを書きたいですね

GitHub Twitter

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月:一回目の受験、不合格

一回目は落ちました。

以下の理由により、心が折れてしまいました。

  1. 4時間かけてもバッファオーバーフロー(以下BOF)のマシン(25点なのでこれを落とすとほぼ受からない)が解けませんでした。
  2. その後手を出した10点のマシンも全然分かりませんでした。
  3. 試験監督との画面共有が頻繁に切れてしまい、気が散ってしまいました。

かなり悔しい思いをしたのを今でも覚えています。

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のリンク