Amass
Описание Amass
Amass — это инструмент глубокого перечисления DNS и составления карты сети, написан на Go.
Проект OWASP Amass был создан при выполнении задачи показать, как организации выглядят в Интернете для стороннего исследования. Используемые для этого инструменты возвращали неполные результаты по сравнению с тем, что можно было бы получить вручную. Выявление этой прорехи в возможностях для экспертов по безопасности привили к рождению проекта Amass.
Программа OWASP Amass сфокусирована на техниках перечисления DNS и построения карты сетевой инфраструктуры. Эти техники включают: получения имён субдоменов анализируя веб-страницы, доступом к веб API, рекурсивным брут-форсом, обходом веб-архивов, пермутацией/изменением имён, обратным DNS преобразованием (everse DNS sweeping), отправка запросов к ASN и анализ IP адресов, ассоциированным с сетевыми блоками. Собранная во время перечисления информация используется для построения карты присутствия организации в Интернете.
Amass задействует более 30 пассивных источников данных для изучения о пространстве имён DNS целевого домена. По умолчанию Amass валидирует (проверяет на действительность) все имена, выполняя DNS запросы по пулу DNS преобразователей, что позволяет распределить активность, сгенерированную перечислением. Для всех IP адресов, собранных во время этого процесса, Amass делает запросы на ассоциированные сетевые блоки и ASN. По мере того, как становятся доступными дополнительные источники данных для информации об Интернет видимости, внутри Amass могут быть быстро разработаны реализации для их использования благодаря дизайну программы, основанному на простых интерфейсах.
Когда перечисление завершено, набор инструментов Amass способен конвертировать результаты в несколько различных форматах, принимаемых популярными движками визуализации структуры сети. Это помогает аналитикам и экспертам по информационной безопасности быстро идентифицировать структуру сети и внешние сети, используемые целевой организацией.
Если пользователи хотят поддерживать информацию, собранную программным обеспечением Amass, интерфейсы обработки данных взаимодействуют с системами хранения, такими как Neo4j. Дополнительные обработчики могут быть легко реализованы для поддержки других баз данных или даже пользовательских решений.
В проекте имеется программное обеспечение, которое может быть встроено в другие программы, оно написано на языке программирования Go. Это программное обеспечение включает в себя инструменты командной строки, локальную трансформацию для Maltego и пакет Go, который можно импортировать в другие проекты программного обеспечения. Программное обеспечение переносится в популярные операционные системы, такие как Windows, Linux, MacOS, FreeBSD и т. д. Инструменты командной строки могут быть получены с помощью нескольких механизмов, описанных на странице установки, например, через среду разработки Go, Snap-менеджер пакетов для Linux-систем.
Начиная с версии 2.6.x функциональность монолитного инструмента amass стала разбиваться на более маленькие инструменты.
«Сетевая» функциональность из Amass была перемещена в инструмент amass.netdomains, который перечисляет сертификаты и выполняет обратные DNS запросы, ища уникальные доменные имена. Эти доменные имена затем могут быть предоставлены в инструмент перечисления субдоменов amass.
Также создание файлов визуализации было перемещено в инструмент amass.viz. Операции с данными, используемые для построения графов, отображающих структуру внутренней сети, выполняются и сохраняются инструментом перечисления субдоменов amass, а затем предоставляются в качестве ввода в инструмент визуализации, чтобы сгенерировать различные файловые форматы.
Домашняя страница: https://www.owasp.org/index.php/OWASP_Amass_Project
Автор: Jeff Foley
Лицензия: Apache 2.0
Справка по Amass
Инструмент amass имеет несколько подкоманд которые показаны ниже и которые будут обрабатывать данные в вашем Интернет исследовании.
Подкоманда | Описание |
---|---|
intel | Выполняет разведку по открытым источником для исследования целевой организации |
enum | Выполняет DNS перечисление и составление карты сети систем, доступных через Интернет |
viz | Генерирует визуальные представления собранных данных для исследования и анализа |
track | Сравнение результатов перечисления по нескольким целевым организациям |
db | Управление базой данных графов, хранящей полученные результаты |
Каждая подкоманда имеет свои собственные аргументы, описанные ниже в соответствующих разделах.
Подкоманда 'intel'
Подкоманда intel может помочь обнаружить дополнительные имена корневых доменов, связанных с исследуемой организацией. Для выполнения пассивной разведки используется раздел source конфигурационного файла, собирается информация методами обратных (reverse) запросов, whois и т.д.
Флаг | Описание | Пример |
---|---|---|
-active | Включить активные методы разведки | amass enum -active -d example.com net -p 80,443,8080 |
-addr | IP и диапазоны (192.168.1.1-254) разделённые запятыми | amass intel -addr 192.168.2.1-64 |
-asn | ASN разделённые запятыми (можно использовать несколько раз) | amass intel -asn 13374,14618 |
-cidr | CIDR разделённые запятыми (можно использовать несколько раз) | amass intel -cidr 104.154.0.0/15 |
-config | Путь до конфигурационного файла INI | amass enum -config config.ini |
-d | Доменные имена разделённые запятыми (можно использовать несколько раз) | amass enum -d example.com |
-demo | Цензурированный вывод, это делает его пригодным для демонстраций | amass enum -demo -d example.com |
-df | Путь до файла, в котором имена корневых доменов | amass enum -df domains.txt |
-ef | Путь до файла, в котором данные источника для исключения | amass enum -ef exclude.txt -d example.com |
-exclude | Имена разделённые запятой для исключения из исходных данных | amass enum -exclude crtsh -d example.com |
-if | Путь до файла, в котором исходные данные для включения | amass enum -if include.txt -d example.com |
-include | Именна разделённые запятой для включения в исходные данные | amass enum -include crtsh -d example.com |
-ip | Показать IP адреса для обнаруженных имён | amass enum -ip -d example.com |
-ipv4 | Показать IPv4 адреса для обнаруженных имён | amass enum -ipv4 -d example.com |
-ipv6 | Показать IPv6 адреса для обнаруженных имён | amass enum -ipv6 -d example.com |
-list | Напечатать имена всех доступных источников данных | amass enum -list |
-log | Путь до лог файла, куда будут записаны ошибки | amass enum -log amass.log -d example.com |
-max-dns-queries | Максимальное количество одновременных DNS запросов | amass enum -max-dns-queries 200 -d example.com |
-o | Путь до файла вывода | amass enum -o out.txt -d example.com |
-org | Строка поиска по информации описания AS | amass intel -org Facebook |
-p | Порты, разделённые запятыми (по умолчанию: 443) | amass intel -cidr 104.154.0.0/15 -p 443,8080 |
-r | IP адреса предпочитаемых DNS преобразователей (можно использовать несколько раз) | amass enum -r 8.8.8.8,1.1.1.1 -d example.com |
-rf | Путь до файла, в котором предпочитаемые DNS преобразователи | amass enum -rf data/resolvers.txt -d example.com |
-src | Вывести все источники для обнаруженных имён | amass enum -src -d example.com |
-whois | Все обнаруженные домены пропускаются через обратный whois | amass intel -whois -asn 13374 |
Подкоманда 'enum'
Эта подкоманда выполнит DNS перечисление и составление карты сети при этом заполняя базу данных графов. Все настройки, доступные в конфигурационном файле, имеют отношение к этой подкоманде. Для настройки имеются следующие флаги:
Флаг | Описание | Пример |
---|---|---|
-active | Включить активные методы разведки | amass enum -active -d example.com net -p 80,443,8080 |
-aw | Путь до файла с другим списком слов для создание вариантов | amass enum -aw PATH -d example.com |
-bl | Чёрный список имён субдоменов, которые не будут исследоваться | amass enum -bl blah.example.com -d example.com |
-blf | Путь до файла с чёрным списком субдоменов | amass enum -blf data/blacklist.txt -d example.com |
-brute | Выполнить перебор доменов методом брутфорса (перечислением всех вариантов) | amass enum -brute -d example.com |
-config | Путь до конфигурационного файла INI | amass enum -config config.ini |
-d | Доменные имена, разделённые запятыми (можно использовать несколько раз) | amass enum -d example.com |
-demo | Цензурированный вывод, это делает его пригодным для демонстраций | amass enum -demo -d example.com |
-df | Путь до файла, в котором имена корневых доменов | amass enum -df domains.txt |
-do | Путь до файла вывода данных операции | amass enum -do data.json -d example.com |
-ef | Путь до файла, в котором данные источника для исключения | amass enum -ef exclude.txt -d example.com |
-exclude | Имена разделённые запятой для исключения из исходных данных | amass enum -exclude crtsh -d example.com |
-if | Путь до файла, в котором исходные данные для включения | amass enum -if include.txt -d example.com |
-include | Именна разделённые запятой для включения в исходные данные | amass enum -include crtsh -d example.com |
-include-unresolvable | Вывод DNS имён, которые не были преобразованы | amass enum -include-unresolvable -d example.com |
-ip | Показать IP адреса для обнаруженных имён | amass enum -ip -d example.com |
-ipv4 | Показать IPv4 адреса для обнаруженных имён | amass enum -ipv4 -d example.com |
-ipv6 | Показать IPv6 адреса для обнаруженных имён | amass enum -ipv6 -d example.com |
-json | Путь до файла вывода в формате JSON | amass enum -json out.json -d example.com |
-list | Напечатать имена всех доступных источников данных | amass enum -list |
-log | Путь до лог файла, куда будут записаны ошибки | amass enum -log amass.log -d example.com |
-max-dns-queries | Максимальное количество одновременных DNS запросов | amass enum -max-dns-queries 200 -d example.com |
-min-for-recursive | Количество меток в поддомене перед рекурсивным перебором | amass enum -brute -min-for-recursive 3 -d example.com |
-nf | Путь до файла, содержащего уже известные доменные имена | amass enum -nf names.txt -d example.com |
-noalts | Отключить генерацию альтернативных имён | amass enum -noalts -d example.com |
-norecursive | Отключить рекурсивный брут-форсинг | amass enum -brute -norecursive -d example.com |
-o | Путь до файла вывода в виде простого текста | amass enum -o out.txt -d example.com |
-oA | Префикс пути, используемый в имени всех файлов вывода | amass enum -oA amass_scan -d example.com |
-passive | Исключительно пассивный режим выполнения | amass enum --passive -d example.com |
-p | Порты, разделённые запятыми (по умолчанию: 443) | amass intel -cidr 104.154.0.0/15 -p 443,8080 |
-r | IP адреса предпочитаемых DNS преобразователей (можно использовать несколько раз) | amass enum -r 8.8.8.8,1.1.1.1 -d example.com |
-rf | Путь до файла, в котором предпочитаемые DNS преобразователи | amass enum -rf data/resolvers.txt -d example.com |
-src | Вывести все источники для обнаруженных имён | amass enum -src -d example.com |
-w | Путь до другого файла со списком слов | amass enum -brute -w wordlist.txt -d example.com |
Подкоманда 'viz'
Создайте информативные визуализации сетевых графов, которые помогут уяснить структуру собранной информации. Эта подкоманда из файла конфигурации использует только параметры 'output_directory' и настройки удалённой базы данных графов.
Переключатели для вывода результатов DNS и находок в инфраструктуры в виде графа сети:
Флаг | Описание | Пример |
---|---|---|
-config | Путь до конфигурационного файла INI | amass viz -config config.ini -d3 -o PATH |
-d | Доменные имена, разделённые запятыми (можно использовать несколько раз) | amass viz -d3 -d example.com -o PATH |
-d3 | Принудительный вывод симуляции в формате D3.js v4 в HTML файл | amass viz -d3 -o PATH |
-df | Путь до файла, в котором имена корневых доменов | amass viz -d3 -df domains.txt -o PATH |
-dir | Путь до директории, содержащей базу данных графа | amass viz -d3 -dir PATH -o PATH |
-enum | Идентификация перечисленного через индекс из листинга БД | amass viz -enum 1 -d3 -o PATH |
-gexf | Вывод в формат Graph Exchange XML (GEXF) | amass viz -gephi -o PATH |
-graphistry | Вывод Graphistry JSON | amass viz -graphistry -o PATH |
-i | Путь до файла вывода JSON с результатами работы Amass | amass viz -d3 -o PATH |
-maltego | Вывод в файл Maltego Graph Table CSV | amass viz -maltego -o PATH |
-o | Путь до директории куда поместить сгенерированный файл(ы) вывода | amass viz -d3 -o PATH |
-visjs | Вывод HTML который использует VisJS | amass viz -visjs -o PATH |
Подкоманда 'track'
Показывает различия между перечислениями,
Показывает различия между перечислениями, которые включает одинаковую цель (или цели) для мониторинга поверхности атаки цели. Эта субкоманда из конфигурационного файла использует только 'output_directory' и настройки удалённой базы данных графов. Доступные флаги во время поиска изменений в видимости цели в Интернете путём перечисления в базе данных графов:
Флаг | Описание | Пример |
---|---|---|
-config | Путь до конфигурационного файла INI | amass track -config config.ini |
-d | Доменные имена, разделённые запятыми (можно использовать несколько раз) | amass track -d example.com |
-df | Путь до файла, в котором имена корневых доменов | amass track -df domains.txt |
-dir | Путь до директории, содержащей базу данных графов | amass track -dir PATH |
-history | Показывает различия между всеми перечисленными парами | amass track -history |
-last | Число недавних перечислений для включения в отслеживание | amass track -last NUM |
-since | Исключить все перечисления до определённой даты (формат: 01/02 15:04:05 2006 MST) | amass track -since DATE |
Подкоманда 'db'
Выполняет просмотр и управление базой данных графов. Эта субкоманда из конфигурационного файла использует только 'output_directory' и настройки удалённой базы данных графов. Флаги для взаимодействия с найденными результатами в базе данных графов включают:
Флаг | Описание | Пример |
---|---|---|
-config | Путь до конфигурационного файла INI | amass db -config config.ini |
-d | Доменные имена, разделённые запятыми (можно использовать несколько раз) | amass db -d example.com |
-demo | Цензурированный вывод, это делает его пригодным для демонстраций | amass db -demo -d example.com |
-df | Путь до файла, в котором имена корневых доменов | amass db -df domains.txt |
-dir | Путь до директории, содержащей базу данных графов | amass db -dir PATH |
-enum | Идентификация перечисленного через индекс из листинга БД | amass db -enum 1 -show |
-import | Импорт файла JSON с результатами работы Amass в базу данных графов | amass db -import PATH |
-ip | Показать IP адреса для обнаруженных имён | amass db -show -ip -d example.com |
-ipv4 | Показать IPv4 адреса для обнаруженных имён | amass db -show -ipv4 -d example.com |
-ipv6 | Показать IPv6 адреса для обнаруженных имён | amass db -show -ipv6 -d example.com |
-list | Вывести всё находки из баз данных и отфильтровать по указанному домену | amass db -list |
-show | Напечатать результаты индекса перечисления + домены | amass db -show |
-src | Вывести все источники для обнаруженных имён | amass db -show -src -d example.com |
Директория вывода
Amass сохраняет результаты в несколько файлов вывода во время поиска субдоменов (например, в лог файл). Если вы не используете сервер базы данных для хранения информации о сетевых графов, то Amass создаёт базу данных в директории вывода. Эти файлы используются снова во время последующих перечислений, а также для таких функций как отслеживание изменений и визуализации.
По умолчанию директория вывода создаётся в вашей домашней директории и называется amass. Если это вам не подходит, тогда можно проинструктировать субкоманды создать директорию вывода в альтернативном расположении, для этого используется флаг '-dir'.
Если вы решили использовать конфигурационный файл Amass, то он будет обнаружен автоматически, если его положить в директорию вывода и назвать config.ini.
Руководство по Amass
Страница man отсутствует.
Файл
Для использования с Amass ключей API вам будет нужен конфигурационный файл. Для дополнительных подробностей смотрите пример конфигурационного файла.
Раздел с настройками по умолчанию (Default)
Опция | Описание |
---|---|
mode | Определяет, какой режим перечисления используется: default (по умолчанию), passive (пассивный) или active (активный) |
output_directory | Директория, которая хранит базу данных графов и другие файлы вывода |
maximum_dns_queries | Максимальное число выполняемых одновременных DNS запросов |
include_unresolvable | Когда установлено на true, приводит к тому, что DNS имена, которые не были преобразованы, печатаются |
Раздел network_settings (сетевые настройки)
Опция | Описание |
---|---|
address | IP или диапазон (к примеру. a.b.c.10-245) которые находятся в области видимости |
asn | ASN который в области видимости |
cidr | CIDR (к примеру, 192.168.1.0/24) в области видимости |
port | Указывает порт, который будет использоваться при активном извлечении сертификатов TLS |
Раздел domains (домены)
Опция | Описание |
---|---|
domain | Корневое доменное имя DNS для добавления в область видимости перечисления |
Раздел resolvers (преобразователи)
Опция | Описание |
---|---|
resolver | IP адрес DNS преобразователя и глобально используемого пакетом amass |
Раздел blacklisted (чёрные списки)
Опция | Описание |
---|---|
subdomain | Субдоменное имя DNS которое во время перечисления будет расцениваться как за пределами области видимости |
Раздел disabled_data_sources (отключённые источники данных)
Опция | Описание |
---|---|
data_source | Один из источников данных Amass который не используется во время перечисления |
Раздел gremlin
Опция | Описание |
---|---|
url | URL в форме "ws://host:port" куда Amass подключится к базе данных TinkerPop |
username | Пользователь базы данных сервера TinkerPop который может иметь доступ к базе данных графов Amass |
password | Действительный пароль для пользователя, идентифицируемого опцией 'username' |
Раздел bruteforce (полный перебор)
Опция | Описание |
---|---|
enabled | Когда установлено на true, во время перечисления делается брут-форсинг (полный перебор) |
recursive | Когда установлено на true, полный перебор выполняется также на найденных субдоменах |
minimum_for_recursive | Число сделанных обнаружений на субдомене перед выполнением рекурсивного брут-форсинга |
wordlist_file | Путь до пользовательского файла словаря для использования во время брут-форсинга |
Раздел alterations (создание новых субдоменов путём модификаций)
Опция | Описание |
---|---|
enabled | Когда установлено на true, во время перечисления выполняется пермутация преобразованных DNS имён |
minimum_for_word_flip | Число раз, которое слово должно встретиться, чтобы использовать его в будущих преобразованиях и добавлениях слов |
edit_distance | Число раз, которое будет выполнена операция редактирования образца имени во время поиска фазингом ярлыков |
flip_words | Когда установлена на true, приводит к тому, что слова в именах DNS обмениваются на другие из списка слов для модификации |
flip_numbers | Когда установлена на true, приводит к тому, что числа в именах DNS меняются на другие числа |
add_words | Когда установлена на true, приводит к тому, что другие слова из списка слов для модификации добавляются к преобразованным именам DNS |
add_numbers | Когда установлена на true, приводит к тому, что числа добавляются и удаляются из преобразованных DNS имён |
wordlist_file | Путь до файла с пользовательским набором слов, который предоставляет дополнительные слова в список слов для модификации |
Разделы Data Source (источники данных)
Каждая служба источника данных Amass имеет выделенный раздел в конфигурационном файле. Здесь говориться о том, как настроить источники данных, которые требуют аутентификации.
Опция | Описание |
---|---|
apikey | Ключ API для использования во время доступа к источнику данных |
secret | Дополнительная секретная строка для использования с API ключом |
username | Пользователь аккаунта источника данных |
password | Действительный пароль для пользователя, указанного опцией 'username' |
База данных графов
Все результаты перечисления Amass хранятся в базе данных графов. Эта база данных либо находится в одном файле в каталоге вывода, либо удалённо подключена с использованием настроек, предоставленных файлом конфигурации.
Когда начинается новое перечисление и база данных графа уже существует с предыдущими результатами для той же цели, имена поддоменов из этих предыдущих перечислений используются в новом перечислении. Новые DNS-запросы выполняются к этим именам поддоменов, чтобы гарантировать их легитимность и получить текущие IP-адреса.
Результаты каждого перечисления хранятся отдельно в базе данных графов, что позволяет подкоманде отслеживания искать различия между перечислениями и предоставлять пользователю основные сведения о цели.
Ничто не мешает нескольким пользователям совместно использовать одну (удалённую) графовую базу данных и использовать результаты друг друга в перечислениях.
Примеры запуска Amass
Самое базовое использование инструмента, которое включает обратные DNS поиски и альтерацию имён для поиска субдоменов:
amass enum -d example.com
В следующем примере для исследуемого домена (-d example.com) будет выполнен поиск субдоменов, для найденных субдоменов будет показан IP адрес (-ip), для каждой находки будет показан источник, а также в конце будет выведена обобщающая информация (-v), количество требуемых обнаруженных субдоменов, после которого запускается рекурсивный брут-форсинг установлено на 3 ( -min-for-recursive 3):
amass enum -v -ip -brute -min-for-recursive 3 -d example.com [Google] www.example.com [VirusTotal] ns.example.com ... 13139 names discovered - archive: 171, cert: 2671, scrape: 6290, brute: 991, dns: 250, alt: 2766
Одновременный поиск по нескольким доменом (опцию -d можно использовать многократно, при каждой опции можно указать несколько доменов через запятую):
amass enum -d example1.com,example2.com -d example3.com
Установка Amass
Установка в Kali Linux
Автор предлагает несколько вариантов установки, в том числе имеются уже собранные пакеты. Но эти пакеты по какой-то причине собираются не для каждого вышедшего релиза. Поэтому самым простым способом получить последнюю версию является сборка из исходного кода. Программа написана на Go и для её сборки нужен компилятор Go. Как его получить с помощью нескольких команд смотрите в заметке «Установка Go (компилятора и инструментов) в Linux».
После того, как установлен компилятор Go, выполните следующи команды:
go get -u github.com/OWASP/Amass/... cd $GOPATH/src/github.com/OWASP/Amass go install ./... sudo mv $GOPATH/bin/amass* /usr/bin/ sudo mkdir -p /usr/share/amass/wordlists/ sudo mv $GOPATH/src/github.com/OWASP/Amass/wordlists/* /usr/share/amass/wordlists/
Словари будут находиться в папке /usr/share/amass/wordlists/.
Установка в BlackArch
Программа предустановлена в BlackArch.
sudo pacman -S amass
Информация об установке в другие операционные системы будет добавлена позже.
Скриншоты Amass
Инструкции по Amass
- Поиск субдоменов с Amass 3.x [в процессе подготовки]
- Поиск субдоменов и построение графов структуры сети с Amass
- Поиск субдоменов онлайн с Amass
- Поиск субдоменов онлайн с SubFinder
Comments are Closed