Перейти к содержанию полного руководства пользователя ZMap на русском языке.

Дополнительная информация по сканеру ZMap

При выполнении сканирования TCP SYN ZMap требуется один целевой порт и поддержка диапазона исходных портов, из которых сканирование берет начало.

-p, --target-port=port  – TCP номер порта для сканирования (например, 443).

-s, --source-port=port|range – исходный порт (порты) для пакетов сканирования (например, 40000-50000).

ZMap опирается на ядро Linux, чтобы поддерживать SYN/ACK пакеты и закрыть открытые соединения с помощью сканера. ZMap посылает пакеты на уровне протокола Ethernet, чтобы защитить ядро от отслеживания открытых соединений TCP и выполнения маршрута поиска.

Поэтому, если на вашем брандмауэре установленные соединения отслеживаются как -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT, это приведет к блокировке SYN / ACK-пакетов.

Это не помешает ZMap записывать ответы, но будет препятствовать обратной отправке RST пакетов, в конечном итоге использование сканированного хоста будет продолжаться до окончания соединения.

Мы настоятельно рекомендуем вам выбрать диапазон неиспользованных портов на сканированном хосте, который может быть допущен вашим брандмауэром. При работе ZMap он будет идентифицирован с помощью флага -s (например, -s '50000-60000').

ICMP эхо-сканирование

В то время как TCP SYN сканирование выполняется по умолчанию, ZMap также поддерживает эхо-сканирование ICMP, в котором ICMP пакеты отправляются в каждый из хостов, а тип ICMP протокола, полученного в ответ, является обозначенным.

ICMP сканирование можно выполнить путем выбора icmp_echoscan модуля, который является аналогичным следующему:

UDP Datagram сканирование

Сканер ZMap дополнительно поддерживает UDP-зонды, где он посылает произвольную UDP дейтаграмму для каждого хоста и получает UDP или ICMP ответы.

ZMap поддерживает четыре различных способа установки полезной UDP нагрузки с помощью опции командной строки. Это ‘text’ для ASCII-печати полезных нагрузок, ‘hex’ для шестнадцатеричных полезных нагрузок, установленных в командной строке, ‘file’ для полезных нагрузок, содержащихся во внешнем файле, и ‘template’ для полезных нагрузок, требующих генерации динамического поля. Для того, чтобы получить ответ UDP, убедитесь, что вы указываете ‘data’ в качестве одного из отчетных полей с помощью опции -f.

В приведенном ниже примере отправлено два байта ‘ST’ на UDP порт 5632:

В приведенном ниже примере отправлено байт ‘0x02’, запрос SQL ‘client broadcast’ на UDP порт 1434:

В приведенном ниже примере отправлено NetBIOS запрос на UDP порт 137. При этом используется файл полезной нагрузки, который включен в ZMap рассылку:

В приведенном ниже примере отправлено запрос SIP ‘OPTIONS ‘ на UDP порт 5060. При этом используется файл шаблона, который входит в дистрибутив ZMap:

UDP шаблоны полезной нагрузки все еще имеют экспериментальный характер. Вы можете столкнуться со сбоями при использовании более одного отправленного запроса (-T) и значительным снижением производительности по сравнению со статически полезной нагрузкой.

Шаблон – это просто файл полезной нагрузки, в котором содержится один или несколько полей, оформленных в ${} ряд. Некоторые протоколы, в частности, SIP, требуют полезной нагрузки для отражения источника и назначения пакета. Другие протоколы, такие как portmapper и DNS, содержат поля, должны быть рандомизированы, согласно с запросом, или могут быть разбиты многодомными системами, которые сканирует ZMap.

Шаблон полезной нагрузки отправляет запрос SIP OPTIONS для каждого пункта назначения:

В приведенном примере обратите внимание, что линия окончаний \r\n и окончание этого запроса должны содержать \r\n\r\n, чтобы SIP реализации были корректно обработаны.

Представленные шаблонные поля уже выполнены:

  • SADDR: исходный IP-адрес в четырехзначном формате;
  • SADDR_N: IP-адрес источника в сетевом порядке байтов;
  • DADDR: IP-адрес назначения в четырёхзначном формате;
  • DADDR_N: IP-адрес назначения в сетевом порядке байт;
  • SPORT: порт источника в формате ASCII;
  • SPORT_N: исходный порт в сетевом порядке байт;
  • DPORT: порт назначения в формате ASCII;
  • DPORT_N: порт назначения в сетевом порядке байтов;
  • RAND_BYTE: случайный байт (0-255), длина обозначается с помощью параметра =(length);
  • RAND_DIGIT: случайные цифры от 0 до 9, длина обозначается через параметр =(length);
  • RAND_ALPHA: случайные буквы A-Z, длина указывается с помощью параметра =(length);
  • RAND_ALPHANUM: случайные буквы A-Z и цифры 0-9, длина обозначается с помощью =(length).

Файлы конфигурации

ZMap поддерживает файлы конфигурации вместо того, чтобы требовать все опции в командной строке. Конфигурация может быть создана путем определения одной опции и значением в каждой строке, например:

Сканер ZMap может быть запущен с помощью файла конфигурации и добавлением необходимых параметров:

Verbosity

Существует несколько типов вывода на экран, которые производит ZMap. По умолчанию сканер выведет основную информацию о ходе работы раз в 1 секунду. Эту функцию можно отключить путем установки флага --quiet.

ZMap также выводит информационные сообщения во время конфигурации сканера, которыми можно управлять с помощью аргумента --verbosity.

ZMap также поддерживает вывод на печать резюме в конце сканирования, которое может быть вызвано с помощью флага —summary.

Вывод результатов

ZMap может давать результаты в нескольких форматах за счет использования модулей вывода. По умолчанию ZMap поддерживает только вывод csv, однако поддержка redis и json также может быть скомпилирована. Результаты, которые отправляются на эти выходные модули, могут быть отфильтрованы с помощью выходного фильтра. Поля выходного модуля задаются пользователем.

По умолчанию ZMap будет возвращать результаты в формате csv, однако, если не указан выходной файл, ZMap не даст конкретных результатов. Также есть возможность написать собственный модуль – чтобы узнать детали, смотрите «Написание выходных модулей».

  • -o, --output-file=p  – файл для записи выхода;
  • -O, --output-module=p  – вызов пользовательского модуля вывода;
  • -f, --output-fields=p  – поля для вывода, разделенные запятой;
  • --output-filter=filter  – укажите выходной фильтр на поля для данного зонда;
  • --list-output-modules  – список доступных выходных модулей;
  • --list-output-fields  – список доступных выходных полей для данного зонда.

Выходные поля

ZMap имеет множество полей, которые он может выводить за пределы IP-адреса. Эти поля можно рассматривать для данного модуля зонда с помощью флага --list-output-fields.

Чтобы выбрать поля для вывода, можно использовать любую комбинацию выходных полей, разделенных запятыми, в виде списка. Для этого используется флаг --output-fields=fields
или -f. Например:

Фильтрация выхода

Результаты, полученные с помощью модуля зонда, могут быть отфильтрованы перед передачей в модуль вывода. Фильтры устанавливаются над выходными полями исследовательского модуля. Они написаны на простом языке фильтрации, как, например, SQL, и передаются ZMap с помощью опции --output-filter . Выходные фильтры обычно используются, чтобы отфильтровать повторяющиеся результаты, или чтобы передать успешные ответы на выходной модуль.

Фильтры представлены в форме <fieldname> <operation> <value>. Тип <value> должен быть строкой или целым числом и соответствовать типу <fieldname>.

Действующие операции для целых сравнений: = !=, <, >, <=, >=. Операции для сравнения строк: =, !=. Флаг --list-output-fields напечатает, какие поля и типы доступны для выбранного модуля, а после этого выйдет.

Соединение фильтров может быть создано с помощью объединения выражений фильтра с помощью круглых скобок, чтобы указать порядок операций, &&  (логическое И) и ||  (логическое ИЛИ).

Пример:

Написать фильтр для исключительно успешных, неповторяющихся ответов.

Фильтр для пакетов, которые имеют классификации RST и TTL больше чем 10, или для пакетов с классификацией SYNACK.

CSV

Модуль CSV будет производить файл запрашиваемых выходных полей. Например, следующая команда производит CSV в файле под именем output.csv.

Модуль Redis

Выходной модуль Redis добавляет адреса в очередь, вместо того, чтобы сохранить в файл, который, в конечном счете, позволяет ZMap использовать инструменты постобработки.

ZMap не использует поддержку модуля Redis по умолчанию. При запуске ZMap вы можете активировать модуль Redis, запустив CMake -DWITH_REDIS=ON

JSON

Выходной модуль в формате JSON работает аналогично модулю CSV, за исключением того, что записывает выходные данные в формате JSON в файл. Файл в формате JSON можно легко импортировать в другие программы , которые могут читать JSON .

ZMap не использует поддержку модуля JSON по умолчанию. При запуске ZMap вы можете активировать модуль JSON, запустив CMake -DWITH_JSON=ON.

Черный список и белый список

ZMap поддерживает сетевые префиксы Blacklisting и Whitelisting. Если ZMap не снабжен черным или белым списком параметров, он будет сканировать все адреса IPv4 (в том числе локальные, зарезервированные и групповые адреса). Если указан черный список файлов, сетевые префиксы в черном списке не будут проверяться; если указан белый список файлов, только сетевые префиксы, которые состоят в нем, будут сканироваться.

Файлы белого и черного списков могут быть использованы в согласовании; черный список имеет приоритет над белым списком (например, если у вас есть белый список 10.0.0.0/8 и черный 10.1.0.0/16, последний сканироваться не будет).

Файлы в белом и черном списках могут быть указаны в командной строке следующим образом:

-b, --blacklist-file=path  – файл подсетей черного списка в CIDR нотации, например 192.168.0.0/16.

w, --whitelist-file=path  – файл подсетей для ограничения сканирования в CIDR нотации, например, 192.168.0.0/16.

Чёрный список файлов должен быть отформатирован с одним сетевым префиксом в CIDR нотации в каждой строке. Комментарии разрешены с помощью символа #. Например:

Если вы хотите сканировать только случайную часть интернета, примените выбор, вместо того, чтобы использовать белый список и черный список.

Конфигурация ZMap по умолчанию использует файл черного списка /etc/zmap/blacklist.conf, который содержит локальные адреса и IP диапазон. Конфигурация по умолчанию может быть изменена путем редактирования /etc/zmap/zmap.conf.

Ограничение и выбор скорости

По умолчанию ZMap будет сканировать с максимально возможной скоростью, которую обеспечивает сетевой адаптер. На аппаратном обеспечении, это, как правило, около 95-98% от теоретической скорости Ethernet. ZMap не будет автоматически корректировать скорость отправки, установленную вышестоящим провайдером. Вам, возможно, придется выполнить ручные настройки, чтобы уменьшить скорость пакетной передачи.

-r, --rate=pps  – установить максимальную скорость отправки пакетов / сек.

-B, --bandwidth=bps  – настроить скорость в битах / сек (поддерживает суффиксы G, M и K). Чтобы отменить, используйте флаг --rate.

ZMap также может сделать случайный выбор из адресного пространства IPv4, указав максимальное количество значений целевых показателей и / или максимальное значение среды выполнения. Поскольку хосты сканируются в случайном порядке, ограничение сканирования до определенного количества хостов будет выполнено через случайный выбор хостов. Параметры командной строки:

-n, --max-targets=n  – количество целей для исследования;

-N, --max-results=n  – количество результатов (выход после получения многих положительных результатов);

-t, --max-runtime=s  – время для отправки пакетов (в секундах);

-s, --seed=n  – используется для перестановки адресов. Укажите, чтобы сканировать адреса в том же порядке для различных серий ZMap.

Например, если вы хотите сканировать миллион хостов в Интернете, вы можете ограничить число сканируемых хостов:

Чтобы определить, какой один миллион хостов будет отсканирован, можно запустить режим dry-run сканирования, который будет распечатывать отправленные пакеты вместо выполнения фактического сканирования.

Отправка нескольких пакетов

ZMap поддерживает отправку нескольких зондов для каждого хоста. Увеличение времени сканирования (~ 100% за каждый дополнительный зонд) значительно перевешивает увеличение хостов (~ 1% за каждый дополнительный зонд).

-P, --probes=n  – количество уникальных зондов для отправки к каждому IP (по умолчанию = 1).

Перейти к содержанию полного руководства пользователя ZMap на русском языке.

Перевод: Виктория Верстлер

Источник: https://zmap.io/documentation.html#additional

Похожие темы

Установка Kali Linux Live на USB Загрузка и установка Kali с USB флешки — наш любимый и самый быстрый метод получения и запуска. Чтобы сделать это, сначала нам нужно записать Kali ISO...
Установка Nvidia + Bumblebee + CUDA на Kali Linux ... Источник: https://forums.kali.org/showthread.php?21956 Внимание! Для Kali Linux 2.0 читайте в конце статьи. Когда вы дойдёте до конца этой инструкции,...
Восстанавливаем GRUB в Kali Linux после обновления... Автор статьи: AndreyKravets, первоначально статья опубликована по адресу http://andrey.lviv.ua/blog/repair-grub-kali-linux-with-windows-10...
Списки слов для атаки по словарю: пароли, имена по... Далеко не всё программное обеспечение содержит эксплуатируемые уязвимости (как этого хотелось бы некоторым). Но цепь, как известно, рвётся на самом сл...
Как весь трафик в Kali Linux пропускать через Tor ... В инструкции «Повышаем свою анонимность в Интернете с Tor в Kali Linux» рассказано, как установить и использовать Tor для анонимного се...