Masscan
DEEPSIDEЭто массовый сканер IP портов. Это самый быстрый сканер портов Интернета. Отправляя 10 миллионов пакетов в секунду, он может сканировать весь интернет за 6 минут. Этот инструмент полезен для обзора сетей большого масштаба — таких как Интернет или внутренние сети. Хотя скорость по умолчанию ограничена 100 пакетами в секунду, программа может разгоняться до 25 миллионов пакетов в секунду, при такой скорости весь (по одному порту на IP) Интернет будет просканирован за 3 минуты.
Он создаёт результат схожий с nmap, самым знаменитым сканером портов. Внутри он работает подобно scanrand, unicornscan и ZMap, используя асинхронную передачу. Главным отличием является то, что он быстрее этих сканеров. Дополнительно, он более гибкий, позволяет произвольные диапазоны адресов и портов.
Masscan использует кастомный (специально изготовленный) TCP/IP стек. Любое другое, что выходит за пределы простого сканирования, приведёт к конфликту с локальным TCP/IP стеком. Это означает, что вам либо нужно использовать опцию -S для использования раздельных IP адресов, либо настроить операционную систему так, чтобы файервол обрабатывал порт, который использует masscan.
Домашняя страница: https://github.com/robertdavidgraham/masscan
Справка по Masscan
Использование:
masscan <ip адрес/диапазон> -p порты опции
В справке отсутствует список опций, приведены только примеры использования. Ещё больше примеров вы найдёте ниже в соответствующей секции.
Чтобы просканировать порт 80 и диапазон портов с 8000 по 8100 (всего 102 порта) сети 10.x.x.x на скорости 10 тысяч пакетов в секунду наберите команду:
masscan -p80,8000-8100 10.0.0.0/8
--rate=10000
Программа поддерживает некоторые опции совместимые с nmap. Чтобы их увидеть наберите:
masscan --nmap
Для сохранения результатов в бинарном формате в <имя_файла> сделайте так:
masscan -p80 10.0.0.0/8
--banners -oB <имя_файла>
Прочитать результаты сканирования из бинарного файла <имя_файла> и сохранить их в формате xml <файл для сохранения>:
masscan --open
--banners --readscan <имя_файла> -oX <файл для сохранения>
Для сканирования порта 80 (здесь разные веб-сервера, роутеры, файловые хранилища, веб-камеры и другая похожая «утварь») сети 10.x.x.x с дефолтной скоростью отправки пакетов (100 пакетов в секунду)
masscan 10.0.0.0/8
-p80
Программа автоматически определяет настройки интерфейса/адаптера, если это не произошло вы должны установить их вручную Это пример всех параметров, которые нам нужны:
--adapter-ip 192.168.10.123
--adapter-mac 00-11-22-33-44-55
--router-mac 66-55-44-33-22-11
Параметры могут быть установлены как в командной строке, так и в конфигурационном файле. Имена параметров везде одинаковые. В конфигурационном файле эти же настройки выглядели бы так:
adapter-ip = 192.168.10.123
adapter-mac = 00-11-22-33-44-55
router-mac = 66-55-44-33-22-11
Все параметры с одной чёрточкой имеют эквивалент с двумя чёрточками. Так '-p80' это то же самое что и '--ports 80' (или 'ports = 80' в конфигурационном файле).
Для использования конфигурационного файла наберите
masscan -c <имя_файла>
Для генерации конфигурационного файла из текущих настроек наберите опцию --echo. Это остановит программу от обычного запуска и вместо этого она просто напечатает текущую конфигурацию Это полезно для генерации вашего первого конфигурационного файла или для просмотра списка параметров о которых вы не знаете.
Руководство по Masscan
ОПЦИИ
<ip/диапазон>
всё в командной строке, что не имеет префикса ´-´ предполагается IP адресом или диапазоном. Существует три валидных формата. Первый: одиночный IPv4 адрес вроде "192.168.0.1". Второй: диапазон вроде "10.0.0.1-10.0.0.100". Третий: CIDR адрес, вроде "0.0.0.0/0". Должна быть указана хотя бы одна цель. Можно указать много целей. Это можно сделать как несколькими опциями, разделёнными пробелом, или это может быть единичная опция, разделённая запятой, такая как 10.0.0.0/8,192.168.0.1.
--range <ip/диапазон>
то же самое, как и описанный выше способ указания диапазона цели, единственной отличие в том, что это именованный параметр, в отличии от предыдущего безымянного.
-p <порты>, --ports <порты>
задаёт порт(ы) для сканирования. Можно указать единичный порт вроде -p80. Можно указать диапазон портов вроде -p 20-25. Можно указать список портов/диапазонов вроде -p80,20-25. Можно указать UDP порты, это делается так --ports U:161,U:1024-1100.
--banners
даёт указания собирать баннеры, такие как версия HTTP серверов, поле заголовка HTML и т. д. Поддерживаются только несколько протоколов.
--rate <пакетов-в-секунду>
указывает желаемую скорость передачи пакетов. Это может быть очень маленькая величина вроде 0.1 ждя передачи пакетов на скорости один в 10 секунд, так и очень большие числа вроде 10000000, при которые программа пытается передать 10 миллионов пакетов в секунду. На опыте автора программы, Windows может передавать 250 тысяч пакетов в секунду, а последние версии Linux могут 2.5 миллиона пакетов в секунду. Для 25 миллионов пакетов в секунду нужен PF_RING драйвер.
-c <имя_файла>, --conf <имя_файла>
читает конфигурационный файл. Формат конфигурационного файла описан ниже.
--resume <имя_файла>
то же самое, что и --conf, кроме того, что некоторые опции устанавливаются автоматически, среди них --append-output. Формат конфигурационного файла описан ниже.
--echo
не запускать, но вместо этого сбросить текущий конфигурационный файл. Этот файл может использоваться с опцией -c. Формат вывода описа ниже в «КОНФИГУРАЦИОННОМ ФАЙЛЕ».
-e <имя_интерфейса>, --adapter <имя_интерфейса>
использовать названный сырой сетевой интерфейс, такой как "eth0" или "dna1". Если не указан, будет использоваться первый найденный сетевый интерфейс с дефолтным шлюзом.
--adapter-ip <ip-address>
отправлять пакеты используя этот IP адрес. Если не указан, то будет использоваться первый связанный с сетью интерфейс. Вместо единичного IP адреса можно указать диапазон. ПРИМЕЧАНИЕ: размер диапазона должен представлять число в степени 2, такой как 1, 2, 4, 8, 16, 1024 и т.д.
--adapter-port <порт>
отправлять пакеты используя этот порт как источник. Если не указан, то будет выбран случайный порт в диапазоне от 40000 до 60000. Этот порт должен фильтроваться файерволом хоста (таким как iptables) для предотвращения прерывания сетевого стека хоста присланными пакетами. Вместо единичного порта, можно указать диапазон вроде 40000-40003. ПРИМЕЧАНИЕ: размер диапазона должен представлять число в степени 2 как в предыдущем примере, где в общей сложности 4 порта.
--adapter-mac <mac-address>
отправлять пакеты используя его как MAC адрес источника. Если не указан, то будет использоваться первый MAC адрес, привязанный к сетевому интерфейсу.
--router-mac <mac адрес>
отправлять пакеты на этот MAC адрес как на конечный пункт. Если указан, то адрес шлюза сетевого интерфейса будет отARPтан.
--ping
показывает, что сканирование должно включать ICMP эхо запрос. Его можно включать с TCP и UDP и сканированием.
--exclude <ip/диапазон>
чёрный список IP адресов или диапазонов, этот список не сканируется. Он переписывает любые указания цели и гарантирует, что этот адрес/диапазон не будет просканирован. Имеет тот же формат, что и указание цели.
--excludefile <имя_файла>
читает список исключаемых диапазонов из файла, формат в файле такой же как описанный выше для определения цели. Этот диапазон переписывает любые цели, предотвращая их от сканирования.
--append-output
приводит к тому, что вывод добавляется к файлу, а не перезаписывает этот файл.
--iflist
составить список доступных сетевых интерфейсов, а затем выйти.
--retries
количество попыток для отправки в 1 секундные интервалы. Поскольку сканер «безстатусный», то попытки отправляются независимо от того, получен ли уже ответ или нет.
--nmap
печатает помощь о совместимых с nmap альтернативах этих опций.
--pcap-payloads
читает пакеты из файла libpcap, содержащего пакеты, и извлекает полезную нагрузку UDP и связывает эту полезную нагрузку с портом назначения. Эти полезные нагрузки затем будут использоваться когда отправляются UDP пакеты с соответствующим портом назначения. Только полезная нагрузка будет запомнена для порта. Аналогично --nmap-payloads.
--http-user-agent <user-agent>
при HTTP запросах заменяет существующее поле пользовательского агента на указанное значение.
--open-only
сообщает только об открытых, а не закрытых портах.
--pcap <имя_файла>
сохраняет полученные пакеты (но не переданные пакеты) в файл в формате libpcap.
--packet-trace
напечатать сводку об отправленных и принятых пакетах. Это полезно при низкой скорости, такой как несколько пакетов в секунду, но завалит терминал на высоких скоростях.
--pfring
принуждает использовать драйвер PF_RING. Программа завершит работу, если PF_RING DNA драйвер недоступен.
--resume-index
указатель на сканирование, когда оно было поставлено на паузу.
--resume-count
максимальное количество зондов для отправки перед выходом. Это полезно с --resume-index для нарезки и расщепления задачи на множество экземпляров, хотя опция --shards была бы лучше.
--shards <x>/<y>
расщепляет сканирование на экземпляры, x — это id для этого сканирования, а y — общее число экземпляров. Например, --shards 1/2 говорит экземпляру отправлять каждый другой пакет, начиная с индекса 0. Точно так же --shards 2/2 отправляет каждый другой пакет, но начинает с индекса 1, таким образом он не будет перекрываться с первым примером.
--rotate <время>
ротировать файл вывода, переименовывать его в соответствии с текущей временной меткой, отправлять в отдельную директорию. Время может указываться как количество секунд, например "3600" — это один час. Или могут быть указаны единицы времени, такие как "hourly" или "6hours" или "10min".
Времена ориентируются на родные границы, поэтому если указано "daily", то файл будет ратироваться каждый день в полночь.
--rotate-offset <время>
сдвиг по времени. Это подстройка под временные зоны.
--rotate-dir <директория>
при ротации файлов, она указывает, в какую директорию перемещать файл. Полезная директория это /var/log/masscan.
--seed <целое число>
целое число, которое является источниками для генератора случайных числе. Использование различных источников станет причиной отправки пакетов в различном случайном порядке. Вместо числа можно указать строку времени, и её источники будут использоваться для локальной временной метки, автоматически генерируя различные случайные последовательности сканирований. Если источник не указан, то используется время.
--regress
запустить регрессивный тест, возвращает ´0´ при успехе и ´1´ при неудаче.
--ttl <число>
указывает TTL исходящих пакетов, по умолчанию 255.
--wait <секунды>
указывает количество секунд после сделанной пересылки, которое нужно подождать для получения пакета перед выходом из программы. По умолчанию это 10 секунд. В строке можно указать forever, чтобы никогда не завершать работу.
--offline
не отправлять по-настоящему пакеты. Это полезно при низкой скорости и --packet-trace для просмотра, какие пакеты были бы отправлены. Или это полезно с --rate 100000000, чтобы провести бенчмарк, насколько большая скорость работала бы (подразумевается драйвер zero-overhead). PF_RING примерно на 20% медленнее чем результаты бенчмарка в оффлайновом режиме.
-sL
она не делает сканирования, а вместо этого создаёт список случайных адресов. Это полезно для импортирования их в другие инструменты. Опции --shard, --resume-index и --resume-countмогут быть полезными с этой функцией.
--interactive
показывать результаты в режиме реального времени в консоли. Это не имеет эффекта, если используется с --output-format или --output-filename.
--output-format <формат>
указывает формат выходного файла, им может быть xml, binary, grepable, list или JSON. Должна быть указана опция --output-filename.
--output-filename <имя_файла>
Файл в которых сохранить результаты. Если указан параметр --output-format, то будет использоваться значение по умолчанию xml
-oB <имя_файла>
устанавливает формат вывода на двоичный и сохраняет в данный файл. Это эквивалент использования параметров --output-format и --output-filename. Опция --read-scan может быть использована для чтения бинарного файла. Бинарные файлы намного меньше чем их XML эквиваленты, но требуют отдельного шага для конвертации обратно в XML и другой читаемый формат.
-oX <имя_файла>
устанавливает формат вывода на XML и сохраняет в данный файл. Это эквивалент использования параметров --output-format xml и --output-filename.
-oG <имя_файла>
устанавливает формат вывода на grepable и сохраняет вывод в данный файл. Это эквивалент использования параметров --output-format grepable и --output-filename.
-oJ <имя_файла>
устанавливает формат вывода на JSON и сохраняет вывод в данный файл. Это эквивалент использования параметров --output-format json и --output-filename.
-oL <имя_файла>
устанавливает формат вывода на формат простого списка и сохраняет вывод в данный файл. Это эквивалент использования параметров --output-format list и --output-filename.
--readscan <бинарные-файлы>
читает файлы, созданные опцией -oB из сканирования, затем выводит их в одном из других форматах, в зависимости от параметров командной строки. Другими словами, она принимает бинарную версию вывода и конвертирует его в форматы XML или JSON.
ФОРМАТ ФАЙЛА КОНФИГУРАЦИИ
Конфигурационный файл использует те же имена параметров, как и командная строка, но без префикса --, и со знаком = между именем и значением. Примером конфигурационного файла может быть:
# цели
range = 10.0.0.0/8,192.168.0.0/16
range = 172.16.0.0/14
ports = 20-25,80,U:53
ping = true
# адаптер
adapter = eth0
adapter-ip = 192.168.0.1
router-mac = 66-55-44-33-22-11
# другие
exclude-file = /etc/masscan/exludes.txt
По умолчанию программа считывает дефолтный конфигурационный файл из /etc/masscan/masscan.conf. Это полезно для специфичных под данную систему настройках, таких как опция --adapter-xxx. Это также полезно для исключения IP адресов для сканирования всего Интернета чтобы не сделать случайную ошибку и не сканировать опасные адреса вроде тех, которые принадлежат DoD.
ПОВЕДЕНИЕ CONTROL-C
Когда пользователь нажимает ctrl-c сканирование останавливается и текущее состояние сканирования сохраняется в файл ´paused.conf´. Сканирование может быть возобновлено опцией --resume:
masscan --resume paused.conf
Программа не выходит немедленно, она будет ждать дефолтные 10 секунд для сохранения результатов из Интернета и сохранения результатов перед полным выходом. Это время можно изменить опцией --wait.
Примеры запуска Masscan
ПРОСТЫЕ ПРИМЕРЫ
Следующий пример сканирует всю частные сети на наличие устройств, прослушивающих 80 порт (веб-серверы, роутеры, IP-камеры и т. д.) и печатает все найденные открытые порты.
masscan 10.0.0.0/8
192.168.0.0/16
172.16.0.0/12
-p80 --open-only
Следующий пример сканирует весь Интернет на DNS сервера, собирает их версии, затем сохраняет результаты в файл XML.
masscan 0.0.0.0/0
--excludefile no-dod.txt -pU:53 --banners --output-filename dns.xml
Вы должны быть в состоянии импортировать XML в базу данных или что-то такое.
Следующий пример читает результаты сканирования из бинарного файла под названием bin-test.scan и печатает его результаты в консоли:
masscan --readscan bin-test.scan
Следующий пример читает результаты сканирования из бинарного файла под названием bin-test.scan и создаёт выводной XML файл под названием bin-test.xml.
masscan --readscan bin-test.scan -oX bin-test.xml
ПРОДВИНУТЫЕ ПРИМЕРЫ
Допустим вы хотите просканировать весь Интернет и распределить сканирование по трём машинам. Тогда Masscan нужно запустить на трёх машинах следующим образом:
masscan 0.0.0.0/0
-p0-65535 --shard 1/3
masscan 0.0.0.0/0
-p0-65535 --shard 2/3
masscan 0.0.0.0/0
-p0-65535 --shard 3/3
Альтернативой является использование функции «возобновления». Сканирования имеет внутренний индекс, который начинается с нуля до числа количества портов затем количества IP адресов. Следующий пример показывает разделение сканирования на куски каждый по 1000 пунктов:
masscan 0.0.0.0/0
-p0-65535 --resume-index 0 --resume-count 1000
masscan 0.0.0.0/0
-p0-65535 --resume-index 1000 --resume-count 1000
masscan 0.0.0.0/0
-p0-65535 --resume-index 2000 --resume-count 1000
masscan 0.0.0.0/0
-p0-65535 --resume-index 3000 --resume-count 1000
Скрипт может использовать это для расщепления на более маленькие задачи среди множества машин, таких как экземпляры Amazon EC2. По мере завершения работы, скрипт должен отправлять запрос на центральный координирующий сервер за последующей работой.
СБРОС ПАРАЗИТНОГО ТРАФИКА
При сканировании TCP с использованием дефолтного IP адреса вашего адаптера, встроенный стек будет генерировать RST пакеты. Это не даст собрать баннеры. Есть два способа решить это. Первый способ — это создать правило файервола для блокировки порта из видимости стека. Конкретное решение зависит от вашей операционной системы, но в Linux это выглядит примерно так:
iptables -A INPUT -p tcp -i eth0 --dport 61234 -j DROP
Затем, при сканировании, этот же порт должен использоваться как источник:
masscan 10.0.0.0/8
-p80 --banners --adapter-port 61234
Альтернативой является «спуфинг» (подмена на) другой IP адрес. Этот IP адрес должен быть внутри диапазона локальной сети, но при этом не должен использоваться вашим собственным компьютером или другим компьютером в сети. Пример этого выглядит примерно так:
masscan 10.0.0.0/8
-p80 --banners --adapter-ip 192.168.1.101
Настройте таким путём вашего IP адрес источника является предпочитаемым способом запуска сканера.
Установка Masscan
Программа предустановлена в Kali Linux.
Установка в Debian, Mint, Ubuntu
sudo
apt-get install
git gcc make
libpcap-dev
git clone https://github.com/robertdavidgraham/masscan
cd
masscan
make
Это поместит программу в подкаталог masscan/bin. Если вы хотите установить её куда-то в систему, то вы должны вручную скопировать её куда-нибудь вроде usr/local/bin.
Исходник состоит из множества маленьких файлов, поэтому сборка пройдёт намного быстрее, если будете использовать многопоточную сборку:
make
-j
Хотя Linux является главной целевой платформой, код хорошо запускается на многих других системах. Вот дополнительная информация о них:
Установка в Windows
Windows с Visual Studio: используйте проект VS10
Windows с MingGW: просто наберите make
Windows с cygwin: не работает
Установка в Mac OS X
Mac OS X с XCode: используйте проект XCode4
Mac OS X с cmdline: просто наберите make
Установка в FreeBSD
Наберите gmake.
По другим системам информации нет. Автора они не интересуют.
Графический интерфейс Masscan
Offensive Security подготовила веб-интерфейс для Masscan: https://www.offensive-security.com/offsec/masscan-web-interface/
Установите и настройте ваш веб-сервер, скопируйте файлы MASSCAN web-ui:
apt-get install
apache2 php5 php5-mysql mysql-server
git clone https://github.com/offensive-security/masscan-web-ui
mv
masscan-web-ui/* /var/www/html/
cd
/var/www/html/
Если вы вдруг забыли (или не знали) пароль от MySQL в Kali Linux, то сделайте так:
/etc/init.d/mysql
stop
mkdir
-p /var/run/mysqld
chown
mysql:mysql /var/run/mysqld
mysqld_safe --skip-grant-tables &
В другом терминале
mysql -u root mysql
update
user
set
password=PASSWORD("НОВЫЙ ПАРОЛЬ") where
User='root';
flush privileges;
quit
/etc/init.d/mysql
restart
Создайте базу данных, пользователя, импортируйте базу данных.
mysql -u root -p
create
database
masscan;
CREATE
USER
'masscan'@'localhost'
IDENTIFIED BY
'changem3';
GRANT
ALL
PRIVILEGES
ON
masscan.* TO
'masscan'@'localhost';
exit
mysql -u root -p masscan < db-structure.sql
rm
db-structure.sql index.html README.md
Обновите файл веб конфигурации, подправив данные о пользователе и пароле:
gedit config.php
define('DB_HOST', 'localhost');
define('DB_USERNAME', 'masscan');
define('DB_PASSWORD', 'changem3');
define('DB_DATABASE', 'masscan');
Теперь вы можете использовать masscan для сканирования ваших целей, при этом указав XML в качестве формата вывода.
masscan 10.0.0.0/8
-p80,21,53 --banners --max-rate 1000 -oX scan-01.xml
Теперь давайте импортируем результаты сканирования.
ls
-l scan*
-rw-r--r-- 1 root root 33680 янв 4 16:57 scan-01.xml
php import.php scan-01.xml
Запускаем сервер:
service apache2 start
Переходим по адресу http://localhost/
Теперь нам доступен веб-интерфейс с удобным просмотром и возможностью поиска.
Простое сканирование с помощью Masscan
К примеру, нас интересуют порт 80, а также диапазон портов с 8000 по 8100 в сети 10.0.0.0/8, при этом мы хотим запустить сканирование на скорости десять тысяч пакетов в секунду. Тогда команда будет выгладить так:
sudo
masscan -p80,8000-8100 10.0.0.0/8
--rate=10000
Кажется довольно просто, но подвохом здесь является скорость. Например, в моих условиях, если я указываю слишком большую скорость, то часть данных просто теряется. Вам нужно экспериментально подбирать скорость для себя, у меня более-менее реальной является 500-1000 пакетов в секунду. Ещё я сократил количество интересующих меня портов (для увеличения скорости):
sudo
masscan -p80,8080 10.0.0.0/8
--rate=500
Понять, что вы установили слишком большую скорость можно по неработающему во время сканирования Интернету (канал забит), а также по тому признаку, что результатов очень мало, хотя вы натравили программу на «живую» сеть. Это не ограничение программы — это ограничение Интернет-подключения.
Возобновление прерванного сканирования
Это совсем просто. Если вам понадобилось выключить / перезагрузить компьютер, то нажмите CTRL+C и дождитесь остановки программы. Промежуточные результаты будут автоматически сохранены в paused.conf. Для возобновления сканирования с того же места, где вы остановились, наберите команду:
sudo
masscan --resume paused.conf
Распределённое сканирование с помощью Masscan
Я уже расхваливал удобство организации распределённого сканирования с Masscan по разным машинам, теперь конкретные примеры.
Допустим вы хотите просканировать весь Интернет и распределить сканирование по трём машинам. Тогда Masscan нужно запустить на трёх машинах следующим образом:
masscan 0.0.0.0/0
-p0-65535 --shard 1/3
masscan 0.0.0.0/0
-p0-65535 --shard 2/3
masscan 0.0.0.0/0
-p0-65535 --shard 3/3
Альтернативой является использование функции «возобновления». Сканирования имеет внутренний индекс, который начинается с нуля до числа количества портов затем количества IP адресов. Следующий пример показывает разделение сканирования на куски каждый по 1000 пунктов:
masscan 0.0.0.0/0
-p0-65535 --resume-index 0 --resume-count 1000
masscan 0.0.0.0/0
-p0-65535 --resume-index 1000 --resume-count 1000
masscan 0.0.0.0/0
-p0-65535 --resume-index 2000 --resume-count 1000
masscan 0.0.0.0/0
-p0-65535 --resume-index 3000 --resume-count 1000
Скрипт может использовать это для расщепления на более маленькие задачи среди множества машин, таких как экземпляры Amazon EC2. По мере завершения работы, скрипт должен отправлять запрос на центральный координирующий сервер для последующей обработки.
Как в Masscan сканировать IP из файла
У Masscan есть опции, которые один в один совместимы с nmap. Их довольно много, но самыми интересными, на мой взгляд, являются следующие:
-iL <имя_файла>: Ввод из файла списка хостов/сетей
-p <диапазон портов>: Сканировать только указанные порты
--banners: если есть прослушивающие службы, то получить их баннеры.
-oL/-oJ/-oG/-oB/-oX <файл>: Вывод сканирования в файл Список/JSON/Grepable/Двоичный/XML формат, в соответствии с именем данного файла. Сокращение для --output-format <формат> --output-file <файл>
Как видно, мы можем указать файл, из которого Masscan будет брать IP и диапазоны адресов. Ещё можно собирать банеры с опцией --banners.
Сбор банеров и их анализ в графическом интерфейсе
Для сбора банеров используется опция --banners. Для меня интересны порты 80,21,53,8080. Чтобы воспользоваться графическим интерфейсом для анализа полученных данных, сохраните результаты в формате XML:
sudo
masscan 10.0.0.0/8
-p80,21,53,8080 --banners --max-rate 500 -oX scan-01.xml
Пока происходит сканирование, установите и настройте ваш веб-сервер, скопируйте файлы MASSCAN web-ui:
apt-get install
apache2 php5 php5-mysql mysql-server
git clone https://github.com/offensive-security/masscan-web-ui
sudo
mkdir
/var/www/html/masscan/
sudo
mv
masscan-web-ui/* /var/www/html/masscan
cd
/var/www/html/masscan
Чуть подправим файлы:
sudo
find
./ -type
f -exec
sed
-i 's/\/assets/\/masscan\/assets/g'
{} \;
sed
-i "s/url:'\//url:'\/masscan\//g"
/var/www/html/masscan/assets/scripts.js
sed
-i "s/url='\/export.php/url='\/masscan\/export.php/g"
/var/www/html/masscan/assets/scripts.js
Запускаем службу MySQL:
sudo
service mysql start
Создайте базу данных, пользователя, импортируйте базу данных.
mysql -u root -p
create database masscan;
CREATE USER 'masscan'@'localhost'
IDENTIFIED BY 'changem3';
GRANT ALL PRIVILEGES ON masscan.* TO 'masscan'@'localhost';
exit
mysql -u root -p masscan < db-structure.sql
sudo
rm
db-structure.sql README.md
Обновите файл веб конфигурации, подправив данные о пользователе и пароле (если нужно):
gedit config.php
define('DB_HOST', 'localhost');
define('DB_USERNAME', 'masscan');
define('DB_PASSWORD', 'changem3');
define('DB_DATABASE', 'masscan');
Теперь давайте импортируем результаты сканирования. Мы начали сканирование, будучи в домашней директории. Поэтому и файл с результатами сканирования там. Для успешного импорта нам нужно, чтобы файл с результатами (scan-01.xml) находился в каталоге /var/www/html/masscan
Проверим, действительно ли результаты в домашней директории::
ls
-l ~/scan*
-rw-r--r-- 1 root root 111771 фев 18 06:13 /home/mial/scan-01.xml
Копируем результаты:
sudo
cp
~/scan-01.xml .
Импортируем:
sudo
php import.php scan-01.xml
Запускаем сервер:
sudo
service apache2 start
Переходим по адресу http://localhost/masscan
Теперь нам доступен веб-интерфейс с удобным просмотром и возможностью поиска.
Заключение
Если так пойдет и дальше, то через несколько лет, когда терабитные каналы станут более обычным делом, чуть ли не каждый школьник сможет просканировать интернет со своего домашнего ПК.