p0f

Описание p0f

P0f — это инструмент, который использует массив сложных, исключительно пассивных механизмов снятия отпечатков трафика для идентификации игроков стоящих за любым случайным TCP/IP соединением (иногда достаточно единичного нормального SYN) без какого бы то ни было вмешательства. Версия 3 полностью переписана, включает значительное число усовершенствований для снятия отпечатков на уровне сети и представляет возможность сделать вывод о полезной нагрузке уровня приложений (например, HTTP).

Некоторые из возможностей p0f:

  • Высокая масштабируемость и крайне высокая идентификация операционной системы и программного обеспечения на обоих концах ванильного TCP соединения — особенно при настройках, когда зондирования NMap заблокированы, слишком медленны, ненадёжны или просто поднимут тревогу.
  • Измерение аптайма системы и сетевой машины, дистанцию (включая топологию за NAT или пакетными фильтрами), используемых настроек языка и т.д.
  • Автоматическое выявление общих соединений / NAT, балансировок нагрузки и настроек прокси уровня приложения.
  • Обнаружение клиентов и серверов, которые подделывают декларативные утверждения, такие как X-Mailer или User-Agent.

Инструмент может работать в фоне как демон и предлагать в реальном времени простой API для сторонних компонентов, которые желают получить дополнительную информацию об интересующих акторах.

Популярное использование p0f включает разведку во время тестов на проникновение; регулярный мониторинг сети; выявление неавторизованных сетевых соединений в корпоративном окружении; обеспечение сигналов для инструментов по предотвращению нарушений; дополнение в наборе криминалистической экспертизе.

Домашняя страница: http://lcamtuf.coredump.cx/p0f3/

Автор: Michal Zalewski

Лицензия: LGPL-2

Справка по p0f

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

p0f [ ...опции... ] [ 'правила фильтра' ]

Опции сетевого интерфейса:

-i интерфейс - прослушивать заданный сетевой интерфейс

-r файл - прочитать оффлайн pcap данные из данного файла

-p - перевести прослушиваемый сетевой интерфейс в неразборчивый режим

-L - список доступных интерфейсов

Операционная настройка и настройки вывода:

-f файл - прочитать базу данных отпечатков пальцев из 'файла' (p0f.fp)

-o файл - записать информацию в данный лог файл

-s имя - отвечать на запросы API на именованный сокет unix

-u пользователь - переключиться на заданный непривилегированный аккаунт и chroot

-d - ответвиться в фон (требует -o или -s)

Опции производительности:

-S лимит - лимит числа параллельных API соединений (20)

-t c,h - установить лимит возраста соединений / кэша хоста (30 секунд,120 минут)

-m c,h - ограничить число активных соединений / хостов (1000,10000)

В командной строке могут быть заданы опциональные выражения фильтра (man tcpdump) для предотвращения попадания случайного сетевого трафика в p0f.

Руководство по p0f

Страница man отсутствует.

Примеры запуска p0f

использовать интерфейс eth0 (-i eth0) в неразборчивом режиме (-p), иохранить результаты в файл (-o /tmp/p0f.log):

root@WebWare:~# p0f -i eth0 -p -o /tmp/p0f.log
--- p0f 3.07b by Michal Zalewski <lcamtuf@coredump.cx> ---

[+] Closed 1 file descriptor.
[+] Loaded 320 signatures from 'p0f.fp'.
[+] Intercepting traffic on interface 'eth0'.
[+] Default packet filtering configured [+VLAN].
[+] Log file '/tmp/p0f.log' opened for writing.
[+] Entered main event loop.

.-[ 192.168.1.34/63369 -> 211.36.85.142/80 (syn) ]-
|
| client   = 192.168.1.34/63369
| os       = Windows NT kernel 5.x
| dist     = 0
| params   = generic
| raw_sig  = 4:128+0:0:1460:65535,8:mss,nop,ws,nop,nop,sok:df,id+:0
|
`----

.-[ 192.168.1.34/63369 -> 211.36.85.142/80 (mtu) ]-
|
| client   = 192.168.1.34/63369
| link     = Ethernet or modem
| raw_mtu  = 1500
|
`----

.-[ 192.168.1.34/63369 -> 211.36.85.142/80 (syn+ack) ]-
|
| server   = 211.36.85.142/80
| os       = ???
| dist     = 8
| params   = none
| raw_sig  = 4:247+8:0:1460:8190,0:mss:df,id+:0
|
`----

.-[ 192.168.1.34/63369 -> 211.36.85.142/80 (mtu) ]-
|
| server   = 211.36.85.142/80
| link     = Ethernet or modem
| raw_mtu  = 1500
|
`----

.-[ 192.168.1.34/63369 -> 211.36.85.142/80 (http request) ]-
|
| client   = 192.168.1.34/63369
| app      = MSIE 8 or newer
| lang     = none
| params   = none
| raw_sig  = 1:Accept=[*/*],Content-Type=[text/xml],Accept-Encoding=[gzip, deflate],
User-Agent,Host,Connection=[Keep-Alive]:Accept-Language,Accept-Charset,Keep-Alive:Mozilla/4.0 
(compatible; MSIE 7.0; Windows NT 6.3; WOW64; Trident/8.0; .NET4.0C; .NET4.0E; .NET CLR 2.0.50727; .NET CLR 3.0.30729; .NET CLR 3.5.30729)
|
`----

.-[ 192.168.1.34/63369 -> 211.36.85.142/80 (http response) ]-
|
| server   = 211.36.85.142/80
| app      = ???
| lang     = none
| params   = none
| raw_sig  = 1:?Cache-Control,Content-Type,Server,X-AspNet-Version=[4.0.30319],X-Powered-By=[ASP.NET],
Date,?Content-Length,Connection=[keep-alive]:Keep-Alive,Accept-Ranges:Microsoft-IIS/7.5
|
`----

.-[ 192.168.1.34/63370 -> 211.36.85.142/80 (syn) ]-
|
| client   = 192.168.1.34/63370
| os       = Windows NT kernel 5.x
| dist     = 0
| params   = generic
| raw_sig  = 4:128+0:0:1460:65535,8:mss,nop,ws,nop,nop,sok:df,id+:0
|
`----

.-[ 192.168.1.34/63370 -> 211.36.85.142/80 (mtu) ]-
|
| client   = 192.168.1.34/63370
| link     = Ethernet or modem
| raw_mtu  = 1500
|
`----

.-[ 192.168.1.34/63370 -> 211.36.85.142/80 (syn+ack) ]-
|
| server   = 211.36.85.142/80
| os       = ???
| dist     = 8
| params   = none
| raw_sig  = 4:247+8:0:1460:8190,0:mss:df,id+:0
|
`----

.-[ 192.168.1.34/63370 -> 211.36.85.142/80 (mtu) ]-
|
| server   = 211.36.85.142/80
| link     = Ethernet or modem
| raw_mtu  = 1500
|
`----

.-[ 192.168.1.34/63370 -> 211.36.85.142/80 (http request) ]-
|
| client   = 192.168.1.34/63370
| app      = ???
| lang     = none
| params   = none
| raw_sig  = 1:Content-Type=[application/x-www-form-urlencoded],User-Agent,
Host,Connection=[Close]:Accept,Accept-Encoding,Accept-Language,Accept-Charset,
Keep-Alive:SvrHandler::DownloadFileInternal
|
`----

.-[ 192.168.1.34/63370 -> 211.36.85.142/80 (http response) ]-
|
| server   = 211.36.85.142/80
| app      = ???
| lang     = none
| params   = none
| raw_sig  = 1:?Content-Length,Content-Type,?ETag,Server,?Last-Modified,
Connection=[close],Date:Keep-Alive,Accept-Ranges:Microsoft-IIS/7.5
|
`----

.............................
.............................
.............................

Установка p0f

Программа предустановлена в Kali Linux.

Установка в Debian, Ubuntu, Mint

Установка зависимостей

sudo apt-get install libpcap-dev

Скачиваем последнюю версию, распаковываем архив, переходим в каталог с архивом и запускаем сборку:

wget http://lcamtuf.coredump.cx/p0f3/releases/p0f-latest.tgz
tar xvzf p0f-latest.tgz
cd p0f*
./build.sh

Запускать программу нужно с правами рута

sudo ./p0f

Информация об установке в другие операционные системы будет добавлена позже.

Скриншоты p0f

Это утилита командной строки.

Инструкции по p0f

Ссылки на инструкции будут добавлены позже.