ペネトレーションテスト&バグバウンティ
貴方が外出するときに、玄関の鍵をかけます。
そのとき、ちゃんと鍵がかかっているかドアノブを回して確認しますよね。
ペネトレーションテストも同じで、コンピューターシステムやネットワークに鍵がかかっているか確認するためのテストになります。
ペネトレーションテストとは
ペネトレーションテストとは、悪意のある攻撃者を想定して、コンピューターシステム、ネットワーク、アプリケーションなどの情報を収集、セキュリティの脆弱性を調査/特定して、システムに侵入する手順や方法を模倣してセキュリティの脆弱性を確認します。
主な目的は、システムのセキュリティ問題を特定し、システムを守るためのアドバイスや修正策を提案します。
組織や企業はシステムの修復や改善を行うことにより、セキュリティを強化し、データが盗まれたり壊されたりするリスクを減らすことができるのです。
なぜ、ペネトレーションテスト行うのでしょうか?
以下、4つの理由が考えられます。
セキュリティ評価
セキュリティ評価は、コンピューターシステムやネットワークの脆弱性やリスクを評価する作業です。専門のテスターが攻撃者の立場からシステムに侵入し、セキュリティの穴や弱点を特定します。これにより、システムの弱点がどこにあるかを明らかにし、対策を講じることでシステムのセキュリティを向上させる目的があります。
リスク軽減
リスク軽減は、システムやネットワークのセキュリティリスクを最小限に抑えるためのプロセスです。テストによって特定された脆弱性や問題を修復し、未然にセキュリティ侵害を防ぐための対策を実施します。これにより、悪意のある攻撃やデータ漏洩といったリスクを軽減し、システムの信頼性と安全性を高めることが狙いです。
コンプライアンス
コンプライアンスは、業界規制や法的要件に従ってセキュリティテストを実施することを指します。組織が特定のセキュリティ基準や規則を満たすために、ペネトレーションテストを実施することがあります。これにより、法的な要求事項や業界のセキュリティ基準を遵守し、適切なセキュリティ対策が取られていることを確認します。
セキュリティ意識の向上
セキュリティ意識の向上は、組織内の人々がセキュリティに関する理解と意識を高めるための活動です。テストの結果や脆弱性の特定例を通じて、従業員や関係者にセキュリティの重要性やリスクを示し、適切な行動を促します。このプロセスにより、組織内でのセキュリティ対策の協力度や責任感が向上し、悪意のある攻撃から組織を守る能力が向上します。
ペネトレーションテストのテストフェーズについて
ペネトレーションテストには7つのフェーズがあります。
1.計画と準備
計画と準備は、テストの目的、範囲、目標、方法、スケジュールなどを確立するプロセスを指します。計画と準備の段階は、ペネトレーションテスト全体の成功に不可欠であり、適切な計画と準備を行うことでテストの効果的な実施が保証されます。
計画と準備の主な確認項目
・目的と目標の設定
ペネトレーションテストの目的を明確に定義し、何を達成したいのかを明確にします。例えば、特定のアプリケーションの脆弱性を特定する、ネットワーク内のセキュリティの弱点を特定するなどの目標を設定します。
・テスト範囲の定義
テスト対象となるシステム、アプリケーション、ネットワーク、サーバーなどの範囲を明確に定義します。どの部分がテストの対象であり、どの部分が対象外であるかを確認します。
・ルールとガイドラインの確立
テスト中に従うべきルールやガイドラインを定義します。例えば、テスト中に実際の攻撃を行わない、データを壊さない、サービスの停止を避けるなどのルールを設定します。
・テスト方法の選択
自動化ツールの使用、手動テスト、ソーシャルエンジニアリング、フィッシングテストなど、どのような方法を使用するかを決定します。
・スケジュールの決定
ペネトレーションテストの実施予定日程を決定し、テストの期間や頻度を確定します。
・テストチームの構築
ペネトレーションテストを実施するためのチームを編成し、チームメンバーの役割と責任を割り当てます。
・必要なアクセスと許可の取得
テスト対象となるシステムやアプリケーションへのアクセス権限を取得するための手続きを行います。適切な権限を取得することで、テストが効果的に実施されることが保証されます。
・テストデータの収集
テスト対象となるシステムやアプリケーションに関する情報やデータを収集し、テストの効果を最大化するための準備を行います。
・コミュニケーションと連絡
クライアントや関係者とのコミュニケーションを確立し、テストの進行状況や結果の報告、質問の受け付けなどの連絡手段を確保します。
2.情報収集(リコネサンス)
情報収集は、テスト対象となるシステム、ネットワーク、アプリケーションなどに関する情報を収集するプロセスを指します。この段階では、攻撃者の視点から対象環境を理解し、テストを計画し実施するための基礎を整えることが目的です。情報収集によって得られる情報は、テストの成果を向上させるための重要な要素となります。
情報収集の主な確認項目
・ドメイン情報の収集
テスト対象ドメインのWHOIS情報やDNSレコード、IPアドレス範囲などを収集し、対象のドメインと関連する情報を理解します。
・サブドメインの特定
サブドメインの特定には、サブドメインスキャンツールや公開されているデータベースを利用して、テスト対象のドメインに関連するサブドメインを特定します。
・ネットワークトポロジの理解
テスト対象ネットワークのトポロジやアーキテクチャを理解し、攻撃の経路や攻撃対象となるシステムを特定します。
・公開情報の収集
ウェブサイト、ソーシャルメディア、フォーラムなどに公開されている情報から、テスト対象組織やその従業員に関する情報を収集します。
・サービスの特定
テスト対象ネットワーク内で稼働しているサービスやポートを特定し、攻撃の対象となる可能性があるシステムを特定します。
・セキュリティ設定の把握
ウェブアプリケーションのセキュリティヘッダーや設定、サーバーソフトウェアのバージョン情報などを収集し、脆弱性の可能性を分析します。
・インターネット上の足跡
ウェブクローラーや検索エンジンを使用して、テスト対象に関連する情報やファイルを収集します。
Kali linuxで利用できるツールやコマンド
ネットワークスキャンやサービス検出のためのツール。
ドメイン情報の収集に使用されるツール。
オンラインでの情報検索(メール、サブドメインなど)に使用。
3.脆弱性評価
脆弱性評価は、テスト対象となるシステム、アプリケーション、ネットワークなどに存在する脆弱性(セキュリティ上の弱点)を特定し、その脆弱性が攻撃者によって悪用される可能性や影響を評価するプロセスです。脆弱性評価は、システムのセキュリティレベルを確認し、潜在的なリスクを明らかにするための重要なステップです。
脆弱性評価のの主な確認項目
・自動化ツールと手動評価
脆弱性評価は、自動化されたスキャンツールやツールキットを使用して自動的に行われる場合もありますが、手動で評価を行うことも重要です。手動評価により、複雑な脆弱性や複合的な攻撃手法を特定できます。
・脆弱性の特定
システム内に存在する脆弱性を特定します。これには、不正なアクセスやエスカレーション、データ漏洩、クロスサイトスクリプティング(XSS)、SQLインジェクションなどの脆弱性が含まれます。
・脆弱性の評価
特定された脆弱性の影響度や深刻度を評価します。これにより、どの脆弱性が最もリスクが高いかを判断し、適切な優先順位を付けることができます。
・攻撃シナリオの構築
特定された脆弱性を悪用した攻撃シナリオを構築し、攻撃者の視点からどのようにシステムが攻撃される可能性があるかを模倣します。
・脆弱性の影響評価
特定された脆弱性が攻撃者によって悪用された場合の影響を評価します。これにはデータ漏洩、システム停止、アクセス権限のエスカレーションなどが含まれます。
・証拠の収集
特定された脆弱性の存在を確認するために、証拠となる情報やデータを収集します。これにより、脆弱性の存在を確認し、修復に向けた証拠を提供できます。
Kali linuxで利用できるツールやコマンド
脆弱性のスキャンやオープンポートの特定。
ウェブサーバーの脆弱性スキャンに使用。
・OpenVAS
脆弱性スキャンと評価のためのツール。
4.攻撃とエクスプロイト
特定された脆弱性を悪用してシステムにアクセスを試みますが、実際の攻撃ではなく、テストの一環で行います。
攻撃とエクスプロイトの主な確認項目
・攻撃 (Attack)
ペネトレーションテストにおいて、テスト対象となるシステムやアプリケーションに対してセキュリティ脆弱性を悪用して行われる試みを指します。攻撃は、実際の攻撃者が利用する可能性のある脆弱性や攻撃方法をシミュレートするために行われます。ペネトレーションテストの目的は、システムの弱点を特定し、対策を講じることでセキュリティを向上させることです。
・エクスプロイト (Exploit)
エクスプロイトは、脆弱性を悪用してシステムに侵入するための具体的なコードや手法を指します。ペネトレーションテスターは、テスト対象に特定のエクスプロイトを適用することで、そのシステムが攻撃に対して脆弱であるかどうかを確認します。エクスプロイトの使用は、テスト対象に影響を与えない範囲で慎重に行われます。
□Kali linuxで利用できるツールやコマンド
・metasploit
様々なエクスプロイトを使用した攻撃を実施するためのフレームワーク。
パスワードクラッキングや認証攻撃のためのツール。
SQLインジェクションの検出と攻撃に使用。
5.アクセス維持
「アクセス維持」とは、テスト対象となるシステムやネットワークに不正アクセスを得た後、そのアクセスを長期間維持するための手法や技術を指します。アクセス維持は、攻撃者の視点からシステムの脆弱性やセキュリティ対策を評価するために重要なステップです。このフェーズでは、攻撃者が一度侵入すると、その後もシステムにアクセスできるかどうかを評価します。
アクセス維持の主な確認項目
・持続的な侵入
攻撃者が一度侵入した後も、長期間にわたってシステムにアクセスを維持できるかどうかを評価します。これにより、攻撃者がシステム内で様々な活動を行う状況をシミュレートします。
・セキュリティ対策の効果
アクセス維持中に、システムのセキュリティ監視や検出システムが攻撃を検知するかどうかを確認します。これにより、セキュリティ対策の有効性を評価します。
・エスカレーション
アクセス維持を通じて、攻撃者がアクセス権限を拡大し、システム内での権限エスカレーションを評価します。攻撃者が低い権限から高い権限を取得する手法を模倣します。
・データ漏洩の評価
アクセス維持中に、攻撃者がシステム内のデータを盗む試みを行い、データ漏洩の可能性を評価します。
・遠隔操作の確認
アクセス維持を通じて、攻撃者が遠隔からシステムを操作し、攻撃者の意図通りの活動を行えるかどうかを確認します。
Kali linuxで利用できるツールやコマンド
・netcat
ネットワーク通信のリバースシェルなどに使用されるツール。
・meterpreter
Metasploitフレームワークで利用可能な強力なペイロード。
6.報告書作成
報告書作成は、テストの実施結果や発見された脆弱性、リスク評価、推奨事項などをまとめて文書化するプロセスです。報告書は、テスト対象組織に対してテストの成果を提供し、セキュリティの改善や脆弱性の修復に向けた情報を提供します。報告書はテストの最終成果物であり、テストの目的と進行状況、脆弱性の深刻度などに関する詳細な情報が含まれます。
報告書作成の主な確認項目
・エグゼクティブサマリー
報告書の冒頭に、重要な結論と推奨事項をまとめたエグゼクティブサマリーを記載します。組織の重要な意思決定者や経営陣が簡潔にテスト結果を把握できるようにします。
・テストの目的と範囲
テストの目的、範囲、テスト対象のシステムやアプリケーションの説明を提供します。これにより、報告書を読む人がテストの背景と対象を理解できるようにします。
・脆弱性の詳細
特定された脆弱性の詳細な説明と、その脆弱性がどのような攻撃につながる可能性があるかについて説明します。脆弱性の発見時刻や発見者などの情報も含めます。
・リスク評価
各脆弱性の深刻度や影響度について評価し、それに基づいてリスクのランク付けを行います。これにより、修復の優先順位を判断する際の参考情報を提供します。
・推奨事項
各脆弱性に対して具体的な対策や修復策を提案します。セキュリティの向上やリスク軽減のための具体的なアクションプランを示します。
・アクセス維持と遠隔操作の評価
アクセス維持や遠隔操作の結果や影響に関する情報を提供し、対策のための指針を示します。
・修復の報告
テスト後の脆弱性の修復状況や対応策の実施状況に関する情報を提供します。
・テストの制約と制限
テスト中に制約や制限があった場合(例: ターゲットのシステムに対するアクセス制限など)に関する情報を提供します。
7.修復と改善
修復と改善は、テスト結果から特定された脆弱性やセキュリティ上の問題に対処し、システムやアプリケーションのセキュリティを向上させるためのプロセスを指します。テスト結果から得られた情報を元に、脆弱性の修復やセキュリティ強化策の実施を行うことで、組織のセキュリティを強化することを目指します。
修復と改善の主な確認項目
・脆弱性の修復
ペネトレーションテストによって特定された脆弱性やセキュリティ上の問題を、適切な修復策を実施することで解決します。これにはパッチ適用、設定変更、セキュリティアップデートの適用などが含まれます。
・セキュリティ対策の強化
特定された脆弱性だけでなく、システム全体のセキュリティを向上させるための対策を実施します。これにはアクセス制御の強化、セキュリティポリシーの見直し、不要なサービスの停止などが含まれます。
・運用手順の改善
ペネトレーションテストで特定された問題を防ぐために、運用手順やプロセスを見直し改善します。例えば、定期的なセキュリティアップデートの適用、セキュリティポリシーの強化などが含まれます。
・監視と検知の強化
セキュリティインシデントの早期発見と対応のために、セキュリティ監視と検知の仕組みを強化します。異常なアクティビティや攻撃の兆候を検知するための手段を強化することが含まれます。
・教育とトレーニング
従業員や関係者に対してセキュリティ意識を高めるためのトレーニングや教育を実施します。セキュリティに関する正しい行動や対策についての情報を提供し、セキュリティリスクを最小限に抑えるための知識を普及させます。
・対策の効果の確認
修復と改善を実施した後、再度ペネトレーションテストやセキュリティ監査を行い、対策の効果を確認します。これにより、問題が解決されたかどうかを評価し、必要に応じて追加の対策を実施することができます。
ハッカーはペネトレーションテストを実施して、コンピューターシステムやネットワークのセキュリティが安全か評価するのまとめ
何事にも言えることですが、しっかり計画を立ててテストを行うことで、最短ルートで結果がでるのではないでしょうか。
最終的にはペネトレーションテストは、コンピューターシステム、ネットワーク、アプリケーションなどを悪用されないようにするためです。
また、この方法は「バグハンティング」にも流用できると思います。
バグを見つけて、報告するのですから。