FORENSICS 610 | ||||||||||||||||||||||||||||||||
Reverse-Engineering Malware:
|
||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
受講に必要なPC環境
演習で使用するノートPCをご持参下さい。受講に必要なPC環境についてご確認ください。
FOR610 PC設定詳細
SANSトレーニングを有意義に受講していただくには、以下の要件を満たすノートPCが必須です。下記要件を確認し、事前に必要な設定を完了しておいてください。セッション中には、下記の設定を実施する時間は設けられていません。必ず事前の確認・設定をお願いいたします。
注意:実習のためのツール類をインストールすることによって、一部のシステムの動作に支障をきたす可能性があります。また、ネットワークへの接続を伴う実習内容があり、故意過失を問わず、自分のノートコンピュータのデータに他の受講生からアクセスされる可能性もあります。いずれの場合もSANSではデータの破損や読み書きに関して責任をとることはできませんので、重要なデータが格納されているノートPCでの実習はお控えください。
重要:VMwareによって仮想的に分離しているといはいえ、悪意あるコードを扱うので業務で使用しているPCは持ち込まないでください。
ノートパソコンのハードウェア要件
- CPU:Intel互換64 bit(必須) デュアルコア 2.0GHz以上の CPU i5、i7(第4世代以上)
- RAM:16GB以上(最小必須)
- USB:3.0(必須)
- HDD/SSD:最低200GB以上の空き容量(より大容量を推奨)
- NW:802.11無線LAN、Ethernet NIC
- OS:Windows 10 ProまたはMaxOS X 10.12以上
- その他:USBメモリの読込ができること
- その他:ホストOSのローカルアドミニストレーター権限
- その他:ウィルス対策製品の停止、解除ができること
- その他:ファイアウォールの停止、設定変更ができること
- その他:BIOSが仮想化機能をサポートしていること(Intel VTもしくはAMD-V)
ノートパソコンのソフトウェア要件(下記を事前にインストールしてください)
- VMware Workstation Pro15.5以上、またはVMware Fusion Pro 11.5以上
ライセンスをお持ちでない方は30日間のトライアルライセンスが利用可能です。重要:VMwareは「Pro」表記があるバージョンが必要です。VMware Workstation Playerは演習で必要となるスナップショット機能がないため、本コースでは利用できません。VirtualBoxやHyper-Vなどの他の仮想化ソフトウェアの利用は本コースでは適切ではありません。 - VMware Workstation ProをWindows 10で動作させる場合、Widows 10のクレデンシャルガードとデバイスガードテクノロジー機能の一時的な無効化が必要です。設定方法は下記URLを参照してください。https://kb.vmware.com/s/article/2146361
- 7zip(Windows)、Keka(Mac OS)
ノートパソコンの設定に関して追加で質問がある場合は、info@sans-japan.jp(NRIセキュアテクノロジーズ)にお問い合わせください。ただし、米国と問合せを行う関係上時間を要する場合がございます。お急ぎの方はlaptop_prep@sans.orgに直接お問い合わせください(英文)。
コース概要
このコースでは、マルウェア解析ツール、手法を詳細に解説していきます。FOR610は、フォレンジック担当者、インシデントレスポンダー、セキュリティエンジニア、IT管理者にとって、感染もしくは標的となったWindowsシステム内の悪意あるプログラムを調査するための実践的なスキル獲得に役立ちます。マルウェアの機能を理解することは、組織の能力として重要なことであり、スレットインテリンジェンスへの派生、インシデント対応、防衛能力の強化に活用できます。本コースを通じて学習することで、マルウェアのリバースエンジニアリングに関する強固な土台となるスキルを身につけることができます。具体的には、さまざまなシステム監視ユーティリティやネットワーク監視ユーティリティ、ディスアセンブラー、デバッガー、その他マルウェアの内部/外部を調査する上で有用なツール群を使うスキルを獲得していきます。
自動分析ツールを使って劇的に発見しやすくするような手法で、マルウエアを解析するための基礎を身につけるところから始まります。悪意のあるソフトウエアの内部検査を行うフレキシブルなラボを設定する方法や、実世界にあるマルウエアのサンプルの特徴を発見するラボの使い方を学びます。悪意のあるプログラムを動かすことで検体の機能を発見するため、ラボの中でネットワークトラフィックをリダイレクトしたり遮断する方法を学習します。リバースエンジニアリングと関連する本質的なアセンブリ言語のコンセプトを学びます。重要な構成要素と実行フローを理解するために、ディスアセンブラやデバッガーの助けを借りて悪意のあるコードを検査することを学習します。加えて、悪意のあるプログラムにある怪しいWindows APIパターンに注目することによりマルウェアに共通の特徴を見つけ出す方法について学習します。
次に、攻撃の性質を理解するために、怪しいウエブサイトのアセスメント方法や悪意のあるJavvaScripの難読化の解除方法を掘り下げながら、ウェブシステムに由来するマルウエアの世界に入ります。
Microsoft Office、RTF、PDFファイルといった種類の悪意あるドキュメントを分析する方法も取り上げます。このようなドキュメントは、標的型攻撃もしくは大規模感染を引き起こすものとして、共通の感染ベクターとして活動します。ファイルレスマルウエアや悪意のあるPowerShellスクリプトの検査方法を学習します。
マルウエアは解析の邪魔をするためにしばしば難読化されています。そのためコースでは実行ファイルを分解するスキルを身に付けるためのサポートをします。デバッガーや追加の専門ツールを使ってメモリからそのようなプログラムをダンプする方法や作成者による保護をはずしてファイル構造をリビルドする方法を学習します。これらの特徴を検査するためにコード分析やメモリフォレンジクス手法を利用して、システム上の存在を隠すルートキット機能を持っているマルウエアを検査する方法を学習します。
FOR610は分析から逃れようとする悪意のあるソフトウエアとの付き合い方も紹介します。コードインジェクション、サンドボックス回避、フローの誤認やほかの方法を含む一般的な自己防衛型機能を理解します。
コース最終日は、CTFに挑戦してもらいます。一連学んできたことの復習になり、実践的かつハンズオンでマルウェア解析を楽しみながら学べるよい機会となることでしょう。
本コースでは、管理下にあるラボでマルウェアを調査して、マルウェア解析手法を実践してみるハンズオン演習を重視しています。演習を行うことで、典型的なパターンを理解し、コードを分析する際に重要な部分を理解できるでしょう。そして演習をスムーズに行えるようにするために、あらかじめマルウェア解析用のツールを構成してあるWindowsとLinuxの仮想マシンを用意してあります。
- 受講対象者マルウエアを含むインシデントを扱う、あるいは悪意のあるプログラムの基本事項を理解したい方
- 体系的ではないがマルウエア解析の経験を持つ、あるいはこの領域の専門性を体系化したり広げたい技術者
- スキルセットを広げたい、インシデントレスポンスにおける重要な役割を果たすフォレンジック調査官、セキュリティ技術者
コースメニューへ▲ ページトップへ▲
講義内容の一例
- 隔離された管理下にあるラボ環境を構築し、悪意あるプログラムの挙動とコードを分析する
- ネットワークとシステム監視ツールを使い、どのようにマルウェアがファイルシステム、レジストリ、ネットワーク、その他のWindows環境のプロセスに感染していくかを調査する
- Webページのコンポーネントとして含まれる、ドライブバイアタックを行うためエクスプロイトキットによってよく用いられる悪意あるJavaScriptやVBScriptを明らかにし分析する
- 悪意あるプログラムの挙動を制御する方法として、ネットワーク通信をインターセプトしコードパッチングを行って効果的にマルウェア解析を行う
- ディスアセンブラとデバッガーを使って、悪意あるWindows実行ファイルの内部の仕組みを調査する
- アナリストを欺き混乱させ解析を遅延させるために、マルウェア開発者が講じたさまざまなパッカーや防御機構をバイパスする
- コードインジェクション、APIフッキング、アンチ解析手法等の悪意あるコードに、共通のアセンブラパターンを認識し理解する
- PDFやMicrosoft Officeファイルといった悪意のあるドキュメントに関する脅威を評価する
- インシデントレスポンスやスレットインテリジェンスを強化するために悪意のある実行ファイルからIOCを引き出す
「熟練マルウェアアナリストが、感染したシステムに侵入した悪意あるファイルから情報をどれほど得られるのか驚くほどです」マルウェアをリバースエンジニアリングする方法を学ぶことで、侵入された深刻さ、攻撃の目的や経過、封じ込めの手順、および組織がインシデントを対応するのに役立つ多くの状況が得られます。 FOR610コースは、さまざまな使えるテクニックを駆使して悪意あるソフトウェアの調査方法を学ぶ、そして得られた専門知識からマルウェア分析を習得するための専門家への入り口なのです。
- Lenny Zeltser
「攻撃者と効果的に立ち向かうためには、相手が使用しているツールへの理解が必要です。」このコースでは、コードを機能的にリバースエンジニアリングすることで、機能、依存性、およびその制限を理解するために必要なスキルを学びます。目的を達成するために攻撃者は、独創的で堅牢なマルウェアを生み出そうと、日々努力を積み重ねています。組織が将来の攻撃を軽減するためにコードを解読してそれを学んでいくためには、同様に熟練したマルウェア分析機能を備える必要があるのです。
- Anuj Soni
「私がインシデント対応に関わったときは、”ここには感染したシステムがあり、それを再構築する”と言うだけで十分でした。」そのような日々がしばらく続きましたが、今日、組織は、適切なリスク評価と影響判断を行うためにも、システムを感染させたマルウェアの機能を理解しておく必要があります。さらに、攻撃者はマルウェアを頻繁に改変させることで、ウイルス対策やその他のエンドポイント制御までもバイパスしています。リバースエンジニアリングによってのみ、防御側は最も適切に侵入の痕跡(IOC)を分離し、マルウェアの亜種が放たれたときにも、特定して食い止めることができるのです。このコースでは、今日のエンタープライズ環境で見つかったマルウェアを分析するために必要なスキルを防御側として身につけてもらいます。
- Jake Williams
マルウェア解析基礎
このセクションでは、マルウェア解析を理解するうえで必要な基礎知識を身につけます。悪意あるプログラムを調査するための主要なツールとテクニックを解説します。フェーズごとにWindowsマルウェアを調べることで解析時間を短縮する方法を学びます。静的プロパティ分析では、メタデータおよびその他のファイル属性を調べてトリアージを行い、次の対応を決定します。行動分析では、レジストリ、ファイルシステム、ネットワークなどの環境とのプログラムの相互作用に焦点を当てます。コード解析では、検体の内部動作に焦点を当て、x64bgなどのデバッグツールを使用します。提供されているWindowsおよびLinux(REMnux)仮想マシンに慣れ親しむように、設定された方法でこのような分析を行う方法を学びます。ラボではサンプルマルウェアの調査を行い、主要な解析ツールの実行方法を理解していきます。インストラクターのガイダンスとラボ後の解説によって、マルウェア解析の概念をしっかり理解できることでしょう。
このセクションで紹介するツールには、pestr、peframe、PeStudio、Process Hacker、Process Monitor、Regshot、ProcDOT、x64dbg、API Monitor、INetSimなどがあります。
トピック
- 効果的なマルウェア解析のためのツールキット構築
- 疑わしいプログラムの静的パラメーター調査
- 悪意のあるWindows実行ファイルの挙動解析を行う方法
- Windowsマルウェアの静的コード解析と動的コード解析を行う方法
- 付加的な行動特性を導き出すため、ラボにあるマルウェアとの相互影響
悪意あるコード解析
このセクションでは、Windowsの悪意ある実行ファイルをアセンブリレベルで調査することを中心に説明していきます。検体の内部の仕組みをディスアセンブラを通して解明していく方法を紹介します。また、デバッガーも解析の助けとなるでしょう。まず始めに、コードのリバーシング概念について概要を説明します。x86 Intelアセンブリの概念について、解析に不可欠な入門知識を解説します。たとえばインストラクション、ファンクションコール、変数とジャンプといった概念です。また、関数、ループ、条件文といったもので構成される共通のアセンブリを調査する方法も学んでいきます。教材を使って基礎を固めてから、ポピュラーになった64ビットマルウエアを使って理解を深めます。ディスカッションを通じて、HTTPを使用したコマンド・コントロール、キーロギング、命令実行といった共通の特徴を理解します。
これらの概念とともに、IDA Proの静的コード分析を行うための主要な機能も理解できることでしょう。
トピック
- コードレベルでのマルウェア解析を行うためのx86アセンブリの概念
- ディスアセンブラを使用したアセンブラのロジック構造の主要部分を特定する方法
- プログラム制御フローに従い、実行ポイントを理解する
- Windows APIレベルでのマルウェア特性を理解する(レジストリ操作、キーロギング、HTTP通信、ドロッパーなど)
- x64コード解析を組み込むためのアセンブリ知識の拡張
悪意のあるWeb、ドキュメントファイル
このセクションでは、悪意あるWebページや文書を調べることに焦点を当てています。悪意あるWebページや文書は、感染したシステム上で悪意ある行為を直接実行したり、悪意ある実行可能ファイルのインストールにつながる攻撃を行うために使われます。まずクライアント側の攻撃を助長する可能性のある疑わしいWebサイトを調べる方法について解説します。次に、スクリプトデバッガとインタプリタを使用して悪意あるスクリプトを難読化する方法、Microsoft Officeマクロを調べる方法、PDFやRTFファイルに関連する脅威をいくつかの手法を使って評価する方法などを解説します。
このセクションで紹介するツールには、Fiddler、SpiderMonkey、box-js、base64dump.py、pdf-parser.py、peepdf.py、scdbg、olevba.py、oledump.py、rtfdump.py、jmp2itなどがあります。
トピック
- 悪意あるWebサイトから脅威の特性を評価する
- デバッガとインタプリタを使用して難読化された悪意あるJavaScriptを解読する
- 疑わしいPDFファイルの解析
- 悪意あるMicrosoft Officeドキュメントの検査(マクロ含む)
- 悪意あるRTFドキュメントファイルの解析
より深いマルウェア解析
このセクションでは、1日目に紹介した振る舞い分析とコード解析のアプローチを軸に掘り下げていき、悪意あるプログラムに追加される機能を解明していくテクニックを学んでいきます。具体的には、パッカーとよばれるテクニックについて学んでいき、そしてその防御を回避する方法を理解していきます。また、レジストリ、難読化されたJavaScriptとPowerShellスクリプト、シェルコードの使用など、本来の特性を隠すために複数のテクノロジを使ったマルウェアの分析も行います。最後に、ユーザモードルートキットとしてコードインジェクションやAPIフックなどを実装されたマルウェアについて、コードとメモリフォレンジックの両方の観点からこれらの機能を調べる方法を学びます。
このセクションで紹介するツールには、Detect It Easy、Exeinfo Pe、Bytehist、CFF Explorer、Scylla、OllyDumpEx、Volatilityなどがあります。
トピック
- パッキングされたマルウェアの識別
- アンパッキング概説
- パッキンクされたマルウェアをメモリからデバッガでダンプする方法
- 複数のテクノロジーを利用したマルウエアとファイルレスのマルウェア分析方法
- コードインジェクションとAPIフック
- マルウェア分析にメモリフォレンジックを使用する方法
自己防衛型マルウェア
このセクションでは、マルウェアの作成者が悪意あるソフトウェアを解析されるのを阻止するために使っている手法を詳しく解説します。時間稼ぎまたは、誤分析するよう仕組まれた対分析手法を識別し、回避する方法について解説します。このプロセスでは、マルウェアの静的および動的分析を行って、アンパックしたり、他のプロセスにインジェクトしたりできることを学びます。マルウェアの作成者が悪意ある実行可能ファイルに埋め込んだデータを保護する方法についても理解を深めることができます。コースを通してカバーされているトピック同様に、実践演習中にこのようなテクニックを試すことができます。
このセクションでは、IDA Proやx64dbg / x32dbgなど、コースの初めに取り上げられた多くのツールや、FLOSS、bbcrack.py、ScyllaHide、pe_unmapperなども紹介します。
トピック
- マルウェアがデバッガを検出し、埋め込みデータを保護する方法
- 悪意あるソフトウェアのプロセス空洞化を利用したアンパック方法
- マルウェアが解析ツールを検知する機能を特定し無効化する方法
- SEHおよびTLSコールバックを含むコード誤検出手法
- パッカーの動きを予期して悪意ある実行可能ファイルをアンパックする方法
マルウェア解析トーナメント
最終日である6日目は、受講生はインシデントレスポンスやフォレンジックチームメンバーのマルウェアアナリストとして作業をしてもらいます。受講生は、トーナメントを楽しみながら実世界のマルウェア解析に関するさまざまなチャレンジ問題に挑んでいただきます。このようなチャレンジによって、受講生はインストラクターが用意したラボ環境により典型的なマルウェア解析を行えるようになるだけでなく、さらなる能力向上のよいきっかけとなるでしょう。また、チャレンジは5日間学んできたスキルを包括する内容になっています。SANS NetWarsプラットフォーム上で作業をしてもらいます。このコースで学んできたテクニックを使ってみることによって、知識とスキルを確かなものにすることが出来て、さらに追加演習をしたいと思えるようになるでしょう。
トーナメントを制したチームには、チャレンジコインが授与されます。
トピック
- 挙動解析
- 動的解析(デバッガー)
- 静的解析(ディスアセンブラ)
- JavaScript解読
- PDF文書解析
- Office文書解析
- メモリ解析