
Générateur de wordlist de sous-domaines rapide et personnalisable utilisant DSL
Fonctionnalités • Installation • Utilisation • Exécution d'AlterX • Rejoindre Discord
Générateur de listes de sous-domaines rapide et personnalisable utilisant DSL.

Pour installer alterx, vous devez avoir Golang 1.19 installé sur votre système. Vous pouvez télécharger Golang ici. Après avoir installé Golang, vous pouvez utiliser la commande suivante pour installer alterx :
go install github.com/projectdiscovery/alterx/cmd/alterx@latest
# Clonez le dépôt
git clone https://github.com/projectdiscovery/alterx.git
cd alterx
# Compilez avec le Makefile
make build
# Ou compilez manuellement
go build ./cmd/alterx
Cibles Makefile disponibles :
make help # Afficher toutes les cibles disponibles
make build # Compiler le binaire
make test # Exécuter les tests
make test-coverage # Exécuter les tests avec couverture
make lint # Exécuter le linter
make fmt # Formater le code
make clean # Nettoyer les artefacts de compilation
make install # Installer dans $GOPATH/bin
Vous pouvez utiliser la commande suivante pour voir les drapeaux et options disponibles :
Fast and customizable subdomain wordlist generator using DSL.
Usage:
./alterx [flags]
Flags:
INPUT:
-l, -list string[] subdomains to use when creating permutations (stdin, comma-separated, file)
-p, -pattern string[] custom permutation patterns input to generate (comma-seperated, file)
-pp, -payload value custom payload pattern input to replace/use in key=value format (-pp 'word=words.txt')
OUTPUT:
-es, -estimate estimate permutation count without generating payloads
-o, -output string output file to write altered subdomain list
-ms, -max-size int Max export data size (kb, mb, gb, tb) (default mb)
-v, -verbose display verbose output
-silent display results only
-version display alterx version
CONFIG:
-config string alterx cli config file (default '$HOME/.config/alterx/config.yaml')
-en, -enrich enrich wordlist by extracting words from input
-ac string alterx permutation config file (default '$HOME/.config/alterx/permutation_v0.0.1.yaml')
-limit int limit the number of results to return (default 0)
UPDATE:
-up, -update update alterx to latest version
-duc, -disable-update-check disable automatic alterx update check
alterx ??Ce qui rend alterx différent des autres outils de permutation de sous-domaines comme goaltdns est sa fonctionnalité de scripting. alterx prend des modèles en entrée et génère une liste de mots de permutation de sous-domaines basée sur ce modèle, similaire à ce que nuclei fait avec fuzzing-templates.
Ce qui rend la « Recherche active de sous-domaines » difficile est la probabilité de trouver un domaine qui existe réellement. Si l'on représente la recherche de sous-domaines possibles sur une échelle, cela devrait ressembler à ceci :
Utilisation d'une liste de mots < générer des permutations avec sous-domaines (goaltdns) < alterx
Presque tous les outils de permutation de sous-domaines populaires ont des modèles codés en dur, et lorsque ces outils sont exécutés, ils créent une liste de mots contenant des sous-domaines en millions, ce qui réduit la faisabilité de les bruteforcer avec des outils comme dnsx. Il n'y a pas de convention réelle pour nommer les sous-domaines, cela dépend généralement de la personne qui enregistre le sous-domaine. Avec alterx, il est possible de créer des modèles basés sur les résultats de la « Recherche passive de sous-domaines », ce qui augmente la probabilité de trouver un sous-domaine et la faisabilité de les bruteforcer.
alterx utilise une syntaxe similaire aux variables des modèles nuclei. On peut écrire ses propres modèles en utilisant ces variables. Lorsque des domaines sont passés en entrée, alterx évalue l'entrée et en extrait les variables.
{{sub}} : préfixe de sous-domaine ou partie la plus à gauche d'un sous-domaine
{{suffix}} : tout sauf {{sub}} dans le nom du sous-domaine constitue le suffixe
{{tld}} : nom de domaine de premier niveau (ex. com, uk, in, etc.)
{{etld}} : également appelé suffixe public (ex. co.uk, gov.in, etc.)
{{sld}} : domaine de deuxième niveau (ex. pour api.scanme.sh => {{sld}} est scanme)
{{root}} : également connu sous le nom de eTLD+1, c'est-à-dire uniquement le domaine racine (ex. pour api.scanme.sh => {{root}} est scanme.sh)
{{subN}} : ici N est un entier (ex. {{sub1}} , {{sub2}} etc.)
// {{subN}} est une variable avancée qui existe selon l'entrée
// disons qu'il y a un domaine multi-niveaux cloud.nuclei.scanme.sh
// dans ce cas {{sub}} = cloud et {{sub1}} = nuclei
Un modèle, en termes simples, peut être considéré comme un template qui décrit quel type de motifs alterx doit générer.
// Ci-dessous quelques exemples de modèles qui peuvent être utilisés pour générer des permutations
// en supposant que api.scanme.sh a été donné comme entrée et que la variable {{word}} a été donnée comme entrée avec une seule valeur prod
// alterx génère des sous-domaines pour les modèles ci-dessous
"{{sub}}-{{word}}.{{suffix}}" // ex: api-prod.scanme.sh
"{{word}}-{{sub}}.{{suffix}}" // ex: prod-api.scanme.sh
"{{word}}.{{sub}}.{{suffix}}" // ex: prod.api.scanme.sh
"{{sub}}.{{word}}.{{suffix}}" // ex: api.prod.scanme.sh
Voici un exemple de fichier de configuration de modèles - https://github.com/projectdiscovery/alterx/blob/main/permutations.yaml qui peut être facilement personnalisé selon les besoins.
Ce fichier de configuration génère des permutations de sous-domaines pour des évaluations de sécurité ou des tests de pénétration en utilisant des modèles personnalisables et des charges utiles dynamiques. Les modèles incluent des modèles basés sur des tirets, des points, et autres. Les utilisateurs peuvent créer des sections de charge utile personnalisées, telles que des mots, des identifiants de région ou des nombres, pour répondre à leurs besoins spécifiques.
Par exemple, un utilisateur pourrait définir une nouvelle section de charge utile env avec des valeurs comme prod et dev, puis l'utiliser dans des modèles comme {{env}}-{{word}}.{{suffix}} pour générer des sous-domaines comme prod-app.example.com et dev-api.example.com. Cette flexibilité permet d'adapter la liste de sous-domaines à des scénarios de test uniques et à des environnements cibles.
Le fichier de configuration de modèle par défaut utilisé pour la génération est stocké dans le répertoire $HOME/.config/alterx/, et un fichier de configuration personnalisé peut également être utilisé avec l'option -ac.
Un exemple d'exécution d'alterx sur une liste existante de sous-domaines passifs de tesla.com nous a donné 10 nouveaux sous-domaines supplémentaires et valides résolus avec dnsx.
$ chaos -d tesla.com | alterx | dnsx
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 8312 permutations in 0.0740s
auth-global-stage.tesla.com
auth-stage.tesla.com
digitalassets-stage.tesla.com
errlog-stage.tesla.com
kronos-dev.tesla.com
mfa-stage.tesla.com
paymentrecon-stage.tesla.com
sso-dev.tesla.com
shop-stage.tesla.com
www-uat-dev.tesla.com
De même, l'option -enrich peut être utilisée pour peupler les sous-domaines connus comme entrée mondiale afin de générer des permutations ciblées.
$ chaos -d tesla.com | alterx -enrich
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 662010 permutations in 3.9989s
Vous pouvez modifier les modèles par défaut au moment de l'exécution en utilisant l'option CLI -pattern.
$ chaos -d tesla.com | alterx -enrich -p '{{word}}-{{suffix}}'
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 21523 permutations in 0.7984s
Il est également possible de remplacer les valeurs de variables existantes en utilisant l'option CLI -payload.
$ alterx -list tesla.txt -enrich -p '{{word}}-{{year}}.{{suffix}}' -pp word=keywords.txt -pp year=2023
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 21419 permutations in 1.1699s
Pour plus d'informations, consultez le blog de la version - https://blog.projectdiscovery.io/introducing-alterx-simplifying-active-subdomain-enumeration-with-patterns/
Consultez également les projets open-source similaires ci-dessous qui pourraient correspondre à votre workflow :
altdns, goaltdns, gotator, ripgen, dnsgen, dmut, permdns, str-replace, dnscewl, regulator
alterx est fait avec ❤️ par l'équipe projectdiscovery et distribué sous Licence MIT.
| Variable | api.scanme.sh | admin.dev.scanme.sh | cloud.scanme.co.uk |
|---|
{{sub}} | api | admin | cloud |
{{suffix}} | scanme.sh | dev.scanme.sh | scanme.co.uk |
{{tld}} | sh | sh | uk |
{{etld}} | - | - | co.uk |
| Variable | api.scanme.sh | admin.dev.scanme.sh | cloud.scanme.co.uk |
|---|
{{sld}} | scanme | scanme | scanme |
{{root}} | scanme.sh | scanme.sh | scanme.co.uk |
{{sub1}} | - | dev | - |
{{sub2}} | - | - | - |