
Быстрый и настраиваемый генератор списка поддоменов с использованием DSL
Возможности • Установка • Использование • Запуск AlterX • Присоединиться к Discord
Быстрый и настраиваемый генератор списка слов для поддоменов с использованием DSL.

Для установки alterx необходимо, чтобы в системе был установлен Golang 1.19. Вы можете скачать Golang здесь. После установки Golang используйте следующую команду для установки alterx:
go install github.com/projectdiscovery/alterx/cmd/alterx@latest
# Клонируйте репозиторий
git clone https://github.com/projectdiscovery/alterx.git
cd alterx
# Сборка с помощью Makefile
make build
# Или сборка вручную
go build ./cmd/alterx
Доступные цели Makefile:
make help # Показать все доступные цели
make build # Собрать бинарный файл
make test # Запустить тесты
make test-coverage # Запустить тесты с покрытием
make lint # Запустить линтер
make fmt # Форматировать код
make clean # Очистить артефакты сборки
make install # Установить в $GOPATH/bin
Вы можете использовать следующую команду, чтобы увидеть доступные флаги и опции:
Fast and customizable subdomain wordlist generator using DSL.
Usage:
./alterx [flags]
Flags:
INPUT:
-l, -list string[] поддомены для создания перестановок (stdin, через запятую, файл)
-p, -pattern string[] пользовательские шаблоны перестановок для генерации (через запятую, файл)
-pp, -payload value пользовательские шаблонные данные для замены/использования в формате key=value (-pp 'word=words.txt')
OUTPUT:
-es, -estimate оценить количество перестановок без генерации
-o, -output string выходной файл для записи изменённого списка поддоменов
-ms, -max-size int Максимальный размер экспортируемых данных (kb, mb, gb, tb) (по умолчанию mb)
-v, -verbose показывать подробный вывод
-silent показывать только результаты
-version показать версию alterx
CONFIG:
-config string конфигурационный файл alterx CLI (по умолчанию '$HOME/.config/alterx/config.yaml')
-en, -enrich обогатить список слов, извлекая слова из ввода
-ac string конфигурационный файл перестановок alterx (по умолчанию '$HOME/.config/alterx/permutation_v0.0.1.yaml')
-limit int ограничить количество возвращаемых результатов (по умолчанию 0)
UPDATE:
-up, -update обновить alterx до последней версии
-duc, -disable-update-check отключить автоматическую проверку обновлений alterx
alterx?Что отличает alterx от других инструментов перестановок поддоменов, таких как goaltdns, — это возможность «скриптования». alterx принимает шаблоны на вход и генерирует список слов для перестановок поддоменов на основе этого шаблона, аналогично тому, как nuclei работает с fuzzing-templates.
Что делает «активное перечисление поддоменов» сложным, так это вероятность найти домен, который действительно существует. Если представить возможные поддомены на шкале, это должно выглядеть примерно так:
Использование списка слов < создание перестановок с поддоменами (goaltdns) < alterx
Почти все популярные инструменты перестановок поддоменов имеют жёстко прописанные шаблоны, и при их запуске создаются списки слов, содержащие миллионы поддоменов, что снижает практическую возможность их перебора с помощью таких инструментов, как dnsx. Фактически не существует стандартного соглашения об именовании поддоменов, и обычно это зависит от человека, регистрирующего поддомен. С помощью alterx можно создавать шаблоны на основе результатов «пассивного перечисления поддоменов», что увеличивает вероятность нахождения поддомена и возможность их перебора.
alterx использует синтаксис, похожий на переменные в шаблонах nuclei. Можно писать собственные шаблоны, используя эти переменные. Когда домены передаются на вход, alterx оценивает входные данные и извлекает из них переменные.
{{sub}} : префикс поддомена или крайняя левая часть поддомена
{{suffix}} : всё, кроме {{sub}} в имени поддомена — это суффикс
{{tld}} : домен верхнего уровня (например, com, uk, in и т.д.)
{{etld}} : также известный как публичный суффикс (например, co.uk, gov.in и т.д.)
{{sld}} : домен второго уровня (например, для api.scanme.sh {{sld}} — это scanme)
{{root}} : также известен как eTLD+1, т.е. только корневой домен (например, для api.scanme.sh {{root}} — это scanme.sh)
{{subN}} : здесь N — целое число (например, {{sub1}}, {{sub2}} и т.д.)
// {{subN}} — продвинутая переменная, которая существует в зависимости от ввода
// предположим, есть многоуровневый домен cloud.nuclei.scanme.sh
// в этом случае {{sub}} = cloud, а {{sub1}} = nuclei
Шаблон в простых терминах можно рассматривать как «шаблон», описывающий, какие типы шаблонов должен генерировать alterx.
// Ниже приведены некоторые примеры шаблонов, которые можно использовать для генерации перестановок
// Предположим, что на вход был подан api.scanme.sh, а переменная {{word}} имела только одно значение prod
// alterx генерирует поддомены для следующих шаблонов
"{{sub}}-{{word}}.{{suffix}}" // например: api-prod.scanme.sh
"{{word}}-{{sub}}.{{suffix}}" // например: prod-api.scanme.sh
"{{word}}.{{sub}}.{{suffix}}" // например: prod.api.scanme.sh
"{{sub}}.{{word}}.{{suffix}}" // например: api.prod.scanme.sh
Вот пример конфигурационного файла шаблонов — https://github.com/projectdiscovery/alterx/blob/main/permutations.yaml, который можно легко настроить по мере необходимости.
Этот конфигурационный файл генерирует перестановки поддоменов для оценки безопасности или пентестов, используя настраиваемые шаблоны и динамические нагрузки. Шаблоны включают дефисные, точечные и другие. Пользователи могут создавать собственные разделы нагрузок, такие как слова, идентификаторы регионов или числа, чтобы соответствовать их конкретным потребностям.
Например, пользователь может определить новый раздел нагрузок env со значениями prod и dev, а затем использовать его в шаблонах типа {{env}}-{{word}}.{{suffix}} для генерации поддоменов, таких как prod-app.example.com и dev-api.example.com. Эта гибкость позволяет создавать адаптированные списки поддоменов для уникальных сценариев тестирования и целевых сред.
Файл конфигурации шаблонов по умолчанию, используемый для генерации, хранится в каталоге $HOME/.config/alterx/, а пользовательский файл конфигурации также можно использовать с помощью опции -ac.
Пример запуска alterx на существующем списке пассивных поддоменов tesla.com дал нам 10 дополнительных НОВЫХ и валидных поддоменов, разрешённых с помощью dnsx.
$ chaos -d tesla.com | alterx | dnsx
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Сгенерировано 8312 перестановок за 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
Аналогично, опция -enrich может быть использована для заполнения известных поддоменов в качестве входного мира для генерации целевых перестановок.
$ chaos -d tesla.com | alterx -enrich
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Сгенерировано 662010 перестановок за 3.9989s
Вы можете изменить шаблоны по умолчанию во время выполнения с помощью опции CLI -pattern.
$ chaos -d tesla.com | alterx -enrich -p '{{word}}-{{suffix}}'
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Сгенерировано 21523 перестановок за 0.7984s
Также можно переопределить значения существующих переменных с помощью опции CLI -payload.
$ alterx -list tesla.txt -enrich -p '{{word}}-{{year}}.{{suffix}}' -pp word=keywords.txt -pp year=2023
___ ____ _ __
/ _ | / / /____ ____| |/_/
/ __ |/ / __/ -_) __/> <
/_/ |_/_/\__/\__/_/ /_/|_|
projectdiscovery.io
[INF] Сгенерировано 21419 перестановок за 1.1699s
Для получения дополнительной информации, пожалуйста, ознакомьтесь с релизным постом в блоге — https://blog.projectdiscovery.io/introducing-alterx-simplifying-active-subdomain-enumeration-with-patterns/
Также обратите внимание на следующие аналогичные проекты с открытым исходным кодом, которые могут вписаться в ваш рабочий процесс:
altdns, goaltdns, gotator, ripgen, dnsgen, dmut, permdns, str-replace, dnscewl, regulator
alterx сделан с ❤️ командой projectdiscovery и распространяется под лицензией MIT License.
| Переменная | 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 |
| Переменная | 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}} | - | - | - |