GIAC試験攻略法

この記事の内容は古くなっています。以下の記事を参照してください。

https://qiita.com/log0417/items/1c49979b0c3d1dd15946

本記事は記録として残してありますが、内容は古いです。

# はじめに
この記事はGCFA、GREM、GNFA、GPEN、GWAPT、GCIH, GCFE, GCIAなど多数のGIAC試験を突破した私が考えるGIAC試験の攻略法について記載したものです。
私以外のGIAC試験合格者の意見も参考にしています。

# GIAC試験について
公式サイトは以下です。GIACとは資格試験の総称であり、個々の資格は、GIAC Certified Forensic Analyst (GCFA)のように、「GIAC」が冒頭にきます。

https://www.giac.org/get-certified/

試験によって内容は違いますが、セキュリティ分野における著名な認定資格です。
GPEN、GCFA、GREM、GCIH、GREM、GWAPT、GCIA、GCFEなどの種類があり、本記事執筆時点で52種類の試験があります。試験の一覧は以下を参照してください。

https://www.giac.org/certifications/?msc=main-nav

日本ではGPEN、GCFA、GREM、GCIHあたりを取得している人が多いように思います。


# GIAC試験の特徴
一般的な資格試験との大きな違いは以下の3点です。

１．英語で出題される
２．紙媒体であればなんでも持ち込める（模擬試験の問題のみNG)
３．原則として1度回答を決めたら後から直せない
４. 対応するトレーニングテキストから出題される（どうやら例外もあるもよう）
５．CyberLiveと呼ばれるハンズオンの試験が出題される場合がある（試験による）



２．はGIAC試験の肝になるルールです。紙媒体であれば何でも持ち込めるので、自分で作ったカンニングペーパーやSANSのトレーニングテキストも持ち込めます。もちろん英和辞典も紙であれば持ち込めます。

３．は、CISSP等の一部試験と同じで、1度回答を決めたら後から直せません。ただし、一定数（試験によって異なりますが、10～15問）の設問は後から見直すことができます。

４．は私個人と周りの人の経験則に基づくものですが、GIACは原則として対応するトレーニングのテキストから出題されます。
ただし、ごくまれにトレーニングの内容と試験問題が完全に一致していないことがあるようで、試験問題の更新タイミングによっては、トレーニングテキストにない問題が出てくる場合があるようです。
とはいえ、そのような問題はあっても１、２問ですし、しっかりと準備をしていれば、これが原因で不合格になることはないと思います。

GIAC試験の攻略においては、特に１、２、５が大きなポイントになります。

# GIAC対策（英語編）
すべて英語で出題されるため、英語が苦手な人には大きな壁になると思います。ただし、試験問題はネイティブスピーカーではない人のために比較的わかりやすく作られています。
普段からセキュリティ関連の情報収集を英語で行っているのであれば、概ね読める範囲かと思います。中学レベルの文法とよく使われる専門用語を知っていれば基本的には問題ありません。専門用語については以下を参考にするとよいと思います。

https://www.ipa.go.jp/jinzai/ics/core_human_resource/final_project/2022/english-reading.html

なお、私は試験後のアンケートで問題文をなるべく簡単な英語にするように書いたところ、実際に簡単になった気がしているので、後進のためにもアンケートに書くのは効果があると思います。

英語が苦手という方のために、いくつかのポイントを挙げます。

1. 英語は7割の理解に留める
GIACはセキュリティ分野の試験であり、英語を翻訳する試験ではありません。問題文や選択肢を翻訳しようとしないでください。7割くらい意味が取れたら、そういう意味なのだと解釈して回答すべきです。
基本的にはざっくりの理解で回答できることがほとんどですが、1つの単語の意味で正答が変わってしまうこともあります。後述しているテクニックのとおり、選択肢を一通り読み、技術的に間違っている選択肢は除外し、その上で判断がつかない場合は英和辞典で調べるという流れが良いと思います。

2. 問われている一文だけ先に読む
問題である以上は、何らかの問いになっているはずです。長い前置きの文章があったとしても、最終的に問われている点だけで答えられるかもしれません。「○○とXXという条件の場合、最も正しいものはどれですか？」という問題であっても、選択肢を選ぶにあたり、特に条件は関係なく、明らかに1つに絞れるとか、４つのうち2つまで絞れるという場合もあります。

3. 問題文の前に選択肢を読む
これは高校、大学の受験テクニックの1つでもあります。通常は問題文より選択肢の方が短い文です。そして、GIACは技術的な試験なので、選択肢には技術的に誤ったものが含まれている可能性があります。そういった選択肢はすぐに除外できます。
また、GIACの試験は文章だけで出題されるものだけでなく、特定の画面キャプチャを見て答える問題も多いです。そういった問題では、問題文を読む必要はないかもしれません。
（そういう問題の場合は、「以下の画面キャプチャから言えることはなんですか？」のようなパターンが多いです）

4. 後の問題の方が答えやすい
これはあくまで経験則に基づくものですが、前半の方が問題文をしっかり読まないと答えられない問題が出るような気がします。逆に後半は画面キャプチャやログを見る問題が増えているような気がします。このため後半の問題の方が英語を読まなくても答えやすい問題と言えるかもしれません。英語がわからなくても諦めないことが重要かと思います。

5. 模擬試験で翻訳ツールを使わない
これは英語が苦手な人ほどやりがちなミスです。本番では翻訳ツールは紙の辞書しか使えません。本番で使えないツールを使って模擬試験を受けても意味がありません。

3. 英語用のカンニングペーパーを作成する
試験に出てくる英語を事前に予想することはかなり難しいです。ただ、GIACは模擬試験を2回受けられるので、模擬試験に出てきた英単語に知らないものが含まれていたら、カンニングペーパーに記載しておくと本番で役に立つかもしれません。また、英和辞典を使うことは可能ですが、１単語調べるのに30秒～1分消費します。1回だけなら良いですが、何回もやっていると大幅なロスになります。


# 試験対策（カンニングペーパー編）
GIACでは紙であればなんでも持ち込めます。トレーニングテキストはもちろん、自作のカンニングペーパー、市販の本、英和辞典も持ち込めます。ここでは自作のカンニングペーパーについて言及します。
作成するカンニングペーパーは試験によって大きく異なると思いますが、ポイントはどの試験でも同じで探しやすさだと思います。
試験は限られた時間しかなく、探すことに時間をとられないようにする必要があります。

やり方は人によってor試験によって異なると思いますが、キーワードとその意味を並べたリストが基本になると思います。
これに必要に応じてカテゴリをつけ、カテゴリごとにソートしておくと探しやすいかもしれません。
文字列ソートした方が探しやすいという人はそれでも良いと思います。
また、私の場合は勉強中に調べたサイトのスクリーンショットを追加しておき、視覚的に情報が思い出せるように工夫しています。
SANSのテキストの内容が含まれてしまうため、そのまま記載することは避けますが、以下のような構成にしています。Googleスプレットシートや、Excelで作成します。

 （Book番号とタイトル） 
| キーワード | ページ番号 | 説明 |
|:-:|:-:|:-:|
| ペネトレーションテスト  | 10  | 疑似攻撃  |
| フォレンジック  | 20  | 不正アクセスの痕跡を調査する  |

1行目には本の番号とタイトルを記載します。ページ番号に1-10, 1-20のように本の番号とページ番号を記載しても良いですが、意外と面倒なので、1行目に記載しています。
キーワードの選定基準は、自分が知らない単語、自分の理解とテキストの記載が異なるものです。あらゆるものをメモする必要はないと思います。
上記のサンプルでは説明が短めですが、必要に応じて複数行にすることもあります。また、自分がわかればそれで良いので、わかるものは簡単に、知らないものは丁寧に記載すると良いかもしれません。

他にもテキストに付箋を貼るという方法も良いと思います。それと、SANSのポスターを印刷して持ち込むと良いです。テキストから探すよりSANSのポスターから探したほうが楽というケースも多々あると思います。

その他、試験によってはチートシートが役に立つでしょう。例えばTCPやIpv4などのプロトコルの構造について出題される試験の場合、SANSもしくはインターネットで検索できるチートシートやSANSのポスターは非常に役に立ちます。
他にも必要に応じてコマンドのヘルプやリファレンスを用意すると良いです。

# CyberLive対策
試験によっては実技試験が存在します。GIACではCyberLiveと呼ばれています。とはいえ、それほど恐れる必要はありません。（GX-IA等のGX-シリーズの試験を除く）
問題文に使用するツールが記載されていることもあり、かなり多くのヒントが初めから提示されています。しかも、トレーニングの演習や模擬試験をやっておけば十分解答できるレベルの問題です。
若干応用的な問題が出題されることもありましたが、これも十分に演習を行っておけば解答できます。

また、CyberLiveは完全な仮想マシンを操作しますので、各種コマンドのヘルプを見ることも可能ですし、答えを出す方法は必ずしも1つとは限りません。自動ツールが使えるかもしれませんし、意外と簡単なコマンドだけでも解答できる場合があります。Webアプリならソースコードがどこかにあるかもしれません。
問題文に提示されているツール以外のツールを使って回答することができる場合もあります。ただし、問題文に提示されていないツールを使うとうまく答えがないようになっているかもしれません。
例えば以下のようなケースです。（以下は実際の問題ではありません）
「与えられたパケットの中からsample.gifを探し、そのファイルサイズを答えてください」のような問題の場合、普通はWireSharkを使い、HTTPオブジェクトを取り出すという方法が早いかと思います。しかし、どうしてもこの方法がわからない場合、tcpdump -Xなどで中身の文字列をとりあえず表示し、grepでsample.gifを探すという手もあります。
実際にこれでうまくいくかはパケットの中身次第ですが、うまくいけば答えが特定あるいは推測できるかもしれません。

上記の類題として、解析する対象がイメージデータであれば、stringsコマンドで文字列を取り出すことで答えにたどり着けるかもしれませんし、インストールされていればforemostやbulk_extractorが使えるかもしれません。
このように、わからない場合はやり方にこだわらずに、CTFだと思って考えてみるのも一手かもしれません。

最後に、CyberLiveの配点は高く設定されていることが公式に明言されています。したがって、全問正解を目指すことで合格が大きく近づきます。ミスは1問以内に抑えるのが理想でしょう。
模擬試験で正解した問題数をカウントし、CyberLiveの配点を推測してみると、試験によって異なる可能性はありますが、３～４倍程度の配点になっている可能性があります。

まとめると、CyberLiveの問題は恐れる必要はありません。むしろ配点が高く、問題文も短く、予めヒントが提供されていることもあるので英語が読めなくても回答しやすいはずです。個人的な経験則からも、CyberLiveがある方が得点が高い傾向があるので、選択式問題より答えやすいと思います。確実に得点しましょう。

以下は公式サイトに記載されている内容の抜粋です。

https://www.giac.org/cyberlive/
>Do the CyberLive questions count the same as multiple choice questions?
>CyberLive questions are typically weighted more than the multiple-choice items. Consequently, more time has been allocated towards these items.

抄訳
>CyberLiveの問題は多選択式問題と同じようにカウントされますか？
>CyberLiveの問題は多選択式問題よりも重みづけされています。そのためより多くの時間が割り当てられています。

>How much will the CyberLive portion count towards my final score?
>It varies by GIAC examination.
>Candidates who cannot answer a majority of the CyberLive items correctly should not expect to pass the certification exam.

抄訳
>CyberLiveの問題は最終スコアにどれくらい影響を与えますか？
>試験によりますが、CyberLiveの問題の大部分に回答できない場合は合格できないでしょう。

# スキップ機能について
GIACは原則として、一度表示された問題は後から回答するということはできません。ただし、15問まではスキップを選択することで、後から回答できるようになっています。このスキップ機能の活用方法について私の見解を記載します。

まず、スキップせざるを得ない問題かどうかは30秒以内に判断したほうが良いです。CyberLiveなら5分が目安です。判断がつかない場合もスキップで問題ありません。スキップ可能な15問（試験によっては１０問）という枠はこれまで使い切ったことはありませんので、たとえ1問目であっても躊躇することなくスキップしましょう。
もしスキップする前に回答が絞れている場合は、手元のノートボードにメモしておくと良いです。選択しの最初の単語だけメモするか、上から何番目と何番目という番号だけでも良いと思います。その際に、問題番号をメモすることをお忘れなく。
（当然ですが、試験会場で渡されるノートボード以外へのメモは禁止です）

休憩する前にはスキップした問題をすべて回答する必要があります。私は毎回休憩なしで終えていますが、休憩する場合は、3分の1か半分まで回答した時点でスキップした問題に戻ると決めておくのが良いと思います。最後まで問題を表示してしまうと、休憩がとれなくなってしまいます。

# その他
一般的な試験と同じですが、問題をよく読んで落ち着いて回答することに尽きると思います。
特に時間が足りなくなると焦り始めるので、わからない問題はどんどんスキップを活用して先に進むことを優先した方が良いと思います。
どうしてもわからない問題は諦めて適当に回答しましょう。私はそういった問題は調査用の問題[^1]と考えることにしています。わかる問題だけを解いても十分合格できるはずです。

# トレーニングなしで挑戦する場合
様々な事情でトレーニングを受けられない場合でも、試験を突破することは可能です。経験にもよりますが、実務経験またはCTF等での実戦経験が十分あれば合格できる可能性は十分あります。突破できるかどうかは模擬試験を買って受けてみるのが良いと思います。概ね模擬試験で合格点を取れるなら突破できる可能性が高いと思います。実務経験がある人は、CyberLiveで満点を取れるでしょうから、選択式問題を半分ほど正解できれば合格ラインに到達できる可能性が高いと思います。
ただし、どの試験でも模擬試験より本番の試験の方が難しく感じる傾向にありますので、模擬試験では合格点＋10点を取ることを目標にすると良いと思います。
また、トレーニングなしで挑戦する場合は、対応するトレーニングの内容をSANSのサイトで確認し、記載されているツールについてしっかりと使いこなせるようになっておくと良いと思います。

合格をお祈りします。


[^1]: 採点されない問題のこと。GIACを始めとするコンピュータを使った試験においては、定期的に問題の入れ替えが行われます。調査用の問題は新作の問題で、正解率を調査する目的で挿入されると聞いたことがあります。 この調査により合格者が多く正解でき、不合格者が正解できない問題が良問とされ、実際の問題になるとかならないとか。（真偽は不明です）