Иллюстрированный самоучитель по защите в Интернет

Пассивное исследование стека

Основные принципы пассивного исследования стека аналогичны концепциям, лежащим в основе его активного исследования. Однако в данном случае вместо передачи пакетов для определения используемой операционной системы взломщик осуществляет мониторинг сетевого трафика. Таким образом, наблюдая за сетевым трафиком между различными компьютерами, можно определить тип и версию удаленной операционной системы. Большие исследования в этой области были проведены Ланцом Спитзнером (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

Контрмеры: защита от пассивного определения операционной системы

Для защиты от пассивного определения операционной системы можно использовать приемы, описанные в разделе "Контрмеры: Защита От Определения Операционной Системы".

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.