28157-1 (Дослідження протоколу TCP/IP /укр./), страница 4
Описание файла
Документ из архива "Дослідження протоколу TCP/IP /укр./", который расположен в категории "". Всё это находится в предмете "иностранный язык" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "остальное", в предмете "иностранный язык" в общих файлах.
Онлайн просмотр документа "28157-1"
Текст 4 страницы из документа "28157-1"
После этого соединение считается установленным и начинается обмен данными. При этом каждый пакет имеет в заголовке поле для sequence number и acknowledge number. Данные числа увеличиваются при обмене данными и позволяют контролировать корректность передачи.
Предположим, что крэкер может предсказать, какой sequence number (S-SYN по схеме) будет выслан сервером. Это возможно сделать на основе знаний о конкретной реализации TCP/IP. Например, в 4.3BSD значение sequence number, которое будет использовано при установке следующего значения, каждую секунду увеличивается на 125000. Таким образом, послав один пакет серверу, крэкер получит ответ и сможет (возможно, с нескольких попыткок и с поправкой на скорость соединения)предсказать sequence number для следующего соединения.
Если реализация TCP/IP использует специальный алгоритм для определения sequence number, то он может быть выяснен с помощью посылки нескольких десятков пакетов серверу и анализа его ответов.
Итак, предположим, что система A доверяет системе B, так, что пользователь системы B может сделать "rlogin A"_ и оказаться на A, не вводя пароля. Предположим, что крэкер расположен на системе C. Система A выступает в роли сервера, системы B и C - в роли клиентов.
Первая задача крэкера - ввести систему B в состояние, когда она не сможет отвечать на сетевые запросы. Это может быть сделано несколькими способами, в простейшем случае нужно просто дождаться перезагрузки системы B. Нескольких минут, в течении которых она будет неработоспособна, должно хватить. Другой вариант - использование описанными в следующих разделах методов.
После этого крэкер может попробовать притвориться системой B, для того, что бы получить доступ к системе A (хотя бы кратковременный).
Крэкер высылает несколько IP-пакетов, инициирующих соединение, системе A, для выяснения текущего состояния sequence number сервера. Крэкер высылает IP-пакет, в котором в качестве обратного адреса указан уже адрес системы B. Система A отвечает пакетом с sequence number, который направляется системе B. Однако система B никогда не получит его (она выведена из строя), как, впрочем, и крэкер. Но он на основе предыдущего анализа догадывается, какой sequence number был выслан системе B Крэкер подтверждает "получение" пакета от A, выслав от имени B пакет с предполагаемым S-ACK (заметим, что если системы располагаются в одном сегменте, крэкеру для выяснения sequence number достаточно перехватить пакет, посланный системой A). После этого, если крэкеру повезло и sequence number сервера был угадан верно, соединение считается установленным.
Теперь крэкер может выслать очередной фальшивый IP-пакет, который будет уже содержать данные. Например, если атака была направлена на rsh, он может содержать команды создания файла .rhosts или отправки /etc/passwd крэкеру по электронной почте.
Представим это в виде схемы 1:
Е стественно, 100% срабатывания у этой схемы нет, например, она не застрахована от того, что по дороге не потеряются какие-то пакеты, посланные крэкером. Для корректной обработки этих ситуаций программа должна быть усложнена.
2.5.Десинхронизация нулевыми данными
В данном случае крэкер прослушивает сессию и в какой-то момент посылает серверу пакет с "нулевыми" данными, т.е. такими, которые фактически будут проигнорированы на уровне прикладной программы и не видны клиенту (например, для telnet это может быть данные типа IAC NOP IAC NOP IAC NOP...). Аналогичный пакет посылается клиенту. Очевидно, что после этого сессия переходит в десинхронизированное состояние.
ACK-буря
Одна из проблем IP Hijacking заключается в том, что любой пакет, высланный в момент, когда сессия находится в десинхронизированном состоянии вызывает так называемый ACK-бурю. Например, пакет выслан сервером, и для клиента он является неприемлимым, поэтому тот отвечает ACK-пакетом. В ответ на этот неприемлимый уже для сервера пакет клиент вновь получает ответ... И так до бесконечности.
К счастью (или к сожалению?) современные сети строятся по технологиям, когда допускается потеря отдельных пакетов. Поскольку ACK-пакеты не несут данных, повторных передачи не происходит и "буря стихает".
Как показали опыты, чем сильнее ACK-буря, тем быстрее она "утихомиривает" себя -на 10MB ethernet это происходит за доли секунды. На ненадежных соединениях типа SLIP - ненамного больше.
2.6.Детектирование и защита
Есть несколько путей. Например, можно реализовать TCP/IP-стэк, которые будут контролировать переход в десинхронизированное состояние, обмениваясь информацией о sequence number/acknowledge number. Однако в данному случае мы не застрахованы от крэкера, меняющего и эти значения.
Поэтому более надежным способом является анализ загруженности сети, отслеживание возникающих ACK-бурь. Это можно реализовать при помощи конкретных средств контроля за сетью.
Если крэкер не потрудиться поддерживать десинхронизированное соединение до его закрытия или не станет фильтровать вывод своих команд, это также будет сразу замечено пользователем. К сожалению, подавляющее большинство просто откруют новую сессию, не обращаясь к администратору.
Стопроцентную защиту от данной атаки обеспечивает, как всегда, шифрование TCP/IP-трафика (на уровне приложений - secure shell) или на уровн протокола - IPsec). Это исключает возможность модификации сетевого потока. Для защиты почтовых сообщений может применяться PGP.
Следует заметить, что метод также не срабатывает на некоторых конкретных реализациях TCP/IP. Так, несмотря на [rfc...], который требует молчаливого закрытия сесии в ответ на RST-пакет, некоторые системы генерируют встречный RST-пакет. Это делает невозможным раннюю десинхронизацию.
Для более глубокого ознакомления с этой атакой рекомендуется обратиться к IP Hijacking (CERT).
2.7. Пассивное сканирование
Сканирование часто применяется крэкерами для того, чтобы выяснить, на каких TCP-портах работают демоны, отвечающие на запросы из сети. Обычная программа-сканер последовательно открывает соединения с различными портами. В случае, когда соединение устанавливается, программа сбрасывает его, сообщая номер порта крэкеру.
Данный способ легко детектируются по сообщениям демонов, удивленных мгновенно прерваным после установки соединением, или с помощью использования специальных программ. Лучшие из таких программ обладают некоторыми попытками внести элементы искуственного элемента в отслеживание попыток соединения с различными портами.
Однако крэкер может воспользоваться другим методом -- пассивным сканированием (английский термин "passive scan"). При его использовании крэкер посылает TCP/IP SYN-пакет на все порты подряд (или по какому-то заданному алгоритму). Для TCP-портов, принимающих соединения извне, будет возвращен SYN/ACK-пакет, как приглашение продолжить 3-way handshake. Остальные вернут RST-пакеты. Проанализировав данные ответ, крэкер может быстро понять, на каких портах работают программа. В ответ на SYN/ACK-пакеты он может также ответить RST-пакетами, показывая, что процесс установки соединения продолжен не будет (в общем случае RST-пакетами автоматический ответит TCP/IP-реализация крэкера, если он не предпримет специальных мер).
Метод не детектируется предыдущими способами, поскольку реальное TCP/IP-соединение не устанавливается. Однако (в зависимости от поведения крэкера) можно отслеживать резко возросшее количество сессий, находящихся в состоянии SYN_RECEIVED (при условии, что крэкер не посылает в ответ RST) прием от клиента RST-пакета в ответ на SYN/ACK.
К сожалению, при достаточно умном поведении крэкера (например, сканирование с низкой скоростью или проверка лишь конкретных портов) детектировать пассивное сканирование невозможно, поскольку оно ничем не отличается от обычных попыток установить соединение.
В качестве защиты можно лишь посоветовать закрыть на firewall все сервисы, доступ к которым не требуется извне.
Заключение.
Протоколы TCP/IP прошли долгий путь усовершенствований для обеспечения требований феномена ХХ века – глобальной сети Internet.Протоколы TCP/IP используются практически в любой коммуникационной среде, от локальных сетей на базе технологии Ethernet , до сверхскоростных сетей АТМ, от телефонных каналов точка – точка до трансатлантических линий связи с пропускной способностью в сотни мегабит в секунду.
Некоторые основные положения:
-TCP/IP имеет четырехуровневую иерархию.
-IP – адреса определяются программно и должны быть глобально уникальными. IP используют адреса для передачи данных между сетями и через уровни программного обеспечения хоста. В сетях TCP/IP корректный адрес определяется сетевым администратором, а не аппаратными компонентами. Проблемы обычно возникают из – за ошибок конфигурации.
-Маршрутизация необходима, чтобы пересылать данные между двумя системами, которые не подсоединены напрямую к одной физической сети.
Изначально протокол TCP/IP создавался для того, чтобы обеспечить надежную работу сети, состоящей из мини- компьютеров и находящейся под управлением профессиональных администраторов. Компьютеры в сети TCP/IP рассматриваются как равноправные системы. Это означает, что они могут
выступать в качестве серверов для одного приложения и одновременно работать как клиенты для другого. В протоколе TCP/IP не делается различий между ПК и мэйнфреймами. Для TCP/IP все они – хосты, а ко всем хостам предъявляются одинаковые требования по конфигурации.
TCP/IP тоже совершенствуется по мере развития ПК и программного базовых приложений, поэтому является более сложной сетевой средой, чем традиционные локальные сети ПК. Основными элементами сети TCP/IP являются базовые службы удаленного доступа к серверу, передачи файлов и электронной почты.
Почему сети TCP/IP не доминируют на рынке ПК?
Прежде всего потому, что данный протокол создавался не для ПК и ориентирован не на рынок ПК. Он создан для того, чтобы работать на различных аппаратных платформах в среде разнообразных операционных систем.
Основные достоинства TCP/IP:
-
Cемейство протоколов основано на открытых стандартах, свободно доступных и разработанных независимо от конкретного оборудования или операционной системы. Благодаря этому TCP/IP является наиболее распространенным средством объединения разнородного оборудования и программного обеспечения.
-
Протоколы TCP/IP не зависят от конкретного сетевого оборудования физического уровня. Это позволяет использовать TCP/IP в физических сетях самого различного типа : Ethernet , Token – Ring , X.25, т.е. практически в любой среде передачи данных.
-
Протоколы этого семейства имеют гибкую схему адресации , позволяющую любому устройству однозначно адресовать другое устройство сети. Одна и та же система адресации может использоваться как в локальных , так и в территориально распределенных сетях, включая Internet.
-
В семейство TCP/IP входят стандартизированные протоколы высокого уровня для поддержки прикладных сетевых услуг , таких как передача файлов , удаленный терминальный доступ , обмен сообщениями электронной почты и т.д.
Литература
-
Ю.А.Кулаков, Г.М.Луцкий ”Компьютерные сети”
М. – К. “Юниор”,1998. – 384с.,ил.
-
А.И.Гусева “Технология межсетевых взаимодействий”
М. “Диалог – МИФИ” 1997г., - 272с.
-
Крейг Хант “ПК в сетях TCP/IP”
-
“ UNIX” – руководство системного администратора
1995г., Санкт – Петербург
-
“ Журнал сетевых решений “ 1995г., ноябрь, том1.номер4.
-
Сергей Дунаев “UNIX” ,”Диалог – МИФИ” Москва – 1997г.
-
М.Шварц “ Проектирование и моделирование “ 1 – 2 том
“Диалог – МИФИ'' Москва
13