はじめに
先日、OSCP(PEN-200)を受験しました。噂に聞いた通り、肉体的・精神的にとてもハードな試験でした。結果は残念ながら不合格でしたが、再受験に向けて反省点を整理するため、またこれから受験する方に有用な情報を共有できたらと思い記事を書かせて頂きます。
OSCPとは
- OffSec社が提供するペネトレーションテストの認定資格
- 試験は実技のみで、最初の24時間で攻撃対象に脆弱性を突いた攻撃を実施し、その後24時間以内に攻撃の詳細を記載したレポートを提出する。
- 合格点 : 70点以上(トレーニング内で特定の条件を満たすとボーナスポイント10点が付与される)
- スタンドアロンマシン3台(local.txt取得で10点、proof.txt取得で20点)合計60点
- ADセット(Windowsマシン2台+DC1台) DCの管理者権限取得で40点
OSCP取得を目指した理由
セキュリティ関連の業務に関わる中で、ペネトレーション分野に興味が出てきたこと、またIPAが実施している各種筆記試験と異なり、OSCPは実際にマシンに対してペネトレーションテストを実施し、レポートを書くという非常に実践的な資格であったことから受験しようと思い立ちました。
唯一のネックはその受験費用でした、受験時期が円安の真っただ中であり、トレーニング(3か月)と受験資格のセットで $1600 、日本円にして約25万円!
半年ほど受験するか悩み続け、清水の舞台から飛び降りるような気持でトレーニングを購入しました。
トレーニング前のスキルレベル
資格
- 情報処理安全確保支援士(未登録)
- LPIC-1
- TOEIC(L&R) 765
スキル
- セキュリティ全般の基礎知識
- Linux,Windows系サーバの保守業務(2年)
- CSIRT業務(1年)
- Hack The Box(難易度Easyのマシンを中心に20台程)
OSCPは日本語対応していないので(2023年現在)、OSCPのテキスト、試験官とのやり取り、試験ガイド、レポートの記述まですべて英語です。とはいえGoogle翻訳などの翻訳ソフトを使用すれば十分対応できると思います。
事前に Hack the box で3か月ほどかけて20台のマシンを攻略しました。ペネトレーションの基礎知識が全くない状態から取り組んだため、難易度easyのマシンを攻略するのにもかなり時間がかかりました。正直今思い返すと、TryHackMeやHTB Academyで基礎知識を学んでからマシンに取り組んだほうが良かったと思います。
トレーニング期間に実施したこと
OSCP(PEN-200)のトレーニングには以下のものが含まれています
- 学習用のテキスト(PDFで800ページ以上)
- テキストの内容に対応したハンズオン演習(エクササイズ)
- LABと呼ばれる、企業ネットワークやOSCPの試験を模した複数のマシンで構成されている演習環境
時系列で説明します。
10月始め~11月中旬
- OSCPのトレーニングを開始
- 基本的に テキストを読み進める → 仮想マシンを使用したハンズオン演習を実施するという流れで学習を進めていきました。この時点でLABには手を出さず、まずは基礎知識を身に着けようという考えでやっていました。エクササイズの中には、一度テキストを読んだだけでは解けないものもあり、テキストが全て終わった後に改めて挑戦し直しました。
- トレーニング環境が3か月間しか使用できないということもあり、平日は2~3時間、休日は6時間程度 OSCPの勉強をしていました。
11月中旬~12月末
- テキストを全て読み終わり、エクササイズも90%以上完了したことで、ついにLABの攻略を始めました。
- LABには50台以上のマシンがあり、12月末ににトレーニング環境へのアクセスが終了するということで1日1台以上を攻略することを目標に取り組んでいました。攻略する際に、数時間進捗がない場合は公式のDiscordサーバでヒントなども貰いながら進めていき、最終的に50台以上を攻略してトレーニングを終えました。
1月始め~1月中旬
- トレーニングが終わってから試験日までは、チートシートの見直し、HTBのマシンを攻略、OSCPの体験記を読んだりして過ごしていました。
- 試験は1月の中旬に実施しました。本当はトレーニングが終了した直後に受験したかったのですが、12月の初めに受験日を予約をした時には、既に1月中旬まで試験枠が埋まっていました。
- 回数は決まっていますが試験日のリスケジュールも可能なので、できるだけ早く試験日の予約をすることをお勧めします。
試験前に準備したこと
試験に必要な物の準備、試験ガイドを熟読、試験当日の流れの確認、マシンに取り組む順番を事前に決める、等々をしていました。
試験で用意した物
- パスポート(別にスキャンした画像ファイルを用意 ※重要)
- WEBカメラ(外付け)
- サブモニター
- Widowsマシン(VirtualBox上のkali)
試験中はWEBカメラで試験官に監督され、試験前にWEBカメラで部屋の中を見せるように指示されます。内蔵カメラでもよかったのですが、取り回し易いだろうと思い外付けのWEBカメラを用意しました。
本人確認にパスポートを使用したのですが、WEBカメラで写した際に鮮明に映らず、事前にスキャンしたコピーを提出し確認してもらいました。
試験当日
試験開始から終了までの流れ
時間 | 説明 |
---|---|
08:30 | 試験前の本人確認、試験環境の確認、その後VPNで試験環境に接続 |
09:00 | 試験開始 |
13:00 | 休憩、昼食をとり、気分転換に少し散歩 |
14:00 | スタンドアロンマシン3台、ADセットのマシンに対して列挙をし一通り列挙し、脆弱性は発見したが、初期侵入への手がかりが発見できない。少し焦り始める。 |
14:40 | 列挙手順漏れがあり、もう一度列挙し、初期侵入への手がかりを得る。 |
15:00 | スタンドアロン①のlocal.txtを取得 |
15:30 | スタンドアロン①のproof.txtを取得 |
17:00 | スタンドアロン②のlocal.txtを取得 |
17:30 | スタンドアロン②のproof.txtを取得 |
18:00 | 休憩、夕食をとる |
19:00 | ボーナスポイント10点を取得していたため、スタンドアロン③を攻略して70点を目指す方針にする。 |
24:00 | 5時間進捗なし。眠気で何も思いつかなかったので仮眠する。 |
03:00 | 起床、もう一度スタンドアロン③を攻略する。 |
06:00 | 3時間進捗なし。絶望的な気分になる。 |
06:30 | 気分転換にADセットに手を出してみると、簡単に初期侵入の手がかりが見つかる。 |
07:00 | ADセット1台目の特権昇格に成功する。 |
09:00 | ADセット2台目の初期侵入の手がかりが見つからず試験終了 |
最終ポイントは50点でした。
反省点と改善策
反省点
- 外部に公開されているサービスへの列挙手順が確立されていなかった
→ 列挙漏れにより脆弱性が見逃す。同じ列挙手順を繰り返してしまい時間を無駄にする。 - 脆弱性らしきものが見つかると、残りの列挙手順を飛ばして脆弱性の調査に舵を切ってしまった。
→ 悪用可能な脆弱性を見逃し、ラビットホールに対する調査で時間を無駄にする。 - 1つのマシンに固執してしまい、戦略を柔軟に変えられなかった。
→ 攻略できる可能性のあったマシンに時間をリソースを割けなかった。 - 試験中に実施した内容を整理できる"メモ"を取らなかった。
→ 同じ列挙手順を複数回実施してしまった。列挙結果から次の列挙につながる情報を得られなかった。
改善策
- 列挙~権限昇格までの列挙手順をまとめ、手順通りに実行する。
- 脆弱性らしきものを見つけても、残りの列挙手順を飛ばさない(OSCPのテキストに書いてあります...)
- 場当たり的にマシンを攻略するのではなく、事前にスケジュールや制限時間などの決まりを作っておく。
- 試験中に実施した内容、列挙した結果、コメントなどを体系的にまとめたメモを取る。
最後に
反省点を見てみると、OffSecが強く推奨していることばかりでした...
コマンドやツールの使い方などをチートシートにまとめていれば十分だと高を括っていた部分があり、試験が終わった後に多くの気づきがありました。
技術的な部分だけでなく、ペネトレーションテスターとして必要なスキル、考え方を習得していることが求められているなと強く感じました。
再試験まで1か月以上あるため、今回の反省点を生かしてトレーニングを重ねていきたいと思います。今回の記事がOSCPに興味のある皆さんの参考になれば幸いです。