SECURITY 760 | ||||||||||||||||||||||||||||||||||||
Advanced Exploit Development for Penetration Testers |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
受講に必要なPC環境
演習で使用するノートPCをご持参下さい。受講に必要なPC環境についてご確認ください。
SANSトレーニングを有意義に受講していただくには、以下の要件を満たすノートPCを受講者自らご用意いただきます。下記要件をよく確認し、事前に必要な設定を完了しておいてください。セッション中には、下記の設定を実施する時間は設けられていません。必ず事前の確認・設定をお願いいたします。
講義での演習では、予め複数のOSを実行できるようにVMwareを導入しておく必要があります。コースの初日には演習に必要なすべてのツール(Windows 10や複数のLinuxディストリビューション、2ヶ月間有効なライセンス付きIDA Pro(ディスカウント購入レートオプション付き)などが提供されます。いくつかの演習ではOSとアプリケーションの設定を適切に行う必要があります。これらの演習では、RDPを使って教室に敷設されたネットワーク上の仮想マシンへ接続します。これらのシステムは持ち帰ることはできませんが、ご自宅に戻られてから再度システムを構築するための詳細情報が共有されます。
ウイルス対策やパーソナルファイアウォールなど、すべてのセキュリティソフトウェアと保護機能を無効にする管理機能があることを確認してください。このレベルの権限がない場合、演習を完了できない可能性があります。管理またはセキュリティ制御によってブロックされる可能性のあるソフトウェアのインストールを行う場合、制御を一時的に回避する方法があることことを確認してください。Windowsカーネルデバッグ用のWindowsデバッグツールをネットワーク接続経由でホストOSにインストールできる必要があります。また使用する端末は、Windows10をホストOSとして使用することを推奨します。ホストがMac OSまたはLinuxディストリビューションの場合は、Windows10のゲストOSを用意する必要があります。
ノートパソコンのハードウェア要件、ソフトウェア要件
- RAM:16GB以上
- VMware Workstation、VMware Player、VMware Fusionをインストール。30日間トライアルライセンスはhttp://www.vmware.comから入手可能
- HDD:100GB以上の空き容量
- CPU:64ビット Intel i5/i7プロセッサ 2.0 GHz以上
- 2ヶ月間有効なライセンス付きIDA Proがコース教材に含まれます。ライセンス登録にはHex-Rays社(IDA Pro開発元)へ受講者の名前とメールアドレスの提供を受入れる必要があります。受入れない場合にはご自身で手配したIDA Pro 7.4 advanced以降をご持参ください。
コース概要
Microsoft Windows 7/8、Server2012、最新のLinuxディストリビューションなど、最近のオペレーティングシステムの脆弱性は、非常に繊細で巧妙なことがよくあります。しかし、非常に熟練した攻撃者によって悪用された場合、これらの脆弱性は組織の防御を弱体化させ、重大な損害にさらす可能性があります。基本的なレベルで脆弱性が存在する理由や、脆弱性を悪用するためのエクスプロイトコードを作成する方法を理解するのはもちろん、発見するスキルを持ったセキュリティ専門家はほとんどいません。逆に、攻撃者は、それらの複雑さに関係なく、このスキルセットを維持する必要があります。SANS SEC760:Advanced Exploit Development for Penetration Testersでは、32ビットおよび64ビットアプリケーションのリバースエンジニアリング、リモートユーザーアプリケーションおよびカーネルのデバッグの実行、1-dayエクスプロイトによるパッチの分析、複雑なエクスプロイトの作成 (最新のソフトウェアおよびオペレーティングシステムに対する無停止使用の攻撃など) に必要なスキルについて説明します。
あなたは、次のことができるようになります(一例)。
- Windows 7/8/10オペレーティングシステムに対する最新のエクスプロイトを作る方法
- use-after-free、カーネルエクスプロイト、パッチ分析による1-day exploit、その他の高度なトピックなど、複雑な攻撃を実行する方法
- 脅威モデリングとともに、セキュリティ開発ライフサイクル(SDL)を利用することの重要性
- さまざまなデバッガやプラグインを効果的に利用した脆弱性の調査とスピードを向上させる方法
- エクスプロイトの成功阻止や攻撃継続の意図を挫けさせることを目的とした現代のセキュリティ緩和策への対応
本講座受講にあたっての前提
本コースでは、SANS SEC660:Advanced Penetration Testing,Exploit Writing,Ethical Hackingで解説するエクスプロイトを自身で作成し攻撃を行うといった経験が必須となります。
これには、LinuxとWindowsの両方でのスタックベースのバッファオーバーフローの経験、およびData Execution Prevention(DEP)、Address Space Layout Randomization(ASLR)、カナリア、およびSafeSEHなどの最新の攻撃緩和対策の無効化などを含みます。
Sulley Fuzing FrameworkやPeachなどのFuzzingツールの経験または理解も必要であるとともに可能であればC/C++の経験が推奨されます。少なくとも、Python、Perl、Ruby、LUAなどでのスクリプト作成経験は必須です。関数、ポインタ、呼び出し規約、構造、クラスなどのプログラミングの基礎は前提知識としてあることが想定されます。デバッガや逆アセンブラの内部からx86の逆アセンブルを読み取る能力と同様に、脆弱なコードのリバースエンジニアリングの経験も必要です。
LinuxとWindowsの両方の深い理解に基づく操作経験、およびTCP/IPの経験が必要です。これらの前提条件を満たせない場合、本コースの内容は非常に困難になることが予想されます。
SEC760につながるコース:
SEC660:Advanced Penetration Testing, Exploit Writing, and Ethical Hacking
FOR610:Reverse-Engineering Malware: Malware Analysis Tools and Techniques
SEC760の前提条件となるコース:
SEC660:Advanced Penetration Testing, Explit Writing, and Ethical Hacking
SEC760コースは、IDAによるリモートデバッグ、IDA PythonとIDCスクリプトの作成、SDLと脅威モデリング、Linuxヒープオーバーフロー、Patch Differing、use-after-free攻撃、Windowsカーネルのデバッグとエクスプロイトなどを含む非常にハイレベルなトピックを網羅しています。詳細については、本ページの記載内容を参照し、推奨される前提条件とラップトップの要件をご確認ください。
繰り返しとなりますが、WindowsおよびLinuxアプリケーション用のエクスプロイトを作成する方法、DEPやASLRなどのエクスプロイト攻撃緩和対策を回避する方法、return-oriented shellcode(ROP)を使用する方法などはすでに習得している必要があります。
SANSは受講者が本コースに対して準備ができているか? SEC660を先に受講した方がよいかなど多くの質問を受けます。これらの質問に対してオールマイティな回答はありません。SANSの推奨事項は、受講を検討しているすべてのコースについて、コースのシラバスと受講前提条件の説明を熟読することです。コース開発者であるStephen Sims氏は、十分な情報に基づいた意思決定を行うために、受講者からの質問にお答えします。連絡先はこちら(stephen@deadlisting.com)になります。
SANSでは、受講者がSEC660とSEC760のどちらのコースが適しているかを判断するための10問のテストを公開しています。これは純粋に攻撃開発の観点から行われるものです。SEC660には、エクスプロイトの開発とエクスプロイト攻撃緩和対策の回避に関する内容が盛り込まれています。ネットワークデバイスの活用(ルーター、スイッチ、ネットワークアクセス制御)、暗号実装に対するペンテスト、Fuzzing、Python、ネットワークブート攻撃、LinuxやWindowsの制限された環境からの脱出など、広範囲にわたる高度な侵入テストのトピックに関する2日間分にわたるものです。SEC760の多くの受講生は、Offensive Security、Exodus Intelligence、Corelanなどのトレーニングを受けています。一部のセクションには重複がありますが、重複のない固有のセクションが多数あります。
受講者が学ぶ内容
- パッチ適用されたOS上でのプログラムのゼロデイ脆弱性の発見
- 詳細なペンテストプロセスを通じた脆弱性を悪用するためのエクスプロイトの作成
- IDA Proの高度な機能とカスタムIDC、IDA Pythonスクリプト作成
- LinuxとWindowsアプリケーションに対するリモートデバッグの実行
- Linuxヒープオーバーフローの理解とエクスプロイト
- Retrun-Oriented Shellcodeの記述
- パッチ適用された脆弱性を探査するためのプログラム、ライブラリ、ドライバに対するパッチの拡散
- Windowsヒープオーバーフローの実行とuse-after-free攻撃
- 攻撃成功率を向上させるための正確なヒープスプレイ
- 64ビットWindows 8までのカーネルデバッグの実行
- Windowsカーネルエクスプロイト
受講対象者
- シニアネットワーク、システムペネトレーションテスター
- セキュアアプリケーション開発者(C、C++)
- リバースエンジニアリング専門家
- シニアインシデントハンドラー
- シニア脅威分析者
- 脆弱性研究者
- セキュリティ研究者
「ずっと情報セキュリティを学ぶ者として私はSEC760:Advanced Exploit Writing for Penetration Testersを提供できることに興奮しています。エクスプロイトの開発は最近のホットな話題であり、今後も重要性が増していくでしょう。Windows10などのOSが提供している最新のエクスプロイト緩和コントロール機能を考えると、実用的なエクスプロイトを作成するスキルを持つ専門家の数は非常に限られています。脆弱性を発見し、脆弱性が悪用可能かどうかを判断し、セキュリティ調査を行う能力を持つ専門家を雇用する企業が増えている中で、このコースはこのような非常に人気の高いポジションに就くために役立つように作られました。また、ターゲットを徹底的に評価するための最先端のテクニックを習得し、エクスプロイト開発能力を向上させるスキルを提供します。」-- Stephen Sims
---------
「著者への指導と支援SEC760:Advanced Exploit Writing for Penetration Testersは、私に、エクスプロイト開発に関する過去の経験と技術的なシステム知識を共有する機会を与えてくれました。このコースではさまざまな活用テクニックを紹介し、現代のアプリケーションやシステムを活用するための素晴らしい出発点となります。エクスプロイト開発や脆弱性の調査に従事する予定がない場合でもこのコースではエクスプロイト開発に至る思考プロセスとそれが成功しないようにするために存在するテクノロジーを理解することができます。」-- Jaime Geiger
Exploit Mitigations and Reversing with IDA
このコースは、成熟したエクスプロイトの緩和と現代的なエクスプロイトの緩和の両方を深く掘り下げることから始まります。今日、OSやアプリケーションは複数の緩和策を組み合わせて脆弱性の悪用を防ぐことが一般的と言えます。
産業用制御システムやIoTの分野などでは時代遅れのOSやアプリケーションは確かに存在していますが、それはこのコースの焦点ではありません。ここでは、Windows Defender Exploit Guardで実装されているコントロールなど、各コントロールの有効性と技術的な詳細について説明します。
その後、コースに同梱されているIDA Proを使用して残りの時間を過ごします。簡単に逆アセンブラであるIDA Proを習得し、ツールを使ったリモートデバッグに移行します。Day1はIDA FLIRTとFLAIRを活用し、さらにIDAPythonスクリプトを記述してバグ探索および分析を行います。
トピック
- Exploitの緩和
- Windows Defender Exploit Guard
- IDA Proの紹介
- IDA Proを使ったデバッギング
- FLIRTとFLAIRの利用
- IDAPythonとPhython 3によるスクリプト
Linux Application Exploitation
より高度なリバースエンジニアリングとエクスプロイトを活用するにはSEC660でカバーするような基本的なソフトウェアの脆弱性について、専門家レベルで理解している必要があります。
ヒープオーバーフローは、最新のエクスプロイトテクニック習得のために避けては通れないものです。Day2はこの知識ギャップを埋め、より抽象的な考え方を刺激することを目的としています。Linuxはこれらのテクニックを習得するための比較的理解しやすいオペレーティングシステムであり、これがWindowsの世界へ足を踏み入れる際の恰好の入り口になるでしょう。エクスプロイト開発に関するほとんどのコースはWindows OSのみに焦点を当てていますが、Linux OSの脆弱性研究についても理解しておくことが重要です。
トピック
- Linuxヒープ管理、構築、環境
- ヒープのナビゲーション
- unlink() や frontlink()マクロの悪用
- ポインター機能の上書き
- フォーマットストリングエクスプロイト
- カスタム双方向リストの悪用
- Linuxのエクスプロイト回避策の突破
- Linuxアプリのエクスプロイトに対するIDAの利用
- フォーマットストリングバグを使ったASLRバイパス
Patch Diffing, One-Day Exploits, and Return-Oriented Shellcode
脆弱性は時に秘密裏に修正されることがあるため、攻撃者はMicrosoftなどのベンダーからパッチが提供されると、パッチによってどんな脆弱性が改修されたのかを探し出すために真っ先にそれをダウンロードして解析を行います。そうすることで、パッチが適用されていないシステムにどんな脆弱性が潜んでいるかを把握し、それらのシステムの制御権を奪おうとします。このテクニックは、インシデントハンドラ、IDS管理者やベンダ、ペンテスト企業、および政府機関などによっても実行されます。Day3で紹介する資料を使い、ベンダーがパッチを当てたにも関わらず存在するバグを特定し、それを悪用することになります。また、シェルコードをエミュレートするガジェットをつなぎ合わせるために、Return Oriented Programming (ROP)を使用することにも焦点を当てます。
トピック
- Microsoftのパッチ管理プロセスと「火曜(日本では水曜)」のパッチ
- パッチの入手とパッチ抽出
- BinDiff 5を使用したバイナリ比較
- コード変更の視覚化と修正の特定
- 32ビットと64ビットのアプリケーションとモジュールのリバースエンジニアリング
- パッチがが適用された脆弱性のトリガー
- 1-dayエクスプロイトの記述
- 現代のエクスプロイト緩和対策
- ROPを使用したオンザフライコンパイルシェルコード(Return-Oriented Shellcode)
Windows Kernel Debugging and Exploitation
Day4は、複雑で扱いにくいWindowsカーネルと最近のバージョンで追加された数々のエクスプロイト緩和策の理解を進めます。
複数のWindows OSのカーネルデバッグを実施し、固有の複雑さへの対処方法を学びます。さらに、Ring 0ドライバ脆弱性を解析し、エクスプロイトテクニックを調べ、実際に動作するエクスプロイトを見つけます。
トピック
- Windowsカーネルの理解
- Windowsカーネルの探索
- 現代のカーネル保護方法
- 7/8カーネルとドライバのデバッグ
- WinDbg
- カーネル脆弱性とその種類の解析
- カーネルエクスプロイトテクニック
- トークン盗難とHALディスパッチテーブルの上書き
Advanced Windows Exploitation
Day4の焦点は、Windows OS上で実行されているアプリケーションの高度なエクスプロイトです。長年にわたり、メモリ破壊のバグはWindowsアプリケーションにおいては最も標準的なエクスプロイト手段でした。たとえば、Use After Free(UAF)やType Confusionのバグなどがあります。これらの脆弱性の多くはオブジェクト追跡や動的メモリ管理など大規模なC++アプリケーションの複雑さが原因で発生します。このセクションでは、Windows7、8、および10オペレーティングシステムにおけるこれらのアプリケーションの脆弱性に焦点を当てます。
トピック
- Windowsヒープ管理、構築、環境
- LFH(Low Fragmentation Heap:低断片化ヒープ)の理解
- ブラウザベース、クライアントサイドエクスプロイト
- ヒープスプレーの是正
- C++ vftable/vtable 挙動の理解
- アドレス推測を確定させるための現代版ヒープスプレー
- Use-After-Free攻撃とポインター
- MemGC、隔離されたヒープなどの保護の回避
- ASLR、DEPや一般的な緩和策の突破