Инструментальные средства обеспечения безопасности

       

Реализация


Одна из причин, по которой nmap так широко используется, состоит в том, что он предоставляет много приемов для сканирования. Вы можете сканировать работающие хосты на предмет наличия TCP-портов, UDP-портов и любых других IP-протоколов. Поскольку мы подробно говорим о том, как nmap обеспечивает сканирование по протоколу TCP, вам понадобятся некоторые знания о том, как осуществляется TCP-соединение. В таблице 6.1 представлены описания наиболее общих флагов, которые могут быть использованы в процессе TCP-соединения.

Когда для определенного порта создано TCP-соединение, клиент посылает TCP-пакет с установленным флагом SYN для инициализации соединения. Если сервер прослушивает этот порт, он посылает пакет с установленными флагами SYN и ACK, подтверждая клиентский запрос на соединение, одновременно запрашивая установление обратного соединения. Затем клиент может послать пакет с установленным флагом ACK, подтверждая запрос SYN от сервера. Такой способ известен как трехходовое установление связи TCP. Когда одна из сторон выполнит передачу другой, она может послать пакет FIN. Другая сторона должна подтвердить этот пакет FIN и послать свое собственное сообщение FIN, ожидая от другой стороны подтверждения того, что соединение действительно закрыто. Для экстренного прерывания соединения любая из сторон может передать пакет с флагом RST. Простое TCP-взаимодействие между клиентом и сервером представлено ниже.

  1. Клиент посылает серверу сообщение SYN: "Я запрашиваю соединения".
  2. Сервер посылает SYN/ACK-клиенту: "Okay; мне необходимо соединение с тобой".
  3. Клиент посылает сообщение ACK-серверу: "Okay".
  4. Клиент и сервер посылают информацию вперед-назад, подтверждая каждую передачу сигналом ACK. Если одна из сторон посылает сообщение RST, соединение прерывается немедленно.
  5. Клиент желает завершить взаимодействие; клиент посылает серверу сообщение FIN: "Goodbye".
  6. Сервер посылает сообщение ACK-клиенту (подтверждая получение сообщения FIN). Затем сервер посылает собственное сообщение FIN: "Okay.

    NetScanTools представляет собой приятный графический интерфейс к большому количеству свободно-доступных утилит командной строки, которые были описаны в лекции "Системные средства с открытым программным кодом: основы": Ping, Traceroute, Finger, whois/fwhois и другие им подобные. Он также взаимодействует с несколькими вышедшими из употребления службами типа echo, daytime, quote и chargen, которые не слишком широко распространены в сети Internet. Многие из экранных закладок интерфейса NetScanTools, такие как TimeSync, Database Tests, WinSock Info, NetBios Info и IDENT Server, используются для просмотра информации или управления сервисами на хосте, где выполняется программа. Вдобавок, программа может запускать telnet-, FTP- и HTTP-приложения. Программа представляет собой централизованное средство для получения информации о сети и управления сканированием.

    Три наиболее используемые возможности сосредоточены на закладках NetScanner, Port Probe и TCP Term. Закладка NetScanner (см. рис. 6.3) может использоваться для сканирования интервала IP-адресов работающих хостов, аналогично запуску nmap -sP. Введите начальное и конечное значения IP-адресов и нажмите кнопку Start. NetScan проведет тестирование заданных вами хостов с использованием Ping, DNS-запросов и некоторых дополнительных whois-запросов. NetScan дает возможность сохранить полученную информацию в текстовый файл или обновить HOSTS-файл на вашей машине с использованием полученной информации.


    Рис. 6.3.  Закладка NetScan

    Закладка Port Probe (см. рис. 6.4) представляет собой раздел NetScan для сканирования портов. Вы можете определить один хост или интервал хостов для сканирования, а также интервал портов и время сканирования. Результаты сканирования отображаются в виде дерева. Реагирующие порты помечены зеленым цветом, а зеленый символ "d" обозначает, что в процессе сканирования от порта удалось получить некоторые данные. Дважды щелкнув мышью на помеченном зеленым символом "d" порте, вы можете увидеть полученные данные.


    Внешний вид пользовательского интерфейса SuperScan (см. рис. 6.6) похож на интерфейс закладки NetScanTools. У программы нет таких дополнительных возможностей, как у NetScanTools, и они ограничены установкой TCP-сеанса, но имеются основные средства, требующиеся для сканирования.

    Поиск имен хостов. В этом сеансе вы можете осуществлять поиск имен хостов и IP-адресов. Также вы можете получить информацию о своей системе и имеющихся сетевых интерфейсах.


    Рис. 6.6.  Заставка SuperScan

    Конфигурация. Этот раздел дает возможность настроить список портов для SuperScan. По умолчанию SuperScan может сканировать все порты, отмеченные в этом списке. Список портов сохраняется в файле с названием scanner.lst, но вы можете задать несколько списков для сканирования с различными целями. Например, программа поставляется с файлом trojans.lst, с помощью которого вы можете сканировать порты, чтобы определить, есть ли где-то в вашей сети машины, у которых порты прослушиваются каким-либо из известных "троянских коней".

    Вы можете добавить порты в список, изменить порт и имя службы, выбрать порты для сканирования и изменить вспомогательные приложения, которые будут использоваться для получения дополнительной информации от FTP, Telnet, HTTP и других служб, как это показано на рис. 6.7.

    Добавить порт в список просто. Чтобы добавить порт для службы FTP, которую мы обнаружили на порту 2121, вводим число 2121 в поле ввода Port. Если мы хотим, чтобы порт стал частью программы сканирования в текущем листе сканирования, мы должны поставить отметку в поле Selected и ввести описание протокола в поле Description - что-то вроде "возможно, кривой FTP-сервер". Определяя программу и параметры для этого порта, мы можем установить для него "вспомогательное приложение". Как только этот порт появится в результатах сканирования, мы можем запустить это вспомогательное приложение для соединения с ним, щелкнув правой кнопкой мыши и выбрав параметр Custom. Для FTP-сервера такой программой может быть системный ftp-клиент (такой как C:\Windows\FTP.exe), и параметры могут включать любые аргументы командной строки вспомогательного приложения.


    Параметры IpEye похожи на аналогичные параметры сканеров портов, которые мы уже рассматривали. Вы можете увеличить промежуток времени между последовательными запросами и изменить исходящий IP-адрес и порт (также поддерживается не слишком удачная функция маскировки).


    Чтобы сравнить программу с другими сканерами портов, можно запустить сканирование по сценарию, который уже выполнялся в этой лекции: SYN-сканирование IP-адреса 192.168.1.100 по интервалу портов от 20 до 80. Работа программы и вывод информации представлены ниже.


    IpEye дает сводную информацию о своей деятельности. Программа обнаружила открытые FTP-, SSH-, Telnet- и Web-порты и выводит эту информацию в таблице на консоль. У программы нет параметров, обеспечивающих удобный вывод информации, но есть возможность работать скрытно. В системном журнале машины 192.168.1.100 нет никаких следов. У IpEye также есть возможность задать исходящие IP-адреса и порты с использованием параметров -sip и -sp. Для лучшей маскировки от деятельности IDS имеется параметр -d, позволяющий пользователю осуществлять задержку между последовательными сканированиями портов. По умолчанию значение задержки равно 750 миллисекундам.




    FScan - наиболее предпочтительный из всех бесплатных сканеров, работающих под управлением Windows, поскольку он обеспечивает возможность UDP-сканирования. Как и для любого UDP-сканера, пакетные фильтры, работающие на сканируемом хосте, могут аккуратно перехватывать результаты вашей работы. Если вы не получаете ожидаемого результата при работе с открытым UDP-портом, то весьма вероятно, что брандмауэр или сетевой фильтр заблокировал ICMP-сообщения "port unreachable", которые большинство UDP-сканеров используют для определения, открыт UDP-порт или нет.

    На следующей иллюстрации представлены результаты UDP-сканирования портов от 130 до 140 для поиска NetBios-служб машины, на которой не установлены фильтры. Вы можете видеть, что по адресу 192.168.1.102 работает служба NetBIOS (UDP-порты 137 и 138).


    В остальном FScan похож на nmap и другие сканеры, которые уже упоминались. Вы можете использовать параметр -b для запроса заголовков или получения ответа от портов, с которыми вы соединились, как это показано на следующей иллюстрации.


    Это сканирование не так успешно, как проведенное с использованием SuperScan, поскольку невозможно запросить заголовок HTTPD. Это происходит потому, что у нас нет способа задать пробный текст для FScan. Он может послать только возврат каретки и перевод строки и отобразить ответ сервера.

    Примечание. Некоторые Web-серверы не требуют получения команды HTTP GET для передачи информации. Web-сервер, работающий на маршрутизаторе Linksys EtherFast Cable/DSL, может вернуть HTTP-информацию просто в ответ на отправку символов "возврат каретки" и "перевод строки".

    Вы можете использовать флаги -c, -d и -t для управления временными параметрами. Можете задать IP-адреса в виде интервала или разделенного запятыми списка (например, 192.168.1.1,192.168.1.100-192.168.1.102), а также значения портов (-p 21-23,80 или -u 137-138,514). Ниже приведен список аргументов командной строки FScan, взятый непосредственно из файла README.



    FScan [-abefhqnv?] [-cditz <n>] [-flo <file>] [-pu <n>[,<n>-<n>]] IP[,IP-IP]

    -?/-h - shows this help text -a - append to output file (used in conjunction with -o option) -b - get port banners -c - timeout for connection attempts (ms) -d - delay between scans (ms) -e - resolve IP addresses to hostnames -f - read IPs from file (compatible with output from -o) -i - bind to given local port -l - port list file - enclose name in quotes if it contains spaces -n - no port scanning - only pinging (unless you use -q) -o - output file - enclose name in quotes if it contains spaces -p - TCP port(s) to scan (a comma separated list of ports/ranges) -q - quiet mode, do not ping host before scan -r - randomize port order -t - timeout for pings (ms) -u - UDP port(s) to scan (a comma separated list of ports/ranges) -v - verbose mode -z - maximum simultaneous threads to use for scanning




    Одно из замечательных свойств WUPS - удобный графический интерфейс, показанный на рис. 6.9. Как и с другими UDP-сканерами, фильтры пакетов, перехватывающие сообщения "port unreachable", могут вернуть ложную положительную информацию для сканирования. Другой недостаток WUPS - возможность одновременно обрабатывать только один IP-адрес. На рис. 6.9 мы представляем процесс сканирования портов от 1 до 1024 по адресу 192.168.1.102 с задержкой по времени 100 миллисекунд. Видно, что по адресу 192.168.1.102 отзывается Windows-машина, поскольку на портах 137 и 138 выполняется NetBIOS, а на порту 445 SMB поверх IP-протокола, также являющийся службой Microsoft.


    Рис. 6.9.  Примерный интерфейс WUPS




    Использование Udp_scan очень просто; введите IP-адрес и интервал портов и запустите на выполнение.

    # ./udp_scan 192.168.1.102 1-1024 37:netbios-ns: 138:netbios-dgm: 445:UNKNOWN: 500:UNKNOWN

    Udp_scan использует изощренную технику оптимизации сканирования. Сначала (по умолчанию) он посылает UDP-пакет по адресу 1 порта UDP сканируемого хоста. Затем он ожидает получения сообщения "ICMP port unreachable error". Если оно не приходит, он делает вывод о том, что хост не работает (если только брандмауэр не блокировал передачу этого сообщения), и не продолжает сканирование этого хоста. Сканирование 1-го порта UDP можно изменить, воспользовавшись опцией -p port. Тестируемый порт всегда должен быть портом UDP, который не будет использоваться каким-либо сервисом на сканируемом хосте.

    Совет. Иногда udp_scan не может должным образом обнаружить неработающий хост. Если IP-адреса исследуемых хостов расположены в вашей собственной сети, а MAC-адреса отсутствуют в вашем ARP-буфере, udp_scan может исчерпать время ожидания, отведенное для получения ответа в процессе широковещательного ARP-запроса. Udp_scan может зависнуть и ничего не сообщить о том, что данный хост выключен.

    Udp_scan аккуратно отслеживает свою деятельность в сети при сканировании. По умолчанию он может открыть до 100 одновременных UDP-соединений (вы можете изменить эту верхнюю цифру, используя флаг -l <max_connections> в командной строке). Он использует анализ времени возврата своих пакетов, определенных в начальной фазе тестирования, чтобы вычислить максимальное количество одновременно выполняемых тестов, которое возможно в данной сети. Каждый UDP-пакет, посланный udp_scan, содержит только один байт данных (символ "0") с целью минимизации загрузки полосы пропускания и получения наиболее достоверного результата. Некоторые UDP-службы и фильтры портов по-разному реагируют на UDP-пакеты без данных, поэтому UDP-пакеты сопровождаются полезной нагрузкой.

    Есть только несколько опций, которые вы можете использовать с udp_scan. Опция -a сообщает программе о необходимости выводить все сообщения об ошибках, так же как и о протестированных UDP-портах. Опция -u указывает, что в случае получения ICMP-сообщения "host unreachable" необходимо вывести номер UDP-порта, который вернул ошибку. С другой стороны, опция -U выдаст вам совершенно противоположное сообщение, выведя сообщения о портах, для которых не были получены ICMP-сообщения об ошибках "host unreachable". Еще только с помощью одной опции для udp_scan можно определить, какой UDP-порт использовать на сканирующей машине, задав в командной строке параметр -s <source_port>.

    У Udp_scan есть несколько ограничений в использовании. Поскольку он использует ICMP-сокеты, udp_scan может быть запущен только root-пользователем или с полномочиями суперпользователя (uid 0). Как и WUPS, одновременно он может поддерживать соединение только с одним IP-адресом.

    Пример из жизни. Порты пишут картину

    Используя сканер портов, мы можем быстро получить карту различных служб, запускаемых на удаленном хосте. Если мы устанавливаем TCP-соединение по порту 80 и получаем ответ, есть шансы, что на хосте работает Web-сервер. Анализируя ответ, мы можем проверить это предположение. Сканер порта дает нам информацию, необходимую при идентификации целевых хостов. Идентификация служб, проводимая на хосте, говорит нам о цели хоста и подскажет несколько мест, которые мы можем проверить на слабость. При ожидании на каждом открытом порте можно сказать, что уязвимая служба просто ждет, чтобы ее использовали.

    Поскольку различные операционные системы приходят с различными инсталлированными службами, работающими по умолчанию, иногда только выходная информация со сканирования порта может помочь в идентификации операционной системы хоста. Давайте проведем сканирование порта машины в моей сети и посмотрим, что мы найдем.

    [bjohnson@originix nmap-2.54BETA30]$ ./nmap 192.168.1.100

    Starting nmap V. 2.54BETA30 ( www.insecure.org/nmap/ ) Interesting ports on (192.168.1.100): (The 1541 ports scanned but not shown below are in state: closed) Port State Service 21/tcp open ftp 22/tcp open ssh 23/tcp open telnet 80/tcp open http 1024/tcp open kdm 1030/tcp open iad1 6000/tcp open X11 8888/tcp open sun-answerbook

    Nmap run completed - 1 IP address (1 host up) scanned in 1 second [bjohnson@originix nmap-2.54BETA30]$

    Выглядит так, как будто на этой машине работает множество обычных подозрительных программ FTP, SSH, telnet и Web. В конечном счете, мы захотим увидеть, что произойдет, когда мы запустим FTP-, telnet- или Web-броузер на этом хосте. Но что это за последняя запись - sun-answerbook? После небольшого исследования мы находим, что эта служба обычно инсталлируется по умолчанию и запускается при запуске большинства систем Sun. Выглядит так, как будто мы нашли хост Sun Solaris.

    Но не так быстро. Просто потому, что пришел ответ на порт 8888 (порт, используемый службой Answerbook), не факт, что это действительно Answerbook! Это может быть что угодно: Web-сервер, FTP-сервер или черный ход, установленный хакером! Оказывается, системный администратор установил средство Netcat (см. лекцию "NETCAT и CRYPTCAT"), чтобы прослушивать порт 8888, в качестве своеобразной ловушки. Системный администратор может обмануть неопытного хакера, и тот может подумать, что Linux-машина - это на самом деле хост Sun.

    Пример из жизни. Распознавание заголовков

    Сбор информации об операционных системах не был таким сложным, каким он может оказаться сейчас. Несколько лет назад пользователи, программисты и системные администраторы не были такими параноиками, озабоченными безопасностью. Когда пользователь обращался с помощью telnet к удаленному хосту, то одновременно с логином хост сообщал пользователю свое имя, тип и версию операционной системы, и даже, вероятно, свое географическое положение - все, не спрашивая сначала у пользователя его действительного имени и пароля.

    Операционные системы Unix увлекались разглашением своих биографий при простом TCP-соединении с сервером telnet. Люди могли собирать информацию о хостах в сети, получая список IP-адресов, живущих в сети (вероятно, с помощью fping) и устанавливая TCP-соединение на порте 23 с каждым хостом, чтобы собирать ответы. Сейчас многие системные администраторы не позволяют приложениям своей сети сообщать так много информации об операционной системе без предшествующей идентификации или авторизации. Однако информация о версии специфических приложений по-прежнему доступна.

    Telnet был заменен на Secure Shell (SSH). Когда SSH-соединение установлено, сервер выдаст свою версию протокола SSH без запрашивания какой-либо информации от клиента. Сервер обычно ожидает, что клиент идентифицирует себя своей версией SSH-протокола. Этот обмен версиями часто необходим в общении клиент/сервер, чтобы убедиться, что обе стороны говорят на одном языке. Следовательно, раскрытие информации о специфической версии приложения часто неизбежно. Использование почтового клиента, чтобы присоединиться к почтовому серверу, или Web-клиента, чтобы присоединиться к Web-серверу, не обязательно выдаст вам эту информацию. Но использование программы типа Telnet или Netcat, чтобы установить TCP-соединение непосредственно с почтовым или Web-сервером, обычно позволяет получить информацию, которой вы, как правило, не увидите при использовании клиентов, взаимодействующих с этим сервером.

    Давайте попробуем кое-что. Во-первых, посмотрим, достаточно ли добра моя Linux-машина, чтобы сообщить нам, с какой версией FTP-сервера она работает (если вообще работает с какой-либо).

    [bjohnson@originix ~]$ telnet 192.168.1.100 21 Trying 192.168.1.100... Connected to 192.168.1.100. Escape character is '^]'. 220 originix FTP server (Version wu-2.5.0(1) Tue Sep 21 16:48:12 EDT 1999) ready

    Originix сообщил нам не только свою версию FTP. Он был настолько добр, чтобы сообщить нам дату своего создания. Неважно, что она достаточно стара, есть шансы, что у этой версии есть несколько уязвимых моментов, которыми может воспользоваться взломщик. Обратите внимание на эту возможную слабость. Эта техника называется захватом заголовков, и она может сегодня применяться многими сканерами портов (включая SuperScan и FScan) как часть процесса. Давайте посмотрим, что скажет Web-сервер.

    [bjohnson@originix ~]$ telnet 192.168.1.100 80 Trying 192.168.1.100... Connected to 192.168.1.100. Escape character is '^]'. GET / HTTP

    HTTP/1.1 200 OK Date: Tue, 29 Jan 2002 07:18:07 GMT Server: Apache/1.3.14 (Unix) (Red-Hat/Linux) Last-Modified: Sat, 05 Aug 2000 04:39:51 GMT ETag: "3a107-24-398b9a97" Accept-Ranges: bytes Content-Length: 36 Connection: close Content-Type: text/html

    I don't think you meant to go here. Connection closed by foreign host.

    Это было немного сложнее. Когда мы впервые установили соединение, Web-сервер ответил (указывая, что что-то действительно работало на Web-порте), но затем он просто остановился, как будто ждал чего-то от нас. Обычно Web-клиенты запрашивают страницы HTML с Web-сервера. Проведя небольшое исследование на HTTP, я обнаружил, что мне нужно было послать запрос GET на сервер (завершаемый двумя нажатиями клавиши enter), чтобы получить значимую информацию. Сделав это, я мог увидеть детали заголовка HTTP, которые обычно скрыты Web-клиентом. Этот сервер появляется при запуске версии Apache 1.3.14. Ох! Посмотрите на это! Он также сказал нам, что он работает под RedHat Linux!

    Черт возьми, давайте посмотрим, какой заголовок мы получим, когда применим telnet к telnet-серверу хоста.

    [bjohnson@originix ~]$ telnet 192.168.1.100 23 Trying 192.168.1.100... Connected to 192.168.1.100. Escape character is '^]'. Dobbylan Linux release 8.1 (Cauliflower) Kernel 2.5.38-02 on an i986 login: telnet close Connection closed. [bjohnson@originix ~]$

    Dobbylan Linux? Kernel 2.5? i986? Это не имеет смысла. Последний сеанс с telnet дал нам важный урок: не всегда доверяйте информации, которую дают эти заголовки. Например, редактируя файл /etc/issue.nete на RedHat Linux 6.1, я смог изменить мой заголовок telnet в неидентифицируемую тарабарщину. Однако Web-сервер по-прежнему выдавал секрет о том, что у меня RedHat. Некоторые заголовки сетевых приложений могут быть модифицированы только при изменении действительного исходного кода, но обычно это не сложно сделать.

    Хитрость - это важное средство в арсенале каждого, кто занимается защитой. Каждый взломщик должен думать о том, насколько верна информация, которую он собирает. С соответствующим набором средств и навыков сетевой пакет операционной системы может быть модифицирован особым образом, чтобы она выглядела, как другая операционная система! Это довольно сложно, поэтому не ожидайте, что это будет часто случаться. Но это возможно, и вероятность достаточно велика, чтобы заставить взломщика подумать о достоверности имеющейся информации.

    Пример из жизни. ОС вручную

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

    Большинство систем нельзя определить по схемам портов. Однако, как и по акценту человека можно определить географический регион, из которого он происходит, так и способ, на котором система говорит на TCP/IP, может быть идентифицирующим признаком. Действительные спецификации протокола TCP/IP находятся в комплекте документов, называемом RFCs (Request For Comments). Эти документы описывают структуру фактических пакетов данных и то, как реализация стека сети должна упаковывать, передавать, получать и распаковывать пакеты данных.

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

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

    Конкретный пакет TCP/IP может быть связан с конкретным поставщиком еще многими способами. IP-пакеты могут содержать 16-ти разрядное идентификационное поле. За исключением того, что эти номера должны быть уникальными, в RFC нет ничего о том, как эти номера должны выбираться (за исключением ограничения размеров поля в байтах). Также пакеты TCP должны содержать сходную информацию в своих заголовках (относящуюся к порядковым номерам). Порядок номеров помогает TCP отслеживать соединение. Каждая сторона соединения TCP выбирает свой исходный порядок номеров в начале соединения. Методы выбора этого начального порядкового номера предложены в спецификации, однако он также может быть выбран разработчиком, поскольку номера не часто повторяются (в противном случае соединения легко путаются). Есть еще две области для настройки и достижения гибкости в реализации пакета TCP/IP. Реализация каждого продавца может быть проанализирована на конфигурацию, обеспечивая больше способов, чтобы снимать отпечатки пальцев конкретной операционной системы по ее сетевому трафику. Nmap применяет эту технику, чтобы сделать обоснованные предположения об операционной системе каждого сканируемого хоста.

    Другие протоколы в TCP/IP могут быть использованы для идентификации операционной системы. Большинство пакетов TCP/IP поставляются со своими собственными утилитами Ping. Эхо-сообщения Internet Control Message Protocol (ICMP) имеют поля для необязательных данных, что позволяет использовать эхо-сообщения разного размера, чтобы увидеть, как управляются большие по размеру пакеты данных. Когда пользователь указывает размер данных для эхо-сообщения, утилита Ping затем должна заполнить это сообщение соответствующим количеством данных. Она может заполнить поле данных одними нулями, может использовать повторяющуюся последовательность алфавитно-цифровых символов, или случайные цифры. Смысл в том, что каждая реализация Ping имеет опцию заполнения поля данных чем угодно. Если вы знаете, какой метод использует конкретный Ping операционной системы, то можете идентифицировать это, просто посмотрев, как взаимодействует Ping с хостом.

    <

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