Чтение онлайн

на главную - закладки

Жанры

Шрифт:

ISN = mcsec + 1 000 000 sec, (1)

где mcsec – время в микросекундах;

sec – текущее время в секундах; отсчет его идет от 1970 года.

В ОС Windows NT 4.0 значение ISN увеличивается на 10 примерно каждую миллисекунду, то есть для Windows NT справедлива следующая формула:

ISN ≈ 10 msec, (2) где msec – текущее время в миллисекундах.

Однако больше всего нас удивила защищенная по классу B1 операционная система CX/LAN/SX, установленная на многопроцессорной мини-ЭВМ – полнофункциональном межсетевом экране CyberGuard. Эта наиболее защищенная из всех, что встречалась авторам, сетевая ОС также имеет простой времязависимый алгоритм генерации начального значения идентификатора TCP-соединения. Как говорится, комментарии излишни. Мало того, что в единственном базовом «защищенном» протоколе Internet – протоколе TCP – применяется простейший способ идентификации соединения, который не может гарантировать надежную защиту от подмены одного из абонентов при нахождении атакующего в том же сегменте, так еще сами разработчики сетевых ОС разрушают и без того хрупкую безопасность этого протокола, используя простые времязависимые алгоритмы генерации ISN. Итак, в том случае если в сетевой операционной системе используется времязависимый алгоритм генерации начального значения идентификатора TCP-соединения, то взломщик получает принципиальную возможность определить с той или иной степенью точности вид функции, описывающей закон получения ISN. Исходя из практических исследований сетевых ОС, а также из общих теоретических соображений, можно предложить следующий обобщенный вид функции, описывающий времязависимый

закон получения ISN, который постоянно увеличивается каждую секунду:

ISN = F (mсsec, msec, sec), (3)

где mcsec – время в микросекундах; (обычно минимальной единицей измерения машинного времени является микросекунда); циклически изменяется за одну секунду от 0 до 106 – 1;

msec – текущее время в миллисекундах; этот параметр циклически изменяется за секунду от 0 до 999;

sec – текущее время в секундах.

На малом промежутке времени (меньше одной секунды) для удобства аппроксимации можно утверждать, что

ISN = F (mсsec). (4)

Итак, мы будем считать, что значение ISN зависит только от времени в микросекундах. Данная функция в силу особенностей изменения своих аргументов в сетевых ОС обычно является или кусочнолинейной, или ступенчатой. Например, зависимость (1), описывающая закон получения ISN в ОС Linux, в случае приведения ее к виду (4) является кусочнолинейной, а функциональная зависимость (2), справедливая для Windows NT, – ступенчатой.

На данном этапе мы вплотную подошли к проблеме определения вида функциональной зависимости ISN от времени (mcsec) для конкретной сетевой ОС. Первый способ получения этой зависимости – анализ исходных текстов ядра операционной системы. Использование данного способа на практике обычно оказывается невозможным из-за отсутствия исходных текстов большинства ОС. Исключение составляют ОС Linux и FreeBSD, поставляемые с исходными текстами ядра.

В связи с этим предлагается другой метод получения закона изменения ISN во времени. Сетевая ОС рассматривается исследователем как «черный ящик», к которому применяется метод тестирования «запрос – ответ»: на исследуемую ОС передается серия обычных запросов на созданиеТСР-соединения и принимается соответствующее количество ответов с текущими значениями ISN операционной системы в каждый момент времени. При этом замеряются временные интервалы в микросекундах между запросом и ответом на него и время, прошедшее между запросами. В результате у исследователя будет следующая таблица дискретных отсчетов ISN и соответствующих им моментов времени в mcsec:

где ISNn – значение ISN, полученное за время tn от начала эксперимента (время начала эксперимента принимается за 0).

Аппроксимируя данную таблицу дискретных значений непрерывной функции одним из известных математических методов (например, методом наименьших квадратов), получим непрерывную функцию, приближенно описывающую изменение ISN на данном временном промежутке (от 0 до tn), при этом чем выше точность исходных данных, тем точнее приближение:

ISN(t) ≅ F(t). (5)

С помощью этой формулы мы можем, зная функцию изменения ISN от времени, экстраполировать следующее значение ISN по предыдущему. Теперь атакующий, получив в ответ на TCP-запрос текущее значение ISN для ОС в данный момент времени, способен математически предсказать следующее возможное значение ISN через некоторый промежуток времени.

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

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

Применение описанной выше методики получения формулы ISN(t) на примере ОС Linux 1.2.8 и Windows NT 4.0 в случае нахождения в одном сегменте с данными ОС позволило определить это 32-битное значение (от 0 до 232 -1) по его предыдущему значению для ОС Windows NT с точностью до 10, а для ОС Linux 1.2.8 – с точностью примерно до 100. В табл. 4.1 приведены снятые в процессе эксперимента с ОС Linux 1.2.8 значения изменения ISN за соответствующие промежутки времени (а не абсолютные значения).

Таблица 4.1. Изменение значения ISN для ОС Linux 1.2.8

График на рис. 4.14, построенный на основе данных из этой таблицы и справедливый для ОС Linux 1.2.8, наглядно показывает линейный характер изменения значения начального идентификатора TCP-соединения ISN на данном временном промежутке (на самом деле зависимость изменения ISN для ОС Linux 1.2.8 носит кусочнолинейный характер).

Рис. 4.14. Зависимость изменения ISN от времени для Linux 1.2.8

Как правило, определив вид функций для вычисления ISN в операционных системах на сервере и предполагаемом клиенте, атакующий начинает следить за ОС сервера, ожидая подключения предполагаемого клиента. В тот момент, когда подключение произошло, кракер может подсчитать возможный диапазон значений ISN, которыми обменялись при создании TCP-канала данные хосты. Так как атакующий может вычислить значения ISN только приближенно, то ему не избежать подбора. Однако без помощи описанного выше метода для перебора всех возможных значений ISSa и ISSb понадобилось бы послать 264 пакета, что нереально. В противном случае, например, если удалось вычислить значения ISN на операционных системах с точностью до 100, для подмены одного из абонентов TCP-соединения взломщику достаточно послать всего 10 000 пакетов. Вообще говоря, осуществить атаку, связанную с подменой TCP-абонентов, путем предсказания ISSa и ISSb без перехвата трафика практически невозможно (за исключением случая, когда оба абонента используют ОС Windows NT). Поэтому более реальным выглядит воздействие, связанное с подменой только одного из абонентов TCP-соединения и предсказанием одного значения ISSa. Рассмотрим ставшую уже классической подобную удаленную атаку на r-службу. Осуществление такого взлома связано с описанными выше особенностями идентификации TCP-пакетов.

Недостатки идентификации абонентов TCP-соединения

В ОС UNIX существует понятие доверенный хост. Доверенным по отношению к какому-либо хосту называется сетевой компьютер, доступ на который пользователю с данного хоста разрешен без его аутентификации и идентификации с помощью r-службы (r – сокращение от англ. «remote» – удаленный). Обычно в ОС UNIX существует файл rhosts, в котором находится список имен и IP-адресов доверенных хостов. Для получения удаленного доступа к ним пользователю необходимо применить программы, входящие в r-службу (например, rlogin, rsh и т. д.). При использовании r-программ с доверенного хоста для получения удаленного доступа не требуется проходить стандартную процедуру идентификации и аутентификации, заключающуюся в проверке логического имени и пароля пользователя. Единственной аутентифицирующей пользователя информацией для r-службы является IP-адрес хоста, с которого осуществляется удаленный r-доступ (см. в главе 8 раздел «Программно-аппаратные методы защиты от удаленных атак в сети Internet»). Отметим, что все программы из r-службы реализованы на базе протокола TCP. Одной из программ, входящих в r-службу, является rsh (remote shell), с помощью которой возможно осуществление данной атаки: эта программа позволяет отдавать команды shell удаленному хосту, причем, чтобы отдать команду,

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

Схема удаленной атаки на rsh-сервер (рис. 4.15) была впервые описана небезызвестным Р. Т. Моррисом-старшим [13].

Рис. 4.15. Подмена одного из участников TCP-соединения при атаке на rsh-сервер

Пусть хост А доверяет хосту В. Хост X-Hacker – это станция атакующего.

Вначале атакующий X-Hacker открывает настоящее TCP-соединение с хостом В на любой TCP-порт (mail, echo и т. д.). В результате X-Hacker получает текущее на данный момент времени значение ISNb. Затем X-Hacker от имени хоста А посылает на хост В TCP-запрос на открытие соединения: SYN, ISSx.

Получив этот запрос, В анализирует IP-адрес отправителя и решает, что пакет пришел с хоста А. Следовательно, в ответ хост В посылает на А новое значение ISNb\': SYN, ACK, ISNb\', ACK(ISSx+1).

X-Hacker никогда не получит это сообщение от В, но, используя предыдущее значение ISNb и схему для получения ISNb\', при помощи математического предсказания может послать пакет на В: ACK, ISSx+1, ACK(ISNb\'+1).

Для того чтобы послать этот пакет, вероятно, потребуется перебрать некоторое количество возможных значений ACK(ISSb\'+1). Подбирать ISSx+1 не нужно, так как этот параметр TCP-соединения был послан с хоста X-Hacker на объект В в первом пакете.

В случае осуществления данной атаки перед взломщиком возникает следующая проблема. Так как X-Hacker посылает первый пакет на В от имени A, то хост B ответит на A пакетом 2. Но поскольку хост A не посылал на хост B никакого запроса, то, получив такой ответ, перешлет на B пакет с битом RST – закрыть соединение. Кракера это, естественно, не устраивает, поэтому ему придется на некоторое время вывести из строя хост A (см. раздел «Нарушение работоспособности хоста в сети Internet при использовании направленного шторма ложных TCP-запросов на создание соединения либо при переполнении очереди запросов»).

В итоге rsh-сервер на хосте В считает, что к нему подключился пользователь с доверенного объекта А, тогда как на самом деле это атакующий с хоста X-Hacker. И хотя взломщик никогда не получит пакеты с хоста В, он сможет выполнять на нем r-команды.

В заключение авторам хотелось бы привести пример реального инцидента, произошедшего в компьютерном центре Сан-Диего 12 декабря 1994 года, когда взломщик (небезызвестный Кевин Митник) использовал такую схему удаленной атаки. Этот инцидент представляет, как нам кажется, исторический интерес и показывает, что опасности, описанные в нашей книге, являются отнюдь не мнимыми угрозами из Internet, а той реальностью, над которой большинство пользователей просто не задумывается, но которая в любой момент может пожаловать к ним в гости.

Все приведенные ниже сведения взяты из письма эксперта по информационной безопасности Цутому Шимомуры (Tsutomu Shimomura) в различные эхо-конференции.

Далее приводится перевод его оригинального письма с некоторыми сокращениями и нашими комментариями:

« From: [email protected] (Tsutomu Shimomura)

Newsgroups: comp.security.misc,comp.protocols.tcp-ip,alt.security

Subject: Technical details of the attack described by Markoff in NYT

Date: 25 Jan 1995 04:36:37 -0800

Organization: San Diego Supercomputer Center

Message-ID: <[email protected]>

NNTP-Posting-Host: ariel.sdsc.edu

Keywords: IP spoofing, security, session hijacking

Привет с озера Тахо. В статье Джона Маркоффа от 23.01.95 в газете «Нью-Йорк Таймс» и в рекомендациях CERT CA-95:01, кажется, было довольно много путаницы насчет того, что такое на самом деле атака с использованием подмены IP-адреса с целью подмены одного из абонентов соединения.

...

Имеется в виду статья в New York Times под названием «Data Network Is Found Open To New Threat». Следующая статья была опубликована 28 января 1995 года под названием «Taking a Computer Crime to Heart». Заключительная статья «A Most-Wanted Cyberthief Is Caught In His Own Web» появилась 16 февраля того же года. Time Magazine напечатал две статьи под следующими громкими заголовками: «KEVIN MITNICK\'S DIGITAL OBSESSION» и «CRACKS IN THE NET: America\'s most wanted hacker has been arrested, but the Internet is more vulnerable than ever». Шумиха, поднятая американской прессой по этому поводу, была столь велика, что нам остается только вспомнить крылатую фразу Шекспира: «Много шума из ничего». Хотя это можно объяснить тем, что, во-первых, в США благодаря стараниям прессы сложился образ злобного суперхакера, этакого «монстра» киберпространства – Кевина Митника; во-вторых, это был один из редких случаев обнародования информации о реальной удаленной атаке; в-третьих, ее осуществление удалось проследить и запротоколировать, что обычно очень непросто; и, в-четвертых, с нашей точки зрения, это, пожалуй, единственная известная, и при этом довольно красивая, удаленная атака на TCP-соединение (истории о «тупых» атаках с перехватом пароля или попытками его подбора читателю уже, видимо, надоели).

Здесь приведены некоторые технические подробности из моей презентации 11.01.95 в CMAD 3 в Сономе, Калифорния. Надеюсь, это поможет снять всяческое непонимание природы этих атак.

Для атаки использовалось два различных механизма. Подмена IP-адреса отправителя и математическое предсказание начального значения идентификатора TCP-соединения позволили получить доступ к бездисковой рабочей станции, которая использовалась как X-терминал.

В письмо включен log-файл, полученный с помощью программы tcpdump, с записью всех пакетов, посланных атакующим. Для краткости этот файл приводится с сокращением некоторых несущественных подробностей.

Моя конфигурация:

server = SPARC с ОС Solaris 1, обслуживающий х-terminal;

х-terminal = бездисковая рабочая станция SPARC с ОС Solaris 1;

target = основная цель атаки.

Атака началась 25 декабря 1994 года в 14:09:32. Первые попытки зондирования осуществлялись с хоста toad.com (информация взята из log-файла).

14:09:32 toad.com# finger -l @target

14:10:21 toad.com# finger -l @server

14:10:50 toad.com# finger -l root@server

14:11:07 toad.com# finger -l @x-terminal

14:11:38 toad.com# showmount -e x-terminal

14:11:49 toad.com# rpcinfo -p x-terminal

14:12:05 toad.com# finger -l root@x-terminal

Зондирование системы позволило определить, есть ли у нее другие доверенные системы для дальнейшей атаки. То, что атакующий смог запустить программы showmount и rpcinfo, означало, что он является пользователем root на хосте toad.com.

Через шесть минут мы видим шторм TCP-запросов на создание соединения с адреса 130.92.6.97 на 513-й порт (login) хоста server. При этом основная цель атакующего – этими однонаправленными TCP-запросами переполнить очередь на 513-ом порту сервера так, чтобы он не смог отвечать на новые запросы на создание соединения. Особенно важно, чтобы сервер не смог сгенерировать TCP-пакет с битом RST в ответ на неожиданно пришедший TCP-пакет с битами SYN и ACK.

Так как порт 513 является привилегированным портом, то теперь IP-адрес хоста server.login может быть свободно использован атакующим для атаки с использованием подмены адреса на r-службы UNIX-систем (rsh, rlogin).

Поделиться:
Популярные книги

Девочка-лед

Джолос Анна
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Девочка-лед

Держать удар

Иванов Дмитрий
11. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Держать удар

Возвышение Меркурия. Книга 4

Кронос Александр
4. Меркурий
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Возвышение Меркурия. Книга 4

Предатель. Цена ошибки

Кучер Ая
Измена
Любовные романы:
современные любовные романы
5.75
рейтинг книги
Предатель. Цена ошибки

Брак по принуждению

Кроу Лана
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Брак по принуждению

Стеллар. Заклинатель

Прокофьев Роман Юрьевич
3. Стеллар
Фантастика:
боевая фантастика
8.40
рейтинг книги
Стеллар. Заклинатель

Вернуть невесту. Ловушка для попаданки 2

Ардова Алиса
2. Вернуть невесту
Любовные романы:
любовно-фантастические романы
7.88
рейтинг книги
Вернуть невесту. Ловушка для попаданки 2

Мое ускорение

Иванов Дмитрий
5. Девяностые
Фантастика:
попаданцы
альтернативная история
6.33
рейтинг книги
Мое ускорение

Чужая дочь

Зика Натаэль
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Чужая дочь

Страж Кодекса. Книга V

Романов Илья Николаевич
5. КО: Страж Кодекса
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Страж Кодекса. Книга V

Неудержимый. Книга XII

Боярский Андрей
12. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XII

Попаданка в Измену или замуж за дракона

Жарова Анита
Любовные романы:
любовно-фантастические романы
6.25
рейтинг книги
Попаданка в Измену или замуж за дракона

Измена. Верни мне мою жизнь

Томченко Анна
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Верни мне мою жизнь

Титан империи

Артемов Александр Александрович
1. Титан Империи
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Титан империи