Говорим о компактной утилите для сбора цифровых отпечатков. Её применяют для оценки безопасности ИТ-инфраструктуры. Обсудим возможности и альтернативы. За последний год выросло число атак на критическую инфраструктуру и сети компаний — по некоторым оценкам, на целых 32%. В то же время специалисты по ИБ предупреждают, что под угрозой взлома находятся 93% корпоративных сетей. В таком контексте бизнес все чаще проводит оценку безопасности систем — так называемые пентесты. Важная часть тестирования на проникновение — сбор данных о сети и инфраструктуре и операционных системах. Составить цифровой отпечаток (провести фингерпринтинг) можно несколькими способами — например, FIN-сканирование или исследование TCP-пакетов. Но большинство техник сводится к анализу подключения TCP/IP.  Такой анализ как раз позволяет провести утилита p0f. Она определит тип ОС на хостах в сети, покажет наличие балансировщика нагрузки, прокси или NAT, а также зафиксирует серверы, которые подделывают заголовки вроде User-Agent и X-Mailer. Но её главная особенность — она действует в пассивном режиме и не генерирует дополнительный трафик. Для анализа подключений p0f использует кастомные метрики. Среди них — данные заголовков IPv4 и IPv6, TCP-заголовки, особенности механизмов рукопожатия, содержимое нагрузок на уровне приложений. Также для стека TCP/IP инструмент изучает отпечаток SYN-пакета со стороны клиента и ответы SYN+ACK от сервера. В этом случае учитывают такие факторы, как последовательность опций TCP, соотношение между размером сегмента и окна, а также десяток других особенностей подключения (в т. ч. нулевые и ненулевые значения).  Чтобы точно идентифицировать операционную систему, p0f сравнивает полученный цифровой отпечаток с данными во встроенной базе сигнатур. Она представляет собой обыкновенный текстовый файл p0f.fp. Сама по себе утилита достаточно старая, но её используют несколько проектов — например, дистрибутив для создания межсетевого экрана pfsense, анализатор портов fwknop, файрвол OpenBSD и даже коммерческие инструменты. По отзывам, p0f может работать в условиях современной криптографии. Однако возраст все же сказывается — один из резидентов Hacker News говорит, что в работе утилиты встречаются ошибки. В целом это ожидаемо, так как её авторы прекратили поддержку. Хотя есть относительно свежая реализация p0f на Python — scapy-p0f. Что касается оригинала, то последнюю версию можно загрузить на официальном сайте. Задачи p0f может выполнять другая известная утилита nmap. Однако это инструмент активного фингерпринтинга, то есть он сам сканирует объекты в сети (порты и соответствующие им службы). Методы разнообразные — UDP, TCP, FTP-proxy, FIN, ACK, NULL-сканирование и другие. Инструмент существует достаточно давно, однако продолжает активно развиваться. Первое время с ним можно было работать исключительно из командной строки, позже к нему добавили графические интерфейсы. Последнее обновление вышло первого сентября, в день двадцатипятилетия утилиты. Разработки исправили ошибки, обновили библиотеки, повысили точность фингерпринтинга. О чем еще мы пишем в блоге VAS Experts: Нужен ли NAT в мире IPv6 Гибридное шифрование с открытым ключом — теперь в формате RFC Зачем заменять MikroTik на программный BRAS?