不合格記。4/1だけど嘘ネタではない。
時間がない人へのまとめ
ちゃんと計画的に勉強してChallenge labをしっかりやれ
続きを読む: OSCP不合格記はじめに
先日、OSCPの試験を受けて見事に撃沈した。
さすがにアドベントカレンダーのネタにするには後ろ向きなのでそれとは別に放流することにした。
これから受ける人の反面教師になれば。
(注:エントリ作成始めたのが12月なのでアドベントカレンダーに言及している。ずっと延ばし延ばしにして今は4月である)
経緯
2023年の年末に、セールで安くなっていたOffSecのLearn Oneサブスクリプションを購読した。その後少し学習したのち停滞、たまに権限昇格などのトピックを参照するレベルであった。
そして11月、いい加減やばいぞと思って試験を申し込む。この時点でモジュールは初見のものが結構ある状態。
試験日まで頑張ってなんとか範囲のモジュールは終わらせた(新しくAWSのモジュールが生えてたけどそちらは放置…)。Module lab, Capstone labはやったものの、Challenge labはまったくの手つかず状態のまま。
そして試験でズタボロ。Standaloneマシンで1 userとAD SetのWSで1 adminしか取れず、当然不合格と相成った。
反省点
Challenge lab
確実にダメだったのはChallenge labを1つもやっていなかったこと。各モジュールにあるCapstone labもModule labより難易度が高めでヒントを見ながら解いたものもあったのに、より試験環境に近いChallenge labをやっていなかったのは自殺行為。どうしてやっていなかったのかというとギリギリまで放置してしまっていたから。というわけでこれからPEN-200およびOSCP試験に臨まれる皆様はちゃんと計画立てて進めていこう。
レポート作成の練習不足
レポートについては「大体こういうことを書いておけばいいんだな」ということは把握していたものの、実際に書いてみるということをしていなかった。なので試験のレポート作成時に結構手間取った。普段から作業中にメモを取ることが少ないので後からターミナルを遡ってスクショを撮ってなどという二度手間をしていた。これも事前にChallenge labなどでメモを取りつつテスト実行しレポートを書くという練習をしていればレポートを考慮した効率のいいメモの取り方などが確立できていたであろう。
結局、どういう方向から切り出しても計画性がなく準備不足だったということになるのである。同じ轍を踏まないように心掛けてほしい。
Tipsなど
いくつか後続の人に役立つであろう知見があるので共有
VPNの設定
OSCP試験というかPEN-200のラボにはOpenVPNで接続するのだが、ターゲットのマシンに接続しようとしても応答がないことがある。パケットを見てみるとターゲットマシンからの応答が途中で途切れている。恐らくラボ内のネットワークのどこかのMTU値が小さめのため、それより大きいサイズのパケットを送ろうとしてドロップされているものと思われる。.ovpn
ファイルに以下の1行を加えてやることで対策できる。
mssfix 1340
環境によっては1340より小さい値にしなくてはいけないかもしれない。これでうまくいかなかったら値を小さくして試してほしい。
この問題、OffSecのDiscordを見てるとちらほら出てくる問題で、そのくせFAQなどには書かれていないという非常に酷い罠となっている。とはいえDiscordでのヒット数は多くはないのでもしかしたら私の環境(IPv4 over IPv6)が特殊なのかもしれない。
受験環境
受験環境のレギュレーションは厳しく、周囲に電子機器がない環境を求められる。スマホは持ち込めない。電源が入ってないモニタなども移動させられたというような話をどこかで見た。また、試験中は常に画面の録画が行われる。こういう状況ではマルチモニタは鬼門である。普段私は4K+Full HDのデュアルモニタ構成でPCを使っているが、OSCP試験の受験に際しては4K 1枚のみとした。下に示すのが受験環境を撮影したものである。試験後に撮ったのでケーブル周りがおかしいかもしれないが気にしないでほしい。
実は写真に写っていない部分に段ボールが積んであったりその上にぬいぐるみが置いてあったりしたが、そこについては特に何も言われなかった。電子機器でなければ問題はない模様。
机の上に写っている赤いものはパスポート。試験開始前に本人確認のためにパスポートの顔写真のあるページをWebカメラに映すことを求められる。私の場合、うまく映らなかったようでパスポートを撮った写真はないか聞かれた。たまたま過去の防衛省サイバーコンテストに申し込みした際に撮ったもの(初期はパスポート写真を求められたのだ)があったのでそれを送って事なきを得た。トラブル時に備えてパスポートの写真を撮っておくと良い。
私の場合は通常業務に使っている部屋は電子機器だらけだったので、半ば物置になっていた部屋を使った。しかし着座環境が悪くだいぶ腰が痛くなったのでいつもの部屋から電子機器を追い出した方が良かったかもしれない。もしくは背の高い机を調達してくるか。
また、試験前にWebカメラで部屋の四隅と机の下を映すように言われるので、Webカメラのケーブルは長くしておいた方が良い。
休憩や食事、睡眠などで試験途中に離席する場合は試験管にチャットで”Take a break.”と伝えてから離席し、戻ってきた時に”Returned.”と伝えるだけでよかった。OKなどの反応を待つ必要は無し。とはいえ水を取りに行く程度でやるのも面倒なので大きなペットボトルなどを持ち込んでおくのが良いかと思う。
使ったツール&サイト
PEN-200で出てこないもののみ記載。また特定のマシン攻略に使ったものはネタバレになるので記載していない。
Obsidian
チートシート作成&レポート用のメモ作成用に使用。モジュールで出てきたコマンドは一通り入れていった。本当はマシン攻略時にメモやスクショを貼っておいてそのままレポートにできるようにしたかったのだが、前述の通り準備不足でそこまではできなかった。Notionでもよかったのだが、Notion AIがあるだけでAI使った判定されるのが怖かったのでAI系のプラグインの入っていない素のObisidianを使用した。
Reverse Shell Generator
リバースシェルをいちいち手で修正するのが面倒だったのでこのサイトを活用。bash
もPowershell
もありそれぞれ複数パターンあるので1つがうまくいかなかったら別のを試すことが可能。
RustScan
高速なポートスキャナ。これで開いてるポートを探してnmap
で詳細にスキャンするというやり方が鉄板。1バイナリで提供されているのでファイルを送り込めば侵入先でも動かせる。Windows版もあるのでとりあえず使える、使っておいて困らない。
NetExec
CrackMapExec
は更新がされていないのでその後継であるこちらを使用。オプションなども同じなので使用感も変わらず。
ligolo-ng
ポートフォワーディングのために使用。WindowsもLinuxもエージェントが1バイナリなので簡単に使える。ルーティングテーブルを追加してくれたりなどポートフォワード/トンネリング周りの面倒なことはやってくれる。
laysakuraさんの動的チートシート
これを見かけてから「よし絶対使ってやるぞ」と思って用意していたのだが、前述の通りあまり攻略できなかったのでそれほど活用できなかったのが残念。
終わりに
完全に自業自得の不合格であった。幸いにして4月からの予算を確保できたのでもうひと頑張りしてみる所存。次は合格記を書けますように。