complete penetration testing guide with sample test cases
これは、さまざまな悪意のある手法を使用してシステムまたはネットワークを評価することにより、アプリケーションのセキュリティの脆弱性を特定するプロセスです。システムの弱点は、許可されたシミュレートされた攻撃を通じてこのプロセスで悪用されます。
このテストの目的は、システムへの不正アクセスを行う可能性のあるハッカーなどの部外者から重要なデータを保護することです。脆弱性が特定されると、システムを悪用して機密情報にアクセスするために使用されます。
ペネトレーションテストはペンテストとも呼ばれ、ペネトレーションテスターは倫理的ハッカーとも呼ばれます。
学習内容:
ペネトレーションテストとは何ですか?
ペネトレーションテストを通じて、コンピュータシステム、Webアプリケーション、またはネットワークの脆弱性を特定できます。
ペネトレーションテストは、システムで採用されている既存の防御手段がセキュリティ違反を防ぐのに十分強力であるかどうかを示します。ペネトレーションテストレポートは、システムがハッキングされるリスクを減らすために講じることができる対策も示唆しています。
脆弱性の原因
- 設計および開発エラー :ハードウェアとソフトウェアの設計に欠陥がある可能性があります。これらのバグは、ビジネスクリティカルなデータを危険にさらす可能性があります。
- 不十分なシステム構成 :これは脆弱性のもう1つの原因です。システムの構成が不十分な場合、攻撃者がシステムに侵入して情報を盗むための抜け穴が生じる可能性があります。
- ヒューマンエラー :ドキュメントの不適切な廃棄、ドキュメントの無人化、コーディングエラー、内部脅威、フィッシングサイトでのパスワードの共有などの人的要因により、セキュリティ違反が発生する可能性があります。
- 接続性 :システムがセキュリティで保護されていないネットワーク(オープン接続)に接続されている場合、ハッカーの手の届くところにあります。
- 複雑 :セキュリティの脆弱性は、システムの複雑さに比例して増加します。システムの機能が多ければ多いほど、システムが攻撃される可能性が高くなります。
- パスワード :パスワードは、不正アクセスを防ぐために使用されます。それらは、だれもあなたのパスワードを推測できないほど十分に強力でなければなりません。パスワードはいかなる犠牲を払っても誰とも共有してはならず、パスワードは定期的に変更する必要があります。これらの指示にもかかわらず、人々は時々自分のパスワードを他の人に明かし、どこかに書き留めて、推測できる簡単なパスワードを保管します。
- ユーザー入力 :SQLインジェクション、バッファオーバーフローなどについて聞いたことがあるはずです。これらの方法で電子的に受信したデータは、受信システムを攻撃するために使用される可能性があります。
- 管理 :セキュリティは管理が難しく、費用がかかります。組織が適切なリスク管理に遅れをとっているため、システムに脆弱性が引き起こされることがあります。
- スタッフへのトレーニングの欠如 :これは人的エラーやその他の脆弱性につながります。
- コミュニケーション :モバイルネットワーク、インターネット、電話などのチャネルは、セキュリティ盗難の範囲を広げます。
ペネトレーションテストツールと企業
自動化されたツールを使用して、アプリケーションに存在するいくつかの標準的な脆弱性を特定できます。ペネトレーションツールはコードをスキャンして、潜在的なセキュリティ侵害につながる可能性のある悪意のあるコードが存在するかどうかを確認します。 Pentestツールは、データ暗号化技術を調べ、ユーザー名やパスワードなどのハードコードされた値を把握することにより、システムに存在するセキュリティの抜け穴を検証できます。
最適な浸透ツールを選択するための基準:
- 展開、構成、および使用が簡単である必要があります。
- システムを簡単にスキャンする必要があります。
- 緊急の修正が必要な重大度に基づいて脆弱性を分類する必要があります。
- 脆弱性の検証を自動化できる必要があります。
- 以前に見つかったエクスプロイトを再検証する必要があります。
- 詳細な脆弱性レポートとログを生成する必要があります。
実行する必要のあるテストがわかったら、内部テストリソースをトレーニングするか、専門のコンサルタントを雇って浸透タスクを実行できます。
推奨される侵入テストツール
#1)Acunetix
Acunetix WVSは、セキュリティの専門家とソフトウェアエンジニアに、簡単でわかりやすく、非常に堅牢なパッケージで、さまざまなすばらしい機能を提供します。
=> ここで最高のペンテストツールをお試しください 
#2)侵入者

侵入者 は、デジタル資産のサイバーセキュリティの弱点を発見し、リスクを説明し、侵害が発生する前にそれらの修復を支援する強力な脆弱性スキャナーです。これは、侵入テストの取り組みを自動化するのに役立つ完璧なツールです。
主な機能 :
- ITインフラストラクチャ全体で9,000を超える自動チェック。
- SQLインジェクションやクロスサイトスクリプティングなどのインフラストラクチャとWebレイヤーのチェック。
- 新しい脅威が発見されると、システムを自動的にスキャンします。
- 複数の統合:AWS、Azure、Google Cloud、API、Jira、Teamsなど。
- Intruderは、Proプランの30日間の無料トライアルを提供しています。
推奨される侵入テスト会社
#1)ImmuniWeb®

ImmuniWeb®は、スイスのジュネーブに拠点を置く侵入テスト会社です。そのDevSecOps対応のアプリケーション侵入テストプラットフォームは、人間と人工知能を組み合わせ、誤検知のないSLA、最高の脆弱性検出、および実用的なレポートを備えています。
ImmuniWebは、内部および外部のWebおよびモバイルアプリ、APIおよびWebサービス、メールサーバー、IoTデバイスなどの包括的なアプリケーション侵入テストを提供します。
主な機能:
- 継続的な新しいコードの検出。
- 迅速で費用効果の高い手動テスト。
- ワンクリックの仮想パッチ容量。
- セキュリティアナリストへの24時間年中無休のアクセス。
- DevSecOpsとCI / CDの統合。
- 即時注文と迅速な配達。
- マルチロールダッシュボード。
その他の無料ツール:
商用サービス:
また、37の強力な侵入テストツールについて説明しているSTHで入手可能な以下のリストを参照することもできます=> すべての侵入テスターのための強力な侵入テストツール
サイバーセキュリティ会社はいくつありますか
なぜ侵入テストなのか?
2017年5月に始まったWannaCryランサムウェア攻撃について聞いたことがあるはずです。これは、世界中の2ラック以上のコンピューターをロックし、ビットコイン暗号通貨で身代金の支払いを要求しました。この攻撃は、世界中の多くの大規模な組織に影響を及ぼしています。
このような大規模で危険なサイバー攻撃が最近発生しているため、セキュリティ違反から情報システムを保護するために、定期的に侵入テストを行うことが避けられなくなっています。
したがって、侵入テストは主に次の場合に必要です。
- 財務データまたは重要なデータは、異なるシステム間またはネットワークを介して転送するときに保護する必要があります。
- 多くのクライアントは、ソフトウェアリリースサイクルの一部として侵入テストを求めています。
- ユーザーデータを保護するため。
- アプリケーションのセキュリティの脆弱性を見つけるため。
- システムの抜け穴を発見するため。
- 成功した攻撃のビジネスへの影響を評価するため。
- 組織内の情報セキュリティコンプライアンスを満たすため。
- 組織に効果的なセキュリティ戦略を実装する。
組織は、内部ネットワークとコンピューターに存在するセキュリティの問題を特定する必要があります。この情報組織を使用すると、ハッキングの試みに対する防御を計画できます。ユーザーのプライバシーとデータセキュリティは、今日の最大の懸念事項です。
Facebookのようなソーシャルネットワーキングサイトのユーザー詳細をハッカーがなんとか取得したと想像してみてください。ソフトウェアシステムに小さな抜け穴が残っているため、組織は法的な問題に直面する可能性があります。したがって、大規模な組織は、サードパーティのクライアントとビジネスを行う前に、PCI(ペイメントカード業界)コンプライアンス認定を求めています。
何をテストする必要がありますか?

- ソフトウェア(オペレーティングシステム、サービス、アプリケーション)
- ハードウェア
- 通信網
- プロセス
- エンドユーザーの行動
ペネトレーションテストの種類
#1)ソーシャルエンジニアリングテスト: このテストでは、パスワードやビジネスクリティカルなデータなどの機密情報を人に公開させる試みが行われています。これらのテストは主に電話またはインターネットを介して行われ、特定のヘルプデスク、従業員、およびプロセスを対象としています。
ヒューマンエラーは、セキュリティの脆弱性の主な原因です。ソーシャルエンジニアリングの侵入の試みを回避するために、セキュリティ基準とポリシーはすべてのスタッフが従う必要があります。これらの標準の例には、電子メールまたは電話通信の機密情報は言うまでもありません。プロセスの欠陥を特定して修正するために、セキュリティ監査を実施できます。
#2)Webアプリケーションテスト: ソフトウェアメソッドを使用して、アプリケーションがセキュリティの脆弱性にさらされているかどうかを確認できます。ターゲット環境に配置されたWebアプリとソフトウェアプログラムのセキュリティの脆弱性をチェックします。
#3)物理的侵入テスト: 機密データを保護するために、強力な物理的セキュリティ手法が適用されます。これは通常、軍事施設や政府施設で使用されます。すべての物理ネットワークデバイスとアクセスポイントは、セキュリティ違反の可能性についてテストされています。このテストは、ソフトウェアテストの範囲とはあまり関係がありません。
#4)ネットワークサービステスト :これは最も一般的に実行される侵入テストの1つであり、ネットワーク上のどの種類の脆弱性が存在するかを確認するために、ネットワーク上のシステムにどのエントリが作成されているかによってネットワークの開口部が識別されます。ローカルまたはリモートで実行できます。
#5)クライアント側のテスト :クライアント側のソフトウェアプログラムの脆弱性を検索して悪用することを目的としています。
#6)リモートダイヤルアップウォーダイヤル :環境内のモデムを検索し、パスワード推測またはブルートフォースによってこれらのモデムを介して接続されたシステムにログインしようとします。
#7)ワイヤレスセキュリティテスト :オープンで、許可されておらず、安全性の低いホットスポットまたはWi-Fiネットワークを検出し、それらを介して接続します。
私たちが見た上記の7つのカテゴリーは、侵入テストのタイプを分類する1つの方法です。以下に示すように、侵入テストの種類を3つの部分に整理することもできます。

このテストアプローチについて1つずつ説明しましょう。
- ブラックボックス侵入テスト :このアプローチでは、テスターは、詳細を知らなくても、ターゲットシステム、ネットワーク、またはプロセスを評価します。それらは、ターゲット環境に侵入するために使用するURLや会社名などの非常に高レベルの入力を持っているだけです。このメソッドではコードは調べられていません。
- ホワイトボックス侵入テスト :このアプローチでは、テスターは、システム、ネットワーク、OS、IPアドレス、ソースコード、スキーマなど、ターゲット環境に関する完全な詳細を備えています。テスターは、コードを調べて、設計および開発エラーを見つけます。これは、内部セキュリティ攻撃のシミュレーションです。
- グレーボックス侵入テスト :このアプローチでは、テスターはターゲット環境に関する詳細を制限します。これは、外部のセキュリティ攻撃のシミュレーションです。
ペネトレーションテストのテクニック
- 手動侵入テスト
- 自動侵入テストツールの使用
- 手動プロセスと自動プロセスの両方の組み合わせ
3番目のプロセスは、あらゆる種類の脆弱性を特定するためにより一般的です。
手動侵入テスト
自動化されたツールを使用してすべての脆弱性を見つけることは困難です。手動スキャンのみで特定できる脆弱性がいくつかあります。ペネトレーションテスターは、侵入するシステムに関するスキルと知識に基づいて、アプリケーションに対してより適切な攻撃を実行できます。
ソーシャルエンジニアリングのような方法は、人間だけが行うことができます。手動チェックには、設計、ビジネスロジック、およびコード検証が含まれます。
侵入テストプロセス:
テスト機関または侵入テスターが従う実際のプロセスについて説明しましょう。システムに存在する脆弱性を特定することは、このプロセスの最初の重要なステップです。この脆弱性に対して修正措置が取られ、システムがこれらすべてのテストに対して陰性になるまで、同じ侵入テストが繰り返されます。
このプロセスは、次の方法で分類できます。

#1)データ収集: Google検索を含むさまざまな方法を使用して、ターゲットシステムデータを取得します。また、Webページのソースコード分析手法を使用して、システム、ソフトウェア、およびプラグインのバージョンに関する詳細情報を取得することもできます。
データベースやテーブルの名前、DBバージョン、ソフトウェアバージョン、使用されているハードウェア、ターゲットシステムで使用されているさまざまなサードパーティのプラグインなどの情報を提供できる無料のツールやサービスが市場に数多くあります。
#2)脆弱性評価: 最初のステップで収集されたデータに基づいて、ターゲットシステムのセキュリティの弱点を見つけることができます。これは、侵入テスターがシステム内の識別されたエントリポイントを使用して攻撃を開始するのに役立ちます。
#3)実際のエクスプロイト: これは重要なステップです。ターゲットシステムへの攻撃を開始するには、特別なスキルとテクニックが必要です。経験豊富な侵入テスターは、スキルを使用してシステムに攻撃を仕掛けることができます。
#4)分析とレポート作成の結果: 侵入テストの完了後、是正措置を講じるための詳細なレポートが作成されます。これらのレポートには、特定されたすべての脆弱性と推奨される修正方法がリストされています。組織のニーズに応じて、脆弱性レポートの形式(HTML、XML、MS Word、またはPDF)をカスタマイズできます。
ペネトレーションテストのサンプルテストケース(テストシナリオ)
これは機能テストではないことを忘れないでください。 Pentestでの目標は、システムのセキュリティホールを見つけることです。以下はいくつかの一般的なテストケースであり、必ずしもすべてのアプリケーションに適用できるわけではありません。
- Webアプリケーションが、Webサイトで使用されている連絡フォームに対するスパム攻撃を識別できるかどうかを確認します。
- プロキシサーバー–ネットワークトラフィックがプロキシアプライアンスによって監視されているかどうかを確認します。プロキシサーバーは、ハッカーがネットワークの内部の詳細を取得することを困難にし、外部からの攻撃からシステムを保護します。
- スパムメールフィルター–送受信メールトラフィックがフィルターされ、迷惑メールがブロックされているかどうかを確認します。
- 多くの電子メールクライアントには、必要に応じて構成する必要のあるスパムフィルターが組み込まれています。これらの構成ルールは、電子メールヘッダー、件名、または本文に適用できます。
- ファイアウォール–ネットワーク全体またはコンピューターがファイアウォールで保護されていることを確認します。ファイアウォールは、システムへの不正アクセスをブロックするソフトウェアまたはハードウェアにすることができます。ファイアウォールは、ユーザーの許可なしにネットワーク外にデータを送信することを防ぐことができます。
- すべてのサーバー、デスクトップシステム、プリンター、およびネットワークデバイスを悪用してみてください。
- すべてのユーザー名とパスワードが暗号化され、httpsなどの安全な接続を介して転送されることを確認します。
- に保存されている情報を確認する ウェブサイトのクッキー 。読み取り可能な形式であってはなりません。
- 以前に見つかった脆弱性を確認して、修正が機能しているかどうかを確認します。
- ネットワークに開いているポートがないかどうかを確認します。
- すべての電話デバイスを確認します。
- WIFIネットワークセキュリティを確認します。
- すべてのHTTPメソッドを確認します。 PUTおよびDeleteメソッドは、Webサーバーで有効にしないでください。
- パスワードが必要な基準を満たしているかどうかを確認します。パスワードは、少なくとも1つの数字と1つの特殊文字を含む8文字以上である必要があります。
- ユーザー名は「admin」や「administrator」のようにしないでください。
- ログインに数回失敗すると、アプリケーションのログインページがロックされます。
- エラーメッセージは一般的なものである必要があり、「無効なユーザー名」や「無効なパスワード」などの特定のエラーの詳細を記載しないでください。
- 特殊文字、HTMLタグ、およびスクリプトが入力値として適切に処理されているかどうかを確認します。
- 内部システムの詳細は、エラーメッセージやアラートメッセージで明らかにしないでください。
- Webページがクラッシュした場合に備えて、カスタムエラーメッセージをエンドユーザーに表示する必要があります。
- レジストリエントリの使用を確認します。機密情報はレジストリに保存しないでください。
- サーバーにアップロードする前に、すべてのファイルをスキャンする必要があります。
- Webアプリケーションのさまざまな内部モジュールと通信している間は、機密データをURLで渡さないでください。
- システムにハードコードされたユーザー名またはパスワードがあってはなりません。
- スペースの有無にかかわらず、長い入力文字列を含むすべての入力フィールドを確認します。
- パスワードのリセット機能が安全かどうかを確認します。
- のアプリケーションを確認します SQLインジェクション 。
- のアプリケーションを確認します クロスサイトスクリプティング 。
- 重要な入力検証は、クライアント側でのJavaScriptチェックではなく、サーバー側で実行する必要があります。
- システム内の重要なリソースは、許可された人とサービスのみが利用できる必要があります。
- すべてのアクセスログは、適切なアクセス許可で維持する必要があります。
- ログオフ時にユーザーセッションが終了することを確認します。
- サーバーでディレクトリの参照が無効になっていることを確認します。
- すべてのアプリケーションとデータベースのバージョンが最新であることを確認します。
- URL操作を確認して、Webアプリケーションに不要な情報が表示されていないかどうかを確認します。
- メモリリークとバッファオーバーフローを確認します。
- 着信ネットワークトラフィックをスキャンしてトロイの木馬攻撃を見つけるかどうかを確認します。
- システムがブルートフォース攻撃から安全であるかどうかを確認します。これは、パスワードなどの機密情報を見つけるための試行錯誤の方法です。
- システムまたはネットワークがDoS(サービス拒否)攻撃から保護されているかどうかを確認します。ハッカーは、継続的な要求でネットワークまたは単一のコンピューターを標的にすることができます。これにより、標的システム上のリソースが過負荷になり、正当な要求に対するサービス拒否が発生します。
- HTMLスクリプトインジェクション攻撃のアプリケーションを確認します。
- COMおよびActiveX攻撃に対して検証します。
- なりすまし攻撃に対して検証します。なりすましには複数の種類があります– IPアドレスのなりすまし、電子メールIDのなりすまし、
- ARPスプーフィング、リファラースプーフィング、発信者IDスプーフィング、ファイル共有ネットワークのポイズニング、GPSスプーフィング。
- 制御されていないフォーマット文字列攻撃(アプリケーションがクラッシュしたり、有害なスクリプトを実行したりする可能性のあるセキュリティ攻撃)がないか確認してください。
- XMLインジェクション攻撃の検証–アプリケーションの目的のロジックを変更するために使用されます。
- 正規化攻撃に対して検証します。
- エラーページに、ハッカーがシステムに侵入するのに役立つ情報が表示されているかどうかを確認します。
- パスワードなどの重要なデータがシステムの秘密ファイルに保存されているかどうかを確認します。
- アプリケーションが必要以上のデータを返しているかどうかを確認します。
これらは、ペネトレーションテストを開始するための基本的なテストシナリオにすぎません。手動または自動化ツールの助けを借りて行うことができる何百もの高度な浸透方法があります。
参考文献:
侵入テスト基準
- PCI DSS (ペイメントカード業界のデータセキュリティ基準)
- OWASP (オープンWebアプリケーションセキュリティプロジェクト)
- ISO / IEC 27002 、 OSSTMM (オープンソースのセキュリティテスト方法論マニュアル)
認定
結論
最後に、侵入テスターとして、システム内のすべての脆弱性を収集してログに記録する必要があります。エンドユーザーによって実行されないことを考慮して、シナリオを無視しないでください。
セレンテスターのためのコアJavaインタビューの質問
ペネトレーションテスターの方は、ペネトレーションテストを効果的に実行するための経験、ヒント、サンプルテストケースを読者に提供してください。