SECURITY 542 | ||||||||||||||||||||||||||||||||||||
Web App Penetration Testing and Ethical Hacking |
||||||||||||||||||||||||||||||||||||
![]() |
||||||||||||||||||||||||||||||||||||
受講に必要なPC環境
演習で使用するノートPCをご持参ください。受講に必要なPC環境についてご確認ください。
SEC542 PC設定詳細
SANSトレーニングを有意義に受講していただくには、以下の要件を満たすノートPCが必須です。下記要件を確認し、事前に必要な設定を完了しておいてください。セッション中には、下記の設定を実施する時間は設けられていません。必ず事前の確認・設定をお願いいたします。
注意:実習のためのツール類をインストールすることによって、一部のシステムの動作に支障をきたす可能性があります。また、ネットワークへの接続を伴う実習内容があり、故意過失を問わず、自分のノートコンピュータのデータに他の受講生からアクセスされる可能性もあります。いずれの場合もSANSではデータの破損や読み書きに関して責任をとることはできませんので、重要なデータが格納されているノートPCでの実習はお控えください。
ノートパソコンのハードウェア要件
- CPU:64bit Intel i5/7 2Ghz以上のプロセッサ
- RAM:8GB(4GB以上)
- USB:3.0 Type-A ポート
- HDD/SSD:30GB以上の空き容量
- BIOS:「Intel-VT」が有効であること
- NW:802.11無線LAN、Ethernet NIC(有線LAN、無線LANともに必要)
- OS:Windows、Linux、Macのいずれか(VMware製品が正常に動くこと)
- その他:USBメモリの読込ができること
- その他:ホストOSのローカルアドミニストレーター権限
- その他:ウィルス対策製品の停止、解除ができること
- その他:ファイアウォールの停止、設定変更ができること
ノートパソコンのソフトウェア要件(下記を事前にインストールしてください)
VMware Workstation 15以上、VMware Player 11以上、VMware Fusion 15以上のいずれか
ノートパソコンの設定に関して追加で質問がある場合は、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サイトデザイナー・設計者
コースメニューへ▲ ページトップへ▲
講義内容の一例
- プロキシによる通信傍受
ZAP (Zed Attack Proxy)
BurpSuite Professional - 共通の脆弱性
・SSL/TLS ミスコンフィグレーション
・ユーザーネーム収集
・コマンドインジェクション
・SQLインジェクション
・クロスサイトスクリプティング(XSS)
・セキュアでないデシリアライゼーション
・XMLエクスターナルエンティティ(XXE)
・ローカル・リモートファイルインクルード(LFI/RFI)
・クロスサイトリクエストフォージェリ(CSRF) - オープンソースインティジェンス(OSINT)
- ターゲットプロファイリング
- ブラインドSQLインジェクション
- アプリケーションディスカバリー
- 認証と認可
- セッション管理の欠陥
- 自動化されたエクスプロイト
コース開発者より
受講者は、組織のWebアプリケーション脆弱性スキャナに意気消沈してSEC542を受講します。このようなスキャンするビジネスサイドにいる受講生たちは、1,000ページ以上の出力にfalse-positiveが散りばめられていることを定期的に証明しています。SEC542を教えていて最もやりがいを感じるのは、同じ受講生たちが、1週間で学んだスキルを自分の担当するアプリケーションに応用しようとする熱意を目の当たりにし、それを聞いていることです。受講生は、プッシュボタン式のペネトレーションテストのアプローチでは失敗していることを本質的に理解していましたが、他の形式の評価を適切かつ効率的に行うための知識とスキルが不足していました。SEC542は、この問題を解決してくれます。受講生は、主要なWebアプリケーションの欠陥についての深い知識を身につけ、それらを発見して悪用する方法と、それらの発見結果をインパクトのある方法で提示する方法を身につけて、このクラスを卒業することができます。- Eric Conrad、Timothy McKenzie、Bojan Zdrnja
コースメニューへ▲ ページトップへ▲
Introduction and Information Gathering
攻撃者の観点を理解することは、Webアプリケーション侵入テストの成功の鍵です。1日目は、プロトコル、処理言語、サーバのアーキテクチャを含むWeb技術を、攻撃者の視点に立って綿密に学ぶことから始まります。また、攻撃をより成功させるために役立つと思われるデータポイントに特化したオープンソースインテリジェンス(OSINT)の収集に注目します。そして暗号化と HTTPS の重要性を分析します。HTTPS を離れる前に、悪名高い Heartbleed の欠陥を体験し、ハンズオンラボでエクスプロイトの初体験ができます。
次に、質の高い評価の提供を確実にするためにOWASPが推進している方法論と、ペネトレーションテスターのツールキットに必要なものを見ていきます。最も重要なツールであるプロキシツールは、OWASP の Zed Attack Proxy (ZAP) と BurpSuite Professional の初期設定手順を実行することで紹介されます。コースの一日を完了するために、BurpSuite を使用して脆弱性のあるウェブアプリケーションの側面を探ります。
- 侵入テスト担当者の観点から見たWebの概要
- Webアプリケーション評価メソッド
- WHOIS と DNSを使った偵察
- Open source intelligence (OSINT)
- HTTPプロトコル
- Secure Sockets Layer(SSL)の設定と弱点
- プロキシツール
- BurpSuit Pro とZed Attack Proxyを使ったSSL通信のプロキシ
- Heartbleedの悪用
Configuration, Identity, and Authentication Testing
2日目は、ターゲットをプロファイリングし基礎となる設定を理解することから始まります。収集したデータは、各サーバのプロファイルを構築し、潜在的な構成上の欠陥を特定するために使用されます。この議論は、いくつかの実践的なハンズオンラボを通して確認し、Shellshockの脆弱性を使用してクラス内のターゲットに対して設定の欠陥を悪用することでより理解を深めます。これらのエクスプロイト行為は、BurpSuite Pro、cURL、手動のエクスプロイト技術を使って、より深く実践的な経験を積む機会となります。
システムの設定について、セキュリティ関連のイベントを見逃さないように、適切なロギングとモニタリングを行う必要があります。ロギング設定と基本的なインシデントレスポンステストについて簡単に説明します。
マッピングの段階では、実際に「地図」、すなわちアプリのダイアグラムを描いてきます。これは、コンポーネントを特定してそれらの関係を分析し、どのように各要素が協調して動いているかを確定させる作業です。
この日の終わりに向けて、Basic認証、Digest認証、Forms認証、Windows Integrated認証、OAuth認証を含むさまざまな認証システムを調べ、サーバがどのようにそれらを使用しているか、攻撃者がそれらをどのように悪用しているかを議論します。ユーザー名の列挙を行い、最後の演習では、Burpの「fuzzer」「Intruder」を使用して、Webアプリケーションへの認証に使用されるパスワードを推測します。
- ターゲットプロファイリング
- サーバ情報の収集
- ロギングとモニタリング
- Webサイトをスパイダリングするためのツール
- Webサイトのコンテンツ分析
- リンクのないファイルとディレクトリのブルートフォース
- ファジング
- Web認証のメカニズム
- ユーザー名の取得とパスワードの推測
- Burp Intruder
Injection
2日目に認証関連のイベントを成功させて終了した後、3日目は、Webアプリケーションが認証したユーザーを追跡する方法と、セッション管理の弱点を突く方法を探ることから始めます。また、Mutillidaeの認証の欠陥を悪用するだけでなく、機密データやビジネスロジックを攻撃者に晒す可能性のある認証と認可のバイパスについても議論します。
ターゲットのプロファイリング、スパイダー、強制ブラウジングの演習で特定された情報を基に、アプリケーション内の脆弱性を見つけて検証する方法を探ります。また、受講生は様々な脆弱性の間の相互作用を探り始めます。
さらに、脆弱性発見のための重要な手動テスト技術に深く取り組みます。そして、Webアプリケーションの脆弱性発見のためのインターセプトプロキシの深い知識を開発することに焦点を当てています。最も一般的なインジェクションの欠陥(コマンドインジェクション、ローカルおよびリモートファイルインクルージョン)のいくつかが紹介され、発見と悪用を強化するために、ラボの演習が続きます。
この他にも、オブジェクト指向プログラミング言語の一般的な脆弱性である、安全でないデシリアライゼーションについてのセクションがあり、受講生はラボでJavaの安全でないデシリアライゼーションの脆弱性を悪用し、脆弱なWebアプリケーションから秘密のファイルを盗むことに挑戦します。
なお、一日のうちのかなりの部分は、伝統的なSQLインジェクションとブラインドSQLインジェクションに費やします。というのも、この脆弱性が一般的に普及していることと、この脆弱性に関連して重大な影響が及ぼされるためです。
- セッショントラッキング認証
- バイパスの問題
- Mutillidae
- コマンドインジェクション
- ディレクトリトラバーサル
- ローカルファイルインクルード(LFI)
- リモートファイルインクルード(RFI)
- SQLインジェクション
- ブラインドSQLインジェクション
- エラーメッセージを悪用したSQLインジェクション
- SQLインジェクションを悪用する
- SQLインジェクションツール
- sqlmap
XXE and XSS
4日目は、前日に引き続いて発見フェーズの方法論を模索していき、クロスサイトスクリプティング、クロスサイトリクエストフォージェリなどのWebアプリケーション内の主要な脆弱性を発見する方法をカバーします。これらを手動で検出する技術を、実践的な演習を通じて習得します。
また、AJAXやWebサービスの技術が攻撃可能領域をどのように拡大しているか、それをテスターとしてどう活用するかを詳細に吟味する内容も含まれます。既に見てきた脆弱性がAJAXやWebサービスに与える影響も考察します。
そして、AJAX Webアプリケーションがエクスプロイトされるラボで一日が終わり、最後にBeEFを使って完全にアプリケーションを制御することに挑戦します。
- XML外部エンティティ(XXE)
- クロスサイトスクリプティング(XSS)
- ブラウザ開発フレームワーク(BeEF)
- AJAX
- XMLとJSON
- ドキュメントオブジェクトモデル(DOM)
- ロジック攻撃
- API攻撃
- データ攻撃
CSRF, Logic Flaws and Advanced Tools
5日目は、実在するアプリケーションに対して、実際にエクスプロイトを実施します。これまでの3段階で得た内容をもとに、対象のアプリケーションとネットワークに対しての足場をさらに広げます。ペンテスターとして既に発見している脆弱性をどう有効活用してアクセスを広げていくか、4段階の攻撃の方法論の循環的な本質に光をあてつつ学んでいきます。
演習では、ZAPやBurp Suiteなどのツールをさらに活用すると共に、sqlmap、Browser Exploitation Framework (BeEF)、Metasploitなどを利用することで、さまざまなWebアプリケーションに対するエクスプロイトを行います。実際に、SQLインジェクション、クロスサイトスクリプティング(XSS)、クロスサイトリクエストフォージェリ攻撃などを行います。ここでは、これらの欠陥を悪用して、データの盗難、セッションのハイジャック、パスワード搾取、シェルの奪取、接続されたネットワークへの侵入などを行います。いろいろな形のエクスプロイトを通じて、受講生は組織に対するこれらの欠陥の潜在的なビジネスへの影響を鋭く理解することができます。
コース全体としては、Webアプリケーションの脆弱性がどのように機能して、どのように悪用されるかを理解することを目的としていますが、5日目にはBurpSuite Proのアクティブ・スキャナー・コンポーネントも紹介します。
受講生が自分のスキルを次の段階にレベルアップするために、5日目の最後のラボでは、ターゲットのWebアプリケーションに存在することが分かっている脆弱性を悪用することを目的として、Metasploitモジュールが失敗した例に注目します。ここでは、欠陥を調査し、手動で脆弱性を悪用し、その後、シェルを取得するためにMetasploitモジュールを再構成するプロセスを探ります。この演習は、自動化されたツールが失敗した場合に、受講生がより深く掘り下げるために必要なスキルを提供します。
最後に、ペネトレーションテストの評価の準備の仕方や、レポート作成などの評価後の重要な活動を復習して、この日の内容を総括をします。
- クロスサイトリクエストフォージェリ(CSRF)
- Webアプリケーションの侵入テスト用のPython
- WPScan
- ExpolitDB
- BurpSuite Pro スキャナー
- Metasploit
- ツールが失敗した時
- ペネトレーションテスト
・準備
・メソッド
・評価語プロセスとレポート作成
Capture the Flag
6日目には、チームを組んで、Webアプリケーションに対するペネトレーションテストトーナメントで競争を行います。この、NetWarsで組まれたCapture the Flagの演習では、新しく身に付けたスキルや、これまでに持っていたスキルを活用して、質問に答えたり、ミッションを完了させたり、データを抽出したり、コースを通して得られたスキルを試す機会を提供します。チャレンジスタイルと統合されたヒントシステムにより、さまざまなスキルレベルの受講生が同時にゲーム環境を楽しむことができ、クラスで学んだスキルを固めることができます。