Наконец-то! После до неприличия долгого отсутствия апдейтов (такого долгого, что никто уже и не надеялся) вышла новая версия одной из наиболее известных утилит для fingerprinting'а ОС — p0f! Теперь выяснить, какая ОС используется на удаленном хосте, можно еще с большей точностью. Утилита использует набор сложных, полностью пассивных механизмом fingerprinting-а (в отличие от Nmap, который использует активные алгоритмы) для определения "игроков", которые находятся на другой стороне TCP/IP подключения. Проще говоря, в результате работы не генерируется никакого трафика, который может тебя выдать. Это особенно важно, если на удаленной машине установлено более-менее толковое средство IDS (средство определения атак).
Основная задача p0f — определить версию ОС на удаленном хосте, в том числе на:
- машинах, которые присоединяются к тебе (так называемый SYN режим);
- машинах, к которым коннетишься ты (режим SYN+ACK);
- машине, с которой ты не можешь соединиться (режим RST+), из-за того, что файрвол реджектит подключения;
- машинах, за взаимодействием которых ты можешь наблюдать (исследования существующей сессии без необходимости какого-либо вмешательства с твоей стороны).
3-я версия, которая вышла на днях, имеет полностью переписанный код, обновленную базу сигнатур, новый IP, поддержку IPv6, модули для работы на уровне приложения (пока только HTTP).
Помимо этого утилита владеет несколькими другими полезными фокусами и в разной степени может дать ответ, используется ли в локалке NAT, активен ли файрвол или шейпер, а также рассчитать примерное "расстояние" до удаленного хоста и его аптайм. В результате p0f может рассказать об ОС на удаленном хосте, даже если она находится за файрволом, в то время как любимый Nmap остается не у дел. При этом, еще раз повторяю, утилита не генерирует какого-либо трафика. Никаких lookup’ов, загадочных пакетов, ARIN-запросов — ничего! Примерно вот так выглядит ее вывод:
.-[ 1.2.3.4/1524 -> 4.3.2.1/80 (syn) ]- | | client = 1.2.3.4 | os = Windows XP | dist = 8 | params = none | raw_sig = 4:120+8:0:1452:65535,0:mss,nop,nop,sok:df,id+:0 | `---- .-[ 1.2.3.4/1524 -> 4.3.2.1/80 (mtu) ]- | | client = 1.2.3.4 | link = DSL | raw_mtu = 1492 | `---- .-[ 1.2.3.4/1524 -> 4.3.2.1/80 (uptime) ]- | | client = 1.2.3.4 | uptime = 0 days 11 hrs 16 min (modulo 198 days) | raw_freq = 250.00 Hz | | `---- .-[ 1.2.3.4/1524 -> 4.3.2.1/80 (http request) ]- | | client = 1.2.3.4/1524 | app = Firefox 5.x or newer | lang = English | params = none | raw_sig = 1:Host,User-Agent,Accept=[text/html,application/xhtml+xml... | `----
P0f можно скомпилировать под Linux, *BSD, Mac OS X, и Windows (под Cygwin-ом). Кстати говоря, разработчики очень просят всячески пополнять базу отпечатков. Для этого достаточно перейти на страницу и, заполнив несколько полей о своей системе, добавить новую запись.