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

       

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


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

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

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


    Содержание раздела