scanning-network-with-nmap-advanced について
セキュリティチーム向けの、許可を得たネットワーク評価に使う高度な Nmap スキルです。ホスト探索、サービス・脆弱性スキャン、回避手法、構造化レポートを扱います。
主な機能
- 01複数手法によるホスト探索
- 02TCP・UDP ポートスキャン
- 03サービスと OS の検出
- 04NSE による脆弱性検査
- 05ファイアウォール回避手法
- 06構造化されたスキャンレポート
活用シーン
- 01企業ネットワーク資産の棚卸し
- 02古いサービスや脆弱性の特定
- 03許可された評価でのネットワーク防御テスト
- 04脆弱性管理用のスキャンデータ作成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill scanning-network-with-nmap-advancedインストール後、Claude Code で/scanning-network-with-nmap-advancedを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
LICENSEreferences/api-reference.mdscripts/agent.py詳細
Nmap の高度なテクニックを使ったネットワークスキャン
使用する場面
- 認可された評価で、大規模なエンタープライズネットワーク全体の包括的な資産検出を行う場合
- サービスのバージョンと設定を列挙し、古いソフトウェアや脆弱なソフトウェアを特定する場合
- 認可されたペネトレーションテストで、スキャン回避テクニックを使ってファイアウォールルールや IDS を回避する場合
- Nmap Scripting Engine(NSE)を使って、脆弱性チェックを自動化するスクリプトを作成する場合
- 脆弱性管理パイプラインに取り込むための構造化されたスキャン出力を生成する場合
明示的な書面による許可のないネットワーク、承認を得ずにピーク時間帯の本番システム、または積極的なスキャンタイミングによるサービス拒否を目的として使用しないでください。
前提条件
- Nmap 7.90 以降がインストールされていること(
nmap --versionで確認) - SYN スキャン、OS 検出、RAW パケット技術を使用するための root/sudo 権限
- 対象範囲の IP アドレスと除外対象ホストを明記した書面による許可
- 対象範囲へのネットワークアクセス(VPN、直接接続、または踏み台ホスト)
- TCP/IP プロトコルと一般的なポート割り当てに関する知識
ワークフロー
ステップ 1:複数のプローブを使ったホスト検出
ICMP がブロックされていても稼働中のホストを見つけられるよう、多層的な検出を行います。
# ARP discovery for local subnet (most reliable on LAN)
nmap -sn -PR 192.168.1.0/24 -oA discovery_arp
# Combined ICMP + TCP + UDP probes for remote networks
nmap -sn -PE -PP -PS21,22,25,80,443,445,3389,8080 -PU53,161,500 10.0.0.0/16 -oA discovery_combined
# List scan to resolve DNS names without sending packets to targets
nmap -sL 10.0.0.0/24 -oN dns_resolution.txt
結果を稼働中のホストのファイルにまとめます。
grep "Host:" discovery_combined.gnmap | awk '{print $2}' | sort -t. -k1,1n -k2,2n -k3,3n -k4,4n > live_hosts.txt
ステップ 2:タイミングとパフォーマンスのチューニングを使ったポートスキャン
# Full TCP SYN scan with optimized timing
nmap -sS -p- --min-rate 5000 --max-retries 2 -T4 -iL live_hosts.txt -oA full_tcp_scan
# Top 1000 UDP ports with version detection
nmap -sU --top-ports 1000 --version-intensity 0 -T4 -iL live_hosts.txt -oA udp_scan
# Specific port ranges for targeted assessment
nmap -sS -p 1-1024,3306,5432,6379,8080-8090,9200,27017 -iL live_hosts.txt -oA targeted_ports
ステップ 3:サービスバージョンの検出と OS フィンガープリンティング
# Aggressive service detection with version intensity
nmap -sV --version-intensity 5 -sC -O --osscan-guess -p <open_ports> -iL live_hosts.txt -oA service_enum
# Specific service probing for ambiguous ports
nmap -sV --version-all -p 8443 --script ssl-cert,http-title,http-server-header <target> -oN service_detail.txt
ステップ 4:NSE による脆弱性スキャン
# Run vulnerability detection scripts
nmap --script vuln -p <open_ports> -iL live_hosts.txt -oA vuln_scan
# Target specific vulnerabilities
nmap --script smb-vuln-ms17-010,smb-vuln-ms08-067 -p 445 -iL live_hosts.txt -oA smb_vulns
nmap --script ssl-heartbleed,ssl-poodle,ssl-ccs-injection -p 443,8443 -iL live_hosts.txt -oA ssl_vulns
# Brute force default credentials on discovered services
nmap --script http-default-accounts,ftp-anon,ssh-auth-methods -p 21,22,80,8080 -iL live_hosts.txt -oA default_creds
ステップ 5:ファイアウォール回避テクニック
# Fragment packets to evade simple packet inspection
nmap -sS -f --mtu 24 -p 80,443 <target> -oN fragmented_scan.txt
# Use decoy addresses to obscure scan origin
nmap -sS -D RND:10 -p 80,443 <target> -oN decoy_scan.txt
# Spoof source port as DNS (53) to bypass poorly configured firewalls
nmap -sS --source-port 53 -p 1-1024 <target> -oN spoofed_port_scan.txt
# Idle scan using a zombie host (completely stealthy)
nmap -sI <zombie_host> -p 80,443,445 <target> -oN idle_scan.txt
# Slow scan to evade IDS rate-based detection
nmap -sS -T1 --max-rate 10 -p 1-1024 <target> -oA stealth_scan
ステップ 6:出力の解析とレポート作成
# Convert XML output to HTML report
xsltproc full_tcp_scan.xml -o scan_report.html
# Extract open ports per host from grepable output
grep "Ports:" full_tcp_scan.gnmap | awk -F'Ports: ' '{print $1 $2}' > open_ports_summary.txt
# Parse XML with nmap-parse-output for structured data
nmap-parse-output full_tcp_scan.xml hosts-to-port 445
# Import into Metasploit database
msfconsole -q -x "db_import full_tcp_scan.xml; hosts; services; exit"
# Generate CSV for vulnerability management tools
nmap-parse-output full_tcp_scan.xml csv > scan_results.csv
主な概念
| 用語 | 定義 |
|---|---|
| SYN スキャン(-sS) | SYN パケットを送信して応答を分析するハーフオープンの TCP スキャンです。3 ウェイハンドシェイクを完了しないため、コネクトスキャンより高速でステルス性に優れています。 |
| NSE(Nmap Scripting Engine) | Nmap に組み込まれた Lua ベースのスクリプトフレームワークです。脆弱性検出、ブルートフォース、サービス検出、カスタム自動化を可能にします。 |
| タイミングテンプレート(-T0~-T5) | Paranoid(T0)から Insane(T5)までの事前定義済みスキャン速度プロファイルです。プローブの並列度、タイムアウト値、プローブ間の遅延を制御します。 |
| アイドルスキャン(-sI) | ゾンビホストの IP ID シーケンスを利用して、スキャナー自身の IP アドレスからパケットを送信せずに対象をポートスキャンする高度な手法です。 |
| バージョン強度 | サービスバージョンを特定するために Nmap が送信するプローブの数を制御します。0(少数)から 9(すべてのプローブ)まで設定でき、速度と精度のバランスを調整します。 |
| grep 可能な出力(-oG) | スキャン結果をスクリプトで分析するために、grep、awk、sed で簡単に解析できるよう設計された、旧式の Nmap 出力形式です。 |
ツールとシステム
- Nmap 7.90 以降:NSE スクリプト、OS 検出、バージョンプロービング、複数の出力形式を備えたコアスキャンエンジン
- nmap-parse-output:Nmap XML 出力を構造化形式(CSV、JSON、ホストリスト)に解析するコミュニティツール
- Ndiff:2 つのスキャン結果を比較し、ネットワーク状態の経時変化を特定する Nmap ユーティリティ
- Zenmap:ネットワークトポロジーの視覚的なマッピングとスキャンプロファイルの管理ができる、公式 Nmap GUI
- Metasploit Framework:Nmap XML 出力をインポートし、スキャン結果をエクスプロイトモジュールと直接照合します
よくあるシナリオ
シナリオ:企業ネットワークの資産検出と脆弱性ベースライン
背景:セキュリティチームは、約5,000台のアクティブホストがある10.0.0.0/8の企業ネットワークの脆弱性ベースラインを確立する必要があります。スキャンは、ネットワークへの影響を最小限に抑えながら、週末のメンテナンス時間内に完了する必要があります。
アプローチ:
- ARP(ローカルサブネット)、TCP SYN(ポート22、80、443、445、3389)、ICMPエコープローブを使用して、すべての/24サブネットで段階的なホスト検出を実行します
- 検出されたホストに対して
--min-rate 5000と-T4を使用し、時間内に完了するようTCP SYNフルスキャンを実行します - すべてのオープンポートに対して、サービスバージョン検出とデフォルトのNSEスクリプトを実行します
- 重要なサービス(SMB、SSL/TLS、HTTP)を対象に、NSE脆弱性スクリプトを実行します
- XML出力を解析してサブネットごとのCSVレポートを生成し、脆弱性管理プラットフォームにインポートします
- 今後のスキャンとの比較にNdiffをスケジュールし、修復の進捗を追跡します
注意点:
- 混雑したネットワークセグメントで
--min-rateを高く設定すると、パケット損失や誤検知が発生することがあります - 本番ネットワークで
-T5(Insane)のタイミングを使用すると、古いネットワーク機器に過度な負荷をかける可能性があります - UDPポートのスキャンを忘れると、SNMP(161)、DNS(53)、TFTP(69)などの重要なサービスを見落とします
- 出力をXML形式(
-oXまたは-oA)で保存しないと、後続のツールとの連携に必要な構造化データが失われます
出力形式
## Nmap Scan Summary
**Scan Profile**: Full TCP + Top 200 UDP + Service Enumeration
**Target Range**: 10.10.0.0/16
**Hosts Discovered**: 347 live hosts
**Scan Duration**: 2h 14m
### Critical Findings
| Host | Port | Service | Version | Vulnerability |
|------|------|---------|---------|---------------|
| 10.10.5.23 | 445/tcp | SMB | Windows Server 2012 R2 | MS17-010 (EternalBlue) |
| 10.10.8.100 | 443/tcp | Apache httpd | 2.4.29 | CVE-2021-41773 (Path Traversal) |
| 10.10.12.5 | 3306/tcp | MySQL | 5.6.24 | CVE-2016-6662 (RCE) |
| 10.10.3.77 | 161/udp | SNMP | v2c | Public community string |
### Recommendations
1. Patch MS17-010 on 10.10.5.23 immediately -- Critical RCE vulnerability
2. Upgrade Apache httpd to 2.4.58+ on 10.10.8.100
3. Upgrade MySQL to 8.0.x on 10.10.12.5 and restrict bind address
4. Change SNMP community strings from "public" on 10.10.3.77
コメント
Markdown 対応