naabu

Reconnaissance v2.6.1 · 05.05.2026 активный

Быстрый и надёжный сканер портов от ProjectDiscovery, написанный на Go. Использует SYN/CONNECT-сканирование с поддержкой NMAP-интеграции для определения сервисов. Оптимизирован для массового сканирования: легко справляется с тысячами хостов, поддерживает IPv6, CDN-исключения и вывод в форматах JSON/CSV.

v2.6.1
05.05.2026 current
Добавлен 02.07.2026 · Обновлён 02.07.2026 · Reconnaissance
Установка
go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest
# Базовое использование
naabu -host example.com -p 80,443,8080
naabu -list hosts.txt -p - -o output.txt
переведено ИИ

naabu

ВозможностиУстановкаИспользованиеЗапуск naabuКонфигурацияИнтеграция с NMAPИсключение CDN/WAFDiscord

Naabu — это инструмент для сканирования портов, написанный на языке Go, который позволяет быстро и надежно перечислить валидные порты для хостов. Это очень простой инструмент, который выполняет быстрые SYN/CONNECT/UDP-сканирования на хосте/списке хостов и перечисляет все порты, которые вернули ответ.

Возможности

naabu

  • Быстрое и простое сканирование на основе SYN/CONNECT/UDP-зондов
  • Оптимизирован для удобства использования и лёгкости на ресурсах
  • Сканирование DNS-портов
  • Автоматическая дедупликация IP для сканирования DNS-портов
  • Сканирование портов IPv4/IPv6 (экспериментально)
  • Пассивное перечисление портов с использованием Shodan Internetdb
  • Сканирование обнаружения хостов (экспериментально)
  • Интеграция с NMAP для обнаружения служб
  • Пользовательские UDP-полезные нагрузки для CONNECT-сканирований
  • Нативные UDP-зонды служб на основе nmap-service-probes
  • Поддержка множественного ввода - STDIN/HOST/IP/CIDR/ASN
  • Поддержка множественного формата вывода - JSON/TXT/STDOUT

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

naabu -h

Эта команда покажет справку по инструменту. Ниже приведены все поддерживаемые им ключи.

Использование:
  naabu [ключи]

Ключи:
ВВОД:
   -host string[]              хосты для сканирования портов (через запятую)
   -list, -l string            список хостов для сканирования портов (файл)
   -exclude-hosts, -eh string  хосты, которые нужно исключить из сканирования (через запятую)
   -exclude-file, -ef string   список хостов для исключения из сканирования (файл)

ПОРТЫ:
   -port, -p string            порты для сканирования (80,443, 100-200)
   -top-ports, -tp string      количество наиболее распространенных портов для сканирования (по умолчанию 100) [full,100,1000]
   -exclude-ports, -ep string  порты для исключения из сканирования (через запятую)
   -ports-file, -pf string     список портов для сканирования (файл)
   -port-threshold, -pts int   пороговое значение порта для пропуска сканирования хоста
   -exclude-cdn, -ec           пропускать полное сканирование портов для CDN/WAF (сканировать только порты 80,443)
   -display-cdn, -cdn          отображать используемый CDN

ОГРАНИЧЕНИЕ СКОРОСТИ:
   -c int     общее количество рабочих потоков (по умолчанию 25)
   -rate int  количество пакетов для отправки в секунду (по умолчанию 1000)

ОБНОВЛЕНИЕ:
   -up, -update                 обновить naabu до последней версии
   -duc, -disable-update-check  отключить автоматическую проверку обновлений naabu

ВЫВОД:
   -o, -output string  файл для записи результатов (необязательно)
   -j, -json           записывать результаты в формате строк JSON
   -csv                записывать результаты в формате csv

ОБНАРУЖЕНИЕ СЕРВИСОВ:
   -sD, -service-discovery           определять сервисы по номеру порта
   -sV, -service-version             определять версии сервисов с помощью nmap-service-probes
   -sV-fast                          проверять только сервисы, указанные для портов (быстрее, пропускает резервный вариант)
   -sV-timeout duration              время ожидания для проверки версий сервисов (по умолчанию 5с)
   -sV-workers int                   количество параллельных потоков проверки версий сервисов (по умолчанию 25)
   -sV-probes string                 пользовательский путь к файлу nmap-service-probes (если пусто, определяется автоматически из локальной установки nmap)
   -uP, -udp-probes                  отправлять специфические для протокола данные при UDP-сканировании с помощью nmap-service-probes

КОНФИГУРАЦИЯ:
   -config string                   путь к файлу конфигурации naabu (по умолчанию $HOME/.config/naabu/config.yaml)
   -scan-all-ips, -sa               сканировать все IP-адреса, связанные с записью DNS
   -ip-version, -iv string[]        версия IP для сканирования имени хоста (4,6) - (по умолчанию 4,6) (по умолчанию ["4","6"])
   -scan-type, -s string            тип сканирования портов (SYN/CONNECT) (по умолчанию "c")
   -source-ip string                исходный IP-адрес и порт (x.x.x.x:yyy - может не работать в OSX)
   -cp, -connect-payload string    данные для отправки в сканированиях CONNECT (необязательно)
   -interface-list, -il             вывести доступные интерфейсы и публичный IP
   -interface, -i string            сетевой интерфейс для использования при сканировании портов
   -nmap                            вызвать nmap для целевого сканирования (nmap должен быть установлен) - Устарело
   -nmap-cli string                 команда nmap для выполнения над найденными результатами (пример: -nmap-cli 'nmap -sV')
   -r string                        список пользовательских резолверов для разрешения DNS (через запятую или из файла)
   -proxy string                    прокси socks5 (ip[:port] / fqdn[:port]
   -proxy-auth string               аутентификация прокси socks5 (имя_пользователя:пароль)
   -dns-order string                порядок разрешения DNS (p/l/lp/pl) (по умолчанию "l")
   -sr, -system-resolver            использовать системный DNS в качестве резервного резолвера
   -resume                          возобновить сканирование с помощью resume.cfg
   -stream                          режим потока (отключает возобновление, nmap, проверку, повторные попытки, перемешивание и т.д.)
   -passive                         отображать пассивно открытые порты с помощью api shodan internetdb (автоматически включает режим потока)
   -irt, -input-read-timeout value  время ожидания при чтении ввода (по умолчанию 3м0с)
   -no-stdin                        Отключить обработку Stdin

ОБНАРУЖЕНИЕ ХОСТОВ:
   -sn, -host-discovery           Выполнить только обнаружение хостов
   -show-dead                     показывать хосты, которые не ответили на обнаружение хостов (требует включенного обнаружения хостов)
   -Pn, -skip-host-discovery      Пропустить обнаружение хостов (Устарело: используйте -wn/-with-host-discovery)
   -wn, -with-host-discovery      Включить обнаружение хостов
   -ps, -probe-tcp-syn string[]   TCP SYN Ping (требуется включенного обнаружения хостов)
   -pa, -probe-tcp-ack string[]   TCP ACK Ping (требуется включенного обнаружения хостов)
   -pe, -probe-icmp-echo          ICMP echo request Ping (требуется включенного обнаружения хостов)
   -pp, -probe-icmp-timestamp     ICMP timestamp request Ping (требуется включенного обнаружения хостов)
   -pm, -probe-icmp-address-mask  ICMP address mask request Ping (требуется включенного обнаружения хостов)
   -arp, -arp-ping                ARP ping (требуется включенного обнаружения хостов)
   -nd, -nd-ping                  Обнаружение соседей IPv6 (требуется включенного обнаружения хостов)
   -rev-ptr                       Обратный запрос PTR для входных IP-адресов

ОПТИМИЗАЦИЯ:
   -retries int                    количество повторных попыток для сканирования портов (по умолчанию 3)
   -timeout int                    миллисекунды до истечения времени ожидания (по умолчанию 1000)
   -warm-up-time int               время в секундах между этапами сканирования (по умолчанию 2)
   -ping                           проверка пингом для подтверждения хоста
   -verify                         повторно проверять порты с помощью верификации TCP
   -ss, -smart-scan                прогнозное сканирование портов с использованием модели корреляции портов (несовместимо с режимом потока)
   -pt, -prediction-threshold int  минимальная достоверность для прогнозов портов (0-100%) (по умолчанию 20)

ОТЛАДКА:
   -health-check, -hc        выполнить диагностическую проверку
   -debug                    отображать отладочную информацию
   -verbose, -v              отображать подробный вывод
   -no-color, -nc            отключить цвета в выводе CLI
   -silent                   отображать только результаты в выводе
   -version                  отображать версию naabu
   -stats                    отображать статистику запущенного сканирования (устарело)
   -si, -stats-interval int  количество секунд между обновлениями статистики (устарело) (по умолчанию 5)
   -mp, -metrics-port int    порт для предоставления метрик naabu (по умолчанию 63636)

ОБЛАКО:
   -auth                           настроить API-ключ projectdiscovery cloud (pdcp) (по умолчанию true)
   -ac, -auth-config string        настроить файл учетных данных API-ключа projectdiscovery cloud (pdcp)
   -pd, -dashboard                 загрузить / просмотреть результаты в интерфейсе projectdiscovery cloud (pdcp) в облаке
   -tid, -team-id string           загрузить результаты активов в указанную команду (необязательно)
   -aid, -asset-id string          загрузить новые активы в существующий идентификатор актива (необязательно)
   -aname, -asset-name string      задать имя группы активов (необязательно)
   -pdu, -dashboard-upload string  загрузить файл вывода naabu (jsonl) в интерфейс projectdiscovery cloud (pdcp) в облаке

Инструкции по установке

Скачайте готовый к запуску бинарный файл / docker-образ или установите с помощью GO

Предварительные требования

Примечание: перед установкой naabu убедитесь, что установлена библиотека libpcap для захвата пакетов.

Для установки libpcap в Linux: sudo apt install -y libpcap-dev, в Mac: brew install libpcap, в Windows: установите Npcap

Установка Naabu

go install -v github.com/projectdiscovery/naabu/v2/cmd/naabu@latest

Запуск Naabu

Чтобы запустить инструмент на целевом хосте, просто используйте следующую команду.

naabu -host hackerone.com

Это запустит инструмент для сканирования hackerone.com. Существует ряд параметров конфигурации, которые можно передать вместе с этой командой. Параметр подробного вывода -v можно использовать для отображения расширенной информации.

naabu -host hackerone.com

                  __
  ___  ___  ___ _/ /  __ __
 / _ \/ _ \/ _ \/ _ \/ // /
/_//_/\_,_/\_,_/_.__/\_,_/ v2.0.3

    projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
[INF] Running SYN scan with root privileges
[INF] Found 4 ports on host hackerone.com (104.16.100.52)

hackerone.com:80
hackerone.com:443
hackerone.com:8443
hackerone.com:8080

Порты для сканирования на хосте можно указать через параметр -p (порты UDP должны быть выражены как u:порт). Он принимает порты в формате nmap и выполняет перечисление для них.

naabu -p 80,443,21-23,u:53 -host hackerone.com

Для UDP-сканирований можно указать пользовательскую полезную нагрузку для отправки, используя флаг -cp или --connect-payload. Это особенно полезно для UDP-служб, которые требуют специфических данных для ответа:

naabu -p u:53 -host example.com -cp "DNS query payload"

По умолчанию Naabu проверяет Топ-100 портов nmap. Он поддерживает следующие встроенные списки портов -

Флаг Описание
-top-ports 100 Сканировать 100 лучших портов nmap
-top-ports 1000 Сканировать 1000 лучших портов nmap
-p - Сканировать все порты с 1 по 65535

Также можно указать конкретные порты, которые вы хотели бы исключить из сканирования.

naabu -p - -exclude-ports 80,443

Чтобы запустить naabu для списка хостов, можно использовать опцию -list.

naabu -list hosts.txt

Чтобы запустить naabu для ASN (номера автономной системы), можно использовать ASN в качестве входных данных. Он берет IP-адреса, доступные для указанного ASN, и выполняет их перечисление.

echo AS14421 | naabu -p 80,443

216.101.17.249:80
216.101.17.249:443
216.101.17.248:443
216.101.17.252:443
216.101.17.251:80
216.101.17.251:443
216.101.17.250:443
216.101.17.250:80

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

naabu -host 104.16.99.52 -json

{"ip":"104.16.99.52","port":443}
{"ip":"104.16.99.52","port":80}

Обнаруженные порты также можно передать в другие инструменты. Например, вы можете передать порты, обнаруженные naabu, в httpx, который затем найдет запущенные HTTP-серверы на хосте.

echo hackerone.com | naabu -silent | httpx -silent

http://hackerone.com:8443
http://hackerone.com:443
http://hackerone.com:8080
http://hackerone.com:80

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

IPv4 и IPv6

Naabu поддерживает как IPv4, так и IPv6, и оба протокола включены по умолчанию. Если используется IPv6, подключение должно быть настроено корректно, а сетевой интерфейс должен иметь назначенный IPv6-адрес (inet6) и шлюз по умолчанию.

echo hackerone.com | naabu -p 80 -silent

104.16.99.52:80
104.16.100.52:80
2606:4700::6810:6434:80
2606:4700::6810:6334:80

Опция -ip-version 6 заставляет инструмент использовать только IPv6-адреса при разрешении имен доменов.

echo hackerone.com | ./naabu -p 80 -ip-version 6

                  __
  ___  ___  ___ _/ /  __ __
 / _ \/ _ \/ _ \/ _ \/ // /
/_//_/\_,_/\_,_/_.__/\_,_/ v2.0.8

      projectdiscovery.io

Use with caution. You are responsible for your actions
Developers assume no liability and are not responsible for any misuse or damage.
[INF] Running CONNECT scan with non root privileges
[INF] Found 1 ports on host hackerone.com (2606:4700::6810:6334)
hackerone.com:80

Для сканирования всех IP-адресов обеих версий можно использовать флаг -scan-all-ips.

echo hackerone.com | ./naabu -sa -p 80 -silent

[INF] Found 1 ports on host hackerone.com (104.16.100.52)
hackerone.com:80
[INF] Found 1 ports on host hackerone.com (104.16.99.52)
hackerone.com:80
[INF] Found 1 ports on host hackerone.com (2606:4700::6810:6334)
hackerone.com:80
[INF] Found 1 ports on host hackerone.com (2606:4700::6810:6434)
hackerone.com:80

Обнаружение хостов

Naabu опционально поддерживает несколько вариантов для выполнения обнаружения хостов. Обнаружение хостов не является обязательным и может быть включено с помощью флага -wn. Флаг -sn указывает инструменту выполнять только обнаружение хостов.

Доступные варианты для обнаружения хостов:

  • ARP-пинг (-arp)
  • TCP SYN-пинг (-ps 80)
  • TCP ACK-пинг (-pa 443)
  • ICMP echo-пинг (-pe)
  • ICMP timestamp-пинг (-pp)
  • ICMP address mask-пинг (-pm)
  • Neighbor Discovery IPv6 (-nd)

Файл конфигурации

Naabu поддерживает файл конфигурации, который по умолчанию находится в $HOME/.config/naabu/config.yaml. Он позволяет вам определить любой флаг в файле конфигурации и установить значения по умолчанию для включения во все сканирования.

Интеграция с Nmap

Мы интегрировали поддержку nmap для обнаружения служб или любых дополнительных сканирований, поддерживаемых nmap, для результатов, найденных Naabu. Убедитесь, что nmap установлен, чтобы использовать эту функцию.

Для использования можно применить флаг nmap-cli, за которым следует команда nmap, например:-

echo hackerone.com | naabu -nmap-cli 'nmap -sV -oX nmap-output'
                  __       
  ___  ___  ___ _/ /  __ __
 / _ \/ _ \/ _ \/ _ \/ // /
/_//_/\_,_/\_,_/_.__/\_,_/ v2.0.0        

    projectdiscovery.io

[WRN] Use with caution. You are responsible for your actions
[WRN] Developers assume no liability and are not responsible for any misuse or damage.
[INF] Running TCP/ICMP/SYN scan with root privileges
[INF] Found 4 ports on host hackerone.com (104.16.99.52)

hackerone.com:443
hackerone.com:80
hackerone.com:8443
hackerone.com:8080

[INF] Running nmap command: nmap -sV -p 80,8443,8080,443 104.16.99.52

Starting Nmap 7.01 ( https://nmap.org ) at 2020-09-23 05:02 UTC
Nmap scan report for 104.16.99.52
Host is up (0.0021s latency).
PORT     STATE SERVICE       VERSION
80/tcp   open  http          cloudflare
443/tcp  open  ssl/https     cloudflare
8080/tcp open  http-proxy    cloudflare
8443/tcp open  ssl/https-alt cloudflare

Определение версии служб

Naabu имеет встроенное определение версий служб с использованием базы данных служебных зондов nmap. Это выполняется параллельно со сканированием портов для максимальной производительности.

naabu -host scanme.sh -sV
scanme.sh:22 [ssh OpenSSH/6.6.1p1]
scanme.sh:80 [http Apache httpd/2.4.7]
scanme.sh:9929 [nping-echo Nping echo]

[INF] Found 3 ports on host scanme.sh (45.33.32.156) with 3 services identified

Доступные флаги:

Флаг Описание
-sV Включить определение версий служб
-sV-fast Опрашивать только службы, подсказанные портом (быстрее, пропускает резервные зонды)
-sV-timeout duration Тайм-аут для служебных зондов (по умолчанию 5с)
-sV-workers int Количество параллельных процессов определения версий служб (по умолчанию 25)
-sV-probes string Пользовательский путь к файлу nmap-service-probes (автоматически определяется из локальной установки nmap, если пусто)
-sD Обнаружение служб (сопоставление номера порта с именем службы, без активного опроса)

Флаг -sV требует наличия файла базы данных nmap-service-probes. naabu не включает эту базу данных (она лицензирована под копилефт-лицензией Nmap Public Source License, которая несовместима с лицензией MIT naabu), поэтому он читает файл из локальной установки nmap, автоматически ища в стандартных путях установки nmap. Чтобы использовать пользовательский файл, укажите путь с помощью -sV-probes.

Служебные зонды UDP

Службы UDP обычно молчат при получении пустого дейтаграмма, поэтому слепое сканирование UDP-портов пропускает большинство из них. С флагом -uP (-udp-probes) naabu выбирает специфичную для протокола полезную нагрузку из базы данных nmap-service-probes для каждого сканируемого UDP-порта (DNS-запрос для 53, NTP-запрос для 123, SNMPv1 GetRequest для 161 и т.д.), чтобы реальные службы имели что-то, на что можно ответить, и naabu мог сообщить об их статусе как открытых.

naabu -host scanme.sh -p u:53,u:123,u:161 -uP

Примечания:

  • -uP требует явного включения и работает по принципу нарастания. Когда он отключен (по умолчанию), UDP-сканирование сохраняет историческое поведение с нулевой длиной дейтаграмма.
  • Выбранный зонд — это совпадение с наивысшим приоритетом (наименьшей редкостью) для целевого порта; если для порта не зарегистрирован ни один зонд, сканирование возвращается к использованию пустого дейтаграмма.
  • Пользовательская полезная нагрузка, заданная через -cp, всегда имеет приоритет над автоматическим зондом для данного порта.
  • -uP использует ту же базу данных зондов, что и -sV, поэтому их можно комбинировать без повторной стоимости разбора. Файл зондов автоматически определяется из локальной установки nmap; используйте -sV-probes, чтобы указать на пользовательский файл. Если база данных не найдена, -uP выдает предупреждение и молча отключается.

Исключение CDN/WAF

Naabu также поддерживает исключение IP-адресов CDN/WAF из портового сканирования. При использовании этой функции для таких IP-адресов сканируются только порты 80 и 443. Эта функция включается флагом exclude-cdn.

В настоящее время для исключений поддерживаются IP-адреса cloudflare, akamai, incapsula и sucuri.

Статус сканирования

Naabu предоставляет информацию о сканировании в формате JSON на локальном порту, привязанном к localhost, по адресу http://localhost:63636/metrics (порт можно изменить с помощью флага -metrics-port)

Использование naabu в качестве библиотеки

Следующая пример программы сканирует порт 80 на scanme.sh. Результаты возвращаются через обратный вызов OnResult:

package main

import (
    "log"

    "context"
    "github.com/projectdiscovery/goflags"
    "github.com/projectdiscovery/naabu/v2/pkg/result"
    "github.com/projectdiscovery/naabu/v2/pkg/runner"
)

func main() {
    options := runner.Options{
        Host:      goflags.StringSlice{"scanme.sh"},
        ScanType: "s",
        OnResult: func(hr *result.HostResult) {
            log.Println(hr.Host, hr.Ports)
        },
        Ports: "80",
    }

    naabuRunner, err := runner.NewRunner(&options)
    if err != nil {
        log.Fatal(err)
    }
    defer naabuRunner.Close()

    naabuRunner.RunEnumeration(context.Background())
}

OnResult вызывается один раз после завершения сканирования с агрегированными результатами. Чтобы обрабатывать результаты в реальном времени по мере обнаружения портов, используйте OnReceive. Опция Stream только управляет асинхронной загрузкой целей — она не влияет на то, когда срабатывают обратные вызовы.

Примечания

  • Naabu позволяет выполнять произвольные бинарные файлы как функцию для поддержки интеграции с nmap.
  • Naabu разработан для сканирования портов на нескольких хостах / массового сканирования портов.
  • По умолчанию naabu настроен с предположением, что вы запускаете его из VPS.
  • Мы рекомендуем настраивать флаги / скорость, если вы запускаете naabu с локальной системы.
  • Для получения наилучших результатов запускайте naabu от имени пользователя root.

Naabu создан с 🖤 командой projectdiscovery. Сообщество внесло свой вклад в развитие проекта.

Подробную информацию смотрите в файле Thanks.md.

Комментарии
Войдите, чтобы оставить комментарий