
レッドチーム作業向けのサブドメイン列挙および偵察コンソール。パッシブ+アクティブな収集、深い相関分析、バケット探索、msfconsole スタイルの対話型シェル。
レッドチーム作業向けのサブドメイン列挙および偵察ツール。コア機能にAPIキーは 不要で、ワンショットCLIとして、またはmsfconsoleスタイルの 永続的な対話型コンソールとして実行できます。
テストを許可されているドメインに対してのみ実行してください。詳細は 下記の「Legal」を参照してください。
setcapが必要)、
プレーンなTCPコネクトへの自動フォールバック、および初回に応答しなかった
ポートに対するリトライパス付き。set、show options、run、setup)と
ワンショットのフラグ駆動CLI。どちらも同じエンジン上に構築。git clone https://github.com/Rebellionxkid/NoWRecon
cd NoWRecon
pip install -r requirements.txt
実際の SYN スキャンの場合(これがない場合、ツールは TCP connect にフォールバックします):
sudo setcap cap_net_raw+ep $(readlink -f $(which python3))
コンソール(まずはこれで始めることを推奨):
python -m subscout.cli
バナーを表示し、ガイド付きセットアップを順を追って案内します(モードを選択: passive / active / deep / custom)。デフォルトのプリセットを利用するか、すべての設定を手動で構成でき、その後プロンプトに移行します:
nowrecon (example.com) > show options
nowrecon (example.com) > set MODE deep
nowrecon (example.com) > set EXPAND_ORG true
nowrecon (example.com) > run
...
nowrecon (example.com) > set DOMAIN other-target.com
nowrecon (other-target.com) > run
nowrecon (other-target.com) > exit
コンソールは1回のスキャン後も終了しません。コマンド:
set OPTION VALUE: 設定を変更します。例: set MODE deep。unset OPTION: 設定をデフォルトに戻します。show options: すべての設定と現在の値の表を表示します。show banner / banner: 起動バナーを再表示します。setup: ガイド付き設定フローを再実行します。run (または scan): 現在の設定でスキャンを開始します。help: すべてのコマンドを一覧表示します。スキャン中、いつでも Enter キーを押すと現在のステージをスキップし、 次のステージに進みます。
フラグ、ワンショット実行:
python -m subscout.cli example.com --mode deep --buckets --expand-org
| CLI フラグ | コンソールオプション | 説明 |
|---|---|---|
--mode | MODE | passive / active / deep |
--out-dir | OUT_DIR | json/csv/txt の出力先 |
--wordlist | WORDLIST | カスタムブルートフォース用ワードリスト |
--db | DB | SQLite 履歴/差分データベースへのパス |
--ptr-prefix | PTR_PREFIX | deep モードの PTR スイープにおける CIDR 範囲 |
--no-vhost | NO_VHOST | deep モードの vhost プロービングを無効化 |
--dns-rate | DNS_RATE | リゾルバごとの 1 秒あたり最大 DNS クエリ数 |
--ip-rate | IP_RATE | 単一のターゲット IP に対する 1 秒あたり最大 HTTP リクエスト数 |
--connect-timeout | CONNECT_TIMEOUT | TCP コネクトポートスキャンにおける試行ごとのタイムアウト |
--expand-org | EXPAND_ORG | 兄弟組織ドメインを一覧表示するだけでなくスキャンも実行 |
--expand-mode | EXPAND_MODE | 兄弟ドメインのサブスキャンに使用するモード |
--buckets | BUCKETS | ブランド名からクラウドストレージのバケット名を推測 |
--deep-brute | DEEP_BRUTE | 既に発見済みの名前に対する追加のパターン変異ラウンド |
--github-token | GITHUB_TOKEN | GitHub コード検索偵察用のトークン |
--nsec-walk | NSEC_WALK | 完全な NSEC ゾーンウォークを試行(プレーン NSEC のみ) |
--user-agent | USER_AGENT | すべてのリクエストに対するカスタム User-Agent |
--random-user-agent | RANDOM_USER_AGENT | 実行全体を通してランダムな実ブラウザの User-Agent を使用 |
-v / --verbose | VERBOSE | ステージごとのログ行を表示 |
--debug | DEBUG | 各名前を発見したソースを表示 |
注記:
DEAD と返ってくる場合は、CONNECT_TIMEOUT
(デフォルト 3 秒)を引き上げてください。root/setcap がない場合、ポートスキャンは
プレーンな TCP コネクトにフォールバックし、負荷のかかったターゲットや、このマシン
自体が大規模な並行スキャンでビジーな場合、実際に開いているポートが短い時間枠を
逃してしまうことがあります。各ポートには既に 1 回の自動リトライが設定されていますが、
タイムアウトを引き上げることで各試行により多くの時間を与えられます。--debug を
指定すると、その名を発見したソースを示す行がその前に追加されます。出力をクリーンに
保つため、デフォルトでは無効です。EXPAND_ORG は候補となる兄弟ドメインを一覧表示するだけで、明示的に有効化しない
限りスキャンは行いません。共通の所有権の証拠は、スキャンの許可とは異なります。deep モードが無関係なドメインを引き込まない仕組みこれは意図的な設計上の制約です:
core/resolver.py: is_wildcard_answer)。ルートゾーンに存在しなくても、
*.dev.example.com 上のキャッチオールが検出されます。/24
(Scope.ptr_scan_targets)に制限され、CDN/クラウド/共有ホスティングの ASN 上の
IP(Scope.is_shared_infra)では完全にスキップされます。Cloudflare の /24 を
スイープすると、無関係な数千のテナントが返ってきてしまいます。Scope.accept_ptr_result)を通過しなければなりません。名前がスコープ内にあり、
フォワード解決がリバースルックアップの取得元と同じ /24 に戻ってくる必要があります。
確認されていない PTR レコードだけでは何も証明できません。sources (passive, no key) ┐
sources (active: brute, AXFR) ├→ candidates → resolver (wildcard-aware)
dns_extra (SPF/DMARC/SRV) ┘ │
▼
permutation round (dnsgen-style)
│
▼ (deep mode only)
TLS SAN · HTTP probe + crawl · PTR sweep (FCrDNS) · vhost
│
▼
SQLite (history/diff) + JSON/CSV/TXT export
subscout/core/: モデル、スコープ/アンチノイズルール、リゾルバー、
順列生成、DNS レコード解析、パイプラインオーケストレーター。subscout/sources/: プラグイン可能なパッシブ収集ソース。subscout/enrich/: ディープモードの相関分析: ASN、TLS、HTTP、クロール、PTR、
vhost、ポートスキャン、バケット、NS/NSEC、GitHub コード検索。subscout/storage/: SQLite 履歴/差分ストアと JSON/CSV/TXT
エクスポート。subscout/runner.py: 共有のスキャン実行および結果出力
ロジック。CLI とコンソールの両方で使用されます。subscout/cli.py: ワンショットのフラグ駆動型フロントエンド (Typer)。subscout/console.py: 永続的な msfconsole スタイルのコンソール。subscout/banner.py: 起動バナー。core/models.py、core/scope.py、
core/permutations.py、core/dns_extra.py、storage/) は直接
作成・テスト済みです。aiodns/httpx を必要とするリゾルバー/パイプラインのテストは
モックを使って作成されています (tests/test_resolver.py、
tests/test_pipeline.py) が、構文チェック (py_compile) のみで
実際には実行されていません。このツールに依存する前に、通常の
インターネットアクセスがあるマシンで
pip install -r requirements.txt && pytest を実行し、管理下のドメインに対して
テストスキャンを行って、ワイルドカードフィルタリングと PTR ゲーティングが
期待どおりに動作することを確認してください。このツールは、テストを許可されているドメインに対してのみ実行してください。AXFR の試行、ブルートフォース、vhost プロービングはすべて、ターゲットの インフラストラクチャに直接影響を与えます。