Reconnaissance & OSINT Automation について
許可を得たセキュリティ評価向けのClaudeスキルです。OSINTと受動・能動的な偵察、スクリプトによる資産発見と報告を扱い、ドメイン、DNS、サービス、技術指紋を調査します。
主な機能
- 01受動的なOSINTとWHOIS分析
- 02サブドメインの列挙と検証
- 03DNSレコードとメールセキュリティの確認
- 04ポートとサービスの偵察
- 05技術スタックのフィンガープリント
- 06資産を関連付けたレポート作成
活用シーン
- 01ドメインの公開資産を把握
- 02DNSとメールの安全性を確認
- 03稼働中のサブドメインとサービスを特定
- 04範囲を明示した偵察レポートを作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ masriyan/ claude-code-cybersecurity-skill --skill reconnaissance-&-osint-automationインストール後、Claude Code で/reconnaissance-&-osint-automationを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
examples/example_usage.mdresources/common_subdomains.txtscripts/dns_recon.pytech_fingerprint.pysubdomain_enum.py詳細
偵察と OSINT の自動化
目的
許可を得たセキュリティ評価において、Claude が包括的な偵察とオープンソースインテリジェンスの収集を実施できるようにします。Claude は標準の分析機能を用いて受動的および能動的な偵察を行い、付属スクリプトを連携させて大規模な自動化を実現します。
許可が必要です:作業を進める前に、対象範囲に対する書面での許可を必ず確認してください。許可のない偵察は、ほとんどの法域で違法です。
有効化の条件
次のような内容をユーザーが尋ねた場合、このスキルが有効になります。
- サブドメインの列挙や発見
- DNS 偵察、ゾーン転送、DNS レコードの分析
- ドメイン、組織、個人に関する OSINT の収集
- 技術のフィンガープリンティングや技術スタックの特定
- ポートスキャン、サービスの検出、バナーグラビング
- Google 検索演算子を使った検索や高度な検索クエリの生成
- WHOIS、証明書の透明性、Shodan のクエリ
- 攻撃対象領域のマッピングや境界の調査
前提条件
pip install requests dnspython python-whois beautifulsoup4 shodan
追加機能(任意):
nmap— 能動的なポートスキャンamass— 高度なサブドメイン列挙theHarvester— メールアドレスとドメインの収集- Shodan API キー — インターネット全体のデバイス検索
- Censys API キー — 証明書とホストの検索
主な機能
1. 受動的偵察(対象への直接接触なし)
ユーザーが受動的偵察や OSINT を求めた場合:
- WHOIS 分析 — ドメイン登録情報を照会し、登録者、レジストラ、ネームサーバー、日付を確認します。プライバシー保護された登録やレジストラの傾向を特定します。
- 証明書の透明性ログ — crt.sh を検索し、ドメインとサブドメインに発行されたすべての証明書を調べます。SAN(サブジェクト代替名)を抽出し、非公開のサブドメインを発見します。
- DNS レコード(受動的) — パブリックリゾルバーを使用して、A、AAAA、MX、NS、TXT、SOA、SRV、CNAME レコードを列挙します。SPF、DKIM、DMARC を分析し、メールセキュリティの状況を確認します。
- 検索エンジン演算子を使った検索 — 公開されているファイル、ログインポータル、設定情報の漏えいを見つけるため、対象を絞った検索クエリを生成します。
site:target.com filetype:pdf— 公開されたドキュメントsite:target.com inurl:admin— 管理パネルsite:target.com ext:env OR ext:config— 設定ファイル"@target.com" site:linkedin.com— 従業員の列挙"target.com" site:pastebin.com— 認証情報の漏えい
- Shodan/Censys のクエリ — 対象の IP 範囲に関連する、インターネットに公開されたサービス、開放ポート、バナー、脆弱性を検索します。
- Git/コードリポジトリの検索 — GitHub/GitLab を検索し、漏えいした認証情報、API キー、内部情報を探します。
org:targetorg api_keyfilename:.env target.com"target.com" password
2. サブドメインの列挙
ユーザーがサブドメインの列挙を求めた場合:
- 証明書の透明性 — crt.sh/Censys の証明書からすべての SAN を抽出します(最も効果的な受動的方法)。
- DNS ブルートフォース —
resources/内の一般的なワードリストを使い、subdomain_enum.py を実行します。 - ワイルドカードの検出 — ランダムなサブドメインを照会してワイルドカード DNS 応答を検出し、誤検知を除外します。
- 名前解決の検証 — 候補をすべて IP アドレスに名前解決し、NXDOMAIN を破棄します。
- HTTP プロービング — ポート 80/443 で応答するサブドメインを確認し、Web アプリケーションを特定します。
- インフラのグループ化 — 発見したサブドメインを IP/ASN 別に分類し、クラウド資産とオンプレミス資産をマッピングします。
サブドメイン調査結果の出力形式:
Target: example.com
Discovery Method: CT Logs + DNS Brute-Force
Discovered: 47 subdomains
LIVE SUBDOMAINS:
admin.example.com → 203.0.113.10 [HTTP 200] [nginx/1.18]
dev.example.com → 203.0.113.11 [HTTP 302 → /login]
api.example.com → 203.0.113.12 [HTTP 200] [cloudflare]
internal.example.com → 10.0.0.5 [No public response — internal?]
INFRASTRUCTURE CLUSTERS:
203.0.113.10-15 → AS12345 (Company Hosting)
Cloudflare CDN → 7 subdomains proxied
3. アクティブポートスキャンとサービス検出
ユーザーがポートのスキャンやサービスの検出を依頼した場合:
- スキャン範囲(ホスト、サブネット、CIDR 範囲)を定義し、許可を確認します
- スキャン手法を選択します:SYN スキャン(root 権限が必要)、コネクトスキャン(root 権限不要)、またはステルスオプション
- まず上位 1000 ポートをスキャンし、次に対象を絞ったサービスポートをスキャンします
- すべてのオープンポートに対してサービスバージョン検出(
-sV)を実行します - 許可されている場合は OS フィンガープリンティング(
-O)を実行します - 検出されたサービスからバナーを取得します
- バージョン情報に基づいて、既知の脆弱性があるサービスにフラグを立てます
すぐに実行できる Nmap コマンドを提示します:
# Quick discovery
nmap -sn 203.0.113.0/24
# Top 1000 TCP ports with service detection
nmap -sV -sC --top-ports 1000 -oA scan_results 203.0.113.10
# Full port scan with script engine
nmap -sV -sC -p- -T4 -oA full_scan 203.0.113.10
4. DNS 偵察
ユーザーが DNS 分析を依頼した場合:
- すべてのレコードタイプを列挙します:A、AAAA、MX、NS、TXT、SOA、SRV、CNAME、PTR
- ゾーン転送の試行(AXFR)— 検出されたすべてのネームサーバーに対して試します:
dig AXFR @ns1.example.com example.com - メールセキュリティ分析:
- SPF:
~all(ソフトフェイル)または?all(ニュートラル)がないか確認します。どちらも設定が弱い状態です - DMARC:DMARC がない場合、適用されるポリシーはありません。
p=noneは監視のみです - DKIM:セレクターの存在と鍵の強度を確認します
- SPF:
- 逆引き DNS — 検出されたすべての IP に対して PTR ルックアップを行い、追加のホスト名を見つけます
- DNS 履歴 — SecurityTrails または PassiveDNS で、古いインフラを明らかにする可能性のある過去の DNS レコードを確認します
次の設定ミスにフラグを立てます:
- ゾーン転送が許可されている → DNS ゾーン全体が漏えいします
- DMARC レコードがない → メールのなりすましが可能です
- SPF が
+all→ どのサーバーからでも、このドメインを名乗って送信できます - DNSSEC が設定されていない → DNS キャッシュポイズニングのリスクがあります
5. テクノロジーのフィンガープリンティング
ユーザーがテクノロジーのフィンガープリンティングを依頼した場合:
- HTTP レスポンスヘッダーを分析します:
Server:→ Web サーバーとバージョンX-Powered-By:→ アプリケーションフレームワークSet-Cookie:の名前 → セッションフレームワーク(PHPSESSID=PHP、JSESSIONID=Java)X-Generator:/X-WordPress-Cache:→ CMS
- HTML ソースを調べ、メタタグ、スクリプトの読み込み、CSS フレームワークを確認します
/robots.txt、/sitemap.xml、/.well-known/を確認し、フレームワークの情報漏えいがないか調べます- 一般的な CMS パス(
/wp-admin/、/administrator/、/wp-json/)をテストします - JavaScript ファイルを分析してバージョン文字列を調べます
- ヘッダー分析とレスポンスの挙動から WAF の有無を検出します
- IP 範囲とヘッダーを使って CDN(Cloudflare、Akamai、Fastly、CloudFront)を特定します
テクノロジースタックのレポート形式:
URL: https://example.com
WEB SERVER: nginx/1.18.0 (Ubuntu)
APPLICATION: WordPress 6.4.2
LANGUAGE: PHP 8.1
DATABASE: MySQL (inferred from wp-config patterns)
CDN/WAF: Cloudflare
JS LIBRARIES: jQuery 3.6.0, Bootstrap 5.3
TLS: TLS 1.3, ECDHE-RSA-AES256-GCM-SHA384
NOTABLE HEADERS:
✗ Missing: X-Content-Type-Options
✗ Missing: X-Frame-Options
✗ Missing: Content-Security-Policy
✓ Present: Strict-Transport-Security
6. OSINT の相関分析とレポート作成
ユーザーが OSINT の調査結果の相関分析を依頼した場合:
- WHOIS、ASN ルックアップ、クラウドプロバイダーの IP リストを使って IP 範囲を相互参照します
- 従業員データ(LinkedIn/メールアドレスのパターン)を組織構造に対応付けます
- ペーストサイトで見つかった漏えい認証情報を、検出されたメールアドレス形式と照合します
- 使用中のサードパーティサービスや SaaS プラットフォームを特定します(DNS レコード、JS インポート経由)
- 資産間の関係を示すインフラマップを作成します
出力基準
偵察を行う際は、毎回、構造化されたレポートを作成します:
# Reconnaissance Report — [Target]
Date: [Date] | Scope: [Authorized Scope] | Analyst: [Name]
## Executive Summary
[2-3 sentence overview of key findings]
## Discovered Assets
- Subdomains: N found, N live
- IP Ranges: [CIDRs]
- Open Services: [Top findings]
- Technologies: [Stack summary]
## Key Findings
1. [High-impact finding with evidence]
2. [Medium-impact finding]
...
## Attack Surface Summary
[Map of entry points for follow-on testing]
## Recommended Next Steps
- Feed live web apps → Skill 09 (Web Security)
- Feed discovered services → Skill 02 (Vulnerability Scanner)
- Feed cloud assets → Skill 10 (Cloud Security)
スクリプトリファレンス
subdomain_enum.py
# Passive CT log enumeration
python scripts/subdomain_enum.py --domain target.com --passive-only --output results.json
# Active brute-force with custom wordlist
python scripts/subdomain_enum.py --domain target.com --wordlist resources/common_subdomains.txt --threads 20 --output results.json
dns_recon.py
# Full DNS reconnaissance
python scripts/dns_recon.py --domain target.com --output dns_report.json
# Check zone transfer vulnerability
python scripts/dns_recon.py --domain target.com --check-zone-transfer
tech_fingerprint.py
# Single URL analysis
python scripts/tech_fingerprint.py --url https://target.com --output tech_report.json
# Batch URL fingerprinting
python scripts/tech_fingerprint.py --urls urls.txt --output tech_report.json
スキル連携
| 次のステップ | 条件 | 対象スキル |
|---|---|---|
| 脆弱性評価 | 稼働中のサービスを検出 | → Skill 02 |
| Web アプリケーションのテスト | Web アプリを発見 | → Skill 09 |
| クラウド資産の監査 | クラウドでホストされている資産を発見 | → Skill 10 |
| ネットワークトラフィック分析 | PCAP キャプチャを利用可能 | → Skill 08 |
| IOC の相関分析 | 不審なインフラを発見 | → Skill 06 |
参考資料
- OWASP Testing Guide — 情報収集
- MITRE ATT&CK — 偵察(TA0043)
- Certificate Transparency — crt.sh
- Shodan 検索エンジン
- DNSDumpster
- Google Hacking Database (GHDB)
v3.0 の強化点(2026 年アップデート)
より精度が高く、最新の偵察手法:
- サブドメイン乗っ取りの検出 — 検出したサブドメインのうち、未登録の S3/Azure/GitHub Pages/Heroku/Fastly のターゲットを指す
CNAMEがあるものすべてに対し、乗っ取り候補としてフラグを付け、孤立したサービスのフィンガープリントを特定します。 - クラウドアセットの発見 — 組織名のバリエーションから、公開されている S3/GCS/Azure Blob のバケットとストレージを列挙し、リスト表示可能/全員に読み取り可能なバケットを確認します(
cloud_enum方式のロジックを使用)。ASN → CIDR → クラウドプロバイダーの帰属関係をマッピングします。 - JA4+/ファビコンのハッシュ化 — ファビコンの
mmh3ハッシュおよび JARM/JA4S サーバーフィンガープリントを使って Shodan/Censys で検索し、CDN の背後にある関連インフラを見つけます。 - GraphQL と API の偵察 —
/graphqlにイントロスペクションを問い合わせます。スキーマ、型、ミューテーションを収集し、スキル 09 に提供します。 - 情報漏えいと認証情報のインテリジェンス — 検出したメールアドレスの形式を HaveIBeenPwned および公開されているコンボリスト(パッシブのみ)と照合し、優先すべきアカウントを特定します。
- ソースコードと CI の漏えい — GitHub Actions のログ、npm/PyPI パッケージのメタデータ、内部パスが漏えいする
*.mapソースマップも検索対象に加えます。
精度に関するルール: 出力では、確認済み アセット(名前解決済み+応答あり)と 候補 アセット(CT ログのみ)を必ず分け、再現可能な調査結果となるよう、アセットごとに発見元のタグを付けます。