SECURITY 542

Web App Penetration Testing and Ethical Hacking

日程 2015年10月26日(月)~31日(土) (6日間) 開催終了
講義時間 9:30 ~ 17:30
会場 秋葉原UDX 6階 MAP
講師 Justin Searle >> 講師プロフィール
定員 40名  英語教材・同時通訳
CPEポイント 36 point

受講に必要なPC環境

演習で使用するノートPCをご持参下さい。受講に必要なPC環境についてご確認ください。

SEC542 PC設定詳細

SANSトレーニングを有意義に受講していただくには、以下の環境のノートPCが必要です。下記の要件を満たすWindows、Linux または Macintoshコンピューターを各自ご持参ください。

ノートパソコンのハードウェア要件

  • 2.0Core以上のプロセッサ
  • 4GB以上のメモリ(より多くのメモリを強く推奨します)
  • 15GB以上の空きディスク容量
  • USBポート付きPC
  • DVD-ROMドライブ
  • イーサネットアダプタ(本コースでは有線LANを使用します。無線LANにしか対応していないPCを持参する方は、必ずイーサネットアダプタをご用意ください)

ノートパソコンのソフトウェア要件(下記を事前にインストールしてください)

  • VMware Workstation 9、もしくはPlayer 5、Fusion 5(より以降のもの)

ファイアウォール(Windowsファイアウォールもしくは他のサードパーティ製のファイアウォール)、ウィルス対策ソフト、他のセキュリティソフトを無効にできる管理者権限を有するマシンを持参してください。
単純にプロセスの一部をkillなどで停止させるだけでは不十分な場合もあるため、管理者としてこれらを無効にできることを事前にご確認ください。

留意事項

このコースのワークショップでは、地球上で最も危険なネットワークのひとつに接続します。ご持参いただいたノートPCが攻撃を受けるかもしれません。したがって、システム上にいかなる機密情報も保存しないでください。演習中、他の受講者によって故意過失を問わずアタックを仕掛けられたとしても、SANSは一切の責任を負いません。要件を満たした機器を事前に正しく設定してご持参いただければ、このコースで習得する内容を最大限に活用し、楽しんでいただけることでしょう。

コース概要

Webアプリケーションが多くの組織で重要な役割を果たしていることは、不正侵害やそれに伴うビジネス上の損失、データ漏えいなどの被害の実態を見れば明らかです。

残念ながら、多くの組織には、「脆弱性検知ツールを使用していれば、確実にシステムの欠陥を発見できる」という『誤った』考えがまん延しています。 SEC542は、犯罪者よりも早く、専門的なペネトレーションテストによって脆弱性を発見しその対策がとれることを目指します。単なるプッシュボタン式のツールによる侵入テストでは限界があることが十分認識できます。

お客様は、Webアプリケーションを通じて重要な機能やデータアクセスが提供されることを期待するようになりましたが、それにも増して、組織内で利用される業務アプリケーションもWebアプリケーション化しているのが一般的です。残念ながら、このような業務Webアプリケーションには、いわゆる「パッチ火曜日(patch Tuesday)」が適用できないことが多いため、Webアプリケーションの欠陥が重大な情報漏えいや不正侵害の温床になり続けています。攻撃者は、外部公開用のWebアプリケーションと同様に、高い情報価値を持った内部の業務アプリケーションもターゲットにしています。

最新のサイバー防衛では、Webアプリケーションのセキュリティ上の課題を現実的かつ徹底的に理解していなければ太刀打ちできません。Webに対するいくつかのハッキング技術を手軽に学ぶことはできますが、Webアプリケーションの侵入テストではより深くかつ体系化された手法が不可欠です。SEC542は、多くの組織を悩ませているWebアプリケーションのセキュリティ状況を正しく評価し、発見された脆弱性や欠陥の影響を実証するスキルを受講者に提供します。また、各自が所属組織に戻った後も継続してこれらのスキルが活用できるよう、フィールドテストプロセスや反復プロセスなども徹底的に学びます。

ある程度の技術力を持ったいわゆる「セキュリティオタク」は、組織のリスクを業務に関連付けて説明できません。侵入テストの技術の多くは、適切な対策を採用するように組織に働きかけるというよりも、攻撃者が行うのと同等の手法を習得するというリスクの側面の方が強調されがちです。SEC542の目標は、単に高度なハッキングスキルを習得することでなく、侵入テストを正しく活用して組織をより安全にすることです。

SEC542は、高品質なコースコンテンツに加えて、実践的な演習に強く焦点を当てています。経験豊かな世界クラスのインストラクター陣は、そのインストラクションスキルは当然のこと、実務スキルに精通したプラクティショナーとしても最高の能力を有しています。初日から5日目までの30以上の演習項目に加え、最終日には、Webアプリケーションの侵入テストを実行するためのCTF(Capture the Flag)イベントも行います。

コースメニューへ▲   ページトップへ▲

本講座受講にあたっての前提

  • Linuxコマンドラインに関する基本的な業務知識があること
コースメニューへ▲   ページトップへ▲

受講対象者

  • ペネトレーションテスター/エシカルハッカー(侵入テストや脆弱性診断を実施しているセキュリティコンサルタントの方)
  • Webアプリケーション開発者
  • Webサイトデザイナー・設計者
※SEC542は、GIAC(GWAPT:Web Application Penetration Tester)認定試験対象コースです。
コースメニューへ▲   ページトップへ▲

講義内容の一例

  • Webデバッグプロキシ
  • SQLインジェクション
  • ブラインドSQLインジェクション
  • 反射型クロスサイトスクリプティング(Reflected XSS)
  • 持続型クロスサイトスクリプティング(Stored XSS)
  • ローカルファイルインクルード(Local File Inclusion: LFI)
  • リモートファイルインクルード(Remote File Inclusion: RFI)
  • クロスサイトリクエストフォージェリ(CSRF/XSRF)
コースメニューへ▲   ページトップへ▲
Day 1

The Attacker's View of the Web

攻撃者の観点を理解することは、Webアプリ侵入テストの成功の鍵です。1日目は、プロトコル、処理言語、サーバのアーキテクチャを含むWeb技術を、攻撃者の視点に立って綿密に学ぶことから始まります。また、ベーシック認証から、ダイジェスト認証、フォーム認証、統合Windows認証まで、種々の認証の方法を学び、サーバがこれらをどう利用し、逆に攻撃者がどう悪用するかを学びます。

これらに続き、Webアプリ侵入テストの実施プロセスを構成する4段階のステップ、すなわち情報収集、マッピング、発見とエクスプロイトについて議論を進めます。2日目以降、この4段階を掘り下げて学習しますが、1日目はまずこれらの基礎をなす原則を理解ししつつ、循環的な攻撃プロセスとしてどう統合するかを考えます。さらに、侵入テストの種類を整理して、テスト結果レポートがカバーすべき必須項目を説明していきます。最後に、攻撃者の観点から見たJavaScriptの学習で、初日を締めくくります。

  • Overview of the Web from a penetration tester’s perspective
  • Exploring the various servers and clients
  • Discussion of the various Web architectures
  • Discover how session state works
  • Discussion of the different types of vulnerabilities
  • Define a Web application test scope and process
  • Define types of penetration testing
Day 2

Reconnaissance and Mapping

2日目は、実際のテストのプロセスに則り、情報収集とマッピングの段階からスタートします。情報収集とは、対象となる組織とアプリに関する公開情報、対象アプリが稼働しているマシンの特定、関連する複数のサーバのOS、搭載ソフトや設定などのプロファイルをリストしていく過程です。講義では、実践的な実習で対象を探ることで議論を深めます。

マッピングの段階では、実際に「地図」、すなわちアプリのダイアグラムを描いてきます。これは、コンポーネントを特定してそれらの関係を分析し、どのように各要素が協調して動いているかを確定させる作業です。セッション管理のアプリ内での働きも具体的に見ていきます。これらの情報は、次の講義で潜在的な脆弱性を明確にしていくのに役立つものとなります。

  • Discover the infrastructure within the application
  • Identify the machines and operating systems
  • Secure Sockets Layer (SSL) configurations and weaknesses
  • Exploring virtual hosting and its impact on testing
  • Learning methods to identify load balancers
  • Software configuration discovery
  • Exploring external information sources
  • Google hacking
  • Learn tools to spider a Website
  • Scripting to automate web requests and spidering
  • Application flow charting
  • Relationship analysis within an application
  • JavaScript for the attacker
Day 3

Discovery

3日目は、引き続き方法論に従いつつ、発見のフェーズへ進んでいきます。2日目までに収集した情報に、アプリ内の脆弱性を見つけて確認していく探索手法を練り合わせていきます。受講者は、さまざまな脆弱性の相互作用を探求して内容の分析を進めていきます。
主なトピックは、脆弱性発見のための手動テストのテクニックです。手動テストを容易にするために、Pythonの概要を理解することから始め、多くの時間をハンズオンラボに費やします。

カスタムスクリプトに加えて、Webアプリケーションの脆弱性を発見するためのWebデバッグプロキシの役割を理解することに焦点を当てます。3日目のハイライトは、伝統的なSQLインジェクションおよびブラインドSQLインジェクションの欠陥の両方での作業にかなりの時間を費やすことになるでしょう。

発見のフェーズ全体を通して、アプリ内の脆弱性を自動または手動で調べていきますが、どのような場合にどんな手法が有効かを議論します。

  • Vulnerability discovery overview
  • Creating custom scripts for penetration testing
  • Python for penetration testing
  • Web app vulnerabilities and manual verification techniques
  • Interception proxies
  • Fiddler
  • Zed Attack Proxy (ZAP)
  • Burp Suite
  • Information leakage and directory browsing
  • Username harvesting
  • Command Injection
  • Directory traversal
  • SQL injection
  • Blind SQL inject
Day 4

Discovery (continued)

4日目は、前日に引き続いて発見フェーズの方法論を模索していき、クロスサイトスクリプティング、クロスサイトリクエストフォージェリなどのWebアプリケーション内の主要な脆弱性を発見する方法をカバーします。これらを手動で検出する技術を、実践的な演習を通じて習得します。

また、AJAXやWebサービスの技術が攻撃可能領域をどのように拡大しているか、それをテスターとしてどう活用するかを詳細に吟味する内容も含まれます。既に見てきた脆弱性がAJAXやWebサービスに与える影響も考察します。

さまざまな脆弱性と手動での発見方法を解説した後、4日目は、Burp Suiteの以前のカバレッジを補完するために、Skipfishやw3afなど様々な自動化スキャナについても学習します。

  • Cross-Site Scripting (XSS)
  • Cross-Site Scripting discoveryv
  • Cross-Site Request Forgery (CSRF)
  • Session flaws
  • Session fixation
  • AJAX
  • Logic attacks
  • API attacks
  • Data binding attacks
  • patproxy
  • Automated web application scanners
  • skipfish
  • w3af
Day 5

Exploitation

5日目は、実在するアプリケーションに対して、実際にエクスプロイトを実施します。これまでの3段階で得た内容をもとに、対象のアプリケーションとネットワークに対しての足場をさらに広げます。ペンテスターとして既に発見している脆弱性をどう有効活用してアクセスを広げていくか、4段階の攻撃の方法論の循環的な本質に光をあてつつ学んでいきます。

演習では、実在するアプリ(例えばWordpresやAWStats)に対して巧妙なエクスプロイトを仕掛けることを可能にするBurp SuiteやParos Proxyなどのツールを扱います。Wordpressに対するSQLインジェクション攻撃とトランザクションの傍受・改ざん、phpMyAdmin やphpBBに対するクロスサイトスクリプト攻撃とクッキーの盗用などを試します。

また、AttackAPIやBrowser Exploitation Framework (BeEF)などの攻撃フレームワークを取り上げ、ブラウザ履歴の確保や内部ネットワークへのポートスキャン、ゾンビ化ブラウザからの脆弱性探査など、これらのフレームワークの活用について学びます。

さらに、Webアプリへより深くアクセスするために、一連の複雑な攻撃を作り上げる多重攻撃の手法も取り上げます。攻撃者と同じリソースを用いてアプリに内在する脆弱性を完全に暴くことで、組織に対してベストな評価を行うことができます。

  • Explore methods to zombify browsers
  • Discussing using zombies to port scan or attack internal networks
  • Explore attack frameworks
  • Browser Exploitation Framework (BeEF)
  • Walking through an entire attack scenario
  • Exploiting the various vulnerabilities discovered
  • Leveraging attacks to gain access to the system
  • How to pivot our attacks through a web application
  • Understanding methods of interacting with a server through SQL injection
  • Exploiting applications to steal cookies
  • Executing commands through web application vulnerabilities
Day 6

Capture the Flag

6日目は、クラスはネットワークで接続され、受講生は実際の侵入テストの全課程を遂行することができます。実施されるCTFの目的は、受講生に過去5日間に学んだ全ての技術と方法を駆使してもらうことです。現実に基づいたクラス内のネット環境に対し、学んだ内容をもとに侵入を試みるテストを行い、終了時には発見事項や使った手法など、テスト完了に当たっての報告内容を口頭で発表していただきます。

受講生にはSamuraiWTF侵入テスト環境を含む仮想マシン設定が提供されます。このコース内での利用はもちろん、職場に戻って実地でも利用できる内容です。

コースメニューへ▲   ページトップへ▲
本サイトに記載されている、各会社名、各製品名は、各社の商標または登録商標です。