OS Fingerprint как метод получения информации об ОС

OS Fingerprint как метод получения информации об ОС

Fingerprint OS — это метод получения информации об операционной системе. Fingerprint OS актуальна на начальном этапе атаки на хост. Так как злоумышленник может использовать информацию о типе операционной системы, чтобы спланировать, на какие известные уязвимости он будет воздействовать. Чем точнее злоумышленник определяет тип и версию операционной системы удаленного хоста, тем эффективнее его «взламывают». Администраторы используют всевозможные уловки, чтобы исключить точное определение своей операционной системы. Чтобы точно определить операционную систему, вам необходимо использовать комплексный подход, описанный в этом документе. Процесс определения самой операционной системы невозможно представить без описания методов сканирования. После применения создается отпечаток системы, и выбирается оответствие из базы данных ранее известных отпечатков. Существует два типа OS fingerprinting: активные и пассивные. Active Fingerprint OS — это определение типа операционной системы путем отправки пакетов на исследуемый хост.

OS Fingerprint как метод получения информации об ОС

Пассивный OSF — это определение типа операционной системы путем анализа пакетов, исходящих от хоста. Недостатком активного является то, что злоумышленник может быть легко замечен системой IDS, а преимущество состоит в том, что нет необходимости ждать, пока рассматриваемая система отправит пакет злоумышленнику, и злоумышленник сам отправит пакет в рассматриваемую систему в в любое удобное время. Недостатком пассивного обнаружения ОС является то, что предварительным условием для атаки является то, что хост злоумышленника находится на пути целевой системы или что целевая система обращается к хосту злоумышленника, и преимущество состоит в том, что такую атаку очень сложно заметить.

Как же применить метод OS Fingerprint для снятия отпечатка ОС?

Удаленное снятие отпечатков — это процесс идентификации операционной системы хоста и сетевых служб, которые прослушивают определенные сетевые порты. Обычно это делается различными способами: активным и пассивным сканированием, отправкой нескольких пакетов и анализом ответов. В целом, утилиты, включая nmap, хорошо сканируют и определяют версию удаленной операционной системы.Но в тех случаях, когда хост находится за межсетевым экраном, эти утилиты мало чем могут помочь, либо выдают неоднозначные или неверные результаты.

Это особенно верно для машин, трафик которых сильно фильтруется МСЭ и может отправлять и получать очень мало типов пакетов. В этих случаях необходимо использовать другие методы для правильного определения состояния удаленного компьютера. Мы рассмотрим некоторые из них, включая сканирование RING и сканирование ICMP. В первом разделе обсуждаются различные методы сканирования портов, а во второй части делается попытка пролить свет на снятие отпечатков ОС.

Классические методы OSF

Под классическими методами понимается сбор так называемых . Банером называется стандартное приглашение сервиса например: FTPd, HTTPd, SMTPd, telnetd, identd. И соответственно по ним определяется тип ОС. Рассмотрим более подробно.

Снятие отпечатка ОС

Снятия отпечатков систем за МСЭ усложняются тем фактом, что межсетевой экран может изменять пакеты TCP / IP, вводя в заблуждение исследователя системы. Методы снятия отпечатков операционной системы подразделяются на пассивные и активные.

Пассивное снятие отпечатка ОС

При пассивном сканировании OS Fingerprint как правило не применяется.Вместо этого используется промежуточный хост (компьютер-зомби) и пытается определить операционную систему целевого хоста, вычисляя разницу между значениями IPID. Этот метод известен как сканирование в режиме ожидания. Вы также можете попытаться определить целевую операционную систему, по-другому обращаясь к входящему и исходящему трафику целевого хоста. Не рассматривая эти методы, перейдем сразу к активному снятию отпечатка удаленной системы.

Активное снятие отпечатка ОС

При активном применении OS Fingerprint производится отправка произвольных пакетов на целевой хост и делается попытка определения ОС на основании таких значений полей заголовка ответных TCP/IP пакетов, как временные характеристики или IPID, TOS, TCP ISN, флаг фрагментации и т.д.

Еще один старый метод обнаружения удаленной ОС — анализ значения TTL эхо-пакета ICMP. Это простой метод, однако он не может определить различия между различными вариантами одной и той же ОС, такими как win98, XP и win2k. Обычно каждая ОС имеет фиксированное предопределенное значение TTL. В операционных системах Microsoft значение по умолчанию — 128, а в Linux — 256.

Ниже приведен пример определения удаленной ОС по значению TTL пакета эхо-ответа ICMP. Я просто пингую целевую машину и проверяю значение TTL пакета ответа. В данном случае это 113, что говорит о том, что удаленная ОС принадлежит к семейству Windows, поскольку начальный TTL этих систем равен 128, а маршрут от моей машины до пункта назначения составляет примерно 15 промежуточных хостов (113 + 15 = 128). , что можно проверить с помощью traceroute.

Нужно учитывать, что это не самый надежный метод. Если целевой хост является маршрутизатором или находится за NAT (Network Address Translation), описанный способ потерпит неудачу. Не вдаваясь в подробности известных методик снятия отпечатка удаленной ОС, используемых в утилитах типа nmap, я опишу способ, сложный в реализации, но дающий хорошие результаты по опознаванию удаленной ОС.

Этот метод известен как RING-сканирование и имеет программную реализацию. Суть методики заключается в отправке произвольных пакетов SYN на открытый порт и ожидании пакетов SYN ACK. После получения пакета SYN ACK он автоматически блокируется, что заставляет удаленный хост повторно отправить его по истечении тайм-аута. При вычислении задержки между этими пакетами SYN ACK для разных хостов вы можете собирать статистику задержки для разных операционных систем.

Эти данные можно эффективно использовать для опознавания ОС, имеющих сходный тип TCP стека и находящихся за МСЭ, например FreeBSD и Windows 2000, в которых используется одинаковый тип TCP стека. Я привожу пример, в котором nmap не смог верно определить ОС на двух хостах, ошибочно приняв обе за FreeBSD по той причине, что один из хостов находился за межсетевым экраном.

Исследование telnetd

Этот метод требует, чтобы на удаленном хосте был запущен демон telnetd и у нас была возможность установить с ним соединение (во многих случаях сейчас это проблема потому как все переходят на SSH, но на ОС wiondows тем не менее он только начал активно использоваться). Раньше системы сами сообщали о себе (это считалось хорошим тоном) например:

 HPUX

 login:

Но сейчас разработчики поняли свою ошибку и убрали эту фичу. Но остается  селедующий  метод — после установления соединения, мы выполняем функцию sysread() и собираем информацию о сессии telnet.

Пример такой информации:

      Linux <= 2.2.16 : яэ^Xяэ яэ#яэ'

Чтобы правильным образом интерпретировать полученную информацию от демона telnetd, нам необходимо порядок следования опций TELOPT (Telnet Option), которые определены в telnet.h. В каждой ОС,за некоторым исключением, определен свой собственный порядок следования этих опций. После того как мы получили «отпечаток» в ascii, мы должны сначала конвертировать эти данные в их числовые значения (1-255) и далее отдельно сравнить по порядку каждое значение с соответствующей опцией TELOPT.

Ascii : яэ^Xяэ

       "яэ#яэ'" Числовое значение: 255 253 24 255 253 32 255 253 35 255 253 39 Опц   

  или

       telnet : IAC DO TELOPT_TTYPE IAC DO TELOPT_LINEMODE IAC DO TELOPT_XDISPLOC

       \ IAC DO TELOPT_NEW_ENVIRON

Эти значения TELOPT можно посмотреть в /usr/include/arpa/telnet.h.

Исследование HTTPd

HTTP запрос:

    GET / HTTP/1.0

    HTTP/1.1 200 OK

    Date: Sat, 20 Jul 2002 20:38:04 GMT

    Server: Apache/1.3.22 (Win32)

    X-Powered-By: PHP/3.0.13

    Connection: close

    Content-Type: text/html

Отсюда видно, что удаленная система Windows потому как в поле Server — Web сервис возвращает не только тип и версию самого Web сервера, но и тип ОС.

В случае если удаленный отвечает, что тип Web сервера Microsoft-IIS то вероятнее всего, что там стоит ОС Windows NT/2000.

    # echo 'GET / HTTP/1.0\n' | nc victim.com 80 | egrep '^Server:'

    Server: Microsoft-IIS/4.0

Исследование FTPd

Приглашение FTP сервиса Обычно имеет значение именно само приглашение или же если открыт анонимный доступ то информация выдаваемая по

команде SYST.

    ---> SYST

    215 UNIX Type: L8 Version: BSD-199506

    Remote system type is UNIX.

    Using binary mode to transfer files.

Получив такой ответ можно предположить, что это FreeBSD. А если зайдя на FTP вы получите сообщение:

      220 target FTP server (Version wu-1.2(1) Mon Feb 30 18:04:42 EST 1995) ready.

То вероятнее всего это Linux потому как в большинстве Linux систем wu-ftpd входит в стандартную поставку. Иногда система сама о себе сообщает в заголовке:

      220 ftp29 FTP server (UNIX(r) System V Release 4.0) ready.

Даже если всетаки администратор не забывает изменить заголовок то информацию по прежнему можно получить по команде SYST:

      215 UNIX Type: L8 Version SUNOS

Идентификация по identd

Для  этого требуется чтобы был открыт 113 порт и установления соединения с демоном identd. Форма ответа определена в RFC 1413:

   The response is of the form <port-on-server>,<port-on-client>:<resp-type> : <add-info>

Пример ответа:

      >> XXX.XXX.XXX.XXX responded with pidentd 3.0.12 for Linux 2.2.12 (Dec 22 2000 17:00:25)

Отсюда сразу видно, что удаленная система Linux (в данном случае это Debian 2.2) с ядром версии 2.2.12. Бывает так, что это не указывается в явном виде — например:

      2.8.5  (Compiled:  11:18:59  Oct 23 2015)

OSF в таких случаях осуществляется по времени компиляции — для этого предварительно составляется база с OSF. Соответственно в данном случае это FreeBSD 4.2-STABLE.

Методы реализованные в сканере Nmap

Nmap реализует метод получения информации об операционной системе удаленного хоста путем поиска в стеке TCP / IP удаленного хоста. Nmap — отличный пример активного OSF.

Метод опроса стека TCP / IP удаленного хоста. Как правило, ответ сервера на любое удаленное действие (входящий пакет данных, запрос) — это пакет данных, отправленный источнику этого действия (здесь и далее термин «сервер» означает атакованный хост, а термин «хост» — хост злоумышленника) .

Как показывает практика, разные операционные системы по-разному реагируют на один и тот же запрос при работе в сети. Изучив характеристики реакций на запрос ОС, версии которых известны заранее, можно собрать определенную статистику, сравнив реакции на запрос с типом ОС.

Статистическая информация становится более подробной при использовании комбинированного влияния.
Более того, изучая реакцию сервера на неизвестную операционную систему, используя собранную статистику, можно определить не только тип, но и версию операционной системы, установленной на сервере. Например, можно точно отличить Solaris 2.4 от Solaris 2.50 или ядро ​​Linux версии 2.0.30 (для всех Linux версия ядра указана ниже) от Linux 2.0.35. Рассмотрим более подробно основные методы изучения серверной операционной системы.

P0f — passive OS fingerprinting tool

Утилита для определения типа операционной системы, путем пассивного прослушивания трафика (например, сниффинг web-запроса);

http://lcamtuf.coredump.cx/p0f.shtml

Hping

Hping описывается как утилита, которую можно эффективно использовать для сканирования, снятия отпечатков и тестирования межсетевых экранов. Среди наиболее полезных функций утилиты — возможность отправлять произвольные пакеты из различных протоколов и выполнять удаленное сканирование. Это очень полезно при изучении ответов хоста на различные произвольные пакеты.

 

 

Click to rate this post!
[Total: 0 Average: 0]

Leave a reply:

Your email address will not be published.