
Gerador rápido e personalizável de wordlists de subdomínios usando DSL
Recursos • Instalação • Uso • Executando o AlterX • Entrar no Discord
Gerador de wordlist de subdomínios rápido e personalizável usando DSL.

Para instalar o alterx, você precisa ter o Golang 1.19 instalado no seu sistema. Você pode baixar o Golang aqui. Após instalar o Golang, você pode usar o seguinte comando para instalar o 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
Alvos disponíveis no 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
Você pode usar o seguinte comando para ver os flags e opções disponíveis:
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 ??o que torna o alterx diferente de outras ferramentas de permutação de subdomínios como goaltdns é o seu recurso de scripting. O alterx recebe padrões como entrada e gera uma wordlist de permutações de subdomínios com base nesse padrão, semelhante ao que o nuclei faz com fuzzing-templates.
O que torna a Enumeração Ativa de Subdomínios difícil é a probabilidade de encontrar um domínio que realmente exista. Se a descoberta de possíveis subdomínios for representada em uma escala, ela deve parecer algo como
Using Wordlist < generate permutations with subdomains (goaltdns) < alterx
Quase todas as ferramentas populares de permutação de subdomínios têm padrões fixos (hardcoded) e, quando executadas, criam wordlists que contêm milhões de subdomínios, o que diminui a viabilidade de testá-los por força bruta com ferramentas como dnsx. Não há uma convenção real para nomear subdomínios; isso geralmente depende de quem registra o subdomínio. Com o alterx, é possível criar padrões baseados nos resultados de enumeração passiva de subdomínios, o que aumenta a probabilidade de encontrar um subdomínio e a viabilidade de testá-los por força bruta.
O alterx usa uma sintaxe semelhante à de variáveis dos nuclei-templates. É possível escrever seus próprios padrões usando essas variáveis. Quando domínios são passados como entrada, o alterx avalia a entrada e extrai variáveis dela.
{{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`
Em termos simples, um padrão pode ser considerado um template que descreve que tipo de padrões o alterx deve gerar.
// 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
Aqui está um exemplo de arquivo de configuração de padrões - https://github.com/projectdiscovery/alterx/blob/main/permutations.yaml que pode ser facilmente personalizado conforme a necessidade.
Este arquivo de configuração gera permutações de subdomínios para avaliações de segurança ou testes de penetração usando padrões personalizáveis e payloads dinâmicos. Os padrões incluem baseados em hífen, baseados em ponto e outros. Os usuários podem criar seções de payload personalizadas, como palavras, identificadores de região ou números, para atender às suas necessidades específicas.
Por exemplo, um usuário pode definir uma nova seção de payload env com valores como prod e dev e usá-la em padrões como {{env}}-{{word}}.{{suffix}} para gerar subdomínios como prod-app.example.com e dev-api.example.com. Essa flexibilidade permite listas de subdomínios sob medida para cenários de teste exclusivos e ambientes-alvo.
O arquivo de configuração de padrões padrão usado para geração é armazenado no diretório $HOME/.config/alterx/, e um arquivo de configuração personalizado também pode ser usado com a opção -ac.
Um exemplo da execução do alterx em uma lista existente de subdomínios passivos do tesla.com nos rendeu 10 subdomínios novos adicionais e válidos, resolvidos usando 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
Da mesma forma, a opção -enrich pode ser usada para popular os subdomínios conhecidos como entrada de palavras e gerar permutações cientes do alvo.
$ chaos -d tesla.com | alterx -enrich
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 662010 permutations in 3.9989s
Você pode alterar os padrões padrão em tempo de execução usando a opção de CLI -pattern.
$ chaos -d tesla.com | alterx -enrich -p '{{word}}-{{suffix}}'
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Generated 21523 permutations in 0.7984s
Também é possível sobrescrever valores de variáveis existentes usando a opção de 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 mais informações, confira o blog do lançamento - https://blog.projectdiscovery.io/introducing-alterx-simplifying-active-subdomain-enumeration-with-patterns/
Confira também os projetos open-source semelhantes abaixo que podem se encaixar no seu fluxo de trabalho:
altdns, goaltdns, gotator, ripgen, dnsgen, dmut, permdns, str-replace, dnscewl, regulator
alterx é feito com ❤️ pela equipe da projectdiscovery e distribuído sob a Licença MIT.
| Variável | 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 |
| Variável | 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}} | - | - | - |