Fingerprint OS или определение ОС удаленного хоста

Fingerprint OS или определение ОС удаленного хоста

https://t.me/w2hack

Что такое Fingerprint OS

Fingerprint OS - метод получения информации об ОС. Fingerprint OS актуален на начальном этапе реализации атаки на хост. Так, как имея информацию о типе ОС атакующий может планировать на какие известные уязвимости он будет воздействовать. При этом, чем точнее атакующий определит тип и версию ОС удаленного хоста, тем эффективней будет выполнен его "взлом". Администраторы идут на всяческие ухищрения чтобы исключить точное определение своей ОС. И для того, чтобы точно определить  ОС приходится использовать комплексный подход - что собственно и описывается в этом документе. Сам процесс определения ОС нельзя представить не описав методы сканирования. После применения которых составляется отпечаток системы (fingerprint) по которому уже из базы заранее известных отпечатков выбирается соответствие. OS fingerprinting бывает двух видов - активный и пассивный. Активный Fingerprint OS - это определение типа ОС путем отсылки пакетов на исследуемый хост.

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

Как же определить версию ОС на удаленном хосте?

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

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

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

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

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

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

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

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

При активном снятии отпечатка производится отправка произвольных пакетов на целевой хост и делается попытка определения ОС на основании таких значений полей заголовка ответных TCP/IP пакетов, как временные характеристики или IPID, TOS, TCP ISN, флаг фрагментации и т.д. Другой старый метод определения удаленной ОС состоит в анализе значения TTL ICMP echo-пакета. Это простой способ, однако он не может выявить различия разных вариантов одной и той же ОС, например win98, XP и win2k. Обычно в каждой ОС установлено фиксированное, заранее определенное, значение TTL. В операционных системах Microsoft это значение по умолчанию равно 128, тогда как в Linux - 256. Ниже показан пример определения удаленной ОС по значению TTL ответного ICMP echo-пакета. Я просто пингую целевую машину и проверяю значение TTL полученного в ответ пакета. В данном случае оно равно 113, что позволяет предположить, что удаленная ОС принадлежит к семейству Windows, так как стартовое значение TTL этих систем равно 128, а маршрут от моей машины до целевой составляет примерно 15 промежуточных хостов (113 + 15 = 128), что может быть проверено с помощью traceroute.

Нужно учитывать, что это не самый надежный метод. Если целевой хост является маршрутизатором или находится за NAT (Network Address Translation), описанный способ потерпит неудачу. Не вдаваясь в подробности известных методик снятия отпечатка удаленной ОС, используемых в утилитах типа nmap, я опишу способ, сложный в реализации, но дающий хорошие результаты по опознаванию удаленной ОС. Этот способ известен как RING scan и имеет программную реализацию. Суть методики в отправке произвольных 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 kernelversion 2.0.30 ( для всех Linux далее указывается версия ядра) отLinux  2.0.35.  Рассмотрим  более  подробно  основные методы исследования ОС сервера.

P0f - passive OS fingerprinting tool

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

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

Hping

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

Report Page