recon-fingerprint について
recon-fingerprintは、Web技術、WAF、CDN、サーバー情報を特定するセキュリティテスト用スキルです。whatweb、nuclei、httpx、curlなどを使った許可済みの評価手順を示し、指紋情報をデータベースに保存できます。
主な機能
- 01Web技術の特定
- 02WAFとCDNの検出
- 03HTTPヘッダーの分析
- 04サーバーとTLSの調査
- 05指紋情報の永続保存
活用シーン
- 01サイトの技術スタックの棚卸し
- 02WAFとCDNの保護状況の確認
- 03サーバーヘッダーとTLSの確認
- 04調査結果の保存と後続分析
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ crazymarky/ pentest-skills --skill recon-fingerprintインストール後、Claude Code で/recon-fingerprintを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/cms-fingerprints.txttech-headers.txtwaf-signatures.txtreferences/fingerprinting_techniques.mdhttpx_guide.mdwafw00f_guide.mdwhatweb_guide.mdscripts/extract_headers.pyfingerprint_storage.pytech_matcher.pywaf_detector.py詳細
Web フィンガープリンティングと WAF 検出
認可に関する警告
重要: Web フィンガープリンティングでは、対象サーバーにリクエストを送信します。必ず以下を確認してください。
- 対象アプリケーションの所有者から書面による許可を得ていること
- 許可されたテストの範囲を定めていること
- 現地の規制を遵守していること
前提条件
システムにインストールする必要があるツール:
- httpx -
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest - nuclei -
go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
任意のツール:
- wafw00f -
pip install wafw00f - whatweb - パッケージマネージャーからインストール
- fingerprintx -
go install github.com/praetorian-inc/fingerprintx/cmd/fingerprintx@latest
クイックスタート
Web フィンガープリンティングで最もよく使われるコマンド:
基本的なテクノロジー検出
whatweb https://target.com
WAF 検出
wafw00f https://target.com
HTTP ヘッダー分析
curl -I https://target.com
包括的なフィンガープリンティング(Nuclei)
nuclei -u https://target.com -tags tech
よくあるシナリオ
シナリオ 1:テクノロジーの簡易フィンガープリンティング
テクノロジースタックをすばやく特定する場合:
whatweb https://target.com --aggression 1
パラメーター:
--aggression 1- クイックスキャン(1~4、デフォルトは1)-a 3- よりアグレッシブなスキャン(リクエスト数が増加)-v- 詳細な出力
例:
whatweb https://target.com -a 3
シナリオ 2:WAF 検出
WAF/CDN による保護を検出する場合:
wafw00f https://target.com
出力に表示される情報:
- WAF ベンダー(Cloudflare、AWS WAF、Imperva など)
- 使用中の CDN
- 検出されたファイアウォールルール
複数の対象を確認する場合:
wafw00f -i targets.txt
シナリオ 3:サーバーヘッダー分析
HTTP ヘッダーを分析する場合:
curl -I https://target.com
ヘッダーの詳細:
curl -v https://target.com 2>&1 | grep -i "< "
確認する一般的なヘッダー:
Server: nginx/1.18.0
X-Powered-By: PHP/7.4
X-AspNet-Version: 4.0.30319
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
Strict-Transport-Security: max-age=31536000
シナリオ 4:Nuclei によるテクノロジー検出
包括的なテクノロジーフィンガープリンティングを行う場合:
nuclei -u https://target.com -tags tech -severity info
特定のテクノロジー:
nuclei -u https://target.com -tags "wordpress,joomla,drupal"
nuclei -u https://target.com -tags "spring-boot,struts2"
nuclei -u https://target.com -tags "react,vue,angular"
シナリオ 5:HTTPx フィンガープリンティング
テクノロジー検出を含む HTTP プロービングをすばやく行う場合:
httpx -u https://target.com -tech-detect -status-code -title
パラメーター:
-tech-detect- テクノロジー検出を有効にする-status-code- HTTP ステータスを表示する-title- ページタイトルを抽出する-server- サーバーヘッダーを表示する-websocket- WebSocket を検出する-cdn- CDN を検出する
例:
httpx -u https://target.com -tech-detect -server -cdn -ssl
シナリオ 6:CMS 検出
CMS を特定する場合:
whatweb https://target.com --aggression 3 | grep -i cms
Nuclei による CMS 検出:
nuclei -u https://target.com -tags cms
一般的な CMS の判別指標:
- WordPress:
/wp-login.php、/wp-admin/、wp-json - Drupal:
/user/login、Drupal.settings - Joomla:
/administrator/components、Joomla! - TYPO3:
/typo3conf
シナリオ 7:JavaScript フレームワーク検出
フロントエンドフレームワークを特定する場合:
curl -s https://target.com | grep -i "react\|vue\|angular\|jquery"
特定のフレームワークファイルを確認する場合:
# React
curl -s https://target.com | grep -i "react"
# Vue.js
curl -s https://target.com | grep -i "vue\.js\|vue-"
# Angular
curl -s https://target.com | grep -i "angular\|ng-app"
# jQuery
curl -s https://target.com | grep -i "jquery"
シナリオ 8:サーバーバージョン検出
サーバーソフトウェアとバージョンを特定する場合:
nmap -sV -p 443,80 target.com
HTTP サーバーバナー:
curl -I https://target.com | grep -i server
サーバー検出に httpx を使用する場合:
httpx -u https://target.com -server -response-time
シナリオ 9:CDN 検出
CDN プロバイダーを特定する場合:
httpx -u https://target.com -cdn
CDN の HTTP ヘッダーを確認する場合:
curl -I https://target.com | grep -i "cf-ray\|x-amz\|x-akamai\|x-fastly"
一般的な CDN ヘッダー:
- Cloudflare:
cf-ray、cf-cache-status - AWS CloudFront:
x-amz-cf-id - Akamai:
x-akamai-transformed - Fastly:
x-served-by、fastly-ssl - CloudFront:
via、x-amz-cf-pop
シナリオ 10:SSL/TLS フィンガープリンティング
SSL 設定を分析する場合:
nmap --script ssl-cert,ssl-enum-ciphers -p 443 target.com
curl を使った SSL 情報の確認:
curl -vI https://target.com 2>&1 | grep -i ssl
testssl.sh を使用する場合:
testssl.sh https://target.com
ツール選択ガイド
| シナリオ | 推奨ツール | コマンド |
|---|---|---|
| テクノロジーを素早く検出 | whatweb | whatweb https://target.com |
| WAF の検出 | wafw00f | wafw00f https://target.com |
| ヘッダーの分析 | curl | curl -I https://target.com |
| 包括的な検出 | nuclei | nuclei -u https://target.com -tags tech |
| 高速なプロービング | httpx | httpx -u https://target.com -tech-detect |
| CMS の検出 | nuclei | nuclei -u https://target.com -tags cms |
| CDN の検出 | httpx | httpx -u https://target.com -cdn |
ツールの比較:
| ツール | 速度 | 対応範囲 | 最適な用途 |
|---|---|---|---|
| whatweb | 高速 | 良好 | テクノロジースタックの迅速な確認 |
| wafw00f | 高速 | WAF のみ | WAF の検出 |
| nuclei | 中程度 | 非常に広い | 包括的な検出 |
| httpx | 非常に高速 | 基本的 | 高速なプロービング |
| nmap | 低速 | 詳細 | SSL/サーバーの詳細情報 |
テクノロジーのフィンガープリント
Web サーバー
| サーバー | ヘッダーのパターン | 一般的なバージョン |
|---|---|---|
| nginx | Server: nginx | 1.18.x, 1.20.x, 1.22.x |
| Apache | Server: Apache | 2.4.x, 2.2.x |
| IIS | Server: Microsoft-IIS | 7.5, 8.0, 8.5, 10.0 |
| Cloudflare Server | Server: cloudflare | - |
バックエンドフレームワーク
| フレームワーク | 判定指標 |
|---|---|
| PHP | X-Powered-By: PHP、.php URL |
| Python | Server: WSGIServer、Python ヘッダー |
| Ruby | X-Powered-By: Phusion Passenger |
| Node.js | X-Powered-By: Express |
| Java | X-Powered-By: JSP、.jspx、.do |
| .NET | X-AspNet-Version、.aspx |
| Go | Server: Go-http-server |
フロントエンドフレームワーク
| フレームワーク | ファイル/パターン |
|---|---|
| React | react.js、react-dom、_react、__REACT__ |
| Vue.js | vue.js、vue-router、v-if、v-for |
| Angular | ng-app、angular.js、zone.js |
| jQuery | jquery.js、$(、.ajax() |
WAF のシグネチャ
| WAF | 検出方法 |
|---|---|
| Cloudflare | cf-ray、cf-cache-status ヘッダー |
| AWS WAF | x-amz-cf-id ヘッダー |
| Imperva | X-Iinfo、X-CDN ヘッダー |
| Akamai | akamai-origin ヘッダー |
| F5 ASM | BIGipServer Cookie |
| ModSecurity | Mod_Security ヘッダー |
| Barracuda | barra_counter_session Cookie |
ヒントとベストプラクティス
- まずはパッシブに調査する - 最初にヘッダーとページコンテンツを使用します
- 複数の情報源を確認する - 精度を高めるため、ツールの出力を組み合わせます
- バージョンを検証する - テクノロジーの検出が常に正確とは限りません
- 回避措置に注意する - テクノロジースタックを隠しているサイトもあります
- まず WAF を確認する - アクティブスキャンの前に必ず WAF の有無を確認します
- CDN を考慮する - CDN によって実際のサーバー情報が隠される場合があります
- 結果を保存する - 相関分析のためにフィンガープリントを記録します
リソース
スクリプト
scripts/extract_headers.py- HTTP ヘッダーを抽出して分析しますscripts/tech_matcher.py- レスポンスからテクノロジーを照合しますscripts/waf_detector.py- ヘッダー/Cookie から WAF を検出します
参考資料
references/whatweb_guide.md- WhatWeb リファレンスガイドreferences/wafw00f_guide.md- WAF 検出ガイドreferences/httpx_guide.md- HTTPx リファレンスreferences/fingerprinting_techniques.md- 高度なフィンガープリンティング手法
シナリオ:フィンガープリンティング結果の永続保存
Web フィンガープリンティングの結果をデータベースに永続保存する場合:
# Manual entry after fingerprinting
python .claude/skills/recon-fingerprint/scripts/fingerprint_storage.py \
--host-ip 192.168.1.100 \
--url "https://example.com" \
--technology "Apache 2.4.41" \
--category "web-server" \
--version "2.4.41" \
--subsystem "Web Application"
パラメーター:
--host-ip- 対象ホストの IP(必須)--url- 対象 URL(必須)--technology- 検出されたテクノロジー(必須)--category- テクノロジーのカテゴリ:web-server、cms、framework など(任意)--version- テクノロジーのバージョン(任意)--confidence- 信頼度(任意)--subsystem- サブシステム名(任意)
データベースの場所: ./data/results.db
関連スキル: results-storage - データのクエリ、レポートの生成
Assets
assets/waf-signatures.txt- Known WAF signaturesassets/tech-headers.txt- Technology header patternsassets/cms-fingerprints.txt- CMS detection patterns