
Generador rápido y personalizable de listas de palabras de subdominios mediante DSL
Características • Instalación • Uso • Ejecutando AlterX • Únete a Discord
Generador de listas de palabras de subdominios rápido y personalizable usando DSL.

Para instalar alterx, necesitas tener Golang 1.19 instalado en tu sistema. Puedes descargar Golang desde aquí. Después de instalar Golang, puedes usar el siguiente comando para instalar alterx:
go install github.com/projectdiscovery/alterx/cmd/alterx@latest
# Clone the repository
git clone https://github.com/projectdiscovery/alterx.git
cd alterx
# Build using Makefile
make build
# Or build manually
go build ./cmd/alterx
Objetivos disponibles del Makefile:
make help # Show all available targets
make build # Build the binary
make test # Run tests
make test-coverage # Run tests with coverage
make lint # Run linter
make fmt # Format code
make clean # Clean build artifacts
make install # Install to $GOPATH/bin
Puedes usar el siguiente comando para ver las banderas y opciones 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 ??lo que hace que alterx sea diferente de cualquier otra herramienta de permutación de subdominios como goaltdns es su funcionalidad de scripting. alterx toma patrones como entrada y genera una lista de palabras de permutaciones de subdominios basada en ese patrón, similar a lo que nuclei hace con fuzzing-templates .
Lo que hace difícil la Enumeración Activa de Subdominios es la probabilidad de encontrar un dominio que realmente exista. Si la búsqueda de subdominios posibles se representara en una escala, se vería algo así como
Using Wordlist < generate permutations with subdomains (goaltdns) < alterx
Casi todas las herramientas populares de permutación de subdominios tienen patrones hardcodeados y cuando se ejecutan crean listas de palabras que contienen subdominios por millones, lo que reduce la viabilidad de hacer fuerza bruta con herramientas como dnsx. No existe una convención real para nombrar subdominios y normalmente depende de la persona que registra el subdominio. Con alterx es posible crear patrones basados en los resultados de la enumeración pasiva de subdominios, lo que aumenta la probabilidad de encontrar un subdominio y la viabilidad de hacer fuerza bruta sobre ellos.
alterx utiliza una sintaxis similar a variables, parecida a la de nuclei-templates. Se pueden escribir patrones propios usando estas variables. Cuando se pasan dominios como entrada, alterx evalúa la entrada y extrae variables de ella.
{{sub}} : subdomain prefix or left most part of a subdomain
{{suffix}} : everything except {{sub}} in subdomain name is suffix
{{tld}} : top level domain name (ex com,uk,in etc)
{{etld}} : also know as public suffix (ex co.uk , gov.in etc)
{{sld}} : second-level domain (ex for api.scanme.sh => {{sld}} is scanme)
{{root}} : also known as eTLD+1 i.e only root domain (ex for api.scanme.sh => {{root}} is scanme.sh)
{{subN}} : here N is an integer (ex {{sub1}} , {{sub2}} etc) .
// {{subN}} is advanced variable which exists depending on input
// lets say there is a multi level domain cloud.nuclei.scanme.sh
// in this case {{sub}} = cloud and {{sub1}} = nuclei`
un patrón, en términos simples, puede considerarse como una plantilla que describe qué tipo de patrones debe generar alterx.
// Below are some of example patterns which can be used to generate permutations
// assuming api.scanme.sh was given as input and variable {{word}} was given as input with only one value prod
// alterx generates subdomains for below patterns
"{{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
Aquí hay un ejemplo de archivo de configuración de patrones - https://github.com/projectdiscovery/alterx/blob/main/permutations.yaml que se puede personalizar fácilmente según sea necesario.
Este archivo de configuración genera permutaciones de subdominios para evaluaciones de seguridad o pruebas de penetración utilizando patrones personalizables y payloads dinámicos. Los patrones incluyen basados en guiones, basados en puntos y otros. Los usuarios pueden crear secciones de payload personalizadas, como palabras, identificadores de región o números, para adaptarse a sus necesidades específicas.
Por ejemplo, un usuario podría definir una nueva sección de payload env con valores como prod y dev, y luego usarla en patrones como {{env}}-{{word}}.{{suffix}} para generar subdominios como prod-app.example.com y dev-api.example.com. Esta flexibilidad permite crear listas de subdominios adaptadas para escenarios de prueba únicos y entornos objetivo.
El archivo de configuración de patrones predeterminado utilizado para la generación se guarda en el directorio $HOME/.config/alterx/, y también se puede usar un archivo de configuración personalizado mediante la opción -ac.
Un ejemplo de ejecutar alterx sobre una lista existente de subdominios pasivos de tesla.com nos produce 10 subdominios NUEVOS adicionales y válidos resueltos con 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 manera similar, la opción -enrich se puede usar para poblar subdominios conocidos como entrada de palabras y generar permutaciones conscientes del objetivo.
$ chaos -d tesla.com | alterx -enrich
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 662010 permutations in 3.9989s
Puedes alterar los patrones predeterminados en tiempo de ejecución usando la opción CLI -pattern.
$ chaos -d tesla.com | alterx -enrich -p '{{word}}-{{suffix}}'
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 21523 permutations in 0.7984s
También es posible sobrescribir el valor de variables existentes usando la opción 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
Para más información, consulta el blog de lanzamiento - https://blog.projectdiscovery.io/introducing-alterx-simplifying-active-subdomain-enumeration-with-patterns/
También echa un vistazo a los siguientes proyectos open-source similares que pueden encajar en tu flujo de trabajo:
altdns, goaltdns, gotator, ripgen, dnsgen, dmut, permdns, str-replace, dnscewl, regulator
alterx está hecho con ❤️ por el equipo de projectdiscovery y se distribuye bajo la Licencia 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}} | - | - | - |