はじめに
先日、Certified Red Team Expert(以下、CRTE)という資格を取得しました。 本記事では、CRTEとその関連トレーニングであるWindows Red Team Lab、そして私がCRTEを取得するまでの道のりについて解説します。
CRTEとは
CRTEは、サイバーセキュリティの教育企業であるPentester Academyによって認定される、WindowsのActive Directory環境に対するペネトレーションテストの資格です。 Pentester AcademyのWindows Red Team Labというコースを受講すると、CRTEの受験資格が得られます。
公式サイトによると、CRTEの保有者は、ネットワーク情報の把握や権限昇格、なりすまし、横展開、設定不備の利用などをとおして、複数のドメインやフォレストが存在するWindowsネットワークのセキュリティを評価する能力を持っている、ということになります。
私は昨年のBlack Hat USAでPentester Academyが主催する「Active Directory Attacks for Red and Blue Teams - Advanced Edition」というトレーニングを受講しており、トレーニング受講の成果を試してみたくなったので、CRTEの受験とそれに付随するコースを受講することにしました。
Windows Red Team Lab概要
Windows Red Team Labのコースを申し込んでいきなりCRTEを受験してもいいのですが、通常はまずコースを受講します。
このコースに申し込むと、ラボ環境へアクセスするのに必要な情報が送られてきます。 受講者は、VPN経由もしくはWebブラウザで演習用のWindows仮想マシン(以下、受講者VM)にアクセスし、そこからラボ環境上の各サーバーにアクセスすることになります。
ラボ環境へのアクセス情報に加えて、受講者には100ページ程度のスライド資料と合計3時間程度の講義動画、そして各サーバーに対して設定された課題(フラグ)のリストが提供されます。 講義スライドと動画さえあればすべてのフラグを取得できるかというと全然そうではなく、Windows環境についての幅広い知識が必要です。下記はその一例です。
- Microsoft SQL Serverへの攻撃手法(権限昇格やコマンド実行、リンクサーバーなど)
- 基本的なフィッシング攻撃の手法
- プロセスメモリやレジストリからの認証情報取得
- WMI(Windows Management Instrumentation)やタスクスケジューラを利用したリモートコマンド実行
これらの知識がない状態でこのコースを受講するとかなり苦労することになるので、Pentester Academyが開講している「Attacking and Defending Active Directory Lab」などで事前に学習しておくことをおすすめします。
また、各種ブログでの情報収集も必要です。 このコースの作成者の意図としては、目的を達成するために幅広い情報源から情報収集するということも実習の一部としてあるのではないかと思います。 私は今回、下記のブログを中心に情報収集を行いながらコースを受講しました。
- Lab of a Penetration Tester
- harmj0y - security at the misfortune of others
- NetSPI Blog
- Red Teaming Experiments
Windows Red Team Lab受講
ラボ環境で学習できる期間は最短で1カ月、最長で3カ月です。 私は昨年12月に3カ月分のコースを申し込んで学習を始めました。
受講者VMに接続したところ、ツールらしきものは何も置かれておらず、しかもActive Directoryドメインの一般ユーザー権限でのログオン状態でした。 というわけで、まずはツールの転送やローカル管理者権限の取得から始め、その後にラボ環境の探索へと進んでいき、最終的に60個すべてのフラグを取得できました。
上記でさらっと「すべてのフラグを取得できました」と書いていますが、実際は1つ1つのフラグを取得するのにかなり苦労しました。 そんなときに助けとなったのが、コースのサポートです。 コースを始めて1カ月近く経ったとき、どうしても先に進めなくなったので遠慮がちにサポートに質問メールを出してみたところ、2時間くらい後にかなり詳細な説明を返してくれました。 こういう類いのサポートに質問しても、「まあ頑張れ」としか返してくれないと思っていたので、かなり救われました。 その後も何度かサポートとやり取りし、コース開始から2カ月ほど経ったころ、すべてのフラグを取得できました。 思えば年末年始も帰省先の実家で何も手伝いをせず、ただひたすらに演習に打ち込んできたわけで、コースの紹介サイトにある「200 Hours of Torture」というのは本当だったなあと思った次第です。
なおフラグの内容は、パスワードやNTLMハッシュといった認証情報だけではなく、アプリケーションの設定ファイルやデータベースに格納されている重要情報など、普段私がお客様向けのペネトレーションテストで取得目標にしているものも含まれていました。 単にサーバーの管理者権限を取得して終わりではなく、企業活動に影響を与えうる情報の取得も目的としていることから、このコースはペネトレーションテストを仕事にしている方々や、これから仕事にしようとしている方々にとって非常に実用的なものだと言えます。
その後、ラボ環境を使用できる期間がまだ1カ月ほど残っていたので、ひたすらサーバーたちへのアクセスに明け暮れました。
CRTE予約
コースを3月末に終え、CRTEの受験を4月初めに予約していたのですが、予約直後に在宅勤務となり、当初受験場所として想定していた職場の環境が使えなくなったため、一旦予約をキャンセルしました。 5月に入って自宅での仕事環境も快適になってきたことから、6月初めに受験予約を入れました。 開始時間は18時で、それまでに仮眠や夕食などを済ませておくことにしました。
CRTEの試験内容について詳しくは書けませんが、試験ネットワーク上のすべてのサーバーを攻略し、報告書を書き上げて提出するまでを48時間以内に行うことで合格となります。
CRTEの報告書では、各サーバーの攻略に至るまでの詳細な操作手順・コマンドをスクリーンショットも交えて説明しなければならないのに加え、各サーバーに対して実施すべき具体的な対策も提案しなければなりません。 業務で行うペネトレーションテストと同様、「やりっぱなし」ではなくアフターケアが重要なのです。
なおCRTEでは報告書の内容を重視しているため、たとえ全サーバーを攻略できなくても、報告書の質が良ければ合格となる可能性はあります。 私は全サーバー攻略まであと1台という状態で、最終的な報告書を提出しました。
CRTE受験
試験開始30分前に送られてきたVPN接続情報を使って試験環境に接続し、必要そうなツールを受験者用VMに転送し終えてから試験に取りかかりました。 コースのラボ環境であれば余裕で全サーバー攻略できる状態で試験に臨みましたが、試験環境は想定外のもので、かなり焦りました。 あまりのひどい状況に一時は受験中止も考えましたが、もう少しだけ頑張ってみるかと粘り続けた結果、開始8時間で、1台をのぞいた他の全サーバーを攻略できました。
残り1台のサーバーは攻略が難しそうだったので後回しにして、ひとまずこれまでに攻略したサーバーに関する報告書を書くことにしました。 英語で報告書を書くのは今回が初めてだったため、文章の言い回しなどではオンラインの翻訳サービスをフル活用しました。
報告書を書く際にいちばん苦労したのは、設定の不備などに対する具体的な対策の提案です。 パッチの未適用やWebアプリケーションの脆弱性であれば、実施すべき対策はある程度定型化されているのですが、たとえばアクセス許可設定の不備などの場合は対策方法が環境に依存していたりするため定型化された文章を使い回すのは難しく、しかも今回は英語で書かなければならなかったため、さらに大変でした。 最終的に、48時間ある試験時間のうち、約半分の時間を報告書の作成に費やしました。
残り1台のサーバー以外の報告書を書き上げたのは試験終了の約4時間前でした。 そこから最後のサーバーの攻略に再度挑戦して挫折し、挫折するまでの経緯を報告書にまとめ、PDF化したものをサポートに提出しました。この時点で試験終了30分前でした。 ここまで長時間、集中して物事に取り組んだのはかなり久しぶりでした。
ちなみに今回の試験では、ネットワーク上で発見したサーバーやユーザーをマインドマップで管理してみました。 大規模なネットワークだと難しいかもしれませんが、今回のような小規模のネットワークであれば便利に使えることが分かりました。
受験結果
報告書をサポートに提出すると、48時間以内に結果を連絡する旨のメールが返ってきました。 そして報告書の提出後48時間ちょうどが経ったころ、合格を知らせるメールがサポートから送られてきました。 さらにその翌日、認定証がメールで送られてきました。 試験終了後はかなり疲れていて、再度受験するのは厳しいなと思っていたので、合格して本当によかったです。
また、コース開発者のNikhil Mittal氏からもコースの感想などを求めるメールが届いていました。 私は今回の試験について思うところがあったので、それについて問い合わせてみたところ、非常に納得のいく回答をいただけました。 このように、コースの開発者と気軽にやり取りできるのも、このコースのメリットだと思います。
おわりに
私は今回、Active Directory環境でのペネトレーションテストに関するコースとしてPentester AcademyのWindows Red Team Labを受講し、CRTEを取得しました。
現実の環境はLinuxサーバーやファイルサーバーも存在していたりと、今回のラボ環境や試験環境よりはるかに複雑ですが、今回のコース受講とCRTE認定をとおして、自分自身のペネトレーションテストに関する戦闘力が上がったことを確信しています。
ちなみにこの記事を書いている時点でCRTEに関する日本語の記事はほとんどないようなので、日本ではまだCRTEはメジャーではなさそうです。 しかしながら、コース内容は非常に実用的なので、今後は多くの日本の方々が受講してメジャーになってくれたらいいなぁと思っています。
おまけ
6月に入って当社では条件付きで出社が可能になったので、CRTE受験の前週、職場にずっと置きっぱなしになっていたHappy Hacking Keyboard(以下、HHKB)を回収してきました。 このHHKBが今回のCRTE合格のための戦闘力アップに貢献したのは言うまでもありません。


記事の著者
セキュリティ診断業務に10年間従事後、2016年よりシニアセキュリティアナリストとしてペネトレーションテスト業務に従事。
診断業務開始当初は社内イントラサイトの脆弱性に対する過激な指摘により物議を醸したが、
現在はだいぶおとなしくなっている。好きな周波数は13.56MHz。
GXPN、GAWN、GREM、GPEN、GDAT、GCPN、GCFA、GCFE、CRTE、CARTP、CEH
関連記事
RELATED ARTICLE