ハッカーの視点から学ぶペネトレーションテスト(4) ペネトレーションテストのフェーズ
ハッカーの視点から学ぶペネトレーションテストの第四回目は「ペネトレーションテストのフェーズ」です。
ハッカーの視点から学ぶペネトレーションテストの構成について
この「ハッカーの視点から学ぶペネトレーションテスト」の記事は、長編になるため、以下のように記事を分割して構成しています。
4.ペネトレーションテストのフェーズ (←この記事です。)
順次、記事をリリース致します。
ターゲットの特定と情報収集の手法
ペネトレーションテストにおいて、情報収集は重要なステップであり、セキュリティテスターがテスト対象のシステムやネットワークに関する情報を収集し、攻撃の戦略を立てるための基盤を提供します。
情報収集とターゲットの特定は、ペネトレーションテストの成功に不可欠であり、テスターが攻撃の範囲と戦略を確立するのに役立ちます。ただし、倫理的なガイドラインと法的要件を遵守することが重要です。
以下は、ペネトレーションテストの情報収集に関する手法とターゲットの特定についての基本的なポイントです。
(1) 情報収集の手法
①オープンソース情報
インターネット上で公開されている情報を収集します。これには、ウェブサイト、ソーシャルメディアプロファイル、フォーラム投稿、業界ニュース、組織の公式情報などが含まれます。
②DNS情報
DNS(Domain Name System)情報を調査し、ドメイン名、サブドメイン、ネームサーバー、メールサーバーなどの情報を収集します。DNSルックアップツールやDNSクエリを使用します。
③WHOIS情報
WHOISデータベースから、ドメインの所有者情報や連絡先情報を取得します。多くのドメイン登録情報は公開されているため、攻撃者はこれを利用することがあります。
④ポートスキャン
Nmapなどのポートスキャンツールを使用して、ターゲットシステム上のオープンポートとサービスを特定します。これにより、システムの構造や可能性のある脆弱性を理解できます。
⑤バナー情報
ポートスキャンやネットワークスキャナーを使用して、サービスが提供するバナー情報を収集します。これは、特定のアプリケーションやバージョンに関する情報を提供します。
⑥Webスクレイピング
ウェブスクレイピングツールを使用して、ウェブサイトから情報を収集します。これにはディレクトリリスト、ファイル名、フォーム、エラーメッセージ、検索可能な情報などが含まれます。
⑦ソーシャルエンジニアリング
ソーシャルエンジニアリング技術を使用して、組織内部の情報を収集します。これには電話での情報取得、メールでの情報収集、フィッシング攻撃、プリテキスト攻撃などが含まれます。
⑧脆弱性データベース
公開されている脆弱性データベースを検索し、テスト対象のソフトウェアやシステムに関する脆弱性情報を収集します。
(2) ターゲットの特定
ターゲットの特定は情報収集の初期段階で行われます。ターゲットは、ペネトレーションテスターが評価対象とするシステム、ネットワーク、アプリケーション、またはリソースです。ターゲットの特定に関連するポイントは以下の通りです
①ターゲットの識別
ペネトレーションテスターは、対象となるシステム、ネットワーク、アプリケーション、および関連リソースを特定します。これにより、テストのスコープが確定します。
②ターゲットの重要性
ターゲットの重要性を評価し、テスト対象のシステムにどれだけの潜在的な影響があるかを考慮します。クリティカルなインフラストラクチャーやデータは、特に注意が必要です。
③ターゲットの脆弱性
ターゲットに関する既知の脆弱性情報やセキュリティ設定についての情報を収集します。これにより、テストにおける焦点を設定できます。
④テストの合法性と許可
ターゲットの特定と情報収集は、合法的かつ許可を得たプロセスであることが重要です。テスト対象の組織との合意を得て、適切な許可を取得する必要があります。
脆弱性スキャンと脆弱性分析/評価の方法
ペネトレーションテストの脆弱性分析は、セキュリティテスターがテスト対象のシステムやネットワークに潜在的なセキュリティ脆弱性を特定し、それらを評価するプロセスです。
ペネトレーションテストの脆弱性分析は、セキュリティテスターが組織のセキュリティポストを向上させ、潜在的な攻撃リスクを軽減するのに役立ちます。セキュリティテスターは合法的な手法で脆弱性を特定し、組織がセキュリティを向上させるための指針を提供します。
脆弱性分析は以下の手順に基づいて行われます
①情報収集と偵察/調査
ペネトレーションテスターは、ターゲットとなるシステムやネットワークに関する情報を収集し、偵察/調査を実施します。これにはオープンソース情報、DNS情報、WHOISデータ、ポートスキャン、ウェブスクレイピング、ソーシャルエンジニアリングなどが含まれます。
②脆弱性スキャン
Nessus、OpenVASなどの脆弱性スキャナーや手動でのスキャニングを使用して、テスト対象のシステムやネットワークに対して脆弱性スキャンを実施します。これにより、システム上の既知の脆弱性が特定されます。
③脆弱性評価
脆弱性スキャンの結果を評価し、実際に攻撃者がどの程度のリスクを抱えるかを判断します。スキャンで発見された脆弱性がどの程度深刻か、攻撃者にどの程度の影響を与える可能性があるかを評価します。
④脆弱性の利用
脆弱性が特定された場合、ペネトレーションテスターはそれらの脆弱性を利用してシステムに侵入を試みるか、攻撃の手法を模倣します。これには、エクスプロイトコードや攻撃ツールを使用することが含まれます。
⑤手動テスト
自動化ツールだけでなく、手動のテストも実施します。手動テストにより、テスト対象のシステムに対する新たな攻撃方法や脆弱性が特定されることがあります。
⑥リスク評価
特定された脆弱性と攻撃手法に基づいて、リスク評価を実施します。脆弱性がどれだけ深刻で、攻撃者にどれだけのリスクをもたらす可能性があるかを判断します。
⑦報告と提言
ペネトレーションテスターは、テスト結果を含む報告書を作成し、テスト対象の組織に提供します。報告書には特定された脆弱性、リスク評価、修正提案、セキュリティ改善の勧告が含まれます。
⑧再テスト
テスト対象の組織は、特定された脆弱性の修正を行い、セキュリティ改善を実施します。その後、再テストが行われ、脆弱性が解消されたことを確認します。
システムへの侵入手法
ペネトレーションテストは、セキュリティテスターが合法的かつ倫理的な方法でシステムの脆弱性を評価するための活動です。以下に、一般的な攻撃手法と実際の攻撃事例を紹介します。ただし、これらの情報は倫理的なテストとして行われるべきであり、許可を得たプロフェッショナルによって実施されなければなりません。
一般的な攻撃手法
①SQLインジェクション
攻撃者は不正なSQLクエリをデータベースに送り込み、データベースから情報を抽出したり、データを改ざんしたりします。
②クロスサイトスクリプティング (XSS)
攻撃者はウェブアプリケーションに不正なスクリプトを挿入し、ユーザーのブラウザ上で実行させることで、ユーザーの情報を盗むなどの悪意ある行動を実行します。
③クロスサイトリクエストフォージェリ (CSRF)
攻撃者はユーザーが誤って不正な操作を実行するように仕向け、リクエストを不正に送信します。
④ブルートフォース攻撃
攻撃者は総当たり攻撃を使用して、パスワードを推測し、アカウントに侵入しようとします。
⑤セッションハイジャック
攻撃者は有効なセッションを奪い、被害者のアカウントで不正な操作を行います。
⑥リモートコード実行 (RCE)
攻撃者はリモートからコードを実行し、システムにアクセスしようとします。これにより、システムが完全に侵害される可能性があります。
アクセスを保持する手法と持続的な攻撃
ペネトレーションテストにおいて、アクセスを維持することと、持続的な攻撃を模倣することは、攻撃者の手法を理解し、セキュリティ脆弱性の特定を支援する重要な側面です。
持続的な攻撃は、攻撃者が発見されにくく、システム内での活動を継続できるようにするための戦術です。ペネトレーションテストは、これらの攻撃手法を模倣し、セキュリティ脆弱性を特定し、組織がより強固なセキュリティポストを築くための情報を提供します。
ペネトレーションテスターがアクセスを維持し、持続的な攻撃を模倣する方法について説明します。
(1) アクセスを維持する手法
①バックドアの設置
ペネトレーションテスターは、システム内にバックドアとして使用できるコードやプログラムを導入することがあります。これにより、システムに再アクセスできるようになります。
②ペイロードのインジェクション
攻撃者は、悪意のあるペイロード(マルウェア、トロイの木馬など)をシステムに挿入し、アクセスを確立および維持します。
③ポートフォワーディング
ペネトレーションテスターは、ポートフォワーディングを使用して、トンネリングを確立し、外部からのアクセスを内部のリソースに転送します。
④トークンや認証情報の奪取
ペネトレーションテスターは、認証情報やアクセストークンを盗み、これらを使用してシステムにアクセスし続けることがあります。
⑤侵入テストツールの使用
ペネトレーションテスターは、Metasploitなどの侵入テストツールを使用して、システムへのアクセスを保持し、攻撃を継続します。
(2) 持続的な攻撃
①偵察と情報収集
攻撃者はシステム内での動きを最小限に抑え、システムやネットワークの偵察と情報収集を行います。これにより、セキュリティチームに発見されにくくなります。
②権限の昇格
攻撃者は権限の昇格を試み、より高い特権を取得しようとします。これにより、攻撃者はシステム内での操作を制限せず、重要なデータや機能にアクセスできるようになります。
③偽装と隠蔽
攻撃者は自分の存在を隠し、正当なユーザーとして振る舞うことがあります。ログエントリを改ざんし、自身のアクティビティを検出されにくくします。
④通信の暗号化
攻撃者は通信を暗号化し、検出されにくくしようとします。セキュリティツールが通信を監視しても、暗号化された通信を解読するのは難しいです。
⑤偽のアップデートやバックドアの設置
攻撃者はシステム内に偽のアップデートを導入し、それを利用してバックドアを維持することがあります。
ハッカーの視点から学ぶペネトレーションテスト(4) ペネトレーションテストのフェーズのまとめ
ペネトレーションテストのフェーズは、主に5つの段階で構成されました。
最初の段階では、情報を集めて、攻撃対象を特定します。
次に、システム内の弱点を見つけるための脆弱性分析を行います。
それから、見つけた脆弱性を悪用して、システムに侵入を試みます。
侵入に成功すれば、アクセスを保持し、継続的な攻撃を模倣します。
最後に、テスト結果をまとめて、セキュリティ上の問題や改善策を報告します。
これらの段階を通じて、組織はセキュリティの問題を特定し、修正して、セキュリティを向上させていくのですね