ZMap или Как просканировать все IPv4 адреса мира за 45 минут

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 здесь.

Оставить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *