
discover — Updated!
偵察、スキャン、列挙、およびMetasploitを使用した悪意のあるペイロード作成を含む、さまざまなペネトレーションテストタスクを自動化するために使用されるカスタムBashおよびPythonスクリプト。Ubuntu用。Kali Linuxのサポートは限定的です。
Custom bash scripts used to automate various penetration testing tasks including recon, scanning,
enumeration, and malicious payload creation using Metasploit. For use with Kali Linux or Ubuntu.
セットアップと使用方法
- ホームディレクトリにダウンロードしてください。``` cd ~ git clone https://github.com/leebaird/discover cd discover/ ./discover.sh
* **Update**(メインメニューオプション16)を選択して、オペレーティングシステムを更新し、依存関係(`ffuf`、`feroxbuster`、`jq`など)をインストールします。
* Devスキャナーは`dev/`にあり、メインメニューオプション **15. Dev** からもアクセスできます。
* 一部のオプションを実行するには、root権限が必要です。
### メインメニュー```
RECON
1. Domain
2. Person
SCANNING
3. Generate target list
4. CIDR
5. List
6. IP, range, or URL
7. Rerun Nmap scripts and MSF aux
WEB
8. Insecure direct object reference
9. Open multiple tabs in Firefox
10. Nikto
11. SSL
MISC
12. Parse XML
13. Generate a malicious payload
14. Start a Metasploit listener
15. Dev
16. Update
17. Exit
開発サブメニュー(オプション15)
セキュリティスキャナー(Yiğit ibrahim (ibrahimsql) による)。スクリプトは dev/ にあり、直接実行することもできます。```
Dev scripts originally by ibrahimsql
- API Security
- Cloud Security
- Container Security
- OAuth and JWT Security
- Open Redirect Scanner
- Sensitive Information
- WAF Detection
- Web and API Security
- Previous menu
```python
#!/usr/bin/env python3
import sys
import argparse
from datetime import datetime
from typing import List, Dict, Any, Optional
from dataclasses import dataclass, field, asdict
from urllib.parse import urlparse, parse_qs
from collections import defaultdict
import tldextract
import json
import yaml
import hashlib
import re
@dataclass
class SubdomainInfo:
domain: str
source: str
timestamp: str = field(default_factory=lambda: datetime.utcnow().isoformat())
resolved_ips: List[str] = field(default_factory=list)
http_status: Optional[int] = None
screenshot_path: Optional[str] = None
technologies: List[str] = field(default_factory=list)
vulnerabilities: List[str] = field(default_factory=list)
metadata: Dict[str, Any] = field(default_factory=dict)
uuid: str = field(default_factory=lambda: hashlib.sha256(f"{datetime.utcnow().isoformat()}-{id(id)}".encode()).hexdigest()[:16])
class ReconManager:
def __init__(self, config_path: Optional[str] = None):
self.config = self._load_config(config_path)
self.subdomains: Dict[str, SubdomainInfo] = {}
self.results_dir = self.config.get("results_dir", "./recon_results")
self.tools = self.config.get("tools", [])
self.blacklist = self.config.get("blacklist", [])
self.concurrency = self.config.get("concurrency", 10)
dev/ ├── api-scanner.sh ├── cloud-scanner.sh ├── container-scanner.sh ├── oauth-jwt-scanner.sh ├── open-redirect.sh ├── sensitive-scanner.sh ├── waf-detect.sh ├── web-api-scanner.sh ├── data/ │ ├── api-paths.txt │ ├── openredirect-payloads.txt │ ├── sensitive-denylist.txt │ ├── sensitive-patterns.tsv │ ├── sensitive-skip-paths.txt │ ├── sensitive-web-paths-quick.txt │ ├── sensitive-web-paths-full.txt │ ├── waf-aliases.tsv │ ├── waf-labels.tsv │ ├── waf-signatures.tsv │ ├── web-api-phases.tsv │ ├── web-api-tech-signatures.tsv │ └── swagger-paths.txt └── lib/ ├── api-scanner/ │ └── common.sh ├── cloud-scanner/ │ ├── common.sh │ ├── aws.sh │ ├── azure.sh │ └── gcp.sh ├── container-scanner/ │ ├── common.sh │ ├── docker.sh │ └── k8s.sh ├── oauth-jwt-scanner/ │ ├── common.sh │ ├── oauth.sh │ └── jwt.sh ├── open-redirect-scanner/ │ ├── common.sh │ └── engine.py ├── sensitive-scanner/ │ ├── common.sh │ ├── files.sh │ ├── web.sh │ ├── filescan.py │ ├── engine.py │ ├── fixtures/ │ └── run-tests.sh ├── waf-detect/ │ ├── common.sh │ ├── probe.sh │ ├── fixtures/ │ └── run-tests.sh └── web-api-scanner/ ├── common.sh ├── phases.sh ├── waf.sh ├── targets.sh ├── msf.sh ├── msf_parse.py ├── probe.sh ├── fixtures/ └── run-tests.sh
## 偵察
### ドメイン```
RECON
1. Passive
2. Breaches
3. Find registered domains
4. Google dorks
5. Web search
6. Import names
7. Import subdomains
8. Active
9. Previous menu
注意: Passive および Active は root としては実行できません。
パッシブリコン
Amass、ARIN、DNSRecon、dnstwist、Metasploit、subfinder、 sublist3r、theHarvester、Whois、および複数のウェブサイトを使用します。
- すべての無料APIキーを取得して、theHarvester の最大の結果を得ます。
- APIキーを $HOME/.theHarvester/api-keys.yaml に追加します。
- Passive は $HOME/data// に HTML レポートを生成します。
- 登録済みドメインの検索は、既存のレポート内の pages/registered-domains.htm を更新します。
- Active は httpx、whatweb、gowitness を使用します。オプションの NVD API キーは Active レポートの CVSS エンリッチメントを高速化します(下記の NVD API キー を参照)。
Import names (import-names.sh)
手動調査(LinkedIn、企業サイト、電話帳など)から連絡先を追加または拡充したい場合、パッシブスキャン後に実行します。``` Enter the location of your previous passive scan: /home/user/data/example.com
Enter manual contacts file (or press Enter for default):
* `$HOME/data/<domain>/tools/names-manual.tsv` を編集
* 書式: Name, Title, Phone(タブ区切り、1行に1人)
* `#` で始まる行はコメント
* Title と Phone は空白でも可
* 手動ファイルに行を追加したら、Import names を再実行
Import names は3つのソースをマージし、`pages/names.htm` を更新します:
1. `tools/names` — パッシブスキャンで自動検出された名前
2. `pages/names.htm` — 既存のレポートテーブル(ページ内の作業を保持)
3. `tools/names-manual.tsv` — 手動エントリ; 入力されている場合、Title と Phone が優先されます
マージされた TSV は `tools/names` に保存されます。名前ページはソート可能な3列のテーブルです: Name, Title, Phone。
#### サブドメインのインポート (`import-subdomains.sh`)
パッシブスキャン後に、Pentest-Tools または手動リサーチからホストを追加または強化したい場合に実行します。```
Enter the location of your previous passive scan:
/home/user/data/example.com
Enter import file or firefox (or press Enter for default):
サポートされているインポート元:
-
firefox— Firefoxプロファイルからpinia/scansをプル(無料のPentest-Toolsスキャン) -
Firefox
pinia/scansのエクスポート(pinia-scans.json) -
Pentest-Tools JSON(
pentest-tools-<domain>.json) -
Pentest-Tools テキストエクスポート(
pentest-tools.txt) -
タブ区切りのホスト/IP行
-
手動エントリ用に
$HOME/data/<domain>/tools/subdomains-import.tsvを編集 -
形式: サブドメイン, IP(タブ区切り、IPは任意)
-
IPがないホストは、インポート中に
digで解決されます -
行を追加するか、新しいPentest-Toolsスキャンを実行したら、必ず「サブドメインのインポート」を再実行してください
「サブドメインのインポート」は既存の tools/subdomains とマージし、old/subdomain-categories.tsv からカテゴリを割り当て、プライベートIPを tools/private-subs に分割し、サブドメイン、カテゴリ、IP列のみで pages/subdomains.htm を更新します。その後 Active を実行して、Photo、Status、Web Server、Technologies を入力します。
Active (active.sh)
アクティブリコン
パッシブスキャン(およびオプションで「サブドメインのインポート」)の後に実行し、どの公開ホストがHTTP/HTTPSで応答するか調査し、テクノロジーを特定し、スクリーンショットを取得します。``` Enter the location of your previous passive scan: /home/user/data/example.com
`httpx`、`whatweb`、`gowitness`、`python3`、およびChromeまたはChromiumが必要です(**Update**経由でインストール)。
* `tools/subdomains` からパブリックホスト名を読み取ります(RFC1918 IPはスキップされます)
* httpx でホスト名をプローブし、`tools/httpx.jsonl` に書き込みます
* ステータス 200–399、401、403、または405のレスポンスをaliveとして扱います
* alive URL をwhatwebでフィンガープリントし、`tools/whatweb.json` に書き込みます
* `tools/gowitness/` 以下にgowitness(go-rodドライバ)でalive URLのスクリーンショットを取得します
* `recon/active-tech.py` を使用してhttpxとwhatwebをマージし、`pages/subdomains.htm` を更新します
* 利用可能な場合にNVD CVSSで強化されたソフトウェアバージョンを含むActiveサマリーを `pages/active.htm`(Reportsメニュー→Active)に書き込みます
* Activeを再実行すると、httpx/whatweb/gowitnessの成果物を置き換え、`pages/subdomains.htm` のアクティブ列を再構築し、`pages/active.htm` を更新します