
Smap v1.0.0-beta
замена Nmap «как есть» на основе shodan.io
альтернатива nmap на базе shodan.io

Smap — это пассивный сканер портов, построенный на бесплатном API shodan.io. Он принимает те же аргументы командной строки, что и Nmap, и выдаёт тот же вывод, что делает его готовой заменой Nmap.
Возможности
- Сканирует 200 хостов в секунду
- Не требует аккаунта или API-ключа
- Обнаружение уязвимостей
- Поддерживает выходные форматы nmap
- Определение сервисов и их версий
- Не устанавливает соединение с целями в пассивном режиме
- Опциональное ускорение nmap с использованием портов, сообщённых Shodan
Установка
Бинарные файлы
Вы можете скачать готовый бинарный файл здесь и использовать его сразу.
Вручную
go install -v github.com/s0md3v/smap/cmd/smap@latest
Запутались или что-то не работает? Более подробные инструкции — здесь
Пакет AUR
Smap доступен в AUR как smap-git (сборка из исходников) и smap-bin (готовый бинарный файл).
Homebrew/Mac
Smap также доступен в Homebrew.
brew update
brew install smap
Использование
Smap принимает те же аргументы, что и Nmap, но параметры, отличные от -p, -h, -V, -o*, -iL, --concurrency и --append-output, в пассивном режиме игнорируются. Используйте --nmap, чтобы передать параметры Nmap для реального сканирования после пассивного обнаружения портов. Если вы не знакомы с Nmap, вот как использовать Smap.
Указание целей
smap 127.0.0.1 127.0.0.2
Вы также можете использовать список целей, разделённых переводами строк.
smap -iL targets.txt
Поддерживаемые форматы
1.1.1.1 // IPv4 address
example.com // hostname
178.23.56.0/8 // CIDR
1.1.1.1-20 // IPv4 range
Вывод
Smap поддерживает 7 форматов вывода, которые можно использовать с -o* следующим образом:
smap example.com -oX output.xml
Если вы хотите вывести результат в терминал, используйте дефис (-) в качестве имени файла.
Поддерживаемые форматы
oX // nmap's xml format
oG // nmap's greppable format
oN // nmap's default format
oA // output in all 3 formats above at once
oP // IP:PORT pairs separated by newlines
oS // custom smap format
oJ // json
Примечание: поскольку Nmap не сканирует и не отображает уязвимости и теги, эти данные недоступны в форматах nmap. Используйте
-oS, чтобы просмотреть эту информацию.
Указание портов
По умолчанию Smap сканирует эти ~4000 портов. Если вы хотите отобразить результаты для определённых портов, используйте параметр -p.
smap -p21-30,80,443 -iL targets.txt
Ускорение Nmap
Используйте --nmap, чтобы сузить область сканирования с помощью вашего локального nmap. Smap сначала собирает объединение портов, сообщённых Shodan, а затем один раз запускает Nmap против исходных целей с уменьшенным диапазоном портов.
smap --nmap -Pn -sV --version-light 1.1.1.1
За исключением --nmap и --concurrency, переданные аргументы передаются Nmap. Smap заменяет диапазон портов кандидатами Shodan; если вы укажете -p, он сначала ограничивает кандидатов этим диапазоном. Nmap сам обрабатывает сканирование и вывод, поэтому его параметры и форматы вывода работают как обычно. Операции только с хостами, такие как -sL и -sn, выполняются без пассивного обнаружения портов.
Собственные форматы вывода Smap — это функции пассивного режима; при использовании --nmap параметры вывода имеют обычные значения Nmap. Если Shodan не сообщает ни одного кандидатного порта, Nmap не запускается.
Это может сэкономить время, если пассивных данных достаточно для вашего сценария использования.
Управление параллелизмом
По умолчанию Smap использует 3 рабочих потока, чтобы не слишком нагружать Shodan. Вы можете изменить это с помощью --concurrency.
smap --concurrency 5 -iL targets.txt
Рекомендации
Поскольку Smap просто получает существующие данные о портах с shodan.io, он очень быстр, но это ещё не всё. Вам стоит использовать Smap, если:
Вы хотите
- обнаружение уязвимостей
- сверхбыстрый сканер портов
- отсутствие соединений с целями
Вы готовы к тому, что
- нет возможности сканировать IPv6-адреса
- результаты могут быть устаревшими до 7 дней
- в пассивном режиме возможно редкое ненадёжное определение программного обеспечения
Примечание: если вы используете
--nmap, Smap запуститnmapпротив цели и установит активные соединения. Поскольку данные Shodan могут быть устаревшими или неполными, использование их в качестве фильтра портов может пропустить открытые порты.
