www.blackhat.kz

All about IT Security, and not only..

0×00000001 – Обзор p0f.Анализ сетевого трафика.

leave a comment »

Обзор p0f – Анализ сетевого трафика.
Определение версии операционной системы,железа путем пассивного анализа сетевого трафика.

1. Вступление.
2. Термины.
3. Описание p0f.
4. Зачем это нужно ?
5. Как это работает ?
6. Анализ.
7. Ссылки.

1. Вступление.

В данной статье, я хочу показать как можно путем анализа сетевого трафика определить версию ОС генерирующий трафик. Я буду использовать утилиту p0f v2 ( http://lcamtuf.coredump.cx/p0f.shtml ) – универсальный инструмент для пассивного анализа сетевого трафика. Более подробное описание и методы работы утилиты вы можете посмотреть на сайте. Расскажу коротко, программа может пассивно анализировать активный сетевой трафик в среде компьютерной сети, либо анализировать уже перехваченный снифером трафик, предварительно сохраненный в файле. Я буду использовать p0f на виртуальной машине с ОС FreeBSD 7.0. Программу легко можно поставить с портов «cd /usr/ports/net-mgmt/p0f & make install clean». В качестве устройств генерирующих трафик я буду использовать свою машину с установленной на ней Windows XP Sp2, эмулятор Cisco 3725 с IOS’ом версии 12.3(14)T7, и конечно же Allied.

+ Windows XP SP2 RUS – 10.1.10.31
+ Dynamips 0.2.7-RC1 + GNS3. ISO : 12.3(14)T7 – 10.1.10.32
+ Allied Telesyn AT-8724XL version 2.7.4-02 22-Aug-2005 – 10.0.103.2

2. Термины

Сетевой трафик – информация проходящая через сетевую среду. Происходит от слов «сеть» и «трафик». Словосочетание подразумевает движение «данных» в компьютерной сети.
Сниффер – программное или аппаратное обеспечение для перехвата сетевого трафика. Чаще всего снифферы работают совместно с «анализатором пакетов».
Анализатор пакетов – программное обеспечение для анализа «отловленных» пакетов с помощью сниффера.

3. Описание p0f.

Рассмотрим некоторые параметры запуска p0f.

[root@blackhat.kz /home/blackhat]# p0f -h
Usage: p0f [ -f file ] [ -i device ] [ -s file ] [ -o file ]
[ -w file ] [ -Q sock [ -0 ] ] [ -u user ] [ -FXVNDUKASCMROqtpvdlrx ]
[ -c size ] [ -T nn ] [ -e nn ] [ 'filter rule' ]
-f file – Читать сигнатуры пакетов из файла. По умолчанию p0f считывает сигнатуры из ./pof.fp или /etc/p0f/p0f.pf
Вы можете использовать свой файл с сигнатурами.
-i device – Использовать определенный интерфейс\устройство для прослушивания траффика
-s file – Считывать пакеты с файла, предварительно перехваченные с помощью tcpdump
-p – переключить интерфейс в режим прослушивания
-d – запустить как сервис
-x – показывать пакет полностью

‘Filter rule’ is an optional pcap-style BPF expression (man tcpdump). Правила для перехвата пакетов в стиле tcpdump ( смотрите map tcpdump )

4. Зачем это нужно ?

Данный метод может понадобится как нападающему, так и тому кто защищает сеть. Зачем она хакеру ? Например когда был получен доступ к маршрутизатору внутри корпоративной сети, необходимо установить какие версии ОС используются, при этом не провоцируя IDS и файрволлы. Т.е. как я сказал нам не надо генерировать трафик и провоцировать рабочие станции отсылать нам пакеты, мы просто будем «слушать».
5. Как это работает ?

Реализация стека протоколов Tcp\Ip у операционных систем реализованы по разному, основываясь на этом можно анализировать пакеты сформированные разными ОС, тем самым определять какая именно ОС генерировала и отправила пакет.

6. Анализ.

Перейдем от слов к делу, для начала нам нужно поставить p0f v2 на FreeBSD.:
+——————————————————————————————–+
[root@blackhat /usr/ports/net-mgmt/p0f]# uname -a
FreeBSD blackhat.kz 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Feb 24 19:59:52 UTC 2008 root@logan.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386

[root@blackhat /usr/ports/net-mgmt/p0f]# id
uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)

[root@blackhat /usr/ports/net-mgmt/p0f]# make install clean
[вырезан лог установки]
+——————————————————————————————–+
Теперь начнем с самого простого, запустим прослушивание интерфейса на FreeBSD. Затем начнем генерировать трафик с разных ОС и железок. Запустим на прослушивание интерфейс
+——————————————————————————————–+
; у нашего интерфейса le0 IP Адрес 10.1.10.26
[root@blackhat /home/blackhat]# ifconfig le0 | grep inet
inet 10.1.10.26 netmask 0xffffff00 broadcast 10.1.10.255
; Запускаем на прослушивание на интерфейса le0 с фильтром ‘порт SSH или telnet’.
[root@blackhat /home/blackhat]# p0f -i le0 ‘dst port ssh or telnet’ -X
p0f – passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>
p0f: listening (SYN) on ‘le0′, 262 sigs (14 generic, cksum 0F1F5CA2), rule: ‘dst port ssh or telnet’.
; Теперь попытаемся telnet’ом подключится к этой машине с Windows XP Sp2 :

C:\Documents and Settings\Администратор>telnet 10.1.10.26
Подключение к 10.1.10.26…Не удалось открыть подключение к этому узлу, на порт
23: Сбой подключения
; Тем временем p0f перехватив наш первый пакет с SYN флагом, определил что это windows XP SP1+, с этим справился,
10.1.10.31:5504 – Windows 2000 SP4, XP SP1+
-> 10.1.10.26:23 (distance 0, link: ethernet/modem)

; Сейчас попробуем «прителнетиться» с Cisco, который у нас на эмуляторе работает :

cisco.blackhat.kz#show ver | in IOS
Cisco IOS Software, 3700 Software (C3725-IPVOICE-M), Version 12.3(14)T7, RELEASE SOFTWARE (fc2)
cisco.blackhat.kz#telnet 10.1.10.26
Trying 10.1.10.26 …
% Connection refused by remote host

; на сниффере
10.1.10.32:13407 – Cisco 7200, Catalyst 3500, etc [tos 192]
-> 10.1.10.26:23 (distance 0, link: ethernet/modem)

; теперь попробуем с Allied’а

TELNET session now in ESTABLISHED state

AkimatBS login: blackhat
Password:

Manager AkimatBS> show sys

SysDescription
Allied Telesyn AT-8724XL version 2.7.4-02 22-Aug-2005

; на сниффере не удалось определить ОС\Оборудование :)
10.0.103.2:32604 – UNKNOWN [1024:62:0:44:M1004:.:?:?]
-> 10.1.10.26:23 (link: unknown-1044)

К сожалению p0f не смог определить ОС\Устройство. Попробуем добавить сигнатуру пакета в базу p0f :)

[root@blackhat /usr/ports/distfiles/p0f]# ls -al *.fp
-rw-r–r– 1 1001 1000 33188 Aug 6 03:54 p0f.fp <- SYN
-rw-r–r– 1 1001 1000 7604 Aug 6 03:52 p0fa.fp <- SYN+ACK
-rw-r–r– 1 1001 1000 2174 Aug 18 2006 p0fo.fp <- stray ACK
-rw-r–r– 1 1001 1000 8382 Mar 9 2006 p0fr.fp <- RST+

Нам не обходимо добавить в файл p0f.fp сигнатуру пакета с SYN флагом Allied’а.
Для этого открываем p0f.fp, ищем строчку Firewalls / routers и вносим туда нашу сигнатуру. Хочу заметить что p0f будет определять только пакеты с SYN флагом,
для того чтобы это работало и для SYN+ACK/RST+ надо будет обновить и другие базы :

1024:62:0:44:M1004:.:Allied Telesys:AT-8724XL version 2.7.4-02

Затем надо пересобрать p0f:
[root@blackhat /usr/ports/distfiles/p0f]# make install clean

И запустить на перехват

[root@blackhat ~]# p0f -i le0 ‘dst port ssh or telnet’ -X
p0f – passive os fingerprinting utility, version 2.0.8
(C) M. Zalewski <lcamtuf@dione.cc>, W. Stearns <wstearns@pobox.com>
p0f: listening (SYN) on ‘le0′, 262 sigs (14 generic, cksum 0F1F5CA2), rule: ‘dst port ssh or telnet’.
10.0.103.2:32608 – Allied Telesys AT-8724XL version 2.7.4-02 <- ну вот и все.
-> 10.1.10.26:23 (distance 0, link: unknown-1044)
+——————————————————————————————–+

Базы с сигнатурами tcp\ip стеков можно найти в интернете, адреса сайтов будут в разделе «ссылки. Теперь можно самим перехватывать трафик, анализировать и формировать свою базу сигнатур.
7. Ссылки

+ http://www.intuit.ru/department/security/issec/14/5.html – синтаксис tcpdump фильтра
+ http://lcamtuf.coredump.cx/p0f.shtml – официальный сайт p0f v2
+ http://ru.wikipedia.org/wiki/TCP/IP
+ http://www.blackhat.kz
+ http://www.ipflow.utc.fr/blog/ – Cisco 7200 Simulator

Написано blackhatkz

Август 6, 2008 в 9:59 дп

Опубликовано в analyze, network

Отмечено как , , , , ,

Ответить