Subfinder

Énumération passive rapide de sous-domaines à partir de plus de 40 sources, dont la transparence des certificats, des API DNS et des moteurs de recherche. Fait partie de la suite ProjectDiscovery. Fast passive subdomain enumeration using 40+ sources including certificate transparency, DNS APIs, and search engines. Part of the ProjectDiscovery toolkit.

↗ https://github.com/projectdiscovery/subfinder

Overview

Subfinder is a passive subdomain discovery tool that queries multiple online sources simultaneously: certificate transparency logs, Shodan, VirusTotal, Censys, SecurityTrails, and dozens more. It’s fast, quiet (no direct interaction with the target), and integrates seamlessly into the ProjectDiscovery toolchain.

Basic Usage

Single domain

subfinder -d target.com

Multiple domains

subfinder -d target.com,example.org

Domains from file

subfinder -dL domains.txt

Output to file

subfinder -d target.com -o subdomains.txt

Output as JSON

subfinder -d target.com -oJ -o results.json

Verbose (show sources)

subfinder -d target.com -v

All sources (slower but more thorough)

subfinder -d target.com -all

API Keys Configuration

Configure at ~/.config/subfinder/provider-config.yaml:

shodan:
  - YOUR_KEY
censys:
  - YOUR_ID:YOUR_SECRET
virustotal:
  - YOUR_KEY
securitytrails:
  - YOUR_KEY
github:
  - YOUR_TOKEN
binaryedge:
  - YOUR_KEY

Pipeline Integration

Pipe to httpx to find live hosts

subfinder -d target.com -silent | httpx -silent

Pipe to nuclei for vulnerability scanning

subfinder -d target.com -silent | httpx -silent | nuclei -t technologies/

Find subdomains and resolve IPs

subfinder -d target.com | dnsx -a -resp
# Combine with nmap
subfinder -d target.com -silent | httpx -silent -o live_hosts.txt
nmap -iL live_hosts.txt -sV

Filtering & Output

Exclude specific sources

subfinder -d target.com -es shodan,virustotal

Use only specific sources

subfinder -d target.com -s crtsh,hackertarget

Output only unique (default behaviour)

subfinder -d target.com -nW   # disable wildcard filtering

Rate limit

subfinder -d target.com -rL 10  # 10 requests/second

Tips

  • API keys dramatically increase coverage — at minimum get free VirusTotal and GitHub tokens
  • Combine with amass for maximum passive coverage (cat results_amass.txt results_subfinder.txt | sort -u)
  • subfinder -all uses many more sources but is significantly slower
  • Use -silent in pipelines to suppress banner output
Help / Man page
subfinder [flags]

-d domain         Target domain
-dL file          File with domains
-o file           Output file
-oJ               JSON output
-oD directory     Output to directory (one file per domain)
-all              Use all sources
-s sources        Use specific sources (comma-separated)
-es sources       Exclude specific sources
-v                Verbose (show sources)
-silent           Print only subdomains
-nW               Disable wildcard filtering
-rL rate          Rate limit (requests/second)
-t threads        Number of concurrent threads
-timeout N        Timeout in seconds
-config file      Config file path
-provider-config  Provider config file path

Vue d’ensemble

Subfinder est un outil de découverte passive de sous-domaines qui interroge simultanément de multiples sources en ligne : logs de transparence des certificats, Shodan, VirusTotal, Censys, SecurityTrails, et des dizaines d’autres. Il est rapide, discret (aucune interaction directe avec la cible), et s’intègre parfaitement dans la chaîne d’outils ProjectDiscovery.

Utilisation de base

# Domaine unique
subfinder -d target.com

# Plusieurs domaines
subfinder -d target.com,example.org

# Domaines depuis un fichier
subfinder -dL domains.txt

# Sortie vers un fichier
subfinder -d target.com -o subdomains.txt

# Sortie en JSON
subfinder -d target.com -oJ -o results.json

# Verbeux (affiche les sources)
subfinder -d target.com -v

# Toutes les sources (plus lent mais plus exhaustif)
subfinder -d target.com -all

Configuration des clés API

Configurer dans ~/.config/subfinder/provider-config.yaml :

shodan:
  - YOUR_KEY
censys:
  - YOUR_ID:YOUR_SECRET
virustotal:
  - YOUR_KEY
securitytrails:
  - YOUR_KEY
github:
  - YOUR_TOKEN
binaryedge:
  - YOUR_KEY

Intégration en pipeline

# Rediriger vers httpx pour trouver les hôtes actifs
subfinder -d target.com -silent | httpx -silent

# Rediriger vers nuclei pour le scan de vulnérabilités
subfinder -d target.com -silent | httpx -silent | nuclei -t technologies/

# Trouver des sous-domaines et résoudre les IP
subfinder -d target.com | dnsx -a -resp
# Combiner avec nmap
subfinder -d target.com -silent | httpx -silent -o live_hosts.txt
nmap -iL live_hosts.txt -sV

Filtrage et sortie

# Exclure des sources spécifiques
subfinder -d target.com -es shodan,virustotal

# Utiliser uniquement des sources spécifiques
subfinder -d target.com -s crtsh,hackertarget

# Sortie uniquement unique (comportement par défaut)
subfinder -d target.com -nW   # désactiver le filtrage des wildcards

# Limiter le débit
subfinder -d target.com -rL 10  # 10 requêtes/seconde

Conseils

  • Les clés API augmentent considérablement la couverture : au minimum, obtenir des tokens gratuits VirusTotal et GitHub
  • Combiner avec amass pour une couverture passive maximale (cat results_amass.txt results_subfinder.txt | sort -u)
  • subfinder -all utilise beaucoup plus de sources mais est nettement plus lent
  • Utiliser -silent dans les pipelines pour supprimer la bannière
Aide / Page de manuel
subfinder [flags]

-d domain         Target domain
-dL file          File with domains
-o file           Output file
-oJ               JSON output
-oD directory     Output to directory (one file per domain)
-all              Use all sources
-s sources        Use specific sources (comma-separated)
-es sources       Exclude specific sources
-v                Verbose (show sources)
-silent           Print only subdomains
-nW               Disable wildcard filtering
-rL rate          Rate limit (requests/second)
-t threads        Number of concurrent threads
-timeout N        Timeout in seconds
-config file      Config file path
-provider-config  Provider config file path