SECURITY 542 | ||||||||||||||||||||||||||||||||
Web App Penetration Testing and Ethical Hacking |
||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||
受講に必要なPC環境
演習で使用するノートPCをご持参下さい。受講に必要なPC環境についてご確認ください。
SEC542 PC設定詳細
SANSトレーニングを有意義に受講していただくには、以下の要件を満たすノートPCが必須です。下記要件を確認し、事前に必要な設定を完了しておいてください。セッション中には、下記の設定を実施する時間は設けられていません。必ず事前の確認・設定をお願いいたします。
注意:実習のためのツール類をインストールすることによって、一部のシステムの動作に支障をきたす可能性があります。また、ネットワークへの接続を伴う実習内容があり、故意過失を問わず、自分のノートコンピュータのデータに他の受講生からアクセスされる可能性もあります。いずれの場合もSANSではデータの破損や読み書きに関して責任をとることはできませんので、重要なデータが格納されているノートPCでの実習はお控えください。
ノートパソコンのハードウェア要件
- CPU:2Ghz以上のプロセッサ
- RAM:4GB以上(より多くを推奨)
- USB:2.0以上
- HDD/SSD:20GB以上の空き容量
- NW:802.11無線LAN、Ethernet NIC(有線LAN、無線LANともに必要)
- OS:Windows、Linux、Macのいずれか(VMware製品が正常に動くこと)
- その他:USBメモリの読込ができること
- その他:ホストOSのローカルアドミニストレーター権限
- その他:ウィルス対策製品の停止、解除ができること
- その他:ファイアウォールの停止、設定変更ができること
ノートパソコンのソフトウェア要件(下記を事前にインストールしてください)
VMware Workstation 9以上、VMware Player 5以上、VMware Fusion 5以上のいずれか
ノートパソコンの設定に関して追加で質問がある場合は、info@sans-japan.jp(NRIセキュアテクノロジーズ)にお問い合わせください。ただし、米国と問合せを行う関係上時間を要する場合がございます。お急ぎの方はlaptop_prep@sans.orgに直接お問い合わせください(英文)。
留意事項
このコースのワークショップでは、地球上で最も危険なネットワークのひとつに接続します。ご持参いただいたノート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サイトデザイナー・設計者
コースメニューへ▲ ページトップへ▲
講義内容の一例
- Webデバッグプロキシ
- SQLインジェクション
- ブラインドSQLインジェクション
- 反射型クロスサイトスクリプティング(Reflected XSS)
- 持続型クロスサイトスクリプティング(Stored XSS)
- ローカルファイルインクルード(Local File Inclusion: LFI)
- リモートファイルインクルード(Remote File Inclusion: RFI)
- クロスサイトリクエストフォージェリ(CSRF/XSRF)
コースメニューへ▲ ページトップへ▲
Introduction and Information Gathering
攻撃者の観点を理解することは、Webアプリ侵入テストの成功の鍵です。1日目は、プロトコル、処理言語、サーバのアーキテクチャを含むWeb技術を、攻撃者の視点に立って綿密に学ぶことから始まります。また、ベーシック認証から、ダイジェスト認証、フォーム認証、統合Windows認証まで、種々の認証の方法を学び、サーバがこれらをどう利用し、逆に攻撃者がどう悪用するかを学びます。
これらに続き、Webアプリ侵入テストの実施プロセスを構成する4段階のステップ、すなわち情報収集、マッピング、発見とエクスプロイトについて議論を進めます。2日目以降、この4段階を掘り下げて学習しますが、1日目はまずこれらの基礎をなす原則を理解ししつつ、循環的な攻撃プロセスとしてどう統合するかを考えます。さらに、侵入テストの種類を整理して、テスト結果レポートがカバーすべき必須項目を説明していきます。
- Overview of the web from a penetration tester's perspective
- Exploring the various servers and clients
- Discussion of the various web architectures
- Discovering how session state works
- Discussion of the different types of vulnerabilities
- WHOIS and DNS reconnaissance
- The HTTP protocol
- WebSocket
- Secure Sockets Layer (SSL) configurations and weaknesses
- Heartbleed exploitation
- Utilizing the Burp Suite in web app penetration testing
Configuration, Identity, and Authentication Testing
2日目は、実際のテストのプロセスに則り、情報収集とマッピングの段階からスタートします。情報収集とは、対象となる組織とアプリに関する公開情報、対象アプリが稼働しているマシンの特定、関連する複数のサーバのOS、搭載ソフトや設定などのプロファイルをリストしていく過程です。講義では、実践的な実習で対象を探ることで議論を深めます。
マッピングの段階では、実際に「地図」、すなわちアプリのダイアグラムを描いてきます。これは、コンポーネントを特定してそれらの関係を分析し、どのように各要素が協調して動いているかを確定させる作業です。
マッピングフェーズでは、Webアプリケーションのインフラストラクチャコンポーネントの構成上の欠陥を発見するケースがあります。この種の脆弱性について議論した後、具体的にShellshockの脆弱性を、Burp Suite、cURL、および手動で検証し、実例を確認します。その後、Webアプリケーションのスパイダリング/クロールについて学びます。スパイダリングは、マッピングフェーズのみならず、ペネトレーションテスト全体を通じて必要となります。
- Scanning with Nmap
- Discovering the infrastructure within the application
- Identifying the machines and operating systems
- Exploring virtual hosting and its impact on testing
- Learning methods to identify load balancers
- Software configuration discovery
- Learning tools to spider a website
- Brute forcing unlinked files and directories
- Discovering and exploiting Shellshock
- Web authentication
- Username harvesting and password guessing
- Fuzzing
- Burp Intruder
Injection
3日目は、引き続き方法論に従いつつ、発見のフェーズへ進んでいきます。2日目までに収集した情報に、アプリ内の脆弱性を見つけて確認していく探索手法を練り合わせていきます。受講者は、さまざまな脆弱性の相互作用を探求して内容の分析を進めていきます。
主なトピックは、脆弱性発見のための手動テストのテクニックです。手動テストを容易にするために、Pythonの概要を理解することから始め、多くの時間をハンズオンラボに費やします。
カスタムスクリプトに加えて、Webアプリケーションの脆弱性を発見するためのWebデバッグプロキシの役割を理解することに焦点を当てます。3日目のハイライトは、伝統的なSQLインジェクションおよびブラインドSQLインジェクションの欠陥の両方での作業にかなりの時間を費やすことになるでしょう。
発見のフェーズ全体を通して、アプリ内の脆弱性を自動または手動で調べていきますが、どのような場合にどんな手法が有効かを議論します。
- Session tracking
- Authentication bypass flaws
- Mutillidae
- Command Injection
- Directory traversal
- Local File Inclusion (LFI)
- Remote File Inclusion (RFI)
- SQL injection
- Blind SQL injection
- Error-based SQL injection
- Exploiting SQL injection
- SQL injection tools
- sqlmap
XXE and XSS
4日目は、前日に引き続いて発見フェーズの方法論を模索していき、クロスサイトスクリプティング、クロスサイトリクエストフォージェリなどのWebアプリケーション内の主要な脆弱性を発見する方法をカバーします。これらを手動で検出する技術を、実践的な演習を通じて習得します。
また、AJAXやWebサービスの技術が攻撃可能領域をどのように拡大しているか、それをテスターとしてどう活用するかを詳細に吟味する内容も含まれます。既に見てきた脆弱性がAJAXやWebサービスに与える影響も考察します。
さまざまな脆弱性と手動での発見方法を解説した後、4日目は、ZAPおよびBurp Suiteによる手動検出手法を補完するために、様々な自動Webアプリケーション脆弱性スキャナについても学習します。
- XML External Entity (XXE)
- Cross-Site Scripting (XSS)
- Browser Exploitation Framework (BeEF)
- AJAX
- XML and JSON
- Document Object Model (DOM)
- Logic attacks
- API attacks
- Data attacks
CSRF, Logic Flaws and Advanced Tools
5日目は、実在するアプリケーションに対して、実際にエクスプロイトを実施します。これまでの3段階で得た内容をもとに、対象のアプリケーションとネットワークに対しての足場をさらに広げます。ペンテスターとして既に発見している脆弱性をどう有効活用してアクセスを広げていくか、4段階の攻撃の方法論の循環的な本質に光をあてつつ学んでいきます。
演習では、ZAPやBurp Suiteなどのツールを更に活用すると共に、sqlmap、Browser Exploitation Framework (BeEF)、Metasploitなどを利用することで、様々なWebアプリケーションに対するエクスプロイトを行います。実際に、SQLインジェクション、クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ攻撃などを行います。ここでは、これらの欠陥を悪用して、データの盗難、セッションのハイジャック、パスワード搾取、シェルの奪取、接続されたネットワークへの侵入などを行います。いろいろな形のエクスプロイトを通じて、受講生は組織に対するこれらの欠陥の潜在的なビジネスへの影響を鋭く理解することができます。
- Cross-Site Request Forgery (CSRF)
- Python for web app penetration testing
- WPScan
- w3af
- Metasploit for web penetration testers
- Leveraging attacks to gain access to the system
- How to pivot our attacks through a web application
- Exploiting applications to steal cookies
- Executing commands through web application vulnerabilities
- When tools fail
Capture the Flag
6日目には、チームを組んで、Webアプリケーションに対するペネトレーションテストトーナメントで競争を行います。この、NetWarsで組まれたCapture the Flagの演習では、新しく身に付けたスキルや、これまでに持っていたスキルを活用して、質問に答えたり、ミッションを完了させたり、データを抽出したり、コースを通して得られたスキルを試す機会を提供します。チャレンジスタイルと統合されたヒントシステムにより、様々なスキルレベルの受講生が同時にゲーム環境を楽しむことができ、クラスで学んだスキルを固めることができます
このCTFでは、クラス内でローカルエリアネットワークを構築し、演習を行いますが、OnDemandをオプションでお申込みいただいた場合、4ヶ月に渡り、インターネット経由でこのCTF環境をご利用いただけます。