- Masscan — 1000 Times Faster Than NMAP
- Installing Masscan
- Uses of Masscan
- Lightning Speed!
- Some More Uses
- Nmap vs Masscan
- Masscan Web UI
- HackWare.ru
- Этичный хакинг и тестирование на проникновение, информационная безопасность
- Инструкция по использованию Masscan — лучшего массового сканера больших сетей
- Простое сканирование с помощью Masscan
- Возобновление прерванного сканирования
- Распределённое сканирование с помощью Masscan
- Как в Masscan сканировать IP из файла
- Сбор банеров и их анализ в графическом интерфейсе
- Опции и примеры Masscan
- Связанные статьи:
Masscan — 1000 Times Faster Than NMAP
This fastest port scanner gives the output like nmap but masscan works like unicornscann, Zenmap internally(asynchronous scan). It is faster because of flexibility allowing arbitrary ranges and port ranges.
Masscan uses it’s own custom TCP/IP stack. Anything other than a simple port scan may cause conflict with the local TCP/IP stack.
We will discuss later the differences between masscan and nmap, now let’s check how to install and use masscan in our system.
Installing Masscan
Masscan comes pre-installed with the Kali Linux full version. We can check the basic uses by simply enter following command:
If our system doesn’t have masscan then we need to install it. Before installing it we need to install it’s dependencies by using following command:
sudo apt-get install clang git gcc make libpcap-dev
sudo apt-get install masscan
Dependencies doesn’t require to install it, these dependencies help masscan to work perfectly. We also can install it from it’s GitHub repository. The following commands will be useful to install it from Git repository.
git clone https://github.com/robertdavidgraham/masscan
Uses of Masscan
Masscan is used for scan a network, if we want to scan a single port then we can perform it by applying following command:
sudo masscan 172.217.167.46 -p443
This will scan for a single port 443.
We also can use this tool to scan multiple ports separated by comma(,). The example is following:
sudo masscan 172.217.167.46 -p443,80,4444
sudo masscan 172.217.167.46 -p12-443
The above command will scan for port 12 to port 443 on our given IP address.
So in case we need to find all the ports then we can use following command;
sudo masscan 172.217.167.46 -p0-65535
Lightning Speed!
We said that masscan is the fastest scanner but after using previous commands we didn’t feel that it is faster.
The reason is masscan scans at the rate of 100 packets/sec, which is slow. To increase it we need to use —rate flag with it.
sudo masscan 172.217.167.46 -p0-65535 --rate 25000000
Using the above command we can achieve the fastest speed (25 million packets/sec).
One more thing, we can’t achieve the max speed on Mac, Windows or Virtual Linux systems. Masscan works best on primary installed Linux systems. On other systems we can get only 300,000 packets/sec. That is really fast but with the Linux system we can get the maximum speed.
To scan faster we must need to have a very good internet connection. Usually it happens that masscan can achieve the highest speed but our internet connection can’t send 25 million packets per second. Although the speed we got was faster than any other port scanner.
To see the fastest effect we should choose a bigger network to scan. On small networks or in single IP we can’t see the faster speed in our eyes. Because scanning small networks is work of some seconds so we can’t feel the speed. Let’s talk about it.
Masscan can scan the entire internet in 6 minutes according to it’s author Robert Graham. If we want to scan the whole internet for a specific port (443 port for example) we can use following command:
sudo masscan 0.0.0.0/0 -p443 --rate 250000000 --exclude 255.255.255.255
This command will scan the whole internet for 443 ports, and show us the result as fast as possible. Here we have stopped the scanning. We can see the screenshot.
Some More Uses
sudo masscan 172.217.167.46 -p0-65535 > example.txt
Not only txt format we also can save the results in XML ( -oX ), Grepable ( -oG ) and JSON ( -oJ ) formats. We like the Grepable format because we can use the output on other tools.
We also can scan a network for the top ports. So if we give it ‐‐top-ports 100 . It’ll scan the top 100 most common ports discovered according to nmap. We can choose our top ports numbers, an example of this is following (Scans for top 10 ports):
sudo masscan 172.217.167.46 --top-ports 100 --rate 100000
There is a pause function in masscan, Yes we can pause the scanning process and resume it when we need. Scanning on a large network we found it useful. During the scanning process we can press CTRL+C then after some seconds it will pause it and save a paused.conf file. This file has all the settings and progresses from the scan. We can resume the scanning process again by using following command:
sudo masscan --resume paused.conf
Nmap vs Masscan
- Nmap uses synchronous mode scanning which is very slow but accurate but masscan uses asynchronous mode scan which is very fast but not so much accurate.
- Masscan doesn’t check if the host is up or not, it always treats the host as online but nmap always checks if the host is up or down.
- Masscan never converts domain names to IP addresses. We manually need to find the IP address and provide it to masscan. But nmap works finely with IP and domain names.
- We always need to specify ports on masscan.
There are also some similarities in nmap and masscan. Masscan have some nmap compatible settings/ flags. To check them we can use masscan -nmap command.
Masscan Web UI
The Offensive Security team has created a web interface for masscan. Using that process we can use masscan on a easy web based GUI. Here is the full guide from Offensive security.
Image copyright Offensive Security. |
That’s all about masscan. Love our articles? Make sure to follow us on Twitter and GitHub , we post article updates there. To join our KaliLinuxIn family, join our Telegram Group . We are trying to build a community for Linux and Cybersecurity. For anything we always happy to help everyone on the comment section . As we know our comment section is always open to everyone. We read each and every comment and we always reply .
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Инструкция по использованию Masscan — лучшего массового сканера больших сетей
Если возникает потребность просканировать действительно большие пространства адресов за приемлемое время, то лучше Masscan вряд ли что-то можно найти. Говоря о больших диапазонах, я имею ввиду /8, IP целой страны или вообще все IP всего Интернета.
С Masscan это вполне возможно. Точнее говоря, если вы действительно собрались сканировать весь Интернет, то вам очень бы пригодился драйвер PF_RING и 10-гигабитный сетевой адаптер. Понятно, ещё и интернет-подключение с соответствующей пропускной способностью… Ну ещё наверное нужно разрешение провайдера Интернет-услуг, и вышестоящего провайдера… В общем, это морока и говорить про это мы не будем. Это позволило бы нам отправлять свыше 2 миллионов пакетов в секунду, но это нужно далеко не всем.
Главное нам нужно знать, что Masscan будет сканировать на пределе нашего интернет-подключения, а оно даже близко не приближается к двум миллионам пакетов. Но в любом случае — мы получим очень большую скорость.
Исходный код Masscan писался с мыслью о том, как не совершать лишних операций, а только генерировать пакеты. Тем не менее, Masscan имеет отличные возможности, которые делают его просто очень удобным. Например:
- возобновление прерванного сканирования;
- крайне лёгкая организация распределённого по нескольким компьютерам сканирования;
- перемешивание адресов и сканирование диапазона в случайном порядке, как результат этого — нет излишней нагрузки на отдельные подсети;
- во время сканирования постоянно обновляется статус, который включает в себя информацию об уже просканированной части, примерное время до завершения и обнаруженные рабочие хосты.
Простое сканирование с помощью 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 -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
Обновите файл веб конфигурации, подправив данные о пользователе и пароле (если нужно):
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 php import.php scan-01.xml
sudo service apache2 start
Теперь нам доступен веб-интерфейс с удобным просмотром и возможностью поиска.
Я нашёл сеть из любопытных устройств Spectrum Analyzer:
Опции и примеры Masscan
Ещё больше опций и примеров Masscan вы найдёте в Энциклопедии Kali.Tools.