Говорим о компактной утилите для сбора цифровых отпечатков. Её применяют для оценки безопасности ИТ-инфраструктуры. Обсудим возможности и альтернативы.
Знай свое окружение
За последний год выросло число атак на критическую инфраструктуру и сети компаний — по некоторым оценкам, на целых 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: