Милославская сетевые атаки на открытые системы на примере 2012
.pdfможности непосредственного перехвата информации; получение наиболее доступных регистрационных данных пользователей или иной секретной информации, циркулирующей в том же сегменте сети, в котором находится сам злоумышленник; получение максимального количества регистрационных данных пользователей, принадлежащих иным сетевым сегментам; совершение скрытой или прямой атаки на компоненты интранет, но во втором случае есть риск «засветиться» в журналах регистрации и в системах обнаружения вторжений. Однако, при успешной реализации первых пунктов, возможно использование полученных данных для дальнейшей атаки на компоненты интранет.
2.2. Уровни атак
Атаки можно подразделить по серьезности последствий от их реализации на шесть уровней [4].
Уровень 1. Атаки включают «отказ в обслуживании» (DoS) и почтовые бомбы, цель которых в основном — доставить кому-то неприятности. В большинстве случаев решить эти проблемы можно, применяя схему, описанную в предупреждении Computer Security Advisory 95-13 (SATAN Update).
Атаки DoS довольно обычны и возможны всегда — нет действенного способа избежать их. Но лучший способ решить эту проблему состоит в добавлении источников хостов/сетей злоумышленника в листинг DENY в inetd.sec. Большинство DoS-атак представляет небольшую угрозу и не требует от атакующего особо глубоких знаний. Даже если они вызывают перезагрузку системы — это лишь проблема времени. DoS-атаки по последствиям не сравнимы с атаками, когда кто-то получает контроль над сетью. Правда, если в сети есть неопределенные конфигурации, то DoS-атака может вызвать более серьезные последствия.
Посылающие почтовые бомбы, как правило, легко отслеживаются. Кроме того, bozo-файлы (файлы-убийцы) и схемы таких атак в основном безопасны. Единственная реальная проблема — это частота «бомбежек» и их объем, что выводит из строя почтовый сервер.
41
DoS-атаки — это часто предшественники (или даже составные части) других атак. Если обнаружено «затопление» какого-либо порта на компьютере, то нужно установить, какие сервисы связаны с ним. Если этот сервис — неотъемлемая часть внутренней сети (то есть другие компьютеры используют его и эти соединения основаны на установление подлинности адреса), то требуется анализ ситуации.
Другая атака — это инициализация Telnet-сессии с серверами почты или новостей, выявляющая разделяемые ресурсы. Если сеть должным образом защищена, такие атаки не страшны. Если разделяемые ресурсы должным образом не сконфигурированы или если используются r-сервисы (или другие средства, которые не должны использоваться), атаки первого уровня могут стать реальностью.
Уровни 2 и 3. Это атаки, когда локальные пользователи получают доступ для чтения и записи к файлам (директориям), к которым такой доступ им не разрешен. Далее все зависит от содержимого этих файлов. Локальный пользователь — это пользователь, который имеет пароль для входа в компьютер внутри интранет и имеет свою директорию на диске (независимо от цели использования этой директории: веб-узел, локальный жесткий диск на одной из рабочх станций и т.д). Угроза от локальных пользователей сильно зависит от самой интранет. Атака, инициированная локальными пользователями на этом уровне, обычно связана с Telnet.
Есть два вида данных атак. Менее серьезные атаки реализуются любопытным пользователем, плохо знакомым с предметом и поэтому интересующимся всем (он может напечатать passwd-файл в STDOUT, попробовать прочитать любые привилегированные файлы и т.д.). И, наоборот, есть организованные и хорошо продуманные атаки, когда атакующий хорошо знает конфигурацию системы. Причины успешности таких атак — либо неправильная конфигурация сети, либо лазейки в ПО.
В ОС, где нет контроля доступа, атаки второго уровня могут легко перерасти в атаки высших уровней. Для анализа ситуции показательно наблюдение за трафиком к портам 137–139, где поддерживается процесс разделения ресурсов.
42
Уровень 4. Данные атаки обычно связаны с внешними нарушителями, пытающимися получить доступ к внутренним файлам интранет. Вид доступа может варьироваться от простой проверки существования некоторых файлов до их чтения. Проблемы здесь связаны с уязвимостями из-за наличия удаленных пользователей, способных выполнять ограниченный набор команд в интранет. Большинство угроз объясняется неправильной настройкой серверов, плохих CGI и проблем переполнения буфера.
Уровни 5 и 6. Любые атаки данного уровня — фатальны, так как они связаны с возникновением ситуаций, которых в принципе быть не должно. Например, удаленные пользователи могут читать, писать и выполнять файлы. Если в интранет есть защита от атак уровней 2–4, то мало вероятна реализация атак уровней 5 и 6. Тогда атака уровня 6 возможна только из-за ошибок в ПО.
Теперь укажем способы реагирования на перечисленные атаки. Отклик на атаки уровня 1. Действенной будет фильтрация
входящих адресов и контакт с сервис-провайдером атакующего. Отклик на атаки уровня 2. Атаки уровня 2 — внутреннее дело
организации, но полученную информацию игнорировать не стоит. Нужно сделать недоступным или взять под бдительный контроль или удалить учетные записи таких пользователей. И об этом лучше никому не сообщать. Тогда можно будет сохранить любое свидетельство, которое иначе могло бы быть удалено. Или наоборот провести соответствующую беседу с нарушителем, намекнув на нависшую над ним угрозу увольнения.
Отклик на атаки уровней 3– 6. Нужно предпринять следующее: изолировать сегмент сети так, чтобы действия могли происходить только в небольшой ограниченной области; позволить деятельности нарушителя развиваться; жестко регистрировать все действия; делать все, чтобы идентифицировать источник/источники атаки.
43
3. Классические и современные методы, используемые нападающими для проникновения в открытые системы
Классические методы взлома интранет связаны с получением пароля пользователя для дальнейшего легального входа в систему и наследования всех его прав. Сегодня при помощи развитых инструментальных средств поиска сетевых неисправностей, администрирования и сбора статистики о работе системы злоумышленник может в прямом смысле перехватить любые данные, посылаемые некоторым компьютерам, и использовать их по своему усмотрению. Наряду с этим необычайно возросла практика изменения системных утилит и создания отдельных пакетов, а также чаще стали применяться атаки, основанные на знаниях особенностей сетевых протоколов.
Выделим три основных способа, на основе которых нарушители получают возможность проникновения в системы [10].
1.Физическое вторжение. Если нарушитель имеет физический доступ к компьютеру (использует клавиатуру или часть системы), то он сможет проникнуть в нее. Методы могут быть различными — от получения специальных привилегий, которые имеет консоль, до возможности физического использования блоков системы, например, снятия винчестера и чтения/записи его на другом ПК.
2.Системное вторжение. Этот тип деятельности предполагает, что нарушитель уже имеет учетную запись в системе как пользователь с невысокими привилегиями. Если в системе не установлены самые последние «заплатки» для защиты, тогда после этого у нарушителя есть шанс попытаться совершить известную атаку для получения дополнительных административных привилегий.
3.Удаленное вторжение. Эта деятельность нарушителей подразумевает, что они пытаются проникнуть в систему через сеть с удаленного компьютера. Такой нарушитель может действовать без каких-либо специальных привилегий или уже иметь свою учетную запись в системе. Но в первом случае нарушитель потратит гораздо больше времени и усилий, если между ним и компьютеромжертвой установлен МЭ.
44
Средства (механизмы) реализации атак, которые доступны в среде злоумышленников, довольно разнообразны [5]: информационный обмен (для сбора информации о жертве и ее уязвимостях); команды пользователей (ввод команд в интерфейсе командной строки или процесса); скрипты или программы; автономный агент; комплекты утилит (toolkit, rootkit и т.п.); распределенные средства (по нескольким узлам сети).
Чаще всего злоумышленники применяют готовые утилиты различного назначения под разные ОС, включая сканеры портов (по различным протоколам), соединений (типа nmap) и другие средства.
3.1. Перехват данных
Два основных вида перехвата данных — в каналах связи и при вводе с клавиатуры — были рассмотрены соответственно при описании типовых УА первого и пятого типов.
Назовем лишь для примера системы, которые могут обнаружи-
вать перехват данных по портам: Port Scan Attack Detector (PSAD), PromiScan, Anti-Hack 2.0 для Windows, PromiscDetect, PortSentry.
3.2. Мониторинг в графических интерфейсах
На многих ПК с ОС Unix используется графический интерфейс пользователя (Graphical User Interface, GUI), известный как X Window (иначе называемый Х11). Это интерфейс между пользователем и программой, определяющий способ их взаимодействия. Он позволяет пользователю легко выполнять несколько приложений и переходить с одного на другое. Пользователь начинает Х-сессию, соединяясь с Х-сервером и указывая, что данные должны посылаться на определенный терминал. Это может быть как системная консоль, так и любой другой терминал, соединенный с сервером. Взаимодействие Х-клиента и Х-сервера происходит в рамках протокола прикладного уровня — Х-протокола. Х-сервер представляет собой отдельный Unix-процесс. Он общается с программамиклиентами, посылая им или принимая от них пакеты данных. Если сервер и клиент находятся на разных компьютерах, то данные пересылаются по сети, а если на одном, то используется внутренний
45
канал. При этом обеспечивается два различных механизма аутентификации: аутентификация хостов, которая позволяет определить,
скакого компьютера приложения могут соединяться с Х-сервером, то есть заранее определяется список доверенных ПК; аутентификация пользователей, которая позволяет определить пользователей, имеющих доступ к Х-серверу. Все сетевые службы, кроме portmapper, могут быть обнаружены с помощью перебора всех сетевых портов. Многие сетевые утилиты и оконные системы работают с конкретными портами (sendmail — с портом 25, Telnet — с портом 23 и т.п.). Порт X Window обычно 6000.
По своей природе система X Window недостаточно защищена от перехвата данных. Без дополнительной защиты экраны X Window могут быть захвачены или просмотрены, вводимая пользователем информация может быть украдена, программы могут быть удаленно выполнены и т.п. Имеется ряд проблем с X Window, включая возможности для нападающих блокировать доступ к серверу, выполнять на нем нежелательные команды и перехватывать ввод, сгенерированный на сервере. Одним из методов определения уязвимости X-сервера является подсоединение к нему через функцию XOpenDisplay (). Если функция возвращает не NULL, то можно получить доступ к дисплею. При помощи простой программы, доступной в хакерской среде, все нажатия клавиш в некоторой сессии X Window могут быть перехвачены и сохранены в файле. Любая сессия Telnet или FTP, выполняемая внутри Х-окна в контролируемой системе, будет передавать в руки злоумышленников ценную информацию относительно имен пользователей и их паролей.
Х-терминалы могут иметь свои проблемы по части безопасности. В сети существует сервер, на котором пользователь хочет выполнять свои приложения вместо того, чтобы выполнять их на локальной рабочей станции. Для этого пользователь сначала должен разрешить приложениям, выполняющимся на сервере, соединяться
сего Х-сервером. Многие Х-терминалы разрешают неограниченный rsh-доступ, позволяя запустить Х-клиенты на терминале жертвы (victim), перенаправляя вывод на локальный терминал [3]. Од-
46
нако при этом создается довольно опасная ситуация. Теперь любой злоумышленник, который имеет доступ к серверу, может, например, читать любую информацию, которую вводит легальный пользователь, включая пароли. В этом слабость первого механизма аутентификации.
Второй механизм использует ряд протоколов, что повышает его защищенность (Magic Cookies, Sun-DES, Kerberos, XDMAuthorization).
Влюбом случае необходимо продумать защиту X Window, поскольку иначе система будет подвергаться такому же риску, как и при наличии «+» в hosts.eguiv или отсутствии пароля у root.
3.3.Подмена системных утилит
Впрошлом модификации системных утилит ограничивались программой login, в которую нападающий мог запрограммировать некоторый свой пароль, предоставляющий ему неограниченный доступ к системе в любое время. Сегодня тот же метод применяется в отношении других утилит идентификации, существующих в Интернете и интранете. Широкая доступность исходного текста утилит системы Unix еще более упростила этот процесс, поскольку злоумышленник может легко найти текст нужной ему утилиты и модифицировать ее по своему усмотрению. Некоторые из лучших подделок даже компилируют до точного совпадения размера в байтах с исходной версией. Кроме традиционного «черного входа» многие подделки позволяют пользователю скрываться от программы учета процессов. Поскольку злоумышленник входит в систему через «черный вход», его присутствие не фиксируется в системных файлах регистрации.
Всистемах имеются многочисленные системные файлы регистрации, которые следят за событиями типа некорректных попыток входа в систему, нормальных входов в систему и выходов из нее, а также за выполняемыми командами. Если модифицировать эти файлы, пользователь останется невидимым для команд проверки (типа who, last и lastcomm в Unix). Этот тип модификации, допол-
47
ненный определенными утилитами, значительно затрудняет администратору ИБ установление факта атаки.
Существуют модифицированные версии утилит идентификации для многи ОС. Однако Unix доминирует в глобальных компьютерных сетях, и использование языка программирования Си породило множество злонамеренно модифицированного ПО.
Подмена злоумышленником системных функций возможна и для Windows-платформ. Для этого, например, в Windows NT в память загружается динамическая библиотека (DLL) с именем, совпадающим с одной из системных библиотек. Затем злоумышленник может программным путем изменить в списке системных модулей KnownDLLs ссылку на подменную системную библиотеку. После этого все вызовы к данной системной библиотеке будут обрабатываться модулем злоумышленника. В случае подмены определенных системных функций возможно несанкционированное наделение пользователей правами администратора. Но повышение полномочий возможно только при наличии в системе эмулятора OS/2 или
POSIX.
3.4. Атаки с использованием сетевых протоколов
Много угроз несет с собой передача специальных пакетов, которые либо содержат неверную информацию, либо были преднамеренно искажены. Пакеты для протоколов из стека TCP/IP имеют специфический порядок байтов, размер и строго определенные поля. В большинстве случаев неправильно составленный пакет будет игнорироваться и отрабатываться либо сетевым интерфейсом, либо маршрутизатором где-нибудь на пути от источника пакета к адресату. Однако в прошлом неправильно организованные пакеты вызывали причудливое поведение либо адресата, либо маршрутизатора, встречающегося на пути. Вследствие некоторых ошибок маршрутизаторов пакеты, состоящие из одних единиц (либо нулей), значительно замедляли работу маршрутизаторов, поскольку устройство «решало», что делать с этими странными данными. Другие пакеты продолжали прибывать, в конечном счете, забивая имеющийся буфер маршрутизатора. Это приводило к тому, что на другие пакеты
48
не посылалось уведомление о приеме, вынуждая хост посылать их снова и снова. В некоторых случаях, когда буфер маршрутизатора заполнялся, последний либо зависал, либо просто перезапускался. Очевидно, что и то, и другое весьма нежелательно. Производители маршрутизаторов продолжают вести серьезную проверку надежности своих изделий перед выпуском их на рынок, однако ошибки все еще могут иметь место.
Атаки с использованием сетевых протоколов относятся к активным. Часто идея этих атак состоит в том, чтобы обмануть маршрутизаторы и заставить их изменить свои таблицы маршрутизации. При данном типе атак злоумышленник взаимодействует с получателем информации, отправителем и/или промежуточными системами, модифицируя и/или фильтруя содержимое пакетов. Злоумышленник предпринимает определенные шаги для перехвата и модификации сетевого потока или попытки «притвориться» другой системой – « дублером». Во втором случае протокол из стека TCP/IP используется для того, чтобы привести систему-жертву в нерабочее состояние. Данные атаки часто кажутся технически сложными в реализации, однако для хорошего программиста не составляет труда создать соответствующий инструментарий для злоупотребления параметрами протокола.
Обладая достаточными привилегиями, злоумышленник может вручную формировать IP-пакеты и передавать их по сети. Получив такой пакет, невозможно выяснить, откуда реально он был получен, поскольку пакеты не содержат пути их прохождения.
Рассмотрим несколько примеров, поясняющих принцип осуществления атак с использованием сетевых протоколов.
Атаки на основе протокола ICMP
Протокол управления сообщениями Интернет (Internet Control Message Protocol, ICMP; RFC1122) используется в сетях TCP/IP как основной метод, при помощи которого посылается важная информация относительно состояния сети. Одной из функций ICMP является удаленное управление таблицей маршрутизации на хостах внутри сегмента интранет. Динамическое удаленное управление
49
маршрутизацией изначально задумывалось как способ предотвращения возможной передачи сообщений по неоптимальному маршруту и повышения отказоустойчивости сети в целом.
Одной из возможностей ICMP является проверка наличия определенного адреса в сети. В случае возникновения ошибки соединения возвращается сообщение об ошибке с описанием причины, например: «Сеть недоступна», «Адрес недоступен», «Ошибка маршрутизации» и др. Каждое из этих сообщений может быть использовано, чтобы создать хаос в сети. В стандартной реализации TCP/IP-стек по приходе ICMP-пакета с извещением об ошибке производит определенные действия, в первую очередь перестройку таблицы маршрутизации. При этом, как побочный эффект, разрываются все установленные соединения с машиной, имеющей адрес, о котором стало известно, что он недостижим. На использовании этого эффекта и строятся «диверсии». Имелись примеры атак на хосты, «обстреливаемые» очень большими эхо-пакетами ICMP со скоростью в несколько тысяч пакетов в минуту. Это неизбежно засоряло хост-адресат, поскольку сетевой интерфейс вынужден был не только интерпретировать каждый из входящих пакетов, но и формировать соответствующий ответ на него. Такие атаки называются ping-наводнением (от англ. ping flooding) и являются примером DoS-атак. Неверно сконструированные пакеты переадресации ICMP используются, чтобы генерировать ложную маршрутизацию между хостами и способствовать перехвату пакетов. ICMPсообщение о недоступности хоста может блокировать соединения хоста со своей сетью или выборочно отключать сессии, подобные Telnet (это также пример DoS-атаки). Другие протоколы, типа протокола маршрутизации RIP, используются для того, чтобы заставить маршрутизаторы и хосты посылать пакеты в неверном направлении. Причем атакующий может находиться в том же сегменте интранета, что и цель атаки, или в другом сегменте.
Защититься от этой атаки можно только фильтрацией (при помощи МЭ) проходящих ICMP-сообщений. Другой способ защиты состоит в изменении исходных текстов сетевого ядра ОС с дальнейшей его перекомпиляцией с целью запретить реакцию на неко-
50
