Для авторов Архив рассылки |
Русский English | |||
Путь: Panvasoft / Блог / Безопасность TCP/IP |
1. Abstract
В статье рассматривается безопасность семейства IP-протоколов. Описываютсявозможные типа атак, представлено несколько вариантов решения проблем. 2. Вступление Для того, чтобы предпринять подобные атаки, крэкер должен обладать контролемнад одной из систем, подключенной к Internet. Это возможно, например, вслучае, когда крэкер взломал какую-то систему или использует собственныйкомпьютер, имеющий соединение с Internet (для многих атак достаточно иметьPPP-доступ) В данной статье не рассматриваются возможные физические атаки (например,непосредственный съем информации через ethernet или перехват трафика междурадио-мостами). Все внимание обращено на программную реализацию.
Статья подразумевает знакомство читателя с TCP/IP и ориентирована наадминистраторов в области безопасности. Официальное описание семействаIP-протоколов можно найти в RFC, при первомзнакомстве с TCP/IP может оказать неоценимую помощь великолепная книга"TCP/IP Illustrated"by R.Stevens Автор оставляет в стороне моральные вопросы, т.к. считает, что толькополная информация может помочь подготовиться к возможным атакам и защититьсяот них. Принцип "Безопасность через незнание"(Security through Obscurity) редко оправдывает себя. Атаки на TCP/IP можно разделить на два вида: пассивные и активные. 3. Пассивные атаки на уровне TCP 3.1. Подслушивание Для осуществления подслушивания крэкеру необходимо иметь доступ к машине,расположенной на пути сетевого потока, который необходимо анализировать;например, к маршрутизатору или PPP-серверу на базе UNIX. Если крэкеру удастсяполучить достаточные права на этой машине, то с помощью специального программногообеспечения сможет просматривать весь трафик, проходящий через заданныеинтерфейс.
Второй вариант -- крэкер получает доступ к машине, которая расположенав одном сегменте сети с системой, которой имеет доступ к сетевому потоку.Например, в сети "тонкий ethernet" сетевая карта может быть переведенав режим, в котором она будет получать все пакеты, циркулирующие по сети,а не только адресованной ей конкретно. В данном случае крэкеру не требуетсядоступ к UNIX -- достаточно иметь PC с DOS или Windows (частая ситуацияв университетских сетях) Поскольку TCP/IP-трафик, как правило, не шифруется (мы рассмотрим исключенияниже), крэкер, используя соответствующий инструментарий, может перехватыватьTCP/IP-пакеты, например, telnet-сессий и извлекать из них имена пользователейи их пароли.
Следует заметить, что данный тип атаки невозможно отследить, не обладаядоступом к системе крэкера, поскольку сетевой поток не изменяется. Единственнаянадежная защита от подслушивания -- шифрование TCP/IP-потока (например,secure shell) или использованиеодноразовых паролей (например, S/KEY) Другое вариант решения - использование интеллектуальных свитчей и UTP,в результате чего каждая машина получает только тот трафик, что адресованей. У каждой палки два конца. Естественно, подслушивание может быть и полезно.Так, данный метод используется большим количеством программ, помогающихадминистраторам в анализе работы сети (ее загруженности, работоспособностии т.д.). Один из ярких примеров -- общеизвестный tcpdump 4. Активные атаки на уровне TCP Активные атаки можно разделить на две части. В первом случае крэкерпредпринимает определенные шаги для перехвата и модификации сетевого потокаили попыток "притвориться" другой системой. Во втором случае протокол TCP/IPиспользуется для того, чтобы привести систему-жертву в нерабочее состоянии. Обладая достаточными привилегиями в Unix (или попросту используя DOSили Windows, не имеющие системы ограничений пользователей), крэкер можетвручную формировать IP-пакеты и передавать их по сети. Естественно, полязаголовка пакета могут быть сформированы произвольным образом. Получивтакой пакет, невозможно выяснить откуда реально он был получен, посколькупакеты не содержат пути их прохождения. Конечно, при установке обратногоадреса не совпадающим с текущим IP-адресом, крэкер никогда не получит ответна отосланный пакет. Однако, как мы увидим, часто это и не требуется.
Возможность формирования произвольных IP-пакетов является ключевым пунктомдля осуществления активных атак. 4.1. Предсказание TCP sequence number 4.1.1. Описание
После этого соединение считается установленным и начинается обмен данными.При этом каждый пакет имеет в заголовке поле для sequencenumber и acknowledge number. Данныечисла увеличиваются при обмене данными и позволяют контролировать корректностьпередачи.
Предположим, что крэкер может предсказать, какой sequence number ( S-SYNпо схеме) будет выслан сервером. Это возможно сделать на основе знанийо конкретной реализации TCP/IP. Например, в 4.3BSD значение sequence number,которое будет использовано при установке следующего значения, каждую секундуувеличивается на 125000. Таким образом, послав один пакет серверу, крэкерполучит ответ и сможет (возможно, с нескольких попыткок и с поправкой наскорость соединения) предсказать sequence number для следующего соединения.
Если реализация TCP/IP использует специальный алгоритм для определенияsequence number, то он может быть выяснен с помощью посылки несколькихдесятков пакетов серверу и анализа его ответов.
Итак, предположим, что система A доверяет системе B, так,что пользователь системы B может сделать "rloginA"_ и оказаться на A, не вводя пароля. Предположим, что крэкеррасположен на системе C. Система A выступает в роли сервера,системы B и C - в роли клиентов. Первая задача крэкера - ввести систему B в состояние, когда онане сможет отвечать на сетевые запросы. Это может быть сделано несколькимиспособами, в простейшем случае нужно просто дождаться перезагрузки системы B. Нескольких минут, в течении которых она будет неработоспособна,должно хватить. Другой вариант -- использование описанными в следующихразделах методов.
После этого крэкер может попробовать притвориться системой B,для того, что бы получить доступ к системе A (хотя бы кратковременный).
Представим это в виде схемы:
4.1.2. Детектирование и защита В случае использования более интеллектуальных средств контроля за сетьюадминистратор может отслеживать (в автоматическом режиме) пакеты от систем,которые в находятся в недоступном состоянии. Впрочем, что мешает крэкеруимитировать работу системы B ответом на ICMP-пакеты? Какие способы существуют для защиты от IP-spoofing? Во-первых, можноусложнить или сделать невозможным угадывание sequence number (ключевойэлемент атаки). Например, можно увеличить скорость изменения sequence numberна сервере или выбирать коэффициент увеличения sequence number случайно(желательно, используя для генерации случайных чисел криптографически стойкийалгоритм).
Если сеть использует firewall (или другойфильтр IP-пакетов), следует добавить ему правила, по которым все пакеты,пришедшие извне и имеющие обратными адресами из нашего адресного пространства,не должны пропускаться внутрь сети. Кроме того, следует минимизироватьдоверие машин друг другу. В идеале не должны существовать способа, напрямуюпопасть на соседнюю машину сети, получив права суперпользователя на однойиз них. Конечно, это не спасет от использования сервисов, не требующихавторизации, например, IRC (крэкер может притвориться произвольной машинойInternet и передать набор команд для входа на канал IRC, выдачи произвольныхсообщений и т.д.). Шифрование TCP/IP-потока решает в общем случае проблему IP-spoofing'а(при условии, что используются криптографически стойкие алгоритмы). Для того, чтобы уменьший число таких атак, рекомендуется также настроитьfirewall для фильтрации пакетов, посланных нашей сетью наружу, но имеющихадреса, не принадлежащие нашему адресному пространству. Это защитит мирот атак из внутренней сети, кроме того, детектирование подобных пакетовбудет означать нарушение внутренней безопасности и может помочь администраторув работе. 4.2. IP Hijacking 4.2.1. Описание Напомним, что при передаче данных постоянно используются sequence numberи acknowledge number (оба поля находятся в IP-заголовке). Исходя из ихзначения, сервер и клиент проверяют корректность передачи пакетов. Существует возможность ввести соединение в "десинхронизированное состояние",когда присылаемые сервером sequence number и acknowledge number не будутсовпадать с ожидаемым значениеми клиента, и наоборот. В данном случае крэкер,"прослушивая" линию, может взять на себя функции посредника, генерируякорректные пакеты для клиента и сервера и перехватывая их ответы.
Метод позволяет полностью обойти такие системы защиты, как, например,одноразовые пароли, поскольку крэкер начинает работу уже после того, какпроизойдет авторизация пользователя.
Есть два способа рассинхронизировать соединение
4.2.1.1. Ранняя десинхронизация
4.2.1.2. Десинхронизация нулевыми данными 4.2.2. ACK-буря К счастью (или к сожалению?) современные сети строятся по технологиям,когда допускается потеря отдельных пакетов. Поскольку ACK-пакетыне несут данных, повторных передачи не происходит и "буря стихает". Как показали опыты, чем сильнее ACK-буря, тем быстрее она "утихомиривает"себя - на 10MB ethernet это происходит за доли секунды. На ненадежных соединенияхтипа SLIP - ненамного больше. 4.2.3. Детектирование и защита> Поэтому более надежным способом является анализ загруженности сети,отслеживание возникающих ACK-бурь. Это можно реализовать при помощи конкретныхсредств контроля за сетью.
Если крэкер не потрудиться поддерживать десинхронизированное соединениедо его закрытия или не станет фильтровать вывод своих команд, это такжебудет сразу замечено пользователем. К сожалению, подавляющее большинствопросто откруют новую сессию, не обращаясь к администратору. Стопроцентную защиту от данной атаки обеспечивает, как всегда, шифрованиеTCP/IP-трафика (на уровне приложений - secure shell)или на уровн протокола - IPsec). Это исключаетвозможность модификации сетевого потока. Для защиты почтовых сообщенийможет применяться PGP. Следует заметить, что метод также не срабатывает на некоторых конкретныхреализациях TCP/IP. Так, несмотря на [rfc...], который требует молчаливогозакрытия сесии в ответ на RST-пакет, некоторые системы генерируют встречныйRST-пакет. Это делает невозможным раннюю десинхронизацию. Для более глубокого ознакомления с этой атакой рекомендуется обратитьсяк IP Hijacking(CERT). 4.3. Пассивное сканирование Данный способ легко детектируются по сообщениям демонов, удивленныхмгновенно прерваным после установки соединением, или с помощью использованияспециальных программ. Лучшие из таких программ обладают некоторыми попыткамивнести элементы искуственного элемента в отслеживание попыток соединенияс различными портами. Однако крэкер может воспользоваться другим методом -- пассивным сканированием(английский термин "passive scan"). При егоиспользовании крэкер посылает TCP/IP SYN-пакет на все порты подряд(или по какому-то заданному алгоритму). Для TCP-портов, принимающих соединенияизвне, будет возвращен SYN/ACK-пакет, как приглашение продолжить 3-way handshake. Остальные вернут RST-пакеты.Проанализировав данные ответ, крэкер может быстро понять, на каких портахработают программа. В ответ на SYN/ACK-пакеты он может также ответить RST-пакетами, показывая, что процесс установки соединения продолженне будет (в общем случае RST-пакетами автоматический ответит TCP/IP-реализациякрэкера, если он не предпримет специальных мер).
Метод не детектируется предыдущими способами, поскольку реальное TCP/IP-соединениене устанавливается. Однако (в зависимости от поведения крэкера) можно отслеживать
В качестве защиты можно лишь посоветовать закрыть на firewall все сервисы,доступ к которым не требуется извне. 4.4. Затопление ICMP-пакетами Данная атака требует от крэкера доступа к быстрым каналам в Интернет.
Вспомним, как работает ping. Программа посылает ICMP-пакет типа ECHOREQUEST, выставляя в нем время и его идентификатор. Ядро машины-получателяотвечает на подобный запрос пакетом ICMP ECHO REPLY.Получив его ping выдает скорость прохождения пакета.
При стандартном режиме работы пакеты выслаются через некоторые промежуткивремени, практически не нагружая сеть. Но в "агрессивном" режиме потокICMP echo request/reply-пакетов может вызвать перегрузку небольшой линии,лишив ее способности передавать полезную информацию.
Естественно, случай с ping является частным случаем более общей ситуации,связанный с перегрузкой каналов. Например, крэкер может посылать множествоUDP-пакетов на 19-й порт машины-жертвы, и горе ей, если она, следуя общепринятымправилам, имеет на 19-м UDP-порту знакогенератор, отвечающий на пакетыстрочками по 80 байт. Заметим, что крэкер может также подделывать обратный адрес подобныхпакетов, затрудняя его обнаружение. Отследить его поможет разве что скоординированнаяработа специалистов на промежуточных маршрутизаторах, что практически нереально.
Одной из вариантов атаки - посылать ICMP echo request-пакеты с исходнымадресом, указывающем на жертву, на broadcast-адресакрупных сетей. В результате каждая из машин ответит на этот фальшивый запрос,и машина-отправитель получит больше количество ответов. Посылка множествоbroadcast-echo requests от имени "жертвы" на broadcast-адреса крупных сетей,можно вызвать резкой заполненение канала "жертвы".
Приметы затопления - резко возросшая нагрузка на сеть (или канал) иповышение количество специфических пакетов (таких, как ICMP). В качестве защиты можно порекомендовать настройку маршрутизаторов, прикоторых они будут фильтровать тот же ICMP трафик, превышающие некоторуюзаданную заранее величину (пакетов/ед. времени). Для того, чтобы убедиться,что Ваши машины не могут служить источником ping flood'а, ограничьте доступк ping (например, многие реализации 4.5. Локальная буря
В данном случае крэкер может послать единственный UDP-пакет, где в качествеисходного порта будет указан 7, в качестве получателя - 19-й, а в качествеадреса получателя и отправителя будут указаны, к примеру, две машины вашейсети (или даже 127.0.0.1). Получив пакет, 19-й порт отвечает строкой, котораяпопадает на порт 7. Седьмой порт дублирует ее и вновь отсылает на 19..и так до бесконечности.
Бесконечный цикл съедает ресурсы машин и добавляет на канал бессмысленнуюнагрузку. Конечно, при первом потерянном UDP-пакете буря прекратиться.Как недавно стало известно, данная атака временно выводит из строя (доперезагрузки) некоторые старые модели маршрутизаторов. Очевидно, что в бесконечный разговор могут быть вовлечены многие демоны(в случае TCP/IP может быть применен TCP/IP spoofing, в случае UDP/ICMPдостаточно пары фальшивых пакетов)
В качестве защиты стоит еще раз порекомендовать не пропускать в сетипакеты с внутренними адресам, но пришедшие извне. Также рекомендуется закрытьна firewall использование большинства сервисов.
4.6. Затопление SYN-пакетами
Вспомним, как работает TCP/IP в случае входящих соединений. Системаотвечает на пришедший C-SYN-пакет S-SYN/C-ACK-пакетом, переводитсессию в состояние SYN_RECEIVED и заноситее в очередь. Если в течении заданного времени от клиента не придет S-ACK,соединение удаляется из очереди, в противном случае соединение переводитсяв состояние ESTABLISHED.
Рассмотрим случай, когда очередь входных соединений уже заполнена, асистема получает SYN-пакет, приглашающий к установке соединения.По RFC он будет молча проигнорирован.
Затопление SYN-пакетами основано на переполнении очереди сервера,после чего сервер перестает отвечать на запросы пользователей. Самая известнаяатака такого рода - атака на Panix, нью-йоркского провайдера. Panix неработал в течении 2-х недель.
В различных системах работа с очередью реализована по разному. Так,в BSD-системах, каждый порт имеет свою собственную очередь размером в 16элементов. В системах SunOS, напротив, такогоразделения и нет и система просто располагает большой общей очередью. Соответственно,для того, что бы заблокировать, к примеру, WWW-порт на BSDдостаточно 16 SYN-пакетов, а для Solaris 2.5их количество будет гораздо больше.
После истечение некоторого времени (зависит от реализации) система удаляетзапросы из очереди. Однако ничего не мешает крэкеру послать новую порциюзапросов. Таким образом, даже находясь на соединение 2400 bps, крэкер можетпосылать каждые полторы минуты по 20-30 пакетов на FreeBSD-сервер,поддерживая его в нерабочем состоянии (естественно, эта ошибка была скорректированав последних версиях FreeBSD)
Как обычно, крэкер может воспользоваться случайными обратными IP-адресамипри формировании пакетов, что затрудняет его обнаружение и фильтрацию еготрафика. Детектирование несложно -- большое количество соединений в состоянии SYN_RECEIVED, игнорирование попыток соединитсяс данным портом. В качестве защиты можно порекомендовать патчи, которыереализуют автоматическое "прорежение" очереди, например, на основе алгоритма Early Random Drop. Для того, что бы узнать,если к Вашей системе защита от SYN-затопления, обратитесь к поставщикусистемы.
Другой вариант защиты - настроить firewall так, что бы все входящиеTCP/IP-соединения устанавливал он сам, и только после этого перебрасывалих внутрь сети на заданную машину. Это позволит Вам ограничить syn-затоплениеи не пропустить его внутрь сети. Вадим Колонцов
Категория: Безопасность
Источник: hacksoft.ru Опубликовал: Feeder, Дата: 28.11.2006, Просмотров сегодня: 1, Просмотров всего: 9823, Рейтинг: Расскажи друзьям: Еще статьи на угад: Настройка правил для Agnitum Outpost Firewall Уничтожение - тоже защита. Paragon Disk Wiper 7.0 Professional Edition. Безопасность TCP/IP Собирая головоломку под названием DRM Internet Password Recovery Toolbox 1.3.0.2 Как хорошо защищен ваш компьютер? Технологии защиты от мошенников в Internet. Ваши комментарии:
|
|