altdns
Moteur de permutation DNS pour la découverte de sous-domaines. Prend une liste de sous-domaines connus et génère des permutations (variantes dev, staging, api), puis les résout pour trouver de nouveaux hôtes. DNS permutation engine for subdomain discovery. Takes a list of known subdomains and generates permutations (dev, staging, api variants), then resolves them to find new hosts.
↗ https://github.com/infosec-au/altdnsOverview
altdns generates and resolves DNS permutations from a list of known subdomains. Given api.example.com, it generates variants like dev-api.example.com, api.staging.example.com, api2.example.com, etc. — often discovering hosts that pattern-only enumeration misses.
Installation
pip3 install py-altdns
# Or
git clone https://github.com/infosec-au/altdns
cd altdns
pip3 install -r requirements.txt
Basic Usage
Generate permutations and save to file (no resolution)
altdns -i known_subdomains.txt -o permutations.txt -w altdns_words.txt
Generate AND resolve permutations
altdns -i known_subdomains.txt -o permutations.txt -w altdns_words.txt -r -s resolved.txt
With DNS resolver
altdns -i subs.txt -o perms.txt -w words.txt -r -s resolved.txt -d 8.8.8.8
Input Files
known_subdomains.txt — discovered subdomains (from amass, subfinder, etc.)
cat > known_subdomains.txt << 'EOF'
api.example.com
dev.example.com
mail.example.com
vpn.example.com
EOF
# Altdns word list (mutations to apply)
# Default included in the package
# /path/to/altdns/words.txt
Or use custom word list:
cat > mutations.txt << 'EOF'
dev
staging
test
prod
internal
admin
backup
old
new
2
EOF
Workflow Integration
# Step 1: Passive subdomain discovery
subfinder -d example.com -silent > known_subs.txt
amass enum -passive -d example.com >> known_subs.txt
sort -u known_subs.txt > known_subs_deduped.txt
Step 2: Generate permutations with altdns
altdns -i known_subs_deduped.txt \
-o permutations.txt \
-w /usr/share/altdns/words.txt \
-r \
-s resolved_new.txt
Step 3: Combine results
cat known_subs_deduped.txt resolved_new.txt | sort -u > all_subdomains.txt
Step 4: Probe with httpx
cat all_subdomains.txt | httpx -silent > live_web.txt
Custom Word Lists
Good permutation words for common environments
cat > mutations.txt << 'EOF'
dev
development
staging
stage
stg
prod
production
uat
qa
test
testing
beta
alpha
internal
intranet
admin
api
v1
v2
v3
new
old
backup
b
2
EOF
Tips
- altdns is most effective after initial passive discovery — you need known subdomains as seed
- Combine with massdns for fast bulk resolution of generated permutations
- Use
purednsas a wrapper for better wildcard DNS handling - Common discoveries: dev variants of production services, forgotten staging environments
Help / Man page
altdns [options]
-i FILE Input file with known subdomains
-o FILE Output file for permutations (unresolved)
-w FILE Word list for permutations
-r Resolve generated permutations
-s FILE Save resolved domains to file
-d DNS DNS resolver to use (default: system resolver)
-t THREADS Threads for resolution (default: 100)
Vue d’ensemble
altdns génère et résout des permutations DNS à partir d’une liste de sous-domaines connus. À partir d’api.example.com, il génère des variantes comme dev-api.example.com, api.staging.example.com, api2.example.com, etc. Il découvre souvent des hôtes que l’énumération par motif seul rate.
Installation
pip3 install py-altdns
# Ou
git clone https://github.com/infosec-au/altdns
cd altdns
pip3 install -r requirements.txt
Utilisation de base
# Générer les permutations et sauvegarder dans un fichier (sans résolution)
altdns -i known_subdomains.txt -o permutations.txt -w altdns_words.txt
# Générer ET résoudre les permutations
altdns -i known_subdomains.txt -o permutations.txt -w altdns_words.txt -r -s resolved.txt
# Avec un resolver DNS
altdns -i subs.txt -o perms.txt -w words.txt -r -s resolved.txt -d 8.8.8.8
Fichiers d’entrée
# known_subdomains.txt : sous-domaines découverts (via amass, subfinder, etc.)
cat > known_subdomains.txt << 'EOF'
api.example.com
dev.example.com
mail.example.com
vpn.example.com
EOF
# Liste de mots altdns (mutations à appliquer)
# Incluse par défaut dans le paquet
# /path/to/altdns/words.txt
Ou utiliser une liste de mots personnalisée :
cat > mutations.txt << 'EOF'
dev
staging
test
prod
internal
admin
backup
old
new
2
EOF
Intégration dans un workflow
# Étape 1 : découverte passive de sous-domaines
subfinder -d example.com -silent > known_subs.txt
amass enum -passive -d example.com >> known_subs.txt
sort -u known_subs.txt > known_subs_deduped.txt
# Étape 2 : générer les permutations avec altdns
altdns -i known_subs_deduped.txt \
-o permutations.txt \
-w /usr/share/altdns/words.txt \
-r \
-s resolved_new.txt
# Étape 3 : combiner les résultats
cat known_subs_deduped.txt resolved_new.txt | sort -u > all_subdomains.txt
# Étape 4 : sonder avec httpx
cat all_subdomains.txt | httpx -silent > live_web.txt
Listes de mots personnalisées
# Bons mots de permutation pour les environnements courants
cat > mutations.txt << 'EOF'
dev
development
staging
stage
stg
prod
production
uat
qa
test
testing
beta
alpha
internal
intranet
admin
api
v1
v2
v3
new
old
backup
b
2
EOF
Conseils
- altdns est le plus efficace après une découverte passive initiale : il vous faut des sous-domaines connus comme point de départ
- Combinez avec massdns pour une résolution en masse rapide des permutations générées
- Utilisez
purednscomme wrapper pour une meilleure gestion du DNS wildcard - Découvertes courantes : variantes dev de services de production, environnements de staging oubliés
Aide / Page de manuel
altdns [options]
-i FILE Input file with known subdomains
-o FILE Output file for permutations (unresolved)
-w FILE Word list for permutations
-r Resolve generated permutations
-s FILE Save resolved domains to file
-d DNS DNS resolver to use (default: system resolver)
-t THREADS Threads for resolution (default: 100)