はじめに
この記事はどれくらいでOSCPに合格できそうかイメージをつけてもらうために記載しております。
そのうえで、実際の試験の内容は伝えれないですが、試験の流れ的なところで困ったことを記載しておきます。
レポート提出後
24時間後くらいでメールがきました。
OffSec プラットフォーム上でOSCP+とOSCPのバッジが表示されます。
OffSecのバッジからLinkedInとかへシェアできます。
受験までの準備
2回目合格で、1回目はシラバスとSecura&Reliaが終わったタイミングで試験がどんな感じか受けてみたんですが0点でした。
Proving Groundの場所がわかりづらく、すでに終わったコンテンツだと思ってました
まだ存在していることに気づいてからはHack The BoxじゃなくてProving Groundをメインで進めました。
初回受験から1か月後(Proving Ground+30台とOSCP A/B/Cを合格ラインまでやって)に再受験したら合格しました。
- シラバスはExtra Mile以外をほぼ終わらせてる状態 知ってるとこは飛ばしてもいいくらいの感じでやってはいたが詰まったら上から順番にやり直してた
- Hack The Box => Windows/AD系のマシンを10台
- OffSec Proving GroundでWindowsマシンを10台 Linuxを20台くらい 計30台
- チャレンジラボ Selia(3台) Medtech(7台) Relia(1台) 計14台
- チャレンジラボ OSCP A,B,C(AD 9台 スタンドアロン8台) スタンドアロン1台のこしづつ 計17台
シラバスを除いて、71台くらいマシンをやってる気がする
(困ったらWlakthroughを見たから自力でFlagを取ったのはそんなに多くない)
下記のやつに従ってやってた。
受験前のラボにかけた時間の目安
- 苦手な奴は途中休憩したりして、実際のラボにかけた時間より乖離しているかも? 4時間くらいだと思う
- Hintはわからないときは積極的に使ってた、Hint使わないと解けない=合格できないではない
- ツールを変えるとうまくいくパターンで詰まりやすい気がする
- ヒントなしでとけたものでも、疑問に思ったらWalkthroughをみて、推奨手順を見てみると勉強になる
試験中に困ったこと
調べるとOSCPを不合格した人の記事が出てきて、点数が足らないからみたいなことが書かれていた
試験
月曜の12時開始(週休三日 日月火のため)
- ブラウザの問題で試験官が入ってきてるけどメッセージが届いてなかった
- メールにブラウザリロードしてって来てて、その後試験前準備を行った
- +45分後開始
- ADセットから対応
- 20分で最初のマシンのProof
- +1時間後に2台めマシンのProof
- +1時間20分後にADのマシンのProof 2時間40分
- +15分後にスタンドアロンのLocal
- 全然見つからなくて風呂入ったり、気分転換結構してた
- +7時間25分後にスタンドアロンのProof
- +2時間25分後にスタンドアロンのLocal 12時間45分(+45分)
- ノートを確認して睡眠
軽めの休憩はFlag取るたび or 新しい情報が見つかったりして本格的に調査する前に or 行き詰ったりで 取ってた
- 翌日試験終了時間とちょっとくらいからレポート書き始めて22時くらいで終了
適宜ご飯、たばこ、マンガ読んだり気分転換しつつ、10時間くらい使っていい感じに仕上げた
各フェーズで困ったこととか
外部からの列挙
- 全部にいえることだが、うまくいきそうでいかないときはツールを変える
- ポートスキャンはRustscanを使っていたが UDPでのスキャンができないのと、踏み台経由で転送するときには大量スキャンでプロセスが落ちるので、ケースによってはnmap
- feroxbuster と gobusterは両方使うといい気がするが、出てくる情報量が多い場合にはgobuster最初がいい
- netexecのモジュールは結構よさそうな雰囲気がある EternalBlueやZerologonの脆弱性をとりあえず確認する際に使用
*一部は自動エクスプロイトになるかもしれないから注意 - 困ったらHackTricksでポート番号を見る
権限昇格
- 権限昇格は手動列挙を最初に行う
- linux-exploit-suggesterやwindows-exploit-suggester(wes-ng)はとりあえず早めに見る
- WinpeasやLinpeasは情報量が多いから後回しにしがち
- mimikatzでできることをimpacketでもできるようになるとよい
- 非同期実行ができるとどんなツールでも使いやすくなる気がする
*サービスを作って実行、スケジュール作って実行とか(一部ツールがタイムアウトで一瞬できれるとかある)
*ユーザを作成するでもいい - WindowsでCLIでユーザを切り替えて実行する方法とかも使えたほうがいい RunAsCs.exe
エクスプロイトを探す
- searchsploitは--cveを多用 --jsonでcve番号を見るとかでもいい
- gh (Github-CLi)を使い始めたら結構いい感じになった => CVE番号がわかってる状況なら検索で見つかりやすい
- 毎回バージョンの特定を行ってから検索する、あてずっぽうでのエクスプロイト実行はやめたほうがいい
- 製品とバージョンがわかった場合にはsploitusが最強な気がする
ツール
- 他の人が使ってるツールとか、有用そうなツールは積極的に使う
*個人的にはデフォルトツールとか、デフォルトコマンドで済ませたがるタイプだけど、便利なツールを使うと列挙とか早くなる(一方でゴミ情報とかも多くなるかもしれないが)
リバースシェル
- ポート番号を使われやすいWell-Knownに対して行うとブロックされづらい(53 80 443 445 etc)
ちなみに情報収集、列挙系はトラブルシューティングとか、SOC/IRとかで解析とかやったことあれば有利かも?
総合的な知識が試される気がする
まとめ
- 特定のツールとかに依存しすぎないほうがいい、ローカルでしかできないことがあったら、リモートからできるほうほうやツールがないかとか探したほうがいい
- Try Harderが質を高める作業だとしたら、WalkthroughやHintをみるは数をこなすだと割り切って、両方いい感じに進めたほうがいい
- つらくなったら答えを見て(見れるプラットフォーム)で数をこなす、調子がいいときはTry Harderで質を上げるがおすすめ
そのほか有用なリンク
SQLiで困ったら
ツールを探したいなら
hashcatのモード







