本サイトは、快適にご利用いただくためにクッキー(Cookie)を使用しております。
Cookieの使用に同意いただける場合は「同意する」ボタンを押してください。
なお本サイトのCookie使用については、「個人情報保護方針」をご覧ください。
初めに
岩崎利己です。
私はMBSDに中途入社して2年目で、普段はWebアプリケーション脆弱性診断を行っております。
このブログでは以前に私が受験した、Altered Security社が提供する「Certified Red Team Professional (以下CRTP)」の受験記をお送りいたします。
弊社にはこのような資格の受験費用を会社が全額負担してくれる制度があり、この制度を活用してOffSec社が提供する高額な試験を受験している方もいらっしゃいます。
その方々もブログを公開していますので是非そちらもご覧ください。
Offensive Security Web Expert (OSWE) 受験記 | 技術者ブログ | 三井物産セキュアディレクション株式会社 Offensive Security Exploit Developer (OSED) 受験記 | 技術者ブログ | 三井物産セキュアディレクション株式会社
「セキュリティ資格色々受験したいけど、費用がネック…」という方は是非弊社へ…
CRTPとは
CRTPは、資格保有者がエンタープライズレベルのActive Directory環境を評価するスキルを保有していることを証明するビギナー向けの資格です。
また、試験環境ではWindowsの基本的なセキュリティ機構が有効になっており、それらの回避手法にも触れられています。
Certified Red Team Professional (CRTP)
認定は試験において24時間以内にActive Directory環境上の全ホスト(5台)上でコマンド実行を行い、侵害の詳細な手順、原因や対策をレポートに記載して提出することで取得できます。
試験環境はパッチが適用されており、既知の脆弱性を使用した侵害はターゲットに含まれません。あくまでWindowsやActive Directory環境における仕様の悪用や、設定の不備を突いて侵害を行う必要があります。
受験動機
当ブログ執筆時点で私はOffSec's Experienced Penetration Tester (以下OSEP)の受験を予定しており、OSEPやCRTPの受験記をいくつか拝見したところ、「OSEPのシラバスにあるActive Directoryの部分をある程度CRTPでカバーできる」旨の記載があったため、OSEPの事前準備として受験することを決めました。
また、私はOSEPの前段にあたるOffSec Certified Professional (以下OSCP)を以前に受験しましたが、試験の性質上Active Directoryに特化した内容ではなかったため、そこを補強するための資格試験としてちょうどよいと思います。
コースについて
CRTPのコースは自身のスキルレベルによって1~3ヶ月が選択できます。 選択した期間内であれば、試験環境を模したActive Directory環境にアクセスすることができ、コース資料の攻撃手法を試行することが可能です。
レッドチーム未経験者 | レッドチーム経験者 | レッドチームエキスパート |
3ヶ月($499) | 2ヶ月($379) | 1ヶ月($249) |
私は未経験なのに誤って1ヶ月のコースを選択していました。
コース期間中、長期的に体調不良になったり、結婚式の余興のダンスを練習しなければいけなくなったりとで時間が取れなくなり、コースを十分に修了できなかったため後から1ヶ月のコース延長を行いました。($199)
コースを通して学習する内容についてはAltered Securityのサイトに記載されており、おおまかに以下のセクションで構成されています。
- Active Directory環境の列挙
- PowerShellによる攻撃手法
- .NETによる攻撃手法
- ローカル権限昇格
- ドメイン内での権限昇格
- ドメイン内での永続化と環境掌握
- Cross Trust Attacks
- AD CSの侵害
- 防御と回避
- MDE EDR
- MDI
- 技術基盤と労働環境の変化
- 攻撃者を欺く技術
- 監視
試験を受けた感覚としては特に重要なセクションは1~3, 5~8です。 特に1の「Active Directory環境の列挙」については侵害の取っ掛かりとなる部分ですので資料を占める割合も多いように感じます。
試験に向けた学習
CRTPは他の一般的な資格試験とは異なり、「コースの開始 ≠ ラボ期間の開始」となっています。
まずコースの購入が完了すると、コース資料へのアクセスが提供されますが、ラボへのアクセス開始は購入から90日以内であれば遅延開始ができます。(Black Fridayセールで購入した場合は180日まで延長可能らしいです!) ですので受験記を拝見している感じだと「十分にコース資料に目を通す → ラボ開始」という手順を踏まれる方が多いようです。実際私もそうしました。
試験の準備
一通りコース資料に目を通した後は、ラボを利用して資料の内容を実践することで学習していきます。
基本的にはツールの目的、動作原理などを理解してからラボで実際の動作や出力の理解を行うというサイクルを回していく形で学習を進めました。
その中で頻繁に検知回避に使用されている「Invisi-Shell」と「NET Loader」というツールについて、特に興味が湧いたため、自身で再実装したものを試験で使うことに決めました。
OmerYa/Invisi-Shell: Hide your Powershell script in plain sight. Bypass all Powershell security features Flangvik/NetLoader: Loads any C# binary in mem, patching AMSI + ETW.
Invisi-Shell
Invisi-ShellはWindowsのCLR Profiler APIを使用してAMSIやPowerShellのScriptBlock Loggingなどのセキュリティ機構を無効化した状態のPowerShellを起動するというツールです。使用しているTechniqueは以下が該当します。 Hijack Execution Flow: COR_PROFILER, Sub-technique T1574.012 - Enterprise | MITRE ATT&CK®
CLR Profiler APIを使用するとマネージドコードのJITコンパイル時に呼ばれるコールバック関数を設定でき、その中でコンパイルされたネイティブ関数の先頭アドレスを取得し、パッチを当て関数を無効化することができます。実際にInvisi-Shellが関数にパッチを当てている様子が確認できます。
私はRustでInvisi-Shellの再実装を行いましたが、その際にオリジナルのリポジトリではネイティブコードにパッチを当てることでセキュリティ機構を無効化しているところを、コンパイル前の.NET中間言語(IL)を改変することで間接的に出力されるネイティブコードを操作する手法を取りました。
NET Loader
NET Loaderは.NETアセンブリを指定したファイルパスまたはURLから取得してメモリ上に読み込み実行する機能を有するツールです。実行前にETWやAMSIの関数をパッチする機能も存在します。
使用しているTechniqueは以下が該当します。
Reflective Code Loading, Technique T1620 - Enterprise | MITRE ATT&CK®
このツールはまず.NETのSystem.Reflection名前空間に存在する「Assembly.load」関数を使用して.NETアセンブリをバイト配列としてメモリに読み込みます。
関数が成功すると戻り値としてAssembly型のオブジェクトが得られ、そのオブジェクトのプロパティ「EntryPoint」を参照すると読み込まれた.NETアセンブリのエントリーポイントである「MethodInfo」型のオブジェクトが得られます。
最終的に「MethodInfo」型のオブジェクト内に定義されている「Invoke」メソッドを呼び出すことで.NETアセンブリのエントリーポイントを実行することができます。
こちらもRustで再実装を行いましたが、ネイティブコードからは.NETのSystem.Reflection名前空間などは当然利用できないためCOMインターフェース経由でCLRホスティングを行い、.NETアセンブリの読み込みからエントリーポイントの実行までを実装しました。
Hosting the Common Language Runtime | Microsoft Learn
試験
試験は24時間以内に環境に存在する5台のコンピュータ上(Bastionを除く)でOSコマンドを実行し、試験終了後から48時間以内にレポートを提出することが合格要件となっています。
OffSec系の資格とは異なり、試験開始前に試験時間には含まれない「環境のセットアップ時間」が1時間与えられます。この時間を使って試験環境への接続、環境へのツール転送方法の確立などを行っておくとスムーズに試験に臨むことができます。
また、試験スケジュールの予約やWebカメラによる監視もないためオンデマンドで試験を開始できるという体験が非常に良かったです。
試験の内容についてはコースを十分に学習していれば平易なもので、私は試験時間内にレポート作成+提出までを行いました。また、事前に作成しておいたツールもこちらの意図通りに動作してくれたため、特に障害もなく試験を終了することができました。
一部ハマった箇所はありますが、この手の試験によくある「列挙が不十分」というパターンでしたので躓いた場合は一度列挙からやり直すのが有効です。 (私の良くない癖ですが「初回の列挙で明らかになった攻撃可能性に固執する」ところがあります。)
レポートの書き方
試験においてどのように環境を侵害していったか、侵害の原因は何か、またそれに対する推奨対策を記載したレポートを提出します。 特に公式が提示するレポートテンプレートは無いため、ある程度自身で構成を考えておく必要があります。私は以下のような構成を各侵害手順毎に記載しました。
- 侵害に至った原因
- 侵害の手順
- 対策、緩和策
レポートはObsidianに書いていき、最終的にObsidian Pandoc PluginでPDF形式に出力しました。 OliverBalfour/obsidian-pandoc: Pandoc document export plugin for Obsidian (https://obsidian.md)
最後に
レポート提出から3営業日程度で合格通知のメールが届きました。
試験の感想としては、あくまでレッドチーム未経験の私の主観ですが、Active Directoryや検知回避手法に重心を置いて学習ができるため、内容の吸収効率は良いと思います。(OSCPは学習範囲が多岐に渡るためそれぞれのトピックスについての理解が曖昧なところがあります。)
試験難易度も難しすぎず、易しすぎずといった内容でOffSec系の資格のようにボコボコ落とされるということもなさそうです。
ただ、レッドチーム経験者の場合は少し物足りない内容かもしれませんので、自身のスキルレベルに合わせて上位資格であるCertified Red Team Expert (CRTE)やCertified Red Team Master (CRTM)などの受験を検討することを推奨します。
レポートは以上です。
繰り返しになりますがMBSDはこのような資格取得支援制度が充実しており、自身のスキルアップにもってこいの環境だと思います。弊社に興味のある方は是非、採用ページをご覧ください。
また、弊社ではリファラル採用も行っております。 お知り合いにMBSDの社員がいらっしゃる場合はそちらからのエントリーもございますので是非ご検討ください!
おすすめ記事