Feuille de chauffage du sous-domaine d'énumération
Aperçu général
Subfinder est un puissant outil de découverte sous-domaine développé par Project Discovery qui découvre des sous-domaines valides pour les sites Web utilisant des sources en ligne passives. Il a une architecture modulaire simple et est optimisé pour la vitesse et l'efficacité. Subfinder utilise diverses sources publiques et privées pour trouver des sous-domaines, y compris les moteurs de recherche, les agrégateurs DNS et les registres de transparence des certificats.
Quels ensembles Subfinder à part d'autres outils de dénombrement sous-domaine est sa couverture de source étendue et sa capacité à utiliser les clés API pour améliorer les résultats. En exploitant simultanément plusieurs sources de données, Subfinder peut découvrir des sous-domaines qui pourraient être manqués par d'autres outils. Il est conçu pour être facilement intégré dans les flux de travail de sécurité et peut être utilisé en combinaison avec d'autres outils pour une reconnaissance complète.
Subfinder est largement utilisé par les chercheurs en sécurité, les chasseurs de primes et les testeurs de pénétration comme première étape de reconnaissance pour cartographier la surface d'attaque d'une organisation cible. Son approche passive signifie qu'elle ne génère pas de trafic suspect vers la cible, ce qui la rend apte à la reconnaissance furtive.
Installation
Utilisation de Go
# Install using Go (requires Go 1.20 or later)
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# Verify installation
subfinder -version
Utilisation de Docker
# Pull the latest Docker image
docker pull projectdiscovery/subfinder:latest
# Run Subfinder using Docker
docker run -it projectdiscovery/subfinder:latest -h
```_
### Utilisation de Homebrew (macOS)
```bash
# Install using Homebrew
brew install subfinder
# Verify installation
subfinder -version
```_
### Utilisation de PDTM (Project Discovery Tools Manager)
```bash
# Install PDTM first if not already installed
go install -v github.com/projectdiscovery/pdtm/cmd/pdtm@latest
# Install Subfinder using PDTM
pdtm -i subfinder
# Verify installation
subfinder -version
Sur Kali Linux
# Install using apt
sudo apt install subfinder
# Verify installation
subfinder -version
Utilisation de base
Sous-domaines de recensement
# Enumerate subdomains for a single domain
subfinder -d example.com
# Enumerate subdomains for multiple domains
subfinder -d example.com,hackerone.com
# Enumerate subdomains from a list of domains
subfinder -dL domains.txt
Options de sortie
# Save results to a file
subfinder -d example.com -o results.txt
# Output in JSON format
subfinder -d example.com -oJ -o results.json
# Output in JSONL format
subfinder -d example.com -oJ -nW -o results.jsonl
# Output in CSV format
subfinder -d example.com -oC -o results.csv
# Silent mode (only subdomains)
subfinder -d example.com -silent
Filtrage de base
# Remove wildcard subdomains
subfinder -d example.com -nW
# Exclude specific subdomains
subfinder -d example.com -exclude-domains dev.example.com,stage.example.com
# Match specific subdomains
subfinder -d example.com -match-domain api.example.com
Utilisation avancée
Sélection des sources
# List all available sources
subfinder -ls
# Use specific sources
subfinder -d example.com -sources censys,shodan,virustotal
# Exclude specific sources
subfinder -d example.com -exclude-sources alienvault,threatcrowd
Configuration d'API
# Set API keys interactively
subfinder -set-config
# Set specific API key
subfinder -set-config VirusTotal=APIKEY
# Use a custom configuration file
subfinder -d example.com -config config.yaml
Énumération récursive
# Enable recursive subdomain discovery
subfinder -d example.com -recursive
# Set maximum recursion depth
subfinder -d example.com -recursive -max-depth 2
Résolution DNS
# Resolve discovered subdomains
subfinder -d example.com -resolve
# Use custom resolvers
subfinder -d example.com -resolve -r resolvers.txt
Énumération active
# Enable active enumeration
subfinder -d example.com -active
# Set timeout for active enumeration
subfinder -d example.com -active -timeout 10
Optimisation des performances
Concurrence et limitation des taux
# Set source concurrency (default: 10)
subfinder -d example.com -sc 20
# Set host concurrency (default: 10)
subfinder -d example.com -hc 20
# Set rate limit
subfinder -d example.com -rate-limit 100
Options de délai
# Set timeout for passive sources
subfinder -d example.com -timeout 30
# Set timeout for active resolution
subfinder -d example.com -resolve -timeout-resolve 5
Optimisation pour les grands balayages
# Use all sources for comprehensive results
subfinder -d example.com -all
# Increase concurrency for faster scanning
subfinder -d example.com -sc 50 -hc 50
Intégration avec d'autres outils
Pipeline avec HTTPX
# Find subdomains and probe for HTTP services
subfinder -d example.com -silent|httpx -silent
# Find subdomains, resolve them, and probe for HTTP services
subfinder -d example.com -silent -resolve|httpx -silent
Pipeline avec Nuclei
# Find subdomains and scan for vulnerabilities
subfinder -d example.com -silent|httpx -silent|nuclei -t cves/
# Find subdomains with specific patterns and scan for vulnerabilities
subfinder -d example.com -silent|grep api|httpx -silent|nuclei -t apis/
Pipeline avec Naabu
# Find subdomains and scan for open ports
subfinder -d example.com -silent|naabu -silent
# Find subdomains, scan for open ports, and probe for HTTP services
subfinder -d example.com -silent|naabu -silent|httpx -silent
Personnalisation des sorties
Format de sortie personnalisé
# Output only specific fields in JSON format
subfinder -d example.com -oJ|jq '.host'
# Count total subdomains
subfinder -d example.com -silent|wc -l
# Sort output alphabetically
subfinder -d example.com -silent|sort
Filtrage Sortie
# Filter subdomains by pattern
subfinder -d example.com -silent|grep api
# Filter out specific patterns
subfinder -d example.com -silent|grep -v dev
# Find unique root subdomains
subfinder -d example.com -silent|awk -F. '\\\\{print $(NF-1)"."$NF\\\\}'|sort -u
Filtre avancé
# Filter by subdomain level
subfinder -d example.com -silent|awk -F. 'NF==3' # 2nd level subdomains
subfinder -d example.com -silent|awk -F. 'NF==4' # 3rd level subdomains
subfinder -d example.com -silent|awk -F. 'NF>=5' # Deep level subdomains
# Filter by specific patterns
subfinder -d example.com -silent|grep -E '(api|dev|stage|test)'
# Exclude common development subdomains
subfinder -d example.com -silent|grep -v -E '(dev|stage|test|uat)'
API Configuration de la clé
Configuration de l'API Clés
Subfinder prend en charge différents fournisseurs d'API. Voici comment les configurer :
# Create a configuration file
mkdir -p $HOME/.config/subfinder
cat > $HOME/.config/subfinder/config.yaml << EOF
resolvers:
- 1.1.1.1
- 8.8.8.8
sources:
- alienvault
- censys
- shodan
- virustotal
binaryedge:
- 0bf8919b-aab9-42e4-9574-d3b639324597
censys:
- ac244e2f-b635-4581-878a-33f4e79a2c13:dd510d6e-1b6e-4655-83f6-f347b363def9
certspotter:
- 0412e8d1-5a86-47b4-a1a6-2a3b4a104a1a
github:
- ghp_16C7e42F292c6912E7710c838347Ae178B4a
passivetotal:
- sample-email@user.com:sample-password
securitytrails:
- 9e56ef28-540b-4e0c-a51e-aba1f0d2d4d3
shodan:
- AAAAClP1bJJSRMEYJazgwhJKrggRwKA
virustotal:
- 6f5e5b82a6b5a61951c6a659d4a4522b34b3950d1e35e93131a7f63a3c352553
EOF
Fournisseurs d'API pris en charge
Provider | Description |
---|---|
BinaryEdge | Search for internet-exposed devices |
Censys | Search engine for internet-connected devices |
Certspotter | Certificate transparency monitoring |
GitHub | Code hosting platform |
PassiveTotal | Threat intelligence platform |
SecurityTrails | DNS and domain data provider |
Shodan | Search engine for internet-connected devices |
VirusTotal | File and URL analysis service |
Dépannage
Questions communes
- ** Limite des taux par source* *
# Reduce concurrency
subfinder -d example.com -sc 5
# Add delay between requests
subfinder -d example.com -delay 2
```
2. **Les principaux enjeux de l'API**
```bash
# Verify API key configuration
cat $HOME/.config/subfinder/config.yaml
# Test specific source
subfinder -d example.com -sources censys
```
3. **Questions relatives à la résolution du DNS**
```bash
# Use custom resolvers
subfinder -d example.com -resolve -r resolvers.txt
# Increase resolution timeout
subfinder -d example.com -resolve -timeout-resolve 10
```
4. **Questions de mémoire**
```bash
# Process domains one by one
for domain in $(cat domains.txt); do subfinder -d $domain -o "$domain-subs.txt"; done
```
### Déboguement
```bash
# Enable verbose mode
subfinder -d example.com -v
# Show debug information
subfinder -d example.com -debug
# Check source statistics
subfinder -d example.com -stats
Configuration
Fichier de configuration
Subfinder utilise un fichier de configuration situé à $HOME/.config/subfinder/config.yaml
. Vous pouvez personnaliser différents paramètres dans ce fichier :
# Example configuration file
resolvers:
- 1.1.1.1
- 8.8.8.8
sources:
- alienvault
- censys
- shodan
- virustotal
# API keys for different providers
binaryedge:
- API_KEY
censys:
- API_ID:API_SECRET
Variables d'environnement
# Set Subfinder configuration via environment variables
export SUBFINDER_CONFIG_PATH=/path/to/config.yaml
export SUBFINDER_SOURCES=censys,shodan,virustotal
export SUBFINDER_RESOLVERS=1.1.1.1,8.8.8.8
Référence
Options de ligne de commande
Flag | Description |
---|---|
-d, -domain |
Domain to find subdomains for |
-dL, -domain-list |
File containing list of domains |
-o, -output |
File to write output to |
-oJ |
Write output in JSON format |
-oC |
Write output in CSV format |
-silent |
Show only subdomains in output |
-v, -verbose |
Show verbose output |
-ls, -list-sources |
List all available sources |
-s, -sources |
Sources to use for enumeration |
-es, -exclude-sources |
Sources to exclude from enumeration |
-recursive |
Recursive subdomain discovery |
-max-depth |
Maximum recursion depth |
-nW, -no-wildcards |
Remove wildcard subdomains |
-exclude-domains |
Subdomains to exclude from enumeration |
-match-domain |
Subdomains to match in enumeration |
-r, -resolvers |
File containing list of resolvers |
-resolve |
Resolve discovered subdomains |
-active |
Enable active subdomain enumeration |
-timeout |
Timeout for passive sources in seconds |
-timeout-resolve |
Timeout for resolver requests in seconds |
-sc, -source-concurrency |
Number of concurrent sources |
-hc, -host-concurrency |
Number of concurrent hosts |
-rate-limit |
Maximum number of HTTP requests per second |
-all |
Use all sources for enumeration |
-config |
Path to configuration file |
-set-config |
Set configuration values |
-version |
Show Subfinder version |
Sources disponibles
Source | Description | API Key Required |
---|---|---|
Alienvault | Open Threat Exchange | No |
Anubis | Subdomain data from Anubis | No |
Archiveis | Archive.is URL archive | No |
Binaryedge | Internet scanning data | Yes |
BufferOver | DNS data | No |
Censys | Internet scanning data | Yes |
CertSpotter | Certificate transparency logs | Yes (for better results) |
Chaos | Project Discovery's Chaos dataset | Yes |
Commoncrawl | Web crawl data | No |
DNSDB | Passive DNS database | Yes |
DNSRepo | DNS records repository | No |
Entrust | Certificate transparency logs | No |
FacebookCT | Facebook's certificate transparency logs | No |
GitHub | Code search | Yes (for better results) |
Intelx | Intelligence X data | Yes |
PassiveTotal | RiskIQ's passive DNS data | Yes |
Rapiddns | DNS records database | No |
Riddler | DNS records search | No |
SecurityTrails | DNS records database | Yes |
Shodan | Internet scanning data | Yes |
ThreatBook | Threat intelligence data | Yes |
ThreatMiner | Threat intelligence data | No |
URLScan | URL scanning service | No |
VirusTotal | Security service for files and URLs | Yes |
Waybackarchive | Internet Archive's Wayback Machine | No |
ZoomEye | Cyberspace search engine | Yes |
Ressources
- [Documents officiels] (LINK_3)
- [Répertoire GitHub] (LINK_3)
- Discorde de découverte du projet
*Cette feuille de triche fournit une référence complète pour l'utilisation de Subfinder, du dénombrement de base au filtrage avancé et l'intégration avec d'autres outils. Pour les informations les plus récentes, veuillez toujours consulter la documentation officielle. *