📚

GIAC Penetration Tester(GPEN)に合格した話

2021/03/05に公開

はじめに

3月1日にGIAC Penetration Terster(GPEN)というペンテストの資格に合格しました。他の方もよくおっしゃっているように、日本語の情報があまりなかったので、自分の体験を備忘録として残しておこうと思います。実際に受験する際にも日本語の試験に関する情報が非常に有益であったので、この備忘録が少しでも今後同様の試験を受験する方の参考になれば幸いです。また、今回の試験は通常のテストセンターではなく在宅での受験であったため、その辺りの勝手なども記録として残せたらと思います。(多分長くなります、、)

バックグラウンド

そもそもの話として、以下簡単な私自身バックグラウンドです。

  • 非情報系の修士卒(ほんのちょっとプログラミングをかじった程度)
  • セキュリティ歴約1年
  • 業務内容はセキュリティ関連の調査や企画、簡単な教育関係がほとんど(いわゆる技術系の手を動かす業務の比率は小さい)
  • Metasploitを少しいじったことはあるが、ペンテスト自体に関わることはまずない

きっかけ

  • 今後のセキュリティ分野でのキャリアを考えた際、攻撃手法寄りの業務に興味があった
  • 会社の外部研修受講の一環でSANS SECURITY 560を受講(非常に高額なトレーニングなので、本当に会社様様です。。)
  • SEC560受講の流れでGIACも受験(受験費用は個人負担、合格したらその分会社から同額が支給されるという形でした)

試験概要

試験時間:3時間
言語:英語
問題数:75問(選択問題)+8問(ハンズオン)
選択問題の形式:基本的に4択、たまに3択
ハンズオン問題の形式:ブラウザ上からVMを操作する形、答えは選択式
合格基準:(私が受験した際は)75%
試験場所:自宅からリモート

スケジュール

私がSEC560を受講したのが2020年の8月末〜9月にかけて、その後12月に試験を申し込み、実際に受験したのが3月という形でした。トレーニング受講から試験まで期間がかなり空いてしまったのは、勉強期間を確保したかったからというのもなくはないですが、単純に受験料が高すぎて冬のボーナスを待たないと支払えなかったからです。社会人2年目に12万強の受験料は厳しい、、、

試験準備

本来はTryHackMeHack The Boxなどでハンズオン経験を積み、万全の状態で試験本番に臨むつもりでしたが、全く手がつけられずに年が明けてしまったため、結局下記のような流れになりました。

  • トレーニングテキストの読み込み(2021年1月〜2月)
  • 模擬試験受験1回目(2月25日)
  • インデックスの作成(2月26日〜27日)
  • 模擬試験受験2回目(2月28日)
  • 最終調整(2月28日〜3月1日)

以下、それぞれの期間に関して具体的にしていたことを記載していきます。

トレーニングテキストの読み込み

慌てて年明け早々からSEC560のテキストの復習を開始しましたが、その際はスライドだけでなく、できる限りスライド下部の詳細な説明も読むように心がけました。単純に内容の理解がかなり深まるように感じたので、可能であればテキストの内容は全て読み込んで理解するという方針が良さそうに感じました。ただ、時間の制約などもあるので、その際は重要なトピックに絞って読み込むのが現実的だと思います。現に私自身も、全5冊のテキストのうち、2冊目(In-Depth Scanning)の半分くらいまでは全内容をしっかり読み込み、簡易的なサマリのようなものを作成していましたが、明らかに時間が足りなかったので、残りは基本はスライドを読むようにし、どうしてもスライドだけではわからなかったところや重要そうなところに関してのみ、詳細な説明を読むようにしました。ちなみに、個人的に重要だと判断していたトピックは、攻撃手法やツールの原理に関するものになります。

模擬試験1回目

トレーニングテキストの読み込みを1周終えたところで、1回目の模擬試験を解きました。(GIACの試験に申し込むと、2回分の模試がついてきます。これらの模試は好きなタイミングで解くことができ、足りない場合は追加料金を支払うことで増やすことができます。また、模試では1問解く度に正答を確認することができます。)結果は56%で、かなり絶望的でした。正直、試験日程を変更しようと思いましたが、やり方がよくわからず、どうせ変えても同じ結果になるだろうと開き直り、結果と向き合うことにしました。
結果の要因を分析したところ、概ね下記のような点に問題があると考えました。

  • 時間配分
  • ハンズオン部分の正答率の低さ
  • トレーニングテキストに記載のない分野からの出題

1点目に関しては、各問題でテキストの該当箇所を探すのにかなり時間がかかっていたことによるものです。これに関しては、後述のインデックス作成によって対応することにしました。2点目については、時間配分の失敗に起因しており、ハンズオン部分にかける時間が完全に不足していたことによるものと判断しました。実際、ハンズオン部分に突入した際に残っていた時間は20分程度で、VMの使い方に戸惑ったこともあり、このパートは1問しか正答することができていませんでした。3点目は割と絶望的で、公式の発表している試験範囲ではAzureに関するもの(Azure Applications and Attack Strategies、Azure Overview, Attacks, and AD Integration)が含まれていることを確認できますが、これらは少なくとも私が受講した際のSEC560のテキストや講義では扱われていませんでした。とはいえ1から勉強している時間もないので、この範囲の問題が出てきた際は、模試を受けた限りで分かるものは答え、わからないものは勘で解答してなるべく時間をかけないようにすることにしました。

インデックスの作成

先述の通り1回目の模擬試験の結果を受け、インデックスの作成を行いました。ただし、今回の受講したトレーニングのテキストには、簡易的な索引(章立てレベル)がついていたため、これにプラスαの情報を付け加え、各々の章にどのようなトピックが掲載されているのかも簡潔に記したものを作成するようにしました。また、テキストの内容の整理にもつながると考え、これらのインデックスはテキストとは別のノート(ルーズリーフ)で作成するようにしました。最終的に出来上がったものを見ると、テキストの章立てと、各々の章内のトピック、場合によってはそのトピックにおけるキーワードと、それらが記載されているテキストのページ数を簡単に確認できるような構成になるようにしました。(といっても、2日クオリティなので、大層なものではありません。)
ここで重要なのは、試験中に問題文中キーワードから該当トピックが記載されたテキストのページ数を短時間で見つけることができるものを作ることと、テキストでどのようなことが大体どのあたりで記載されていたのか、頭の中を整理できることだと感じました。ですので、これらの目的を達成できるものであれば、インデックスでなくてもなんでも良いとは思います。

模擬試験2回目

インデックスを作成した結果、明らかにトピック全体の内容が頭の中で整理されていて、かつ、具体的に調べる際もスピードが向上していることを実感しました。スコアは83%で、1回目と比較するとかなり希望が見えてきました。ただ、たまたま問題が簡単だった可能性もあり、点数の振れ幅も大きいことから、油断はできない状況でした。この辺りから、受験料重みが大きくなり、落ちたらどうしようという不安が強まっていったのを覚えています。

時間配分ですが、前回の反省を踏まえ、ハンズオンに1時間かけるように想定し、そこから逆算して選択問題を2時間以内に解くよう立ち回りました。これはかなりうまくいったと自分では感じており、ハンズオンを落ち着いて解けたことからか、2回目の模試では当該部分は満点でした。なお、試験本番でも、同様の時間配分で問題を解くようにしました。(ただ、選択問題に関しては2時間でギリギリ、逆にハンズオンは時間に余裕があるように感じたので、この辺りは自分の得意不得意に合わせて変えていくのが良さそうです。)

また、試験中は15分休憩を1度だけ取ることができるのですが、自分は選択問題を全て解き終わってハンズオンに入るところで取るようにしました。1回目の模試の際に選択問題の途中で休憩を取ったのですが、どうも集中乱されるように感じたためです。加えて問題のスキップ機能もありますが、こちらは使用していません。(本番も同様です。)

最終調整

特別なことは何もしていないです。AD関連の範囲に苦手意識があったので、該当分野の箇所のテキストを再度読んでいました。一応、時間配分の確認もするにはしましたが。

試験本番

準備のうちから想定した時間通りに概ね解く事ができました。途中どうしてもトイレに行きたくなり、選択問題が残り5問程度ある状態で休憩を取りました。ハンズオンも時間に余裕があり、最終的には30分弱を残して試験を終了しました。(選択問題1時間50分〜2時間、ハンズオン30分〜40分程度の配分になりました。)ちなみに、試験に持ち込んだものはSEC560のトレーニングテキスト全て、ノート、インデックスになります。英語辞書は紙のものがなかったため断念しましたが、なんとかなりました。

これだけ見ると何事もなく終わったかのようにう思えますが、実は試験を開始するまでが真の難関でした。

今回、自宅でProctorULogMeln Rescueという製品を使用しながら受験しました。これらの導入方法やセットアップはGIAC試験に申し込んだ際に事前準備として指示されますので、そちらに従えば問題なくできると思います。試験当日は、開始予定時刻の2、3分前から開始手続きを始めることができ、始めるとすぐに試験官からチャットが届きます。その後通話が始まり、試験官に指示された通りに動くことになるのですが、試験官の英語が非常に流暢で英語が聞き取れない、まさかの(非常に簡易だが)英会話も必要など、さながら英語のテストが始まったと錯覚するような状況に陥り、英語が苦手な私はテンパってしまいました。といっても、試験官の方は非常に親切なので、何度も聞き直しながらゆっくり進めていけば大丈夫ですが、英語が苦手な方のために、以下試験官とのやりとり簡潔に記載しておきます。参考にしていただければと思います。

  1. IDを見せて(2種類の提示を求められるので、パスポートと運転免許証で乗り切りました)
  2. スマホで机の上とキーボードの上を写して見せて(ここはかなり英語が怪しい)
  3. スマホを手の届かない遠いところにおいて(電源落として遠くにおきました)
  4. PCのカメラで机全体を写して(この時急いで机の上を別の部屋に退避させました)
  5. PCのカメラで部屋全体を写して(部屋内に他の人がいる場合、退室が必要です)
  6. PCのカメラで机の下を写して
  7. PCのカメラで耳を写して
  8. メガネを外してPCのカメラに写して(この辺りは不正がないようにだと思います)
  9. 部屋のドアを全て閉めて

記憶の限りではだいたいこんな感じだったと思います。ちなみに、試験中に取った休憩から戻った際にも、机の上と机の下をPCのカメラで写すよう求められました。

結果

ハンズオンで1つ誤答してしまったのが想定外でしたが、2回目の模試と同じような点数で無事合格することができました。

所感や注意事項

以下、今までの箇所に入りきらなかった所感などをつらつら記載していきます。

  • おそらく選択問題よりもハンズオンの問題の方が点数配点が高いです。確証はありませんが、模擬試験を解いた限り、体感前者が1問1点、後者が1問3〜4点程度あるかと思います。(少なくとも私が解いた際には)
  • 模擬試験は試験対策に非常に有効です。同じ問題が出題されるようなことはまずないですが、似たような問題が出ることは多いかと思います。試験問題の傾向把握や、ハンズオン形式の問題になれる意味でも有効です。
  • ただし、模擬試験は数に限りがあるので、試験本番の時間配分を意識して解くなど、有効活用するのが良いと思います。(課金するなら話は別ですが!)
  • 試験前に机の上や周辺は最低限清掃しておきましょう。(やらないと当日痛い目を見ます)
  • 全問題を細かく調べている時間はないですが、意外と試験時間は余裕があるように感じました。
  • 試験中、Macの翻訳機能などは使えないように感じました。(試していないので定かではありませんが、試験官に見られているのでかなり厳しそうで。)
  • やはり自作インデックスが最強。

おわりに

今回GIACの資格を受験し、日本語の情報が非常に少ないことを痛感しました。まだまだ試験を受ける人自体が少ないのだろうと感じつつも、このような資格がもっと日本に浸透してほしいとも感じております。再度になりますが、今回の自分の体験が少しでもその辺りに寄与できれば、と思っています。

ちなみに、今回GPENを取得しましたが、今後業務でペンテストに関わっていくかはかなり微妙なところです。資格の更新もかなり微妙なところだなあ(更新費用が高い!!)、、と感じておりますが、今後ともセキュリティ分野での技術習得に励んでいくことには変わりありませんので、他のGIAC資格などにも挑戦していきたいと考えています。

Discussion