グレイボックステスト。 GIAC GREM 試験にコースを受講せずに合格した方法

この記事の前置きとして、私のようにマルウェア解析の初心者で予算がない場合、コース教材にアクセスせずに勉強することは、あなたにとって最善の選択ではないかもしれないということをお伝えしたいと思います。 SANS GREM認定を受講資金源なしで目指すには、FOR610コースのSANSワークスタディプログラムに申し込むのが一番です。 コース講師のアシスタントをする代わりに、コースの評価と認定試験への挑戦が許可されます。 また、SANSの教材共有に関するポリシーにより、他の方法では取得できない書籍やコースの教材のコピーも提供されます。 このプログラムの総費用は、実際、私が試験だけのためにポケットマネーで支払った金額よりも低くなっています。

ただし、ワークスタディプログラムに参加するには、申請が受理され、SANS のカンファレンスに 6 日間参加できることが条件となります。 私がこのオプションを追求しなかったのは、私の地域で開催される SANS カンファレンスが、私のスケジュールにおける他の重要な項目と重なっていたからです。 また、このコースは私のプロジェクトの役割と直接関係がないため、雇用主に費用を負担してもらうことは適切でないと考えました。

さて、私がなぜそのようなことをしたのかがわかったところで、「どのように」したのかに入りましょう。

What I Needed to learn

SANS のウェブサイトから、私が必要とした GREM をそのまま引用します。

  • Windows のリバース エンジニアリングのためのアセンブリの概念 – IDA Pro で何をするか、なぜアセンブリと C の知識が必要か
  • Windows マルウェアの共通の特徴 – API 関数、スレッド、および C の知識。 構造体
  • 悪意のある実行ファイルと保護された実行ファイルを徹底解析 -練習してIDA Proで行うこと
  • 悪意のある文書解析 -攻撃者はファイルの中にスクリプトを入れる
  • 悪意のあるWebブラウザスクリプト解析 -攻撃者はインターネットにスクリプトを入れている。 コマンドと制御トラフィックはワイヤーを介して流れる
  • Memory forensics – Volatility

The Importance of Assembly Language and C

私が試験準備に使用した各種リソースに入る前に、少なくとも x86 アセンブリについて概略を把握していることが重要であることを指摘しておきたいと思います。 これがないと、移植可能な実行ファイルやシェルコードをリバースエンジニアリングすることができません。 アセンブリの核心は、コンピュータに何かをさせるための単なる算術です。 バイナリ・リバース・エンジニアリングを学ぶのに必要なのは、x86のレジスタ、変数の型(word, dword, int, charなど)、スタックの基本、そしていくつかのプログラム・フロー命令だけです。 以下は、基本を学ぶのに役立つと思われるリソースです。

C の実務知識は重要ですが、Java などの C に似た言語でプログラミングする方法を知っていれば、必要なことの大部分はわかるはずです。 マルウェアのリバース エンジニアリングに必要な新しい概念は、ポインター、メモリ割り当て、ヒープだけです。 私は、この2つのリソースを通じて必要なことを学びました。

Reverse Engineering「リバースエンジニアリング」

この記事のタイトルを「グレイボックステスト」としたのは、振り返ると、私がこの試験のために行った勉強が基本的にそれであることに気づいたからです。 マルウェア解析の初心者であった私は、何が起こるかほとんど知りませんでした。 試験の準備期間中、私は以下の情報源を参照しました。

  • 3 ~ 5 年前にコース料金を支払わずに試験に合格した人たちが投稿した推奨書籍
  • SANS FOR610 公式コース シラバス
  • Lenny Zeltser が作成した悪意のあるファイル解析チートシート

これらの項目をセクションに分けて、各ソースから私が学んだことを説明したいと思います。

推薦図書

GIAC 試験に参考書として一杯持っていくことが許されているので、有用な本を選ぶことは GREM 成功にとって非常に重要です。 GREM認定者の多くは、試験勉強を何から始めようか悩んでいる人に、準備に使った(SANS以外の)書籍のリストを喜んで教えてくれます。 私の最初のステップは、できるだけ多くのGREM卒業生の推薦図書リストを見ることでした。

  • “Practical Malware Analysis” – 行動分析、リバースエンジニアリング、およびアンチ解析を打ち破るための素晴らしいガイドです。 この本は譲れないもので、これを勧めないソースはないでしょう。 情報だけでなく、知識を補強するための非常に役立つラボも付いています。
  • “The Malware Analyst’s Cookbook” – マルウェア解析ツールの多種多様なガイドです。 ラボやスクリプトは非常に時代遅れですが、ツールの概要は非常に有用でした。 メモリ フォレンジック、ブラウザ スクリプト マルウェア、および悪意のあるドキュメント解析のセクションを使用して、試験の準備をしました。
  • “The Art of Memory Forensics” – これは必ずしも主要リソースとしてではなく、メモリ フォレンジックに関する “Malware Analyt’s Cookbook” のセクションの補足リソースとしてあると役に立ちます。 必要なVolatilityプラグインの多くはあまり詳しく説明されておらず、MACからの情報は本書からの情報と相互参照する必要があります。 また、この本は試験に役立つWindowsインターナルを多くカバーしています。
  • “Windows Internals 6 or 7” – 個人的には、これらの本はやり過ぎだと思います。 セキュリティの観点からWindowsに精通しているのであれば、Windows Internalsを理解するのに必要なのは先行する書籍だけです。 これらの本を試験に持ち込むことは決してお勧めできませんし、インデックスをつけることもできません。 すべての関連情報は、すでに「Art of Memory Forensics」または MSDN ウェブサイトにあります。
  • The IDA Pro Book – この本を試験に持っていけとは誰も言わないと思いますが、まったく活用しないかどうかは、本当にツールをどう学ぶかという問題なのです。 私はIDA ProはPMAを使って、空いた時間に少しいじりながら覚えたので、結局必要なかったです。 画像やイラストの少ない長い本を読むのが一番ツールの勉強になるという方にはぴったりの本です。

The SANS FOR610 Syllabus

こちらはかなりシンプルな内容になっています。 SANS GREM試験は、SANS FOR610コースに関連する試験なので、コースで学んだことが試験で応用されると考えてよいでしょう。 私はコースにアクセスできませんでしたが、SANSのウェブサイトでシラバスにアクセスし、コースがカバーするトピックとツールの両方の概要を知ることができました。 これはすべてのSANS DFIRコースに当てはまるわけではありませんが、FOR610のシラバスはトピックよりもツールの方が役に立ちました。 一部のコースでは、ツールはほとんど掲載されていないようですが、すべてのトピックの内訳が掲載されています。 コースがどの程度技術的か理論的かによると思います。

シラバスのツールのリストは包括的ではないかもしれませんが、あなたが得ることができる唯一のリストです。 リストにあるすべてのツールについて、それらがどのように見え、どのように機能し、何をするのかに慣れ親しんでください。 私は通常、ツールのgithubページから始めて、そこから進めていきます。 「The Malware Analyst’s Cookbook” と Lenny Zeltser の Web サイトには、素晴らしいツールのリファレンスがあります。 トピックが少し広いように思えたり、ツールが重要すぎてシラバスで言及されていない場合、それはおそらくコースにも試験にも載っていないでしょう。 これらは、FOR610のシラバスやGREMのWebページで言及されているトピックと同じものです。 これらのチートシートの内容を勉強してメモを取るのは良いアイデアかもしれません。

“Practical Malware Analysis” のラボと x86 アセンブリの呼び出し規則で本当に役に立つチートシート:

Next Steps: ラボ、特別なトピック、および適切なインデックス作成

これらの本を読みながら、「Practical Malware Analysis」のラボと「The Malware Analyst’s Cookbook」のメモリ フォレンジックのセクションについて行くことをお勧めします。 一晩に一回、二晩に一回など、自分に合った方法で行ってください。 練習時間は自由に設定できますが、練習は任意ではありません。 練習は、特に多くのツールを扱う場合、教材の理解を深めるための最良の方法です。 ツールを学ぶ最良の方法は、それを使うことです。 悪意のあるドキュメントのフォレンジックについては、Didier Stevens のオンライン ワークショップを受講するのが便利でしょう。 私は、試験に役立ち、かつ、疲弊した試験準備から解放されるようなトピック、つまり、基本的なエクスプロイトとシェルコードの書き方を追求することにしました。 この準備のための休暇を3週間過ごした後、私はリフレッシュし、これまで以上にやる気を出して戻ってきました。

使用するすべての書籍に目を通し、ラボを行い、脳を休ませたら、いよいよ最初の模擬試験の準備に取り掛かります。 多くの人が模擬試験でインデックスを使わないことを推奨していますが、私は模擬試験に挑戦する前にインデックスを作成することが不可欠だと思います。 模擬試験でインデックスの穴がどこにあるのかを知ることができるため、また、インデックスを作成することは、何か月もかけて勉強したすべての情報を復習するための最良の方法だからです。 伝統的に、ほとんどの人は、読んだすべての本のインデックスを試験に持ち込みます。 インデックスは通常、フィルタリングされた列を持つスプレッドシートとして作成されます。 インデックスを色分けすることをお勧めします。 索引には、重要なトピック、各トピックのページ番号、各トピックの注釈をすべて含める必要があります。 私のインデックスには、すべてのトピックが属すると想定されるFOR610のドメインも含まれています。 メモでは、Windows API 関数、構造体、Volatility プラグインなどの重要な事柄を強調しました。 また、試験に持参する書籍にはページ番号をタブで表示するようにしました。 私はインデックスに合わせてタブを色分けしました。これは、何かをすばやく調べる必要があるときに、とても役に立ちました。

インデックス エントリの例。 このトピックは必ずしも試験とは関係なく、デモンストレーションのために「Practical Malware Analysis」からランダムに選んだことに注意してください。

この試験では、オンラインリソースでカバーされているトピックがたくさんありますが、書籍ではカバーされていないものもあります。 私は、これらのトピックに関するメモを、空白のページ番号でインデックスに追加するのが好きです。 書籍にないトピックごとに別々のノートシートを作成するよりもすっきりします。

あなたのインデックスは、おそらく私とはまったく違うものになるでしょう。 これは SANS のガイドラインに違反していますし、自分で作ったものでないため、学習支援としては役に立ちません。 これと同じ理由で、コースを受講し、SANSの書籍にあらかじめインデックスが含まれている人は、通常、これらのインデックスを使用する代わりに、自分でインデックスを作成することが推奨されます。 インデックスに入れる情報は、決してウェブサイトから直接コピーしたり、本から一字一句コピーしたりしないでください。 必要であれば、別のメモ用紙にコピーしてもかまいませんが、インデックスにはコピーしないでください。 これはルール違反ではなく、単なる経験則です。 インデックスに記載する内容は、すべてあなた自身の言葉で、あなた自身の手によるものであるべきです。 インデックスを作成する行為は、試験準備に不可欠です。

最初の模擬試験の前に作成したインデックスは、特にコースを受講していない場合は、穴があいているはずです。 20ページや30ページのインデックスで最初の模擬試験に臨むことを怖がらないでください。 私は25ページのインデックスで臨みましたが、本番前夜のインデックスは40ページを超えていました。

Practice Exams

Before I start: GIACのウェブサイト(www.giac.org)からOFFICIALの模擬試験試行を購入するのみです。 他の模擬試験の出典は絶対に使用しないでください。 これはGIACの試験ガイドラインで禁止されており、不正行為とみなされます。 これらの非公式模擬試験は、盗まれた古い試験問題を使用しており、学習リソースとはみなされません。 公式模擬試験の購入はこちら:

さて、それでは、試験を購入する前に模擬試験を受けることをお勧めします。 試験には2回分の模擬試験が付属していますが、その頃には2000円も使ってしまっていて、試験に臨めるかどうかもわからない状態です。 最初の模擬試験で、自分が購入できるまでの距離を知ることができます。 もし合格したら、早速試験の購入をお勧めします。 そうでない場合は、自分の苦手な分野を教えてくれるので、試験購入前にこれらを重点的に勉強することができます。

また、初回以降の模擬試験は、自分のインデックスの穴を埋めるのに最適な方法だと思います。 先ほども書きましたが、FOR610のシラバスは網羅されていないので、模擬試験でこそ、もっと勉強しなければならないツールやトピックを見つけることができるのです。 答えについて覚えていることをそのままインデックスに書き込むのは避けましょう。 これは、すべての問題バンクを共有しているため、将来の模擬試験を通過するための素晴らしい方法です。 また、本番の試験で失敗する可能性が高い方法です。 これは、私が3つ以上の模擬試験を受けることを勧めない理由でもあります。 その代わり、間違えた問題を出発点にして、さらに研究を進めてください。 また、模擬試験は、各トピックについてどの程度の知識が必要かを把握するのに最適な方法です。

模擬試験により、GIAC試験の仕組みに慣れることもできます。 私は GIAC は初めてで、CompTIA には慣れていたので、多くの問題で多くの正解があり、1 つの「良い」答えがあるという考えには、何の準備もありませんでした。 また、問題を「スキップ」するタイミングも学ばなければなりませんでした。 スキップして後で戻ってくることができる問題の数は限られていますし、問題に答えて提出すると、その問題に戻ることはできなくなります。 問題をよく読むことは、陳腐なことのように思えますが、試験準備のために身につけなければならない正統なスキルでした。 GIACでは、どの段階でも勉強、練習、応用努力に代わるものはないと本当に感謝しています。

実際の試験のスケジュールを立てる前に、練習試験は本試験より簡単なので、必要以上に5~10ポイント高いスコアを取るべきであることを知っておいてください。 これは、実は異なる GIAC 試験の間で異なります。 他のSANS DFIR試験を受けた人の多くが、自分の試験より模擬試験の方が難しかったと言っているのを見たことがあります。

GIAC 試験の「アプリケーション」

GREM試験を購入する場合、アプリケーションに記入し、2日間待って承認を受けると、無料の模擬試験の予定を立てたりアクセスすることができるようになります。 誰もこれに何を載せるかまでは考えていないと思いますが、私ならストレスを感じません。 私は彼らがあなたの資格が何であるかをあまり重視するとは思えないが、彼らはおそらくあなたが勉強方法とあなたが試験に持ち込んでいるものを気にしています。 願書を書くときは、正直に書きましょう。 すでに持っているSANS以外の資格、SANSや他の企業で受けたコース、現在の職務、試験の準備に使った本、そして自分の指標が何に基づいているのか、遠慮なく書いてみてください。

Exam Regrets

私の最大の後悔は、ネットワーク関連の行動分析およびスクリプトベースのマルウェアに関連するすべてを最後の瞬間まで置いておいたことでしょう。 このセクションの準備が不十分だったため、81.3%で試験に合格しましたが、このトピックに関連する読書だけでなく、もっと練習をしていれば、これらのセクションのスコアはもっと高くなったでしょう。 また、自分の苦手な分野とわかっていながら、実行可能性解析に重点を置きすぎてしまいました。

My Next Steps

Memory forensics, network-related behavior analysis, and kernel mode debugging の3つは、もっと学びたい分野です。 ルートキットを解析することで、これらを一挙に攻略することにしました。 近々、Win32ルートキットを分析するためのラボのセットアップ方法についての記事と、カーネルモードルートキットのサンプル(おそらくCutwail、変更の可能性あり)を、動作分析ツール、INetSimなどのネットワークツール、カーネルモードデバッガーWinDBG、ルートキットのメモリフォレンジック用のVolatilityプラグインを使って分析する別の記事を投稿する予定です。

また、これらのタイプのマルウェアを分析するために使用する手法の理解を確実にするために、ドキュメント ベースの javascript および VB マクロ サンプルをもう少し分析する必要があるでしょう。

コメントを残す

メールアドレスが公開されることはありません。