ОБЗОР СПОСОБОВ ДОСТОВЕРНОЙ ИДЕНТИФИКАЦИИ СЕТЕВЫХ УСТРОЙСТВ Рауткин Владимир Юрьевич, МГТУ им. Н.Э. Баумана, Москва В статье рассмотрен процесс сетевой идентификации, основанный на проверке подключения устройств путем ping-сканирования или сканировании портов. Дан обзор техник противодействия общепринятым методикам сканирования. Показаны ситуации, когда сетевая идентификация затруднена, что, как следствие, не позволяет провести полный анализ защищенности компьютерных систем. Проведено изучение методик, позволяющих достоверно идентифицировать все устройства находящиеся в сети. Ключевые слова: сетевая идентификация, ping-сканирование, сканирование портов REVIEW OF RELIABLE IDENTIFICATION METHODS FOR NETWORK DEVICES Vladimir Rautkin, Bauman MSTU, Москва The network identification based on connecting devices by checking ping-scan or scanning ports is described. A review of techniques to counter the standard techniques of scanning is shown. The situation when the network identification is difficult is described. The analysis of techniques allowing the positive identification of all devices on the network is done. Keywords: network identification, ping-scanning, port scanning Введение в идентификацию сетевых устройств Идентификация как метод получения информации о сети, подключенных к ней устройств, и информации об этих устройствах, существует уже довольно долгое время. Вряд ли можно встретить системного администратора, который никогда не использовал в своей практике утилиту ping, входящую (в том или ином виде) в состав любой операционной системы. Действительно, сканирование сети — это мощный инструмент, который регулярно используется при настройке сети и сетевого оборудования, а также при поиске неисправных узлов. Одна из первейших задач при исследовании любой сети это сократить (иногда довольно большой) набор IP диапазонов до списка активных или интересных хостов. Сканирование каждого порта каждого IP адреса медленно и необязательно. Конечно то, что делает хост интересным для исследования, во многом определяется целями сканирования. Сетевые администраторы, возможно, будут заинтересованы только в хостах, на которых запущена определенная служба, в то время как тем, кого интересует безопасность, будут интересны все устройства с IP адресами. Задачи администраторов по обнаружению работающих хостов в сети могут быть удовлетворены обычным ICMP-пингом, людям же, которые тестируют способность сети противостоять атакам извне, необходимо использовать разнообразные наборы запросов с целью обхода брандмауэра. 54 Вопросы кибербезопасности №3 - 2013 Обзор способов достоверной идентификации сетевых устройств Но случается так, что компьютер замаскирован и использование стандартных методов не позволяет его выявить, поэтому для решения этой проблемы есть разные подходы. Например, есть компьютер, подключенный к сети, фильтрующий запросы ICMP – echo, следовательно, сканируя сеть с помощью утилиты ping этот компьютер не будет выявлен. На сегодняшний день имеются различные методы сканирования сети, комбинируя которые мы можем достичь гарантированного результата. Целью моей работы является повышение достоверности идентификации сетевых устройств. Для достижения поставленной цели необходимо разработать программное средство, реализующее все известные методы сканирования, зондирования и инвентаризации сети для выявления информации о сети в целом, и о подключенных к ней устройствах. Для определения основных функций разрабатываемого программного средства проведем классификацию методов сканирования, зондирования, инвентаризации сети. Сканирование позволяет осуществлять поиск каналов передачи данных. Идея сканирования заключается в том, чтобы исследовать как можно больше потенциальных каналов связи и клиентов и определить, какие именно находятся в состоянии ожидания соединения. В качестве канала связи теоретически может выступать любая совокупность приемопередающего оборудования со средой передачи данных. Мы рассмотрим лишь возможную его реализацию, представляющую собой компьютерный терминал (хост), подключенный к сети по коммутируемой либо выделенной линии. Термин «порт» является абстрактным понятием, используемым для упрощенного описания механизма установления соединения между компьютерами. Следуя приведенной выше терминологии, порт представляет собой потенциальный канал передачи данных. Использование механизма портов существенно облегчает процесс установления соединения и обмена информацией между компьютерами. Как и везде, в организации механизма портов имеются свои недостатки. Любой пользователь имеет возможность исследовать сетевое окружения сервера методом опроса его портов. Достаточно лишь послать «лавину» пакетов на все возможные номера портов сервера (1-65535), и по тому, от каких портов будут (или не будут) получены ответы, определить открытые порты и службы, работающие на исследуемом сервере. Существует большое количество алгоритмов для поиска активных портов хоста и соответствующих им служб. Рассмотрим наиболее часто используемые алгоритмы сканирования и разберем их преимущества и недостатки. Ping-сканирование Перед непосредственным сканированием портов удаленного компьютера необходимо выяснить его состояние – работает он в сети или нет. Особенно это важно при сканировании группы хостов либо при сканировании определенного сегмента сети, где помимо определения функционирующих хостов необходимо также определить их адреса. Для этого необходимо отправить специфический запрос, означающий, что пользователю необходима информация о состоянии сервера (либо хоста) и исправности сетевых средств, обеспечивающих маршрутизацию пакетов. Вопросы кибербезопасности №3 - 2013 55 УДК 004.021 В сетях, организованных на базе стека протоколов TCP/IP, для этой цели используется протокол ICMP. Данный протокол является вспомогательным и позволяет маршрутизатору сообщать конечному узлу об ошибках либо непредвиденных ситуациях, которые имели место при передаче IP-дейтаграммы от этого узла. Обмен информацией между маршрутизатором и узлом реализован с помощью т.н. ICMP-сообщений. Помимо сообщений об ошибках, в протоколе ICMP предусмотрен ряд стандартных запросов, позволяющих хосту получить различного рода информацию о состоянии объектов сети. Адресату отправляется ICMP-сообщение ECHO REQUEST (эхо-запрос), и если этот компьютер работает и подключен к сети, он ответит ICMP-сообщением ECHO REPLY (эхо-ответ). Сообщение ICMP пользователь может сформировать программным способом либо использовать для этого средства операционной системы. Но многие узлы игнорируют ICMP-запросы echo, следовательно компьютер будет не виден в сети. Чтобы решить эту задачу, я предлагаю использовать различные методики идентификации устройств. Рассмотрим методы сканирования портов стека TCP-IP. Сканирование портов Рассмотрим известные техники сканирования портов. 1. TCP SYN – сканирование. Данный метод известен еще как «сканирование с установлением наполовину открытого соединения» (half-open scanning), поскольку полное установление TCP-соединения не производится. Рассмотрим схему создания TCP-соединения, описанную в протоколе TCP RFC. В исходном состоянии сервер «прослушивает» порты в ожидании соединения. Соединение между хостом и сервером не установлено. Далее: хост посылает серверу SYNпакет с указанием собственного номера очереди. Затем: сервер, приняв запрос на соединение, посылает хосту подтверждение и данные для синхронизации со своей стороны. Заключение: хост, приняв пакет синхронизации от сервера, посылает ему подтверждение о приеме. Когда соединение установлено, хост инициирует обмен данными с сервером. Процесс, рассмотренный выше, называется трехступенчатой синхронизацией (3-way handshaking), и служит для установления соединения по протоколу TCP между двумя любыми объектами сети Интернет. Преимущество данного метода заключается в том, что лишь немногие серверы способны зарегистрировать такого рода сканирование без использования специальных средств защиты. Метод можно использовать только в случае, если на хосте, с которого производится сканирование, установлена операционная система из семейства UNIX. Кроме того, пользователь должен обладать статусом root, в противном случае пользователь попросту не сможет программно сформировать одиночный SYN-пакет. 2. TCP NULL-, FIN- и Xmas-сканирования. Эти три типа сканирования используют незаметную лазейку в TCP RFC, чтобы разделять порты на открытые и закрытые. Когда сканируется система отвечающая требованиям RFC, любой пакет не содержащий установленного бита SYN, RST или ACK, повлечет за собой отправку RST в ответ в случае, если порт закрыт, или не повлечет никакого ответа, если порт открыт. Т.к. ни один из этих битов не установлен, то любая комбинация трех оставшихся (FIN, PSH и URG) будет являться правильной. 56 Вопросы кибербезопасности №3 - 2013 Обзор способов достоверной идентификации сетевых устройств Как уже говорилось, лишь немногие серверы способны отследить попытку SYNсканирования их портов. Так, некоторые firewall’ы и пакетные фильтры «ожидают» поддельные SYN-пакеты на закрытые порты защищенного ими сервера, и специальное программное обеспечение, типа: synlogger или courtney, распознает попытку SYN-сканирования. Если сервер обрывает соединение после опроса нескольких портов, используется FIN-сканирование. В этом методе используются FIN-пакеты, используемые в процедуре закрытия соединения. Пакет предусматривает установку в TCP-сообщении флага FIN. FIN-пакеты способны обойти средства защиты сети. Идея заключается в том, что согласно RFC, на прибывший FIN-пакет сервер должен ответить RST-пакетом (TCPпакет с установленным в нем флагом RST). FIN-пакеты ,полученные сервером на открытые порты, игнорируются. В случае Null-сканирования не устанавливаются никакие биты (флагов в TCP заголовке 0), и ожидается ответ. При Xmas-сканировании устанавливаются FIN, PSH и URG флаги. Эти три типа сканирования работают по одной схеме, различия только в TCP флагах установленных в пакетах запросов. Если в ответ приходит RST пакет, то порт считается закрытым, отсутствие ответа означает, что порт открыт | фильтруется. Порт можно пометить как фильтруемый, если в ответ приходит ICMP ошибка о недостижимости (ICMP Port Unreachable). Ключевой особенностью этих типов сканирования является их способность незаметно обойти некоторые не учитывающие состояние (non-stateful) брандмауэры и роутеры с функцией пакетной фильтрации. Большим недостатком является то, что не все системы следуют RFC 793 дословно. Некоторые системы посылают RST ответы на запросы не зависимо от того, открыт порт или закрыт. Это приводит к тому, что все порты помечаются как закрытые. Основными системами, ведущими себя подобным образом являются Microsoft Windows, многие устройства Cisco, BSDI и IBM OS/400. Хотя такое сканирование применимо к большинству систем, основанных на Unix. Еще одним недостатком этих видов сканирования является их неспособность разделять порты на открытые и фильтруемые, т.к. порт помечается как открыт | фильтруется. 3. TCP connect() – сканирование. Этот метод обладает некоторыми преимуществами. Во-первых, его может применить любой пользователь, не обладающий никакими привилегиями на хосте. Во-вторых, данный метод обеспечивает довольно высокую скорость исследования. Метод реализуется подключением к исследуемому порту и выполнением на нем процедуры полного квитирования (пакеты подтверждения: SYN, SYN/ACK и АСК). Полное квитирование означает тройное подтверждение: пакет SYN - от клиента, SYN/ACK - от сервера, АСК - от клиента. Последовательный перебор портов путем вызова функции connect() для каждого номера порта, определение его состояния и закрытие соединения – достаточно долгий процесс. Однако его можно ускорить, применив метод «параллельного просмотра» с использованием неблокированного ввода/вывода (non-blocked I/O). Такой метод позволяет практически одновременно определить состояние всех портов сервера. Большим недостатком данного метода является возможность обнаружения и фильтрации такого рода сканирования, причем сделать это достаточно легко. Log-файл сканируемого сервера укажет службам, отвечающим за внешние Вопросы кибербезопасности №3 - 2013 57 УДК 004.021 подключения, на наличие многочисленных запросов на соединение с одного и того же адреса и ошибок создания соединения с ним, поскольку хост исследующего после создания соединения с сервером сразу же обрывает его. Службы внешних подключений, в свою очередь, немедленно заблокируют доступ к серверу для хоста с данным адресом. 4. Различные типы UDP. В то время как большинство сервисов Интернета используют TCP протокол, UDP службы также широко распространены. Т.к. UDP сканирование в общем случае медленнее и сложнее TCP, то многие специалисты по безопасности игнорируют эти порты. Это является ошибкой, т.к. существуют UDP службы, которые используются атакующими. Для UDP отсутствует понятие соединения, и нет эквивалента TCP-пакету SYN. UDP сканирование работает путем посылки пустого (без данных) UDP заголовка на каждый целевой порт. Если в ответ приходит ICMP ошибка о недостижимости порта (ICMP port Unreachable), это означает, что порт закрыт. Другие ICMP ошибки недостижимости (тип 3, коды 1, 2, 9, 10 или 13) указывают на то, что порт фильтруется. Иногда, служба будет отвечать UDP пакетом, указывая на то, что порт открыт. Альтернативным подходом является отправка UDP-пакетов, специфичных для приложения, в расчёте на получения ответа с уровня приложения. Например, отправка запроса DNS на порт 53 приведёт к ответу, если по запрашиваемому адресу имеется DNS-сервер. Проблема в данном случае состоит в наличии соответствующего «пробного» пакета для каждого из портов. В некоторых случаях, сервис может присутствовать, но быть сконфигурирован таким образом, чтобы не отвечать на известные «пробные» пакеты. Также возможен комбинированный подход, сочетающий в себе оба вышеуказанных метода. 5. Использование IP-фрагментации. Данный метод представляет собой комбинацию SYN и FIN-сканирования с небольшим усовершенствованием. Он основан на использовании функциональной особенности протокола IP RFC, называемой фрагментацией. Фрагментация – это процесс разделения большого пакета данных на несколько частей перед непосредственной передачей его в сеть для получения размера фрагмента, соответствующего стандарту используемой сети (т.н. параметр MTU – Maximum Transmission Unit, максимальный размер блока). Фрагментация пакета на стороне источника и его сборка на стороне приемника осуществляется автоматически. Каждая фрагментированная часть исходного пакета имеет одинаковый формат. Этот метод позволяет маршрутизировать фрагменты независимо друг от друга. Метод позволяет уменьшить вероятность обнаружения сканирования фильтрами пакетов и другим подобным оборудованием. Однако при этом следует быть очень осторожным, поскольку некоторые программы имеют обыкновение «зависать» при попытке обработки такого маленького IP-фрагмента. 6. TCP ACK-сканирование. Этот тип сканирования сильно отличается от всех других тем, что он не способен определить открытый порт - open (или даже открытый |фильтруемый). Задача TCP ACK-сканирования заключается в том, чтобы узнать какие порты компьютера во внутренней сети не блокируются брандмауэром (или пакетным фильтром). Пакет запроса при таком типе сканирования содержит установленным только ACK флаг. При сканировании не фильтруемых 58 Вопросы кибербезопасности №3 - 2013 Обзор способов достоверной идентификации сетевых устройств систем, открытые и закрытые порты оба будут возвращать в ответ RST пакет. Пакетные фильтры, которые устанавливаются на маршрутизаторах, так и на брандмауэрах, принимают или блокируют пакеты, основываясь на их IP-, TCP- или UDP- заголовке. Для выполнения нашей задачи, такой тип сканирования идеально подходит. Т.е. если в ответ мы получаем RST-пакет, следовательно устройство находиться в сети. 7. Сканирование IP протокола. Сканирование такого типа позволяет определить, какие IP протоколы (TCP, ICMP, IGMP и т.д.) поддерживаются целевыми машинами. Технически такое сканирование не является разновидностью сканирования портов, т.к. при нем циклически перебираются номера IP протоколов вместо номеров TCP или UDP портов. Используется тот же механизм сканирования, что и при различных вариантах сканирования портов. Поэтому он достаточно близок к сканированию портов и описывается здесь. Способ работы этого типа сканирования очень похож на реализованный в UDP сканировании. Вместо того, чтобы изменять в UDP пакете поле, содержащее номер порта, отсылаются заголовки IP пакета, и изменяется 8 битное поле IP протокола. Заголовки обычно пустые, не содержащие никаких данных и даже правильного заголовка для требуемого протокола. Исключениями являются TCP, UDP и ICMP. Включение правильного заголовка для этих протоколов необходимо, т.к. в обратном случае некоторые системы не будут их отсылать. Вместо того, чтобы ожидать в ответ ICMP сообщение о недостижимости порта, этот тип сканирования ожидает ICMP сообщение о недостижимости протокола. Если мы получаем любой ответ по любому протоколу, то протокол помечается как открытый, а устройство как найденное. Запросы ICMP Проверка путем ping (или пакетами ICM ECHO) - это только вершина айсберга, если речь идет об информации ICMP в системе. Можно собрать самые разные сведения о системе, посылая ей пакет ICMP. Например, можно запросить системное время (для определения часового пояса), послав сообщение ICMP типа 13 (TIMESTAMP). Или узнать маску сети конкретного устройства с помощью сообщения ICMP типа 17 (ADDRESS MASK REQUEST). Весьма важна маска сетевого адаптера, поскольку раскрываются используемые подсети. Зная о них, можно направлять атаки только на конкретные подсети, избегая попадания на широковещательные адреса. Если присутствует ответ от хоста, значит устройство подключено к сети. Такой тип сканирования относится к нестандартным методам. Выводы В заключение можно сделать следующие выводы: 1. Исследование показало, что сканирование сети на наличие подключенных к ней устройств очень важный этап при оценке безопасности сети и отдельных устройств в целом; 2. В ряде случаев по причине неисправности или противодействия, стандартные отдельные методы сканирования не позволяют идентифицировать устройства; 3.Важным направлением повышения безопасности информации является внедрение комплексных систем достоверной идентификации, включающих все возможные известные и нетрадиционные методики; 4. Перспективным направление видится исследование вопроса построения систем маскировки критически важных серверов и устройств сети. Вопросы кибербезопасности №3 - 2013 59 УДК 004.021 Литература 1. 2. 3. 4. 5. 6. 7. Акулов О.А., Баданин Д.Н., Жук Е.И., Медведев Н.В., Квасов П.М., Троицкий И.И. Основы информационной безопасности: Учеб. пособие. М.: Изд-во МГТУ им. Н.Э. Баумана, 2008. 161 с. Законодательно-правовое и организационно-техническое обеспечение информационной безопасности АС и ИВС / Котенко И.В., Котухов М.М., Марков А.С и др. – СПб: ВУС, 2000. 190 с. Марков А.С., Миронов С.В., Цирлов В.Л. Опыт тестирования сетевых сканеров уязвимостей // Информационное противодействие угрозам терроризма. 2005. № 5. С. 109-122. Матвеев В.А., Цирлов В.Л. Состояние и перспективы развития индустрии информационной безопасности Российской Федерации в 2014 г. // Вопросы кибербезопасности. 2013. № 1(1). С.61-64. Математические основы информационной безопасности / Басараб М.А., Булатов В.В., Булдакова Т.И. и др.; Под. ред. В.А.Матвеева. М.: НИИ РиЛТ МГТУ им. Н.Э.Баумана, 2013. 244 с. Разработка систем информационно-компьютерной безопасности / Зима В.М., Котухов М.М., Ломако А.Г., Марков А.С., Молдовян А.А. СПб: ВКА, 2003. 327 с. McClure S., Scambray J., Kurtz G. Hacking Exposed, Network Security Secrets and Solutions, Sixth Edition, McGraw-Hill Osborne Media, 720 p. References 1. 2. 3. 4. 5. 6. 7. 60 Akulov O.A., Badanin D.N., Zhuk E.I., Medvedev N.V., Kvasov P.M., Troitskiy I.I. Osnovy informatsionnoy bezopasnosti: Ucheb. Posobie, Moscow, Izd-vo MGTU im. N.E. Baumana, 2008. 161 p. Zakonodatel’no-pravovoe i organizatsionno-tekhnicheskoe obespechenie informatsionnoy bezopasnosti AS i IVS / Kotenko I.V., Kotukhov M.M., Markov A.S. and etc., Saint Petersburg, VUS, 2000. 190 p. Markov A.S., Mironov S.V., Tsirlov V.L. Opyt testirovaniya setevykh skanerov uyazvimostey, Informatsionnoe protivodeystvie ugrozam terrorizma, 2005, N 5, pp. 109-122. Matveev V.A., Tsirlov V.L. Sostoyanie i perspektivy razvitiya industrii informatsionnoy bezopasnosti Rossiyskoy Federatsii v 2014 g., Voprosy kiberbezopasnosti, 2013, N 1(1), pp. 61-64. Matematicheskie osnovy informatsionnoy bezopasnosti / Basarab M.A., Bulatov V.V., Buldakova T.I. i dr.; Pod. red. V.A.Matveeva, Moscow, NII RiLT MGTU im. N.E.Baumana, 2013. 244 p. Razrabotka sistem informatsionno-komp’yuternoy bezopasnosti / Zima V.M., Kotukhov M.M., Lomako A.G., Markov A.S., Moldovyan A.A., Saint Petersburg, VKA, 2003, 327 p. McClure S., Scambray J., Kurtz G. Hacking Exposed, Network Security Secrets and Solutions, Sixth Edition, McGraw-Hill Osborne Media, 720 p. Вопросы кибербезопасности №3 - 2013