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

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

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

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

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

Категории

Все категории
Loading categories
fingerprintx — Автономная утилита для обнаружения сервисов на открытых портах! | Kitploit
Инструменты/GitHubGitHub/praetorian-inc/fingerprintx
РазведкаКартирование сетиСканирование портовСбор информацииУтилиты и фреймворкиArchived
GitHubpraetorian-inc/fingerprintx

fingerprintx

Автономная утилита для обнаружения сервисов на открытых портах!

Репозиторий
758787 месяцев назадПроверено Kitploit

Популярное

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

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

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

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

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

fingerprintx

Возможности • Установка • Использование • Запуск fingerprintx • Использование в качестве библиотеки • Почему не nmap? • Примечания • Благодарности

fingerprintx — это утилита, аналогичная httpx, которая также поддерживает снятие отпечатков таких сервисов, как RDP, SSH, MySQL, PostgreSQL, Kafka и т.д. fingerprintx можно использовать вместе со сканерами портов, такими как Naabu, для распознавания набора портов, обнаруженных в ходе сканирования. Например, инженер может захотеть просканировать диапазон IP-адресов, а затем быстро распознать сервис, работающий на всех обнаруженных портах.

Возможности

  • Быстрое распознавание открытых сервисов
  • Обнаружение сервисов на уровне приложений
  • Хорошо сочетается с другими инструментами командной строки
  • Автоматический сбор метаданных из обнаруженных сервисов

https://user-images.githubusercontent.com/69640071/193334167-8405dd50-f9bf-4386-b7b8-83255af41a8b.mov

Пример работы fingerprintx

Пример цепочки fingerprintx

Пример SMB fingerprintx

Поддерживаемые протоколы:

51 плагин определения сервисов, поддерживающих протоколы TCP и UDP:

Примечательные особенности:

  • Векторные базы данных: ChromaDB, Milvus, Pinecone
  • Реляционные базы данных: PostgreSQL, MySQL, MSSQL, OracleDB, DB2, Sybase, Firebird
  • NoSQL базы данных: MongoDB, CouchDB, Cassandra, Redis, Elasticsearch, InfluxDB, Neo4j
  • Инструменты разработчика: JDWP (Java Debug Wire Protocol), Java RMI
  • Промышленные протоколы: Modbus, IPMI
  • Обмен сообщениями: Kafka, MQTT, SMTP
  • Удалённый доступ: SSH, RDP, Telnet, VNC
  • Передача файлов: FTP, SMB, Rsync
  • Телеком/AAA: Diameter (сети 3GPP, LTE/5G), SMPP (SMS-шлюзы)

Установка

Из GitHub

root@kitploit:~
go install github.com/praetorian-inc/fingerprintx/cmd/fingerprintx@latest

Из исходного кода (go версии > 1.18)

root@kitploit:~
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx

# с go версией > 1.18
$ go build ./cmd/fingerprintx
$ ./fingerprintx -h

Docker

root@kitploit:~
$ git clone [email protected]:praetorian-inc/fingerprintx.git
$ cd fingerprintx

# сборка
docker build -t fingerprintx .

# и запуск
docker run --rm fingerprintx -h
docker run --rm fingerprintx -t praetorian.com:80 --json

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

root@kitploit:~
fingerprintx -h

Опция -h отображает все поддерживаемые флаги для fingerprintx.

root@kitploit:~
Использование:
  fingerprintx [flags]
ОПРЕДЕЛЕНИЕ ЦЕЛИ:
	Требуется указать хост и номер порта или IP и номер порта. Порт считается открытым.
	HOST:PORT или IP:PORT
ПРИМЕРЫ:
	fingerprintx -t praetorian.com:80
	fingerprintx -l input-file.txt
	fingerprintx --json -t praetorian.com:80,127.0.0.1:8000

Флаги:
      --csv               формат вывода в csv
  -f, --fast              быстрый режим
  -h, --help              справка для fingerprintx
      --json              формат вывода в json
  -l, --list string       входной файл со списком целей
  -o, --output string     выходной файл
  -t, --targets strings   цель или список целей через запятую
  -w, --timeout int       таймаут (миллисекунды) (по умолчанию 500)
  -U, --udp               запускать UDP-плагины
  -v, --verbose           подробный режим

Режим fast (быстрый) будет пытаться распознать только сервис по умолчанию, связанный с данным портом для каждой цели. Например, если на вход подаётся praetorian.com:8443, будет запущен только плагин https. Если https не запущен на praetorian.com:8443, вывода НЕ будет. Зачем это нужно? Это быстрый способ распознать большинство сервисов в большом списке хостов (в духе правила 80/20).

Запуск Fingerprintx

С одной целью:

root@kitploit:~
$ fingerprintx -t 127.0.0.1:8000
http://127.0.0.1:8000

По умолчанию вывод имеет вид: SERVICE://HOST:PORT. Чтобы получить более подробный вывод сервиса, укажите JSON с помощью флага --json:

root@kitploit:~
$ fingerprintx -t 127.0.0.1:8000 --json
{"ip":"127.0.0.1","port":8000,"service":"http","transport":"tcp","metadata":{"responseHeaders":{"Content-Length":["1154"],"Content-Type":["text/html; charset=utf-8"],"Date":["Mon, 19 Sep 2022 18:23:18 GMT"],"Server":["SimpleHTTP/0.6 Python/3.10.6"]},"status":"200 OK","statusCode":200,"version":"SimpleHTTP/0.6 Python/3.10.6"}}

Передача вывода из другой программы (например, naabu):

root@kitploit:~
$ naabu 127.0.0.1 -silent 2>/dev/null | fingerprintx
http://127.0.0.1:8000
ftp://127.0.0.1:21

Запуск с входным файлом:

root@kitploit:~
$ cat input.txt | fingerprintx
http://praetorian.com:80
telnet://telehack.com:23

# или, если предпочитаете
$ fingerprintx -l input.txt
http://praetorian.com:80
telnet://telehack.com:23

С более подробным выводом метаданных:

root@kitploit:~
$ cat input.txt | fingerprintx --json
{"host":"praetorian.com","ip":"146.148.61.165","port":80,"service":"http","transport":"tcp","metadata":{"responseHeaders":{"Connection":["keep-alive"],"Content-Type":["text/html"],"Date":["Mon, 19 Sep 2022 18:37:55 GMT"],"Etag":["W/\"5e3e263f-1703\""],"Keep-Alive":["timeout=20"],"Server":["nginx"],"Vary":["Accept-Encoding"]},"status":"404 Not Found","statusCode":404,"version":"nginx"}}
{"host":"telehack.com","ip":"64.13.139.230","port":23,"service":"telnet","transport":"tcp","metadata":{"serverData":"fffb03"}}

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

fingerprintx можно импортировать в ваш проект для сканирования сервисов на открытых портах. Пример кода, как это можно сделать, приведён здесь, в папке examples. Соберите с помощью go build scan.go. Ещё один файл, который может пригодиться в качестве справки при импорте fingerprintx в ваш проект, — это запускатор командной строки.

Почему не nmap?

Nmap — стандарт для сетевого сканирования. Зачем использовать fingerprintx вместо nmap? Две основные причины:

  • fingerprintx работает умнее, а не усерднее: первый плагин, запускаемый против сервера с открытым портом 8080, — это плагин http. Подход со службой по умолчанию сокращает время сканирования в лучшем случае. В большинстве случаев сервисы, работающие на портах 80, 443, 22, — это http, https и ssh, поэтому fingerprintx проверяет их в первую очередь.
  • fingerprintx поддерживает вывод в формате JSON с помощью флага --json. Nmap поддерживает множество вариантов вывода (нормальный, xml, grep), но их часто сложно парсить и должным образом обрабатывать в скриптах. fingerprintx поддерживает вывод JSON, что упрощает интеграцию с другими инструментами в конвейерах обработки.

Примечания

  • Зачем у вас есть папка third_party, которая импортирует библиотеки криптографии Go?
    • Хороший вопрос! Модуль распознавания ssh определяет различные криптографические опции, поддерживаемые сервером при сборе метаданных во время рукопожатия. При этом используются несколько неэкспортируемых функций, поэтому библиотеки криптографии Go включены сюда с файлом export.go.
  • Fingerprintx не предназначен для определения открытых портов на целевых системах и предполагает, что каждое target:port на входе открыто. Если ни один из портов не открыт, вывода не будет, так как на целях нет запущенных сервисов.
  • Как это соотносится с zgrab2?
    • Использование командной строки (и сценарий использования) zgrab2 несколько отличается от fingerprintx. Для zgrab2 протокол необходимо указать заранее: echo praetorian.com | zgrab2 http -p 8000, что предполагает, что вы уже знаете, что там запущено. Для fingerprintx это не так: echo praetorian.com:8000 | fingerprintx. Подход к сканированию протоколов "прикладного уровня" очень похож.

Благодарности

fingerprintx — результат работы многих людей, включая нашу замечательную группу стажёров 2022 года. Вот список участников на данный момент:

  • [Soham Roy]praetorian-sohamroy
  • [Jue Huang] (https://github.com/jue-huang)
  • [Henry Jung] (https://github.com/henryjung64)
  • [Tristan Wiesepape][qwetboy10] (https://github.com/qwetboy10)
  • [Joseph Henry][jwhenry28] (https://github.com/jwhenry28)
  • [Noah Tutt][noahtutt] (https://github.com/noahtutt)
  • [Nathan Sportsman][nsportsman] (https://github.com/nsportsman)
Скачать инструмент
СЕРВИСТРАНСПОРТ
CassandraTCP
ChromaDBTCP
CouchDBTCP
DB2TCP
DHCPUDP
DiameterTCP
DNSTCP/UDP
EchoTCP
ElasticsearchTCP
FirebirdTCP
FTPTCP
HTTP/HTTPSTCP
IMAPTCP
InfluxDBTCP
IPMITCP
IPSECUDP
Java RMITCP
JDWPTCP
KafkaTCP
LDAPTCP
Linux RPCTCP
MemcachedTCP
MilvusTCP
ModbusTCP
MongoDBTCP
MQTTTCP
MSSQLTCP
MySQLTCP
Neo4jTCP
NetBIOS-NSUDP
NTPUDP
OpenVPNUDP
OracleDBTCP
PineconeTCP
POP3TCP
PostgreSQLTCP
RDPTCP
RedisTCP
RsyncTCP
RTSPTCP
SMBTCP
SMPPTCP
SMTPTCP
SNMPUDP
SNPPTCP
SSHTCP
STUNUDP
SybaseTCP
TelnetTCP
VNCTCP