conducting-network-penetration-test について
インフラ、サービス、防御策を評価するセキュリティテスター向けに、許可を得たネットワーク侵入テストの段階的な手順を示すスキルです。範囲確認から検出、脆弱性検証、制御下での悪用、後片付け、報告までを扱い、書面による許可と境界を重視します。
主な機能
- 01書面による許可と範囲の確認
- 02ホスト検出とネットワーク構成の把握
- 03ポートスキャンとサービス列挙
- 04脆弱性の特定と優先順位付け
- 05脆弱性とアクセス影響の検証
- 06テスト痕跡の削除と報告書作成
活用シーン
- 01導入前後のネットワークセキュリティ評価
- 02ファイアウォールルールとネットワーク分割の検証
- 03PCI-DSS、HIPAA、SOC 2、ISO 27001 のテスト要件への対応
- 04IDS/IPS、SIEM、SOC の検知能力の評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill conducting-network-penetration-testインストール後、Claude Code で/conducting-network-penetration-testを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
ネットワーク侵入テストの実施
使用する場面
- デプロイ前またはデプロイ後に、内部または外部のネットワークインフラストラクチャのセキュリティ状況を評価する場合
- 現実的な攻撃条件下で、ファイアウォールルール、ネットワークセグメンテーション、アクセス制御を検証する場合
- ネットワークサービス、プロトコル、設定における悪用可能な脆弱性を特定する場合
- 定期的な侵入テストを義務付ける PCI-DSS、HIPAA、SOC 2、ISO 27001 のコンプライアンス要件を満たす場合
- 実際の攻撃トラフィックに対する IDS/IPS、SIEM、SOC の検知能力の有効性を評価する場合
使用しないでください。資産所有者から明示的な書面による許可を得ていないネットワークのテスト、事前承認済みの変更時間枠とロールバック計画がない状態での本番システムに対するテスト、または明示的に範囲が定められ許可されていないサービス拒否テストには使用しないでください。
前提条件
- 対象 IP 範囲、除外ホスト、テスト時間、緊急連絡先を指定した、署名済みのルール・オブ・エンゲージメント(RoE)文書
- ネットワーク所有者からの書面による許可書(免責状)
- 最新のツールを備えた Kali Linux または同等のディストリビューションを実行する、テスト専用のノート PC
- RoE で定義された対象範囲への VPN または直接のネットワークアクセス
- クライアントのインシデント対応チームとの帯域外通信チャネル
- 対象範囲内の IP 範囲、ドメイン、および明示的に除外されたシステム(医療機器、SCADA、重要インフラなど)を記載したスコープ文書
ワークフロー
ステップ 1:エンゲージメント前の確認とスコープの検証
クライアントと IP 範囲を確認して、スコープを検証します。ARIN/RIPE の WHOIS 検索を使用して、スコープ内のすべての IP アドレスがクライアントの所有であることを確認します。テスト時間枠、エスカレーション手順、機密性に関する制約を確認します。専用 VM、VPN 接続、すべてのツールでのログ記録を有効にして、テスト環境をセットアップします。エンゲージメント中に実行したすべてのコマンド、開始したすべてのスキャン、試行したすべてのエクスプロイトを記録する、タイムスタンプ付きの作業ログを作成します。
ステップ 2:ホストの検出とネットワークマッピング
多層的な検出手法を使用して、許可された範囲内の稼働中ホストを特定します。
- ICMP スイープ:
nmap -sn -PE -PP -PM 10.10.0.0/16 -oA discovery_icmpを実行して、ping に応答するホストを検出します - ARP スキャン(内部ネットワーク):
nmap -sn -PR 10.10.0.0/24 -oA discovery_arpまたはarp-scan -lを実行して、ローカルサブネットを列挙します - TCP SYN 検出:
nmap -sn -PS21,22,25,80,443,445,3389,8080 10.10.0.0/16 -oA discovery_tcpを実行して、ICMP がブロックされているホストを検出します - UDP 検出:
nmap -sn -PU53,161,500 10.10.0.0/16 -oA discovery_udpを実行して、UDP のみに応答するホストを検出します
稼働中のホストを対象リストに統合します。許可されている場合は、traceroute と SNMP コミュニティ文字列の推測を使用して、ゲートウェイ、VLAN の境界、信頼関係を特定し、ネットワークトポロジをマッピングします。
ステップ 3:ポートスキャンとサービス列挙
検出されたホストに対して詳細なポートスキャンを実施します。
- 全 TCP ポートスキャン:
nmap -sS -p- --min-rate 1000 -T4 -oA full_tcp <target>を実行して、開いているすべての TCP ポートを特定します - UDP 上位ポート:
nmap -sU --top-ports 200 -T4 -oA top_udp <target>を実行して、悪用される可能性が高い一般的な UDP サービスを調べます - サービスバージョン検出:
nmap -sV -sC -p <open_ports> -oA service_enum <target>を実行して、サービスのバージョンを特定し、デフォルトの NSE スクリプトを実行します - OS フィンガープリンティング:
nmap -O --osscan-guess -oA os_detection <target>を実行して、オペレーティングシステムを特定します
プロトコル固有のツールを使用して、検出したサービスを詳細に列挙します。
- SMB:
enum4linux -a <target>、crackmapexec smb <target> --shares - SNMP:
snmpwalk -v2c -c public <target> - DNS:ゾーン転送を試みるには
dig axfr @<dns_server> <domain> - LDAP:
ldapsearch -x -H ldap://<target> -b "dc=example,dc=com"
ステップ 4:脆弱性の特定
検出したサービスのバージョンを既知の脆弱性データベースと照合します。
- NSE の脆弱性スクリプトを実行するには、
nmap --script vuln -p <ports> <target>を実行します - オフラインの Exploit-DB データベースを検索するには、
searchsploit <service> <version>を使用します - NVD(National Vulnerability Database)および CVE の記録と照合し、脆弱性が確認されているか調べます
- 管理インターフェース(Tomcat Manager、Jenkins、phpMyAdmin、データベースコンソール)のデフォルト認証情報を確認します
- よくある設定ミスをテストします:匿名 FTP、オープン SMTP リレー、制限のない SNMP コミュニティ、認証なしの NFS エクスポート
CVSS スコア、悪用可能性、ビジネスへの影響に基づいて脆弱性に優先順位を付けます。各発見事項には、CVE 識別子、対象ホスト、サービス、バージョンを記録します。
ステップ 5:エクスプロイト
必要最小限のアクセス権を原則として、検証済みの脆弱性の悪用を管理下で試みます。
- Metasploit Framework:確認済みの脆弱性に適合するエクスプロイトモジュールを使用して、
msfconsoleを実行します。RHOSTS、RPORT、ペイロードのオプションを設定します。侵入後の柔軟性を高めるため、バインド型/リバース型 TCP Meterpreter を優先します。 - 手動でのエクスプロイト:コードレビュー後に、Exploit-DB で公開されている概念実証エクスプロイトを使用します。対象環境に応じてコンパイルおよび変更します。
- 認証情報への攻撃:一般的な認証情報リストを使用して、検出したサービス(SSH、RDP、SMB、HTTP 基本認証)に対するパスワードスプレー攻撃に
hydraまたはcrackmapexecを使用します。アカウントロックアウトポリシーを遵守してください。 - Pass-the-hash/リレー:NTLM ハッシュを取得した場合は、
impacket-psexecによる Pass-the-hash や、SMB 署名が無効になっている場合のimpacket-ntlmrelayxによるリレー攻撃を試みます。
失敗したものも含め、エクスプロイトの試行をすべて記録します。侵害に成功した場合は、ホスト名、IP、現在のユーザー、権限レベルがわかるスクリーンショットを撮影します。
ステップ 6:侵入後の活動とピボット
ホストへのアクセスを取得した後、ビジネスへの影響を示します。
- 権限昇格:
linpeas.sh(Linux)またはwinPEAS.exe(Windows)を使用して、ローカルでの権限昇格につながる経路を確認します。設定ミスのあるサービス、SUID バイナリ、引用符で囲まれていないサービスパス、カーネルエクスプロイトを探します。 - 認証情報の取得:メモリ(
mimikatz)、ファイル(設定ファイル、ブラウザーの保存データ)、キャッシュされたハッシュ(hashdump)から、保存された認証情報を取得します。 - ラテラルムーブメント:取得した認証情報を使用して、追加のシステムへピボットします。侵害したホストからスコープ外のネットワークへの接続を試み、ネットワークセグメンテーションをテストします。
- データアクセスの実証:侵害したシステムからアクセス可能な機密データ(PII データベース、ファイル共有、バックアップファイル)を特定し、実際のデータを外部へ持ち出さずにアクセスを記録します。
攻撃経路の説明を作成できるよう、ピボットポイント、取得した認証情報、アクセスしたシステムをすべて詳細に記録します。
ステップ 7:クリーンアップと報告
侵害したシステムから、テストで作成したすべての痕跡を削除します。
- アップロードしたツール、シェル、一時ファイルを削除します
- テスト中に作成したアカウントを削除します
- エクスプロイト中に行った設定変更を元に戻します
- 影響を受けたホストを再スキャンし、クリーンアップを確認します
エグゼクティブサマリー、手法の説明、CVSS スコア付きの発見事項の詳細、概念実証の証拠、優先順位を付けた修復の推奨事項を含むペネトレーションテスト報告書を作成します。
主な概念
| 用語 | 定義 |
|---|---|
| Rules of Engagement (RoE) | ペネトレーションテストの範囲、境界、テスト時間、許可された行為、エスカレーション手順を定める正式な文書です |
| ピボット | 侵害したホストを中継点として利用し、テスターの位置から直接到達できない追加のネットワークセグメントにアクセスすることです |
| サービス列挙 | 発見したホスト上で稼働するサービス、そのバージョン、設定を特定し、攻撃対象領域を把握するプロセスです |
| クレデンシャルスプレー攻撃 | アカウントロックアウトのしきい値に達しないよう、多数のアカウントに対して少数の一般的なパスワードを同時に試すことです |
| CVSS | Common Vulnerability Scoring System。脆弱性の深刻度を0~10の尺度で評価する業界標準のフレームワークです |
| ラテラルムーブメント | ネットワーク内で侵害したシステムから別のシステムへ移動し、アクセス範囲を拡大するために使用する手法です |
| ポストエクスプロイト | 初期侵害後に実施する、権限昇格、永続化、認証情報の収集、データへのアクセスなどの活動です |
ツールとシステム
- Nmap:Nmap Scripting Engine(NSE)を使用したネットワーク探索、ポートスキャン、サービス列挙、脆弱性検出
- Metasploit Framework:検証済みの脆弱性を悪用するためのエクスプロイトモジュール、ペイロード、エンコーダー、ポストエクスプロイトツールを提供するエクスプロイトフレームワーク
- CrackMapExec:SMB、WinRM、LDAP、MSSQLの列挙と悪用に対応する、Windows/Active Directory環境向けの多機能ツール
- Impacket:リレー攻撃やリモート実行に使用するネットワークプロトコル(SMB、MSRPC、Kerberos)への低レベルのプログラムによるアクセスを提供するPythonライブラリ
- Burp Suite:ネットワークサービスがHTTPベースの管理インターフェースを公開している場合に使用するWebアプリケーションプロキシ
一般的なシナリオ
シナリオ:金融機関の内部ネットワークに対するペネトレーションテスト
背景:クライアントはPCI-DSS準拠を必要とする中規模銀行です。対象範囲には社内ネットワーク(10.10.0.0/16)が含まれ、別のVLANにある決済処理システムは除外されます。業務への影響を最小限にするため、テスト時間は月曜日から金曜日の20:00~06:00です。
アプローチ:
- アクセス可能なサブネットでARPベースのホスト探索を実施し、ICMPが無効になっているホストにはTCP SYNによる探索を行います
- 発見したすべてのホストを対象に全ポートスキャンを実施し、Windowsサーバーとドメインコントローラーを優先します
- SMB共有、SNMPコミュニティ、Web管理インターフェースを列挙し、すぐに成果につながる項目を探します
- デフォルト認証情報が設定された未パッチのApache Tomcatインスタンスを特定して悪用し、初期 foothold を確保します
- ローカルのWindowsカーネル脆弱性を利用して権限を昇格させた後、Mimikatzでキャッシュされたドメイン認証情報を抽出します
- 顧客記録を含むデータベースサーバーへのラテラルムーブメントを実証し、ネットワーク分割が不十分であることを示します
- 初期アクセスから機密データへのアクセスに至る完全な攻撃経路を、各脆弱性の修正手順とともに文書化します
注意点:
- 業務時間中に過度に積極的なスキャンを行い、IDSアラートやサービス障害を引き起こすこと
- スキャン前に、対象IPがすべてクライアントの所有物であることを確認しないこと
- 失敗したエクスプロイトの試行を記録せず、有効な制御について報告する機会を逃すこと
- テスト後にMeterpreterセッションやアップロードしたツールを削除し忘れること
出力形式
## Finding: Unpatched Apache Tomcat with Default Credentials
**ID**: NET-001
**Severity**: Critical (CVSS 9.8)
**Affected Host**: 10.10.5.23 (tomcat-prod.internal.corp)
**Service**: Apache Tomcat 8.5.31 on port 8080
**CVE**: CVE-2019-0232
**Description**:
The Apache Tomcat instance on 10.10.5.23:8080 is running version 8.5.31, which is
vulnerable to CVE-2019-0232 (remote code execution via CGI Servlet). Additionally,
the Tomcat Manager interface is accessible with default credentials (tomcat:tomcat),
allowing deployment of arbitrary WAR files.
**Proof of Concept**:
1. Accessed http://10.10.5.23:8080/manager/html with credentials tomcat:tomcat
2. Deployed malicious WAR file containing a reverse shell payload
3. Obtained command execution as NT AUTHORITY\SYSTEM
**Impact**:
Full system compromise of the Tomcat server. From this host, the tester
pivoted to 3 additional systems on the same subnet using harvested credentials,
ultimately accessing the customer database containing 50,000+ records.
**Remediation**:
1. Immediately change default Tomcat Manager credentials
2. Upgrade Apache Tomcat to the latest stable release (currently 10.1.x)
3. Restrict access to the Tomcat Manager interface to authorized management IPs only
4. Implement network segmentation between web servers and database tier