Установка masscan-ng в CentOS

Masscan-ng является форком masscan с поддержкой инкапсулированных соединений SSL/TLS (в частности, HTTPS) и многопоточная обработка пакетов.

Подготовка к установке

Устанавливаем инструменты разработчика

dnf groupinstall 'Development Tools' -y

и дополнительные, необходимые, библиотеки

dnf install pcre-devel openssl-devel libpcap -y

Так же, дополнительно создаем симлинк для библиотеки libpcap, без него сканер не будет работать

cd /usr/lib64 ; ln -s libpcap.so.1 libpcap.so

Установка masscan-ng

Далее ни чего сложного...

Клонируем masscan-ng с репозитория bi-zone

git clone https://github.com/bi-zone/masscan-ng
cd masscan-ng

собираем и устанавливаем

make
make install

Использование masscan-ng

Использование аналогично nmap. Для сканирования сегмента сети для некоторых портов:

masscan-ng -p80,8000-8100 10.0.0.0/8 2603:3001:2d00:da00::/112

Это позволит:

  • сканирует подсеть 10.x.x.x и подсети 2603:3001:2d00:da00::x
  • сканирует порт 80 и диапазон от 8000 до 8100, или всего 102 порта, в обеих подсетях

Чтобы увидеть полный список опций, используйте функцию --echo. При этом происходит сброс текущей конфигурации и выход из программы. Этот вывод может быть использован в качестве входных данных для программы:

masscan-ng -p80,8000-8100 10.0.0.0/8 2603:3001:2d00:da00::/112 --echo > xxx.conf
masscan-ng -c xxx.conf --rate 1000

Проверка баннеров

Masscan-ng может делать больше, чем просто определять, открыты ли порты. Он также может завершить TCP-соединение и взаимодействие с приложением на этом порту, чтобы получить простую "баннерную" информацию.

Masscan-ng поддерживает проверку баннеров для следующих протоколов:

  • FTP
  • HTTP/HTTPS
  • IMAP4
  • memcached
  • POP3
  • SMTP
  • SSH
  • SSL
  • SMBv1
  • SMBv2
  • Telnet
  • RDP
  • VNC

Проблема заключается в том, что masscan-ng содержит свой собственный TCP/IP стек, отдельный от системы, на которой он запущен. Когда локальная система получает SYN-ACK от проверяемой цели, она отвечает пакетом RST, который разрывает соединение до того, как masscan-ng сможет перехватить баннер.

Самый простой способ предотвратить это - назначить masscan-ng отдельный IP-адрес. Это будет выглядеть как в одном из следующих примеров:

masscan-ng 10.0.0.0/8 -p80 --banners --source-ip 192.168.1.200
masscan-ng 2a00:1450:4007:810::/112 -p80 --banners --source-ip 2603:3001:2d00:da00:91d7:b54:b498:859d

Выбранный адрес должен находиться в локальной подсети и не использоваться другой системой. Masscan-ng предупредит вас о том, что вы допустили ошибку, но вы можете испортить связь с другой машиной на несколько минут, поэтому будьте осторожны.

В некоторых случаях, например, при использовании WiFi, это невозможно. В этих случаях вы можете заблокировать порт, который использует masscan-ng. Это не позволит локальному TCP/IP стеку увидеть пакет, но masscan-ng все равно увидит его, поскольку он обходит локальный стек. Для Linux это выглядит следующим образом:

iptables -A INPUT -p tcp --dport 61000 -j DROP
masscan-ng 10.0.0.0/8 -p80 --banners --source-port 61000

Как сканировать весь Интернет

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

masscan-ng 0.0.0.0/0 -p0-65535

Сканирование всего Интернета - это плохо. Во-первых, некоторые части Интернета плохо реагируют на сканирование. С другой стороны, некоторые сайты отслеживают сканирование и добавляют вас в бан-лист, что приведет к тому, что вы лишитесь доступа к полезным частям Интернета. Поэтому вы хотите исключить много диапазонов. Чтобы внести в черный список или исключить диапазоны, используйте следующий синтаксис:

masscan-ng 0.0.0.0/0 -p0-65535 --excludefile exclude.txt

Это просто выведет результаты в командную строку. Вероятно, вы хотите сохранить их в файл. Поэтому вам нужно что-то вроде:

masscan-ng 0.0.0.0/0 -p0-65535 -oX scan.xml

Это сохранит результаты в XML-файл, что позволит вам легко сбросить результаты в базу данных или что-то еще.

Но это происходит только при скорости по умолчанию 100 пакетов/секунду, что займет целую вечность для сканирования Интернета. Вам нужно ускорить его следующим образом:

masscan-ng 0.0.0.0/0 -p0-65535 --max-rate 100000

Это увеличит скорость до 100 000 пакетов в секунду, что позволит просканировать весь Интернет (за вычетом исключений) примерно за 10 часов на порт (или 655 360 часов при сканировании всех портов).

Главное, что следует отметить в этой командной строке, это то, что все эти опции совместимы с nmap. Кроме того, "невидимые" опции, совместимые с nmap, также установлены для вас: -sS -Pn -n --randomize-hosts --send-eth. Аналогично, формат XML-файла вдохновлен nmap. Конечно, есть много различий, потому что асинхронная природа программы приводит к принципиально иному подходу к проблеме.

Приведенная выше командная строка немного громоздка. Вместо того чтобы выводить все в командную строку, можно хранить это в файле. Приведенные выше настройки будут выглядеть следующим образом:

rate = 100000.00
output-format = xml
output-status = all
output-filename = scan.xml
ports = 0-65535
range = 0.0.0.0-255.255.255.255
excludefile = exclude.txt

Чтобы использовать этот конфигурационный файл, воспользуйтесь параметром -c:

masscan-ng -c myscan.conf

Это также упрощает работу при повторном сканировании.

По умолчанию masscan-ng сначала загружает конфигурационный файл /etc/masscan-ng/masscan-ng.conf. Любые последующие параметры конфигурации переопределяют то, что находится в этом файле по умолчанию. Именно туда я поместил свой параметр "excludefile", чтобы никогда не забыть его. Он просто работает автоматически.

Добавить комментарий