ZMap — это быстрый сканер сети, созданный для исследования обширных подсетей Интернета. На обычном настольном компьютере с гигабитным каналом, ZMap может просканировать все публичные IPv4 адреса в течение 45 минут. С десятью гигабитным каналом и PF_RING, сканирование с ZMap всех IPv4 адресов может занять до 5 минут.
Предыдущие сетевые инструменты создавались для сканирования небольших сетевых сегментов. Архитектура ZMap изначально строилась для сканирования всех адресов мира. Программа построена в модульной марене, чтобы позволять инкорпорироваться с другими инструментами исследования сети. ZMap работает на GNU/Linux и из коробки поддерживает TCP SYN и эхо запросы ICMP при сканировании.
ZMap более чем в 1300 раз быстрее чем именитый конкурент Nmap на наиболее агрессивных дефолтных настройках при той же точности.
Исходный код программы: https://github.com/zmap/zmap
Требования для ZMap
ZMap, в настоящее врем, работает только на 64-битных системах. При работе ему нужно 600 Мб оперативной памяти. Для компиляции нужен CMake 2.8.12 или выше.
Установка ZMap
Установка на Fedora 19+
Просто наберите
yum install zmap
Если вы хотите установить на Archlinux, пожалуйста, посмотрите AUR ссылку:
Компиляция ZMap
Установка ZMap на Kali Linux
На Kali Linux не ставится. При компиляции появляется ошибка
CMake 2.8.12 or higher is required. You are running version 2.8.9
Т.е. нужен CMake 2.8.12 или более высокой версии, а на Kali CMake 2.8.9.
Для ZMap нужны GMP — бесплатная библиотека для вычислений с произвольной точностью, — gengetopt и libpcap. ZMap также использует flex и byacc. Эти пакеты на ОС семейства Debian можно установить так:
sudo apt-get install build-essential cmake libgmp3-dev gengetopt libpcap-dev flex byacc libjson-c-dev pkg-config
На RHEL- и основанных на Fedora системах запустите:
sudo yum install gmp gmp-devel gengetopt libpcap-devel flex byacc
Скачайте исходный код https://github.com/zmap/zmap
git clone https://github.com/zmap/zmap
Теперь, как обычно, 3 шага:
cmake [-DWITH_REDIS=ON] [-DWITH_JSON=ON] [-DENABLE_DEVELOPMENT=ON] ./ make sudo make install
На Linux Mint компиляция прошла успешно, но установка прерывалась ошибкой:
-- Install configuration: "" CMake Error at InstallConfFiles.cmake:2 (file): file COPY cannot find "/home/mial/opt/zmap.git/tags/v2.1.0-RC2/$./conf/blacklist.conf". Call Stack (most recent call first): cmake_install.cmake:36 (include) Makefile:66: ошибка выполнения рецепта для цели «install» make: *** [install] Ошибка 1
Вместо того, чтобы разбираться в чём ошибка, я поменял содержимое файла InstallConfFiles.cmake. Было:
if(NOT EXISTS "/etc/zmap/blacklist.conf") file(COPY "${PROJECT_SOURCE_DIR}/conf/blacklist.conf" DESTINATION "${CONFIG_DESTINATION}/blacklist.conf") endif() if(NOT EXISTS "/etc/zmap/zmap.conf") file(COPY "${PROJECT_SOURCE_DIR}/conf/zmap.conf" DESTINATION "${CONFIG_DESTINATION}/zmap.conf") endif()
Чтобы заработало я сделал так:
if(NOT EXISTS "/etc/zmap/blacklist.conf") file(COPY "./conf/blacklist.conf" DESTINATION "${CONFIG_DESTINATION}/blacklist.conf") endif() if(NOT EXISTS "/etc/zmap/zmap.conf") file(COPY "./conf/zmap.conf" DESTINATION "${CONFIG_DESTINATION}/zmap.conf") endif()
Т.е. понятно, что по какой-то причине не была задана переменная ${PROJECT_SOURCE_DIR}, но мне было не особо интересно разбираться, почему так случилось: для меня главное — чтобы работало. Кто знает — напишите в комментариях.
Использование ZMap
У меня ZMap не работала без прав суперпользователя, если у вас при запуске программы ошибка
Jul 08 17:02:45.814 [FATAL] recv: could not open device eth0: eth0: You don't have permission to capture on that device (socket: Operation not permitted)
То запускаяте её от рута.
Следующая команда просканирует 10000 рандомных адресов на порту 80 при максимальной загрузке сети 10 мегабит в секунду.
zmap --bandwidth=10M --target-port=80 --max-targets=10000 --output-file=results.csv
А это абсолютно то же самое, только в сокращённой записи.
zmap -B 10M -p 80 -n 10000 -o results.csv
Понятно, что ZMap может быть использована для сканирования заданных подсетей или блоков CIDR. Например, для сканирования только 10.0.0.0/8 и 192.168.0.0/16 на порте 80 запустите:
zmap -p 80 -o results.csv 10.0.0.0/8 192.168.0.0/16
Документация и дополнительные примеры по ZMap здесь.