SECURITY 660 | ||||||||||||||||||||||||||||||||||||
Advanced Penetration Testing, Exploit Writing, and Ethical Hacking |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
受講に必要なPC環境
演習で使用するノートPCのご準備をお願いいたします。受講に必要なPC環境についてご確認ください。
SEC660 PC設定詳細
クラスの演習では、「VMware Workstation」または「VMware Fusion」などで仮想化環境を構築し複数のOSを実行する必要があります。VMwareのライセンス使用権を所有していない場合は、www.vmware.comから30日間試用版を無料でダウンロードできます。ウェブサイトで試用版に登録すると、期限付きシリアル番号がVMwareから送信されます。 Windows10仮想マシンおよびLinux仮想マシンと必要なツールは、コースの初日に提供します。
ウィルス駆除ソフトやパーソナルファイアウォールを含むすべてのセキュリティソフトウェアと保護を無効にする管理者権限があることを確認してください。この設定変更なしでは演習を完了することができないかもしれません。また、管理設定やセキュリティ設定上、通常ブロックされるようなソフトウェアがインストールできることも確認してください。さまざまなデバッガと脆弱なアプリケーションを仮想マシンにインストールします。
Macを使用する際の注意:「VMware Fusion」を用いることで、Mac OS XでもSEC660の演習を行えますが、実行しているFusionのバージョンや、システムに組み込まれている、もしくは接続されているハードウェアによっては、問題が発生する可能性があります。 このことから、OS X 10.6「Snow Leopard」以降が動作していなければなりません。また、デバッグの演習の際には、OS X上の仮想アプリケーションを介してF7やF9などのファンクションキーを割り当てる必要があります。
コースで使用するツールを含むUSBドライブが提供されます。このドライブはexFATでフォーマットされています。 LinuxまたはMac OS Xを使用する場合は、exFATファイルシステムを読み込むためのドライバがインストールされていることを確認してください。
PCの必須ハードウェア要件
- 有線イーサネットアダプタ - これは特定のラボで必須
- CPU:Intel i5/i7 x64 2.0+ GHzプロセッサ以上(64bit必須)
- RAM:16GB以上(最小8GB以上)
- 最低250GB以上のハードドライブ(ハードドライブの要領は必須)
- 60GBのハードドライブ空き容量
- USB:3.0以上
PCのその他要件
- VMware Workstation Player 15.5、VMware Fusion 11 または VMWare Workstation 15.5 以降のバージョン
- システムの管理者権限を持っていることを確認
- ご使用のCPUがVMwareのバージョンをサポートしていることを確認(コースが始まる前に必ずご確認ください)
- エンタープライズVPNクライアントを一時的に無効にする事ができる
- ウィルス対策ソフトウェアを無効に設定する事ができる
ワークショップでは、最も危険なネットワークの1つに接続するため、あなたのPCが攻撃される可能性もあります。機密データ等はシステムに保存しないでください。クラス内の誰かがワークショップ中に攻撃した場合、SANSはあなたのシステムに対して一切責任を負いません。
PC仕様に関するその他のご質問は、laptop_prep@sans.orgまでお問い合わせください。
コース概要
SEC660:応用的なペネトレーションテスト、エクスプロイト開発、およびエシカルハッキングコースは、SANS SEC560:Network Penetration Testing and Ethical Hackingコースを修了した方、またはペネトレーションテストの経験を既にお持ちの方々が、さらなるステップアップをなしとげられるよう設計されたコースです。このコースの受講対象者は、最も経験豊富な全世界の侵入テスターが実際に使用している、いくつもの攻撃方法を体験する事ができます。はじめに攻撃手順を学んだ後、コンセプトを確立するため日々実践的なラボ演習を行い、職場ですぐ活用できるように設計されています。また、さらなる技術的な熟練をめざしてコース各日で2時間の短期集中トレーニングが講義後に含まれています。日々のコースでは、ペネトレーションテスター向けに必要なPythonの武器化のほか、ネットワークアクセス制御(NAC)や仮想ローカル・エリア・ネットワーク(VLAN)に対する攻撃、ネットワーク機器への攻撃や、LinuxおよびWindowsの制限付き環境からの脱却、IPv6、Linuxの特権昇格とエクスプロイト作成、暗号実装へのテストやファジング、また近年のOSによる制御機構であるアドレス空間配置のランダム化(ASLR)やデータ実行防止(DEP)の回避、リターン指向プログラミング(ROP)、Windowsエクスプロイト作成といった高度かつ広範なトピックを取り上げていきます。
近代の攻撃はより巧妙にそして複雑になっています。 最新の攻撃方法を修得するためには、自身の学ぶ意欲や第三者からのサポート、そして練習などから得られる経験の蓄積が必要です。このコースでは、最も有力で優れた攻撃マインドに関する深い知識を提供し、多数の実践的なシナリオを通じて演習できる環境を提供します。 簡単なスキャンニングを学ぶだけでなく、ペネトレーションテスト担当者に、高度な攻撃者が標的となる環境でどのようにして重大な欠点を見つけ出す事ができるかのサンプルを示したうえで、これらの弱点に関連するビジネスリスクを実演します。
SEC660では、応用的なペネトレーションコンセプトの紹介や今後に備える準備としての概要の説明から開始します。 1日目はテスターがあまり触れることのない一部のネットワーク攻撃に焦点をあてます。内容にはネットワークへのアクセス、操作、そして攻略方法などが含まれます。 攻撃は、NAC、VLAN、OSPF、802.1X、CDP、IPv6、VOIP、SSL、ARP、SNMPなどに対して実行されます。 2日目は、さまざまな暗号実装に対するペネトレーションテストの技術的な項目から始まり、ネットワークブート攻撃、chrootなどのLinux制限環境やWindows制限デスクトップ環境の回避などに進みます。 3日目は、ペネトレーションテストのためのPythonと、パケット生成のためのScapy、商用製品に対するセキュリティテスト、ネットワークとアプリケーションのファジング、コードカバレッジ技術を説明します。 4日目と5日目はLinuxおよびWindowsオペレーティングシステム上でプログラムをエクスプロイトすることに時間を費やします。このコースでは、特権プログラムの特定、コード実行のリダイレクト、脆弱コード特定のためのプログラムのリバースエンジニアリングや管理シェルアクセスのためのコード実行の取得、また、ROPやその他の手法を使ってASLR、カナリア、DEPなどの最新のオペレーティングシステムに実装されている制御手法を無効化する方法などを修得します。また、クライアント側のエクスプロイトも含むローカルおよびリモートエクスプロイト手法についても解説します。最終日は、多数の難題を解決するCapture the Flagを通じてペネトレーションテストの課題に専念していただきます。
SEC660の最大のメリットの1つは、豊富なラボと追加演習時に提供される専門家レベルの実践的なガイダンスです。
解説する主な内容:
- ルータやスイッチ、NAC実装といったネットワーク機器に対する安全なペネトレーションテスト実施方法。
- 暗号実装のテスト方法。
- 一般権限を活用して、エクスプロイトや権限昇格を行う方法。
- ネットワークとスタンドアロンアプリケーションに対するファジングテスト方法。
- LinuxおよびWindowsシステムで実行されているアプリケーションに対するエクスプロイトコード作成方法。
- ASLR、DEP、Stack Canariesなどのエクスプロイト対策をバイパスする方法。
コースメニューへ▲ ページトップへ▲
本講座受講にあたっての前提
このコースは授業進行が速く、高度なペネトレーションテストや攻撃の技術を学ぶため、強い学習意欲を必要とする上級コースです。このコースを受講するには、下記のSANSコースを事前にもしくは同時進行で受講することをお勧めします。
SEC504: Hacker Tools, Techniques, Exploits, and Incident Handling
SEC560: Network Penetration Testing and Ethical Hacking
また、プログラミング経験があり、プログラミング基礎の概念を最低限理解しておく事を強くお勧めします。クラス演習での言語は主にPythonを使用しますが、攻撃するプログラムは主にCおよびC ++コードで書かれたプログラムです。Pythonの入門的な要素は学習しますが、プログラミングの基礎についてはこのコースでは扱いません。
また、このコースを受講するには、ペネトレーションテストの基礎知識や LinuxとWindowsに精通していることが必須であり、TCP / IPとネットワーク概念についても理解している必要がります。前提条件についてご不明な点がございましたら、stephen@deadlisting.comまでご連絡ください。
コースメニューへ▲ ページトップへ▲
受講対象者
- ネットワークおよびシステムペネトレーションテスト担当者:SEC660は、既知または未知のアプリケーション、サービス、およびネットワークシステムに対して高度なテストを実行するために必要なトレーニングを、ペネトレーションテスト担当者に提供します。また、複雑な攻撃を実行するための技術や、既存もしくは新しいフレームワークを活用してエクスプロイトを作成するための専門知識を受講者に提供します。
- インシデント対応者:SEC660コースでは、インシデント対応者が攻撃の脅威レベルを分析し、標的型攻撃を理解するために必要となる知識を提供します。高度な攻撃を理解しコードを分析する能力は、インシデントの特定、検出および対応に役立ちます。
- アプリケーション開発者:SEC660ではコーディングによる悪影響を学びます。多くの場合、開発者またはコードレビュアーは、コーディングエラーの脅威と影響を明確に示す必要があります。このコースでは、概念実証的な攻撃コードを作成し、その結果を文書化するための知識を開発者に提供します。
- IDSエンジニア:SEC660はエクスプロイトコードを分析し、弱点を特定する方法を指導します。この知識は、より良いIDSシグネチャを作成し、アラートへの影響を理解するために使用できます。
コースメニューへ▲ ページトップへ▲
講義内容の一例
- OSPFなどのルーティング・プロトコルの実装に対するエクスプロイト
- さまざまなNAC実装タイプのバイパス
- パッチ更新機能に対するエクスプロイト
- 中間者攻撃を悪用したSSLの無効化
- IPv6攻撃
- CBCビット反転攻撃やハッシュ伸長攻撃などを悪用した弱い暗号化実装へのエクスプロイト
- ネットワークブート環境のハイジャック
- 仮想化実装へのエクスプロイト
- テストを自動化するPythonスクリプト
- ソフトウェア製品の脆弱性やバグを検出するためのファジング
- リバースエンジニアリングを用いたアプリケーションのコードソース、脆弱性のあるバグを特定
- Linuxアプリケーションのデバッグ
- Windowsアプリケーションのデバッグ
- バッファオーバーフローの脆弱性に対するエクスプロイトの作成
- ASLR、DEP、スタックカナリア、SafeSEHなどのエクスプロイト無効化技術のバイパス
- ROPを使用したセキュリティコントロールのバイパスまたは無効化
詳細なペネトレーションテストを実行するには、実際のますます洗練された攻撃者の活動を模倣しながら、攻撃をうまく回避するためのユニークで複雑なソリューションが必要な状況に直面することがよくあります。ソリューションを特定して実装するスキルがなければ、大きな脆弱性を見逃すなどビジネスへの影響を適切に判断できない可能性があります。標的とされるシステムの担当者は、環境が保護されているかどうかの判断をあなたに頼っています。攻撃者は常に一歩前を行っており、労力を要して展開した非常に優れた制御に関してさえも、それを無効化してくる可能性があります。このコースは、他の人が経験したミスを繰返さないように、標的を徹底的に診断するための最先端のテクニックを教え、エクスプロイトを開発するためのスキルを提供できるよう構築されたコースです。
コースに関するご質問がある場合は、stephen@deadlisting.comまでご連絡ください。
- Stephen Sims(Lead author)
Network Attacks for Penetration Testers
ペネトレーションテスターのためのネットワーク攻撃
1日目は、SEC560:Network Penetration Testing and Ethical Hackingから得た知識を基に、高度なネットワーク攻撃の授業を提供します。
まずは、盗聴や攻撃を行うための場所を得るために、ネットワークアクセスを得ることを試行します。ネットワーク機器を悪用したり、ネットワークインフラストラクチャの弱点を突いたり、クライアントの脆弱性を利用したりすることで、ネットワークを操作することに焦点を当てます。
トピック
- ネットワークアクセス/アドミッション制御(NAC)のバイパス
- アドミッションコントロールポリシーの例外を使用したデバイスの偽装
- EAP-MD5認証に対する攻撃
- Ettercap (a free and open source network security tool)とカスタムフィルターによるカスタムネットワークプロトコル操作
- 中間者攻撃によりネットワークアクセスを獲得する複数の手法
- ペネトレーションテスト担当者が押えておくべきIPv6
- 悪意のあるルーティングアップデートを注入するためのOSPF認証に対する攻撃
- Evilgradeを使用したソフトウェアアップデートを攻撃
- sslstripツールでのSSLトランスポート暗号化セキュリティの乗っ取り
- ネットワーク接続されたCiscoルータコンフィギュレーションファイルの取得
Crypto and Post-Exploitation
暗号化、エクスプロイト
2日目は、ペネトレーションテスト担当者が使用できる一般的な暗号化の抜け穴を調査し、攻撃するためのテクニックを戦術的に見ていくところから始めます。まずは、暗号がどのように動作するかについて基本的な知識を、複雑な数学で行き詰まることなく理解を深め、その後、実際の暗号化実装を識別、評価、そして攻撃をするためのテクニックに移っていきます。 ラボ演習では、日々現場で発生しているアプリケーションの脆弱性と関連した暗号攻撃技術を体験します。
その後は最新テクニックの修得が続きますが、2日目はエクスプロイト後の操作について重点を置いています。私たちは初期の攻略行為を足掛かりに、さらなるネットワークの弱点を利用し、または制限された環境を回避するために許可された機能を悪用していきます。まず、ホストに対するローカル制限の知識を固めるために、デスクトップとさまざまな制限を回避できる可能性がある制限について解説します。次に、攻撃を受ける可能性がある制限設定を構成した上で、ここまでの知識を活用してそれらを回避します。Windows制限回避の演習は、難読化とブラックリスト化に頼った攻撃阻止の制限に対するリスクの存在を実証するはずです。 エクスプロイト後の重要な部分として、PowerShellの基本的な概念とタスクやエンタープライズタスク、および徹底的な攻撃タスクについて説明します。Metasploitの代替として、PowerShell Empireを使用して特権に昇格し、ピボットや追加のペイロードを配布する方法を学びます。この日は、完全にパッチが適用された外部に対する脆弱性のない様々なシステムで構成された完全なネットワーク環境に対して、ブートキャンプに挑戦して終了します。
トピック
- 暗号実装へのペネトレーションテスト
- CBCビットフリップ脆弱性のエクスプロイト
- ハッシュ伸長の脆弱性へのエクスプロイト
- ネットワークブートとPXEを使った悪意あるオペレーティングシステムのデバイスへの配信
- PowerShell入門
- エンタープライズPowerShell
- PowerShellとMetasploitを使用したエクスプロイト後の操作
- ソフトウェア制限ポリシーの回避
- 強化されたサーバー、デスクトップ、およびvAppターゲットを備えた最新ネットワークに対する2時間のCapture the Flag
Python, Scapy, and Fuzzing
Python、Scapy、ファジング
3日目は、ペネトレーションテストの創造的分析に必要な複数のスキルセットをまとめます。まず、製品のセキュリティテストについて説明します。その後はテスターとしてPythonを活用するための方法について重点的に取り組みます。Pythonに慣れていない受講生がスクリプトを修正して機能を追加できるよう手助けするとともに、熟練したPythonのスクリプト作成者のスキル向上の手助けすることを目的としています。演習ラボでPythonスキルを活用したのち、次にScapyを活用してカスタムネットワークをターゲットとしてプロトコル操作を行います。 Scapyを使用して、IPv6を含め、既存ツールの域を超えてネットワークトラフィックを送受信するための技術を検証します。次に、ネットワークプロトコルとファイル形式のファジングについて見ていきます。ファジングを利用して、一般的なネットワークプロトコルと有名なファイル形式の両方を対象にバグを発見します。実践的な演習にて、カスタムプロトコルのファジングコードを開発し、一般的なソフトウェアのバグを発見します。最後に、コードカバレッジの概念と、それがどのようにファジングと関連しているかについて慎重に検討し、PaimeiのリバースエンジニアリングフレームワークとIDA Proを使用してラボを行い、学んだ技術を実習します。
トピック
- Pythonの種類について理解する
- ペンテスターの現実的なタスクに活用できるPythonモジュールの使用
- Scapyを使用したステートフルプロトコルの操作
- Scapyを使用したカスタムのワイヤレスデータリークツール作成
- 製品に対するセキュリティテスト
- プロトコルの変更に対処するためのTaof (The art of fuzzing)の使用
- スマートな標的選択によるファジング作業時間の最適化
- Sulleyを用いたファジング中の標的監視自動化
- Microsoft Wordマクロの活用した.docxファイルのファジング
- Paimeiを使ったブロックベースのコードカバレッジ技術
Exploiting Linux for Penetration Testers
ペネトレーションテスト担当者のためのLinuxエクスプロイト
4日目は、攻撃者の観点からみたメモリとx86アセンブラのほか、メモリのローディングやリンクについて解説します。これらのトピックは、高度なレベルでペネトレーションテストを実行するすべての人にとって重要です。プロセッサのレジスタはテスターによって直接操作されるため、深く理解しておく必要があります。逆アセンブル(解析)はテストを実施する上で大変重要な部分であり、コースの後半でも再び出てくるテーマです。ついで、攻撃者の観点から見たLinux OSと、その権限昇格について解説します。SUIDプログラムやその他の脆弱性や誤設定の可能性を調査する方法について紹介し、Linuxアプリケーションのペネトレーションテストを実行する上で重要なテクニックに焦点を当ていきます。
また、権限昇格とコードの実行を行うために、Linux上でのスタックオーバーフローについて詳細を解説します。はじめにデバッガを使用して不十分なパスワードを暴き、次に、プログラム実行のリダイレクションからコード実行を行っていきます。バッファへのリターンやCライブラリへのリターン(ret2libc)などのテクニックについては、リターン指向プログラミングと同様、本コースで取り扱うテーマです。残りの時間は、スタックカナリアやアドレス空間配置のランダム化(ASLR)といったOSに実装されている保護機能を無効化、あるいはバイパスするテクニックもご紹介します。このセクションでは、現代のLinuxシステムが内包している一般的な問題を実際にテストによって明らかにすることが目的です。
項目
- Linux OS上でのスタックと動的メモリ管理と割り当て
- バイナリの逆アセンブルとx86アセンブリコードの分析
- Linux OSでのシンボル解決処理の実行
- 脆弱なプログラムの特定
- コード実行のリダイレクトとメモリリーク
- Linux OS上でのスタックベースのオーバーフローの特定と分析
- スタックへのreturn-to-libc (ret2libc)攻撃の実行
- リターン指向プログラミング (ROP)
- Linux OSでのスタック保護の無効化
- Linux OSでのASLRの無効化
Exploiting Windows for Penetration Testers
ペネトレーションテスト担当者のためのWindowsエクスプロイト
5日目は、Windows環境に追加されたOSセキュリティ機能(ASLR、DEPなど)や、プロセス環境ブロック(PEB)、構造化例外処理(SEH)、スレッド情報ブロック(TIB)、およびWindowsアプリケーションプログラミングインターフェイス(API)といったWindows固有の構造について解説するとともに、LinuxとWindowsの違いについても説明します。これらのトピックは、Windowsベースのアプリケーションを評価する上でとても重要です。次に、Windows OS上で動作するプログラムに対するスタックベースの攻撃に焦点を当てていきます。アプリケーションの脆弱性を見つけた後、Immunity Debuggerを使用して、バクをコード実行と権限昇格へのチャンスに変えて行くのが目的です。また、データ実行防止(DEP)を無効にするなどの高度なスタックベースの攻撃手法についても解説するほか、一般的な攻撃として、クライアントに対する攻略手順なども紹介していきます。 さらにWindows 7、Windows 8、Windows 10上のハードウェアDEPとアドレス空間レイアウトのランダム化(ASLR)を無効化する方法を学び、脆弱なアプリケーションに対するリターン指向プログラミング(ROP)についても演習を通じながら理解を深めていただきます。また、、エクスプロイトをMetasploit Frameworkにポーティングするための方法をご紹介しますので、シェルコードに含まれる悪意のある文字列を迅速に判別し、プログラムへの入力としてどのように識別すべきか理解できるようになるでしょう。 最後に、LinuxとWindowsでのシェルコードの違いなど、シェルコードについて簡単にレビューを行い、ROPチャレンジに挑戦していただきます。
項目
- Windows 7、8、10とServer 2008、2012でのWindows OS保護の状態
- 一般的なWindowsの構造の理解
- Windows上でのスタックエクスプロイト
- 追加されたWindows OS保護機能の無効化
- Metasploitモジュール作成
- Windows上の先進的なスタックスマッシュ
- ROPの使用
- DEPを無効化しASLRバイパスするためのROPチェーンの構築
- Windows 7およびWindows 8のエクスプロイト
- Metasploitモジュールのポーティング
- クライアント側のエクスプロイト
- Windowsシェルコード
Capture the Flag Challenge
Capture the Flag への挑戦
この日は、コースを通して学んだテクニックを活用しながら、既成概念にとらわれず単純なものから複雑なものまで様々な問題を解決できるように、いくつかの課題に挑戦していただきます。スコアリングのWebシステムとCapture the Flagエンジンが皆さんに提供され、フラグを獲得するとスコアが獲得できる仕組みです。より難しい課題に回答して正解すると、より多くの得点を獲得することができます。この攻撃練習の出題範囲は、LinuxおよびWindowsシステムでのローカル特権昇格からリモートエクスプロイトに至るまでの一連のプロセス、ネットワーク攻撃、および他コースで学んだ題材に関連する様々な課題が出題されます。