Пассивное исследование стека
Основные принципы пассивного исследования стека аналогичны концепциям, лежащим в основе его активного исследования. Однако в данном случае вместо передачи пакетов для определения используемой операционной системы взломщик осуществляет мониторинг сетевого трафика. Таким образом, наблюдая за сетевым трафиком между различными компьютерами, можно определить тип и версию удаленной операционной системы. Большие исследования в этой области были проведены Ланцом Спитзнером (Lance Spitzner). На их основе была написана книга, которую можно найти по адресу http://www.enteract.com/~lspitz/finger.html. Кроме того, по адресу http://www.subterrain.net/projects/siphon можно также найти утилиту siphon, предназначенную для пассивного исследования портов и идентификации операционной системы. Теперь познакомимся с тем, как же выполняется пассивное исследование стека.
Параметры, используемые для пассивного исследования стека
Для определения типа и версии операционной системы можно использовать самые разнообразные признаки. Однако сейчас мы ограничимся рассмотрением лишь нескольких атрибутов, связанных с сеансом сетевого взаимодействия с помощью протокола TCP/IP.
- атрибутов TTL (Time-to-Live – время жизни). Устанавливает ли операционная система значение TTL для исходящих пакетов?
- Windows Size (размер окна). Какой размер окна используется?
- DF (Don't Fragment – бит фрагментации). Устанавливается ли операционной системой признак DF?
- TOS (Type-of-Service – тип службы). Устанавливается ли операционной системой значение TOS. Если да, то какое?
Проанализировав каждый из атрибутов и сравнив полученные результаты со значениями из имеющейся базы данных, можно определить удаленную операционную систему. Поскольку этот метод не гарантирует получения правильного ответа на основе каждого из атрибутов в отдельности, для получения более надежных результатов атрибуты можно комбинировать. Именно такой подход и используется утилитой siphon.
Вот как работает описанный метод. Если с помощью утилиты telnet установить удаленное соединение между узлами 192.168.1.10 и 192.168.1.11, то с использованием утилиты siphon можно определить тип удаленной операционной системы.
[shadow]# telnet 192.168.1.11
С помощью нашей любимой утилиты snort можно частично просмотреть пакеты, передаваемые в процессе сетевого взаимодействия.
06/04-11:23:48.297976 192.168.1.11:23 › 192.168.1.10:2295 TCP TTL:255 TOS:OxO 10:58934 DF **S***A* Seq: OxD3B709A4 Ack: OxBE09B2B7 Win: 0x2798 TCP Options › NOP NOP TS: 9688775 9682347 NOP WS: 0 MSS: 1460
При этом видно, что упоминавшиеся выше атрибуты принимают следующие значения:
- TTL= 255
- Размер окна = 2798
- Бит DF = Yes A TOS = 0
Теперь обратимся к базе данных утилиты siphon – файлу osprints.conf:
[shadow]f grep – i Solaris osprints.conf # Window:TTL:DF:Operating System DF = 1 for ON, 0 for OFF. 2328:255:l:Solaris 2.6-2.7 2238:255:l:Solaris 2.6-2.7 2400:255:l:Solaris 2.6-2.7 2798:255:l:Solaris 2.6-2.7 FE88:255:l:Solaris 2.6-2.7 87CO:255:l:Solaris 2.6-2.7 FAFO:255:0:Solaris 2.6-2.7 FFFF:255:1:Solaris 2.6-2.7
Из приведенного фрагмента видно, что в четвертой записи содержатся те же значения, которые были получены с использованием утилиты snort. Таким образом, с помощью утилиты siphon можно точно определить исследуемую операционную систему.
[crush]# siphon -v -i xlO -о fingerprint.out Running on: 'crush' running FreeBSD 4.0-RELEASE on a(n) i386 Using Device: xlO Host Port. TTL DF Operating System 192.168.1.11 23 255 ON Solaris 2.6-2.7
Итак, в качестве удаленной была определена система Solaris 2.6. И это не вызвало особых проблем.
Пассивное исследование стека взломщик может использовать для выбора потенциальных жертв. Для этого достаточно понаблюдать за соответствующим Web-узлом и проанализировать сетевой трафик либо воспользоваться утилитой siphon. Несмотря на то что описанный метод является достаточно эффективным, он все же имеет некоторые ограничения. Во-первых, в приложениях, генерирующих свои собственные пакеты (например, шпар), не применяются те же признаки, что и самой операционной системой. Поэтому полученные результаты могут оказаться неточными. Во-вторых, на удаленном узле можно без проблем изменить атрибуты соединения.
Solaris: ndd – set /dev/ip ip_def_ttl 'число' Linux: echo 'число' > /proc/sys/net/ipv4/ip_default_ttl NT: HKEY_LOCAL_MACHINE\System\CurrentControlSet\ Services\Tcpip\Parameters
Контрмеры: защита от пассивного определения операционной системы
Для защиты от пассивного определения операционной системы можно использовать приемы, описанные в разделе "Контрмеры: Защита От Определения Операционной Системы".