Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

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

Категории

Все категории
Loading categories
scannerl — Модульный распределённый движок фингерпринтинга | Kitploit
Инструменты/GitHubGitHub/kudelskisecurity/scannerl
РазведкаКартирование сетиСбор информации
GitHubkudelskisecurity/scannerl

scannerl

Модульный распределённый движок фингерпринтинга

Репозиторий
2194238 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Scannerl

License: GPL v3 AUR

Scannerl — это модульный распределённый движок для снятия цифровых отпечатков (fingerprinting), реализованный компанией Kudelski Security. Scannerl может снимать отпечатки тысяч целей на одном хосте, но при этом легко распределяется между несколькими хостами. Scannerl для fingerprinting — это то же, что zmap для сканирования портов.

Scannerl работает на Debian/Ubuntu/Arch (но, скорее всего, будет работать и на других дистрибутивах). Он использует архитектуру «ведущий/ведомый», где ведущий узел распределяет работу (хост(ы) для fingerprinting) между своими ведомыми (локальными или удалёнными). Всё развёртывание прозрачно для пользователя.

Зачем использовать Scannerl

При использовании обычных инструментов fingerprinting для крупномасштабного анализа исследователи безопасности часто сталкиваются с двумя ограничениями: во-первых, такие инструменты обычно созданы для сканирования сравнительно небольшого количества хостов за раз и непригодны для больших диапазонов IP-адресов. Во-вторых, если сканируется большой диапазон IP-адресов, защищённых устройствами IPS, вероятность попадания в чёрный список выше, что может привести к неполному набору информации. Scannerl разработан для обхода этих ограничений, предоставляя не только возможность одновременно снимать отпечатки множества хостов, но и распределяя нагрузку между произвольным количеством хостов. Scannerl также делает распределение этих задач полностью прозрачным, что упрощает настройку и обслуживание крупномасштабных проектов fingerprinting; это позволяет сосредоточиться на анализе, а не на геркулесовой задаче ручного управления и распределения процессов fingerprinting. Вдобавок к скорости, scannerl спроектирован так, чтобы можно было легко настроить конкретный анализ fingerprinting всего несколькими строками кода. Создание кластера fingerprinting не только просто в настройке, но и может быть доработано путём добавления тонко настроенных сканирований в ваши кампании fingerprinting.

Это самый быстрый инструмент для проведения крупномасштабных кампаний fingerprinting.

Подробнее:

  • Fingerprint all the things with scannerl at BlackAlps
  • Fingerprinting MySQL with scannerl
  • Fingerprint ICS/Scada with scannerl
  • Distributed fingerprinting with scannerl
  • 6 months of ICS scanning

Содержание

  • Установка

  • Использование

    • Автономное использование
    • Распределённое использование
    • Доступные модули
    • Аргументы модулей
    • Формат результата
  • Расширение Scannerl

  • Участие

  • Лицензия и авторские права

См. wiki для получения дополнительной информации.

Установка

См. различные варианты установки на странице установки wiki

Для установки из исходников сначала установите Erlang (не ниже версии 18), выбрав подходящий пакет для вашей платформы: Загрузки Erlang

Установите необходимые пакеты:

root@kitploit:~
# на debian
$ sudo apt install erlang erlang-src rebar

# на arch
$ sudo pacman -S erlang-nox rebar

Затем соберите scannerl:

root@kitploit:~
$ git clone https://github.com/kudelskisecurity/scannerl.git
$ cd scannerl
$ ./build.sh

Получите справку по использованию, выполнив

root@kitploit:~
$ ./scannerl -h

Scannerl доступен в AUR для пользователей Arch Linux

  • scannerl
  • scannerl-git

DEB-пакеты (Ubuntu, Debian) доступны в релизах.

RPM-пакеты (Opensuse, Centos, Redhat) доступны на https://build.opensuse.org/package/show/home:chapeaurouge/scannerl.

Распределённая настройка

Для выполнения распределённого сканирования необходимы два типа узлов:

  • Ведущий узел (Master node): здесь запускается бинарный файл scannerl
  • Ведомый узел (Slave node): сюда scannerl будет подключаться для распределения всей работы

На ведущем узле должен быть установлен и скомпилирован scannerl, в то время как на ведомом узле (узлах) требуется только установленный Erlang. Вся настройка прозрачна и выполняется автоматически ведущим узлом.

Требования для распределённого сканирования:

  • На всех хостах установлена одна и та же версия Erlang
  • Все хосты могут подключаться друг к другу с помощью открытого ключа SSH
  • Имена всех хостов разрешаются (используйте /etc/hosts, если не настроен DNS)
  • На всех хостах одинаковый Erlang security cookie
  • Все хосты должны разрешать подключение к порту Erlang EPMD (TCP/4369)
  • На всех хостах должен быть открыт следующий диапазон портов: TCP/11100 до TCP/11100 + количество-ведомых

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

root@kitploit:~
$ ./scannerl -h
   ____   ____    _    _   _ _   _ _____ ____  _
  / ___| / ___|  / \  | \ | | \ | | ____|  _ \| |
  \___ \| |     / _ \ |  \| |  \| |  _| | |_) | |
   ___) | |___ / ___ \| |\  | |\  | |___|  _ <| |___
  |____/ \____/_/   \_\_| \_|_| \_|_____|_| \_\_____|

ИСПОЛЬЗОВАНИЕ
  scannerl МОДУЛЬ ЦЕЛИ [УЗЛЫ] [ОПЦИИ]

  МОДУЛЬ:
    -m <mod> --module <mod>
      mod: модуль fingerprinting для использования.
           аргументы разделяются двоеточием.

  ЦЕЛИ:
    -f <target> --target <target>
      target: список целей, разделённых запятыми.
    -F <path> --target-file <path>
      path: путь к файлу, содержащему по одной цели в строке.
    -d <domain> --domain <domain>
      domain: список доменов, разделённых запятыми.
    -D <path> --domain-file <path>
      path: путь к файлу, содержащему по одному домену в строке.

  УЗЛЫ:
    -s <node> --slave <node>
      node: список узлов (имена хостов, не IP), разделённых запятыми.
    -S <path> --slave-file <path>
      path: путь к файлу, содержащему по одному узлу в строке.
            узел также может быть указан с множителем (<node>*<nb>).

  ОПЦИИ:
    -o <mod> --output <mod>     список выходных модулей для использования, разделённый запятыми.
    -p <port> --port <port>     порт для fingerprinting.
    -t <sec> --timeout <sec>    тайм-аут процесса fingerprinting.
    -T <sec> --stimeout <sec>   тайм-аут подключения ведомого (по умолчанию: 10).
    -j <nb> --max-pkt <nb>      максимальное количество пакетов для получения (int или "infinity").
    -r <nb> --retry <nb>        счётчик повторных попыток (по умолчанию: 0).
    -c <cidr> --prefix <cidr>   подразделить диапазон с префиксом > cidr (по умолчанию: 24).
    -M <port> --message <port>  порт для прослушивания сообщений (по умолчанию: 57005).
    -P <nb> --process <nb>      максимальное количество одновременных процессов на узел (по умолчанию: 28232).
    -Q <nb> --queue <nb>        максимальное количество необработанных результатов в очереди (по умолчанию: infinity).
    -C <path> --config <path>   читать аргументы из файла, по одному в строке.
    -O <mode> --outmode <mode>  0: на ведущем, 1: на ведомом, >1: на брокере (по умолчанию: 0).
    -v <val> --verbose <val>    быть многословным (0 <= int <= 255).
    -K <opt> --socket <opt>     опция сокета, разделённая запятыми (key[:value]).
    -l --list-modules           список доступных модулей fp/out.
    -V --list-debug             список доступных опций отладки.
    -A --print-args             Вывести запись аргументов.
    -X --priv-ports             использовать только исходные порты от 1 до 1024.
    -N --nosafe                 продолжать, даже если некоторые ведомые не запустились.
    -w --www                    DNS будет пытаться для www.<domain>.
    -b --progress               показывать прогресс.
    -x --dryrun                 пробный прогон.

См. wiki для получения дополнительной информации.

Автономное использование

Scannerl можно использовать на локальном хосте без каких-либо других хостов. Однако он всё равно создаст ведомый узел на том же хосте, с которого запущен. Поэтому требования, описанные в Распределённая настройка, также должны быть выполнены.

Быстрый способ сделать это — убедиться, что ваш хост может разрешать сам себя с помощью

root@kitploit:~
grep -q "127.0.1.1\s*`hostname`" /etc/hosts || echo "127.0.1.1 `hostname`" | sudo tee -a /etc/hosts

и создать SSH-ключ (если его ещё нет) и добавить его в authorized_keys (нужен работающий SSH-сервер):

root@kitploit:~
cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

Следующий пример запускает захват HTTP-баннера на google.com с локального хоста

root@kitploit:~
./scannerl -m httpbg -d google.com

Распределённое использование

Для выполнения распределённого сканирования необходимо предварительно настроить хосты, которые будут использоваться scannerl для распределения работы. См. Распределённая настройка для получения дополнительной информации.

Scannerl ожидает список ведомых узлов для использования (задаётся ключами -s или -S).

root@kitploit:~
./scannerl -m httpbg -d google.com -s host1,host2,host3

Список доступных модулей

Scannerl выведет список доступных модулей (выходных модулей и модулей fingerprinting) с помощью ключа -l:

root@kitploit:~
$ ./scannerl -l

Доступные модули fingerprinting
================================

bacnet             UDP/47808: идентификация Bacnet
chargen            UDP/19: идентификация коэффициента усиления Chargen
fox                TCP/1911: идентификация FOX
httpbg             TCP/80: идентификация заголовка HTTP Server
                     - Arg1: [true|false] следовать перенаправлению [По умолчанию: false]
httpsbg            SSL/443: идентификация заголовка HTTPS Server
https_certif       SSL/443: сборщик сертификатов HTTPS
imap_certif        TCP/143: сборщик сертификатов IMAP STARTTLS
modbus             TCP/502: идентификация Modbus
mqtt               TCP/1883: идентификация MQTT
mqtts              TCP/8883: идентификация MQTT через SSL
mysql_greeting     TCP/3306: идентификация версии MySQL
pop3_certif        TCP/110: сборщик сертификатов POP3 STARTTLS
smtp_certif        TCP/25: сборщик сертификатов SMTP STARTTLS
ssh_host_key       TCP/22: сборщик ключей хоста SSH

Доступные выходные модули
========================

csv                вывод в csv
                     - Arg1: [true|false] сохранять всё [По умолчанию: true]
csvfile            вывод в csv-файл
                     - Arg1: [true|false] сохранять всё [По умолчанию: false]
                     - Arg2: Путь к файлу
file               вывод в файл
                     - Arg1: Путь к файлу
file_ip            вывод в stdout (только ip)
                     - Arg1: Путь к файлу
file_mini          вывод в файл (только ip и результат)
                     - Arg1: Путь к файлу
file_resultonly    вывод в файл (только результат)
                     - Arg1: Путь к файлу
stdout             вывод в stdout
stdout_ip          вывод в stdout (только IP)
stdout_mini        вывод в stdout (только ip и результат)

Аргументы модулей

Аргументы могут быть переданы модулям через двоеточие. Например, для выходного модуля file:

root@kitploit:~
./scannerl -m httpbg -d google.com -o file:/tmp/result

Формат результата

Результат, возвращаемый scannerl выходным модулям, имеет следующую форму:

root@kitploit:~
{module, target, port, result}

Где

  • module: используемый модуль (атом Erlang)
  • target: IP-адрес или имя хоста (строка или IPv4-адрес)
  • port: порт (целое число)
  • result: см. ниже

Часть result имеет форму:

root@kitploit:~
{{status, type},Value}

Где {status, type} — один из следующих кортежей:

  • {ok, result}: fingerprinting цели выполнен успешно
  • {error, up}: fingerprinting не удался, но цель ответила
  • {error, unknown}: fingerprinting не удался

Value — возвращаемое значение; это может быть атом или список элементов.

Расширение Scannerl

Scannerl спроектирован и реализован с учётом модульности. Добавлять в него новые модули легко:

  • Модуль fingerprinting: для запроса определённого протокола или службы. Например, модуль fp_httpbg.erl позволяет получить запись server в HTTP-ответе.
  • Выходной модуль: для вывода в определённую базу данных/файловую систему или вывода результата в определённом формате. Например, модули out_file.erl и out_stdout.erl позволяют выводить соответственно в файл или в stdout (поведение по умолчанию, если не указано иное).

Чтобы создать новые модули, просто следуйте поведению (fp_module.erl для модулей fingerprinting и out_behavior.erl для выходных модулей) и реализуйте свои модули.

Новые модули можно добавлять либо во время компиляции, либо динамически как внешний файл.

См. страницу wiki для получения дополнительной информации.

Участие

Не стесняйтесь открывать issue или PR.

Лицензия и авторские права

Copyright(c) 2017 Nagravision SA.

Эта программа является свободным программным обеспечением: вы можете распространять её и/или модифицировать на условиях Стандартной общественной лицензии GNU версии 3, опубликованной Free Software Foundation.

Эта программа распространяется в надежде, что она будет полезна, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ; даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕННОСТИ или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОЙ ЦЕЛИ. См. GNU General Public License для получения более подробной информации.

Вы должны были получить копию Стандартной общественной лицензии GNU вместе с этой программой. Если нет, см. http://www.gnu.org/licenses/.

Скачать инструмент