Сетевая безопасность


Зам. зав. кафедры "Телекоммуникационные сети и системы" МФТИ
Зам.зав. кафедры Информатики ФНТИ МФТИ
Нач. лаб. Инфокоммуникационных технологий
Института Теоретической и Экспериментальной Физики

Вирусы
Троянский конь
Кролики
Черви
Макровирусы
Молдавская связь
Человек-по-середине
Атаки DNS
Проверка добротности пароля
Инсайдеры


Совсем недавно персональная ЭВМ стоила в России дороже автомашины, сегодня же десятки (а может быть и сотни) тысяч ЭВМ работают дома, развлекая и зарабатывая деньги своим хозяевам. Сети ЭВМ из достояния научных центров постепенно стали обязательным атрибутом процветающих торговых фирм, банков, милиции, таможни, налоговой службы и т.д. Если раньше главной проблемой было создание сети и обеспечение доступа к Интернет, то сегодня по мере увеличения размеров сети проблема безопасности выходит на лидирующие позиции. Безопасность - комплексное понятие, это и ограничение нежелательного доступа, и сохранность информации, и живучесть самой сети. Актуальность проблемы подтверждает количество RFC-документов, опубликованных за последнее время [1-14, 18] по данной тематике (см. библиографию в конце данного раздела). Эту статью и несколько последующих следует рассматривать как обзор возможных угроз и способов защиты. В основном это касается обычных сетей, не содержащих конфиденциальную или тем более секретную информацию. Но многие соображения, приводимые здесь, носят достаточно универсальный характер.Уязвимость сетевых объектов в заметной степени определяется монопольным статусом основных видов программного обеспечения. Windows и UNIX занимают более 90% рынка ОС, Apache и IIS охватывают более 90% рынка программ WEB-сервиса. Когда на каждый десяток разработчиков программного обеспечения приходится миллион тесно сотрудничаюших хакеров, сокращение числа объектов атаки (ОС и основные приложения) создает благоприятные условия для уязвимости потенциальных жертв.
Все это лишний раз подтверждает, что монополии до добра не доводят.

Резонен вопрос, можно ли создать безопасное программное обеспечение? Вообще говоря, нет, но можно разрабатывать достаточно эффективные в отношении безопасности программы. Примером может служить ОС OpenBSD, для которой за семь лет была найдена только одна уязвимость. Но здесь, разумеется следует учесть то, что OpenBSD не слишком популярный продукт (нет многоих нужных сервисов), а хакеры народ рациональный и они предпочитают копать под популярные продукты, так как это дает большие доходы.

Распространению эпидемий взломов способствует с одной строны незаинтересованность разработчиков программного обеспечения уведомлять пользователей о выявленных уязвимостях, с другой стороны то, что редкий пользователь по доброй воле устанавливает обновления программ, которые блокируют некоторые выявленные уязвимости.

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

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

Рассмотрим сначала факторы, влияющие на надежность сети. Источниками ненадежности сети могут быть:
стихийные явления, к которым можно отнести отказы оборудования или питания, а также некомпетентность обслуживающего персонала;
несанкционированные действия операторов удаленных ЭВМ.

Основу стабильности сети составляют надежность ЭВМ и сетевого оборудования, а также устойчивость каналов связи. Каналы связи, особенно если речь идет о проводных, достались нам от проклятого царизма, их создатели давно умерли, и спросить не с кого. Начинать надо с того, что в вашей власти, а это, прежде всего, правильная конфигурация узла, разумное распределение ответственности и качество сетевого питания (стабильность напряжения и частоты, амплитуда помех). Для решения последней проблемы используют специальные фильтры, мотор-генераторы и UPS (Uninterruptable Power Supply). Выбор того или иного решения зависит от конкретных условий, но для серверов использование UPS крайне желательно (ведь вы не хотите восстанавливать дисковую систему, которая разрушилась из-за отключения питания в момент записи в FAT или dir). При выборе UPS нужно учесть суммарную потребляемую мощность оборудования, подключаемого к источнику питания, и время, в течение которого UPS способен работать без напряжения в сети. При этом главная задача UPS - обеспечение завершения операций обмена с диском до того, как произойдет полное обесточивание сервера, или когда будет произведено переключение на резервный канал питания. Это осуществимо при использовании специального интерфейса и соответствующего программного обеспечения, работающего согласно протоколу SNMP. Указанный интерфейс обеспечит блокировку начала новых операций обмена или выполнит shutdown, если напряжение в сети упало ниже допустимого уровня. К UPS не следует подключать дисплеи (эти приборы не столь критичны к питанию, как диски и оперативная память) и принтеры (лазерные принтеры запрещено подключать к UPS из-за мощных печек, входящих в состав этих приборов). Сетевые фильтры являются желательными при работе с любыми ЭВМ, так как сеть в России сильно засорена высокочастотными помехами.

С использованием нанотехнологии фирма IBM разработала запоминающее устройство с плотностью записи данных 1 Терабит на квадратный дюйм. Это позволяет записать 25 миллионов страниц или 25 DVD дисков на площади одной почтовой марки. Система использует тысячи сверх тонких иголок из кремния, которые служат для формирования миниатюрных углублений в тонкой синтетической пленке. Вершины иголок имеют размер нескольких атомов (диаметр ? 10нм). Технология допускает перезапись. Внедрение этой технологии на какое-то время решит проблему резервного копирования для сохраниения критической информации.

Поскольку абсолютная надежность недостижима, одним из средств сохранения информации является дублирование носителей (напр. дисков), копирование и сохранение копий в надежном месте. Если раньше для этой цели годились гибкие диски или магнитные ленты, сегодня их пригодность может быть подвергнута сомнению. Конечно, ленты типа exabyte емкостью 2.5-20 Гбайт достаточно широко используются, но относительно высокая стоимость таких накопителей ограничивает их применимость (да и скорость записи для них не слишком высока). Альтернативой им могут стать накопители с перезаписываемыми CD, где стоимость устройства несколько ниже, за то емкость одного диска для дешевых моделей пока не превосходит 1 Гбайт. Не исключено, что в скором времени основным средством сохранения информации станет ее дублирование на независимом жестком диске. Это может произойти при широком внедрении компактных жестких дисков емкостью порядка 1 Тбайт и более (а ведь еще несколько лет назад здесь стояла цифра 10Гбайт).

Отдельную проблему может составлять катострофоустойчивость информационной системы. Здесь имеется в виду сохранность данных в случае стихийных бедствий (пожаров, землятресений, наводнений или прорывов водопроводной трубы на вышерасположенном этаже). Если вся критическая информация находится на каких-то носителях в пределах одной комнаты или даже здания, при катастрофах указанного типа она может быть утрачена. Интернет предоставляет решение этой проблемы. Ведь можно организоавть резервное копирование критически важных файлов на носители в удаленном здании или даже в другом городе. Понятно, что при резервном копировании через Интернет данные должны быть криптографически защищаться. Криптографическая защита делает возможным бизнес предоставления услуг резервного копирования (SaaS-технология - Software as a Service).

Во многих WEB-приложениях возникает необходимость хранения критически важных данных (паролей, номеров кридитных карт, номеров банковских счетов, персональной информации). Смотри также Insecure Storage (from OWASP). Хранится такая информация в базах данных или просто в файлах. Для защиты таких данных обычно используется криптография. То что данные зашифрованы, делает часто их хозяев беззаботными, а напрасно, так как при этом сохраняется достаточно много уязвимостей, сопряженных с ошибками пользователя:
Сбой, который привел к тому, что данные оказались записаны незашифрованнми
Небезопасное хранение криптоключей, сертификатов и паролей
Неправильное хранение секретов в памяти
Плохой выбор алгоритма
Плохой генератор псевдостучайных чисел
Попытки изобрести новых алгоритм криптозащиты
Некорректные процедуры смены ключей

Решение многих из названных выше проблем можно реализовать достаточно простыми мерами:
Минимизировать применение криптографических методов. Хранить на дисках только ту информацию, которая абсолютно необходима. Например, вместо того, чтобы хранить номера кредитных карт в зашифрованном виде (избавляет от ввода при повторении сессии), предлагать пользователям вводить их каждый раз. Это же относится и к паролям.
Если использование криптографии неизбежно, применяйте библиотеку, которая широко опробована и не имеет известных уязвимостей. Хорошо, когда основной ключ хранится в двух местах и извлекается оттуда непостредственно при исполнении программы.

Существует и другой аспект информационной безопасности. Как защитить персональные данные от разглашения людьми, которые с ними работают? Известно, что базы данных об автомобилях и их владельцах, мобильных телефонах, о прописках, банковских проводках и т.д. стали предметом широкой торговли. Здесь предстоит решить проблемы не только технологического порядка. Проблема эта, вероятно только не в таком масштабе, знакома и в других странах (Essential Guide to Identity & Access Management).

Широкое внедрение SaaS (не только для резервного копирования) ставит ряд новых проблем. Среди них сопоставимость средств и политик защиты, а также оборудования и программ противодействия вторжениям и DoS-атакам. Важным пунктом является и согласование методов аутентификации и алгоритмов проверки целостности и неискаженности пересылаемых файлов. Большинство провайдером предлагают 128-битную криптозащиту, но это не всегда является обязательным. Вероятно, это потребует выработки единого стандарта. Практически те же проблемы возникают в случае привлечения аутсорсинга.

К сожалению, помимо объективных причин на надежность и устойчивость работы сети влияет и субъективный фактор. Это, прежде всего некомпетентный персонал, различные компьютерные вирусы и хакеры. Скрытая безработица среди высоко квалифицированных программистов способствует распространению хакерства в России. Практическое отсутствие сетевых вирусов связано с ограниченностью сетей в России и со сложностью их написания, но этот барьер будет скоро преодолен и к этому следует готовиться уже сегодня. Еще в декабре 1994 года я получил предупреждение о распространении сетевых вирусов (good times и xxx-1) по Интернет:

“there are two virus infected messages circulated in the internet.
one is called "good times" and the other "xxx-1".
do not read !! do not download !!! delete right away !!!!”

(Не читайте!! Не загружайте!!! Немедленно уничтожайте!!!!)

Или еще один более свежий пример

"if you receive an email titled "it takes guts to say jesus" do not open it. it will erase everything on your hard drive. this information was announced yesterday morning from ibm; aol states that this is a very dangerous virus, much worse than "melissa," and that there is no remedy for it at this time."

Вирусы. ЭВМ, подключенная к сети, потенциально всегда уязвима. Есть сообщения о вирусе cascade в сетях Novell, созданы вирусы, переносимые с помощью электронной почты (например, вирусы, базирующиеся на макросах WinWord), и т.д. Последние наиболее опасны, так как, проглядывая какое-то очередное сообщение, содержащее приложение (attachment), клиент может и не предполагать, какую угрозу это таит. Макро-вирус может выполнять функцию "троянского коня". Тривиальным и одновременно крайне полезным советом является рекомендация стирать, не читая, сообщения, содержащие исполняемое приложение, даже если это сообщение получено от вашего хорошего знакомого (это может быть рассылка, выполняемая мактро-вирусом, через его адресную книгу). Если есть сомнения, позвоните вашему знакомому, или пошлите ему mail, прежде чем читать подозрительное послание. Аналогичную угрозу может представлять и и копирование через Интернет графических файлов. Они могут содержать в себе, например, фрагменты Java-кодов, которые запускаются при просмотре изображения. Такие коды способствуют более высокому уровню сжатия изображения, но могут использоваться и для вредоносного воздействия на вашу машину.

Троянский конь. К этой категории относят две разновидности объектов. Один из них - программа, засылаемая в атакуемый узел, которая осуществляет перехват всего ввод с терминала, записывает эти данные в файл и позднее пересылает этот файл “хозяину этого коня”. Другой объект является пассивным, выглядит безопасным и привлекательным. Например, находится в каталоге FTP-депозитария games и выглядит как игра. Легковерный клиент может скопировать такой файл и попытаться его запустить. Результатом может стать уничтожение содержимого жесткого диска.

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

Черви. Программы, напоминающие “кроликов”, но способные перемещаться по сети Интернет от одного узла к другому (узлы должны иметь идентичную операционную среду).

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

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

Существуют и другие угрозы, например, так называемая “Молдавская связь”. Суть этой уловки, использованной впервые одним из провайдеров в Молдове, заключается в том, что в каком-то депозитарии или web-странице приводится ссылка на некоторый привлекательный объект, например набор эротических картинок. Но для их просмотра предлагается скопировать себе специальную программу. При запуске оговоренной программы канал связи с местным провайдером разрывается и устанавливается связь через модем с другим удаленным провайдером. Это особенно опасно для людей, подключенных к Интернет через модем, так как может стоить им многие сотни долларов за пользование междугородним телефоном.

Cовременные просмотрщики файлов (viewer) и вставные программы (plug-in), предоставляя определенные удобства, несут в себе ощутимые угрозы безопасности. Мало того, что они являются достаточно часто разносчиками вирусов, некоторые из них снабжены интерпретаторами команд. Такие интерпретаторы встраиваются, например, для создания справочной системы, но хакер может ввести туда свои, нужные только ему команды. А некоторые команды могут, скажем, разметить ваш диск. Подводя итоги, можно сказать, что всякая программа, имеющая макро процессор, потенциально опасна. По этой же причине следует избегать применения редактора emacs (UNIX) в качестве внешнего просмотрщика. Опасна и любая программа, способная запустить внешнее приложение. Примером такой программы можно назвать microsoft powerpoint, которая допускает во время презентации запуск любого приложения. Конфигурируя свою систему windows, не желательно объявлять powerpoint в качестве просмотрщика. И чем меньше программ просмотрщиков в системе, тем лучше для ее здоровья.

Современные WEB-серверы довольно широко используют java-аплеты. При этом должны строго выполняться определенные правила.
Аплеты не могут читаться с или писаться на локальный диск.
Аплеты не должны иметь доступа к локальным внешним физическим устройствам.
Аплеты не должны иметь доступа к конфигурационной информации системы, включая ту, которая позволила бы им узнать с какой ОС они имеют дело.
Аплеты не должны исполнять системных команд или запускать внешние программы.
Аплеты не должны устанавливать сетевые соединения с машинами, кроме той, с которой они загружены.

Если все эти условия выполняются, аплеты совершенно безопасны, но контролировать это желательно.

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

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

При создании протоколов Интернет в начале 80-х годов авторы мало думали о безопасности. Предполагалось, что пользоваться сетью будут исключительно ответственные и добропорядочные люди. Но людям, к сожалению, свойственно преувеличивать свои положительные качества. Реальность оказалась не столь позитивна. Сказалась и любовь получать что-то бесплатно и врожденный разрушительный потенциал. Некоторые приемы хакеров описаны в разделе, посвященном протоколу TCP, другие в некоторых статьях данного раздела . Рассмотрим, что может произойти, если будет получен TCP-сегмент с битами SYN и FIN, равными 1. При получении такого сегмента TCP осуществляет переход в состояние close_wait. Если до этого не было установлено соединений, переход в это состояние не должен производиться, но большинство реализаций выполняют его. Такой переход крайне не желателен, так как в этом состоянии не работает таймер и система останется в нем вечно.

Другой вид атак протокола TCP называется “syn flooding”. Здесь используется трехшаговый диалог при установлении соединения (SYN -> syn+ack -> ack; . Когда ЭВМ-1 получает запрос syn от ЭВМ-2, она должна подождать в частично открытом состоянии, по крайней мере, 75 секунд. Это позволяет успешно устанавливать связь даже в условиях очень больших сетевых задержек. Проблема заключается в том, что многие реализации способны отслеживать ограниченное число соединений (по умолчания 5). ЭВМ-злоумышленник может воспользоваться ограниченностью очереди и послать атакуемой ЭВМ большое число SYN-запросов, не отвечая на присылаемые SYN+ACK. В результате очередь будет быстро переполнена и прием запросов на соединение прекратится до тех пор, пока очередь не будет обслужена или очищена по таймауту. Данный метод пригоден для отключения ЭВМ от сети, во всяком случае, на 75 сек. Этот вид атаки часто является частью процедуры проникновения, когда нужно заблокировать ЭВМ от получения нежелательных откликов.

Существует разновидность атаки, когда хакер посылает данные в пакетах с адресом отправителя, отличным от его собственного (при этом трудно установить адрес, откуда такая атака предпринимается). Здесь имеются некоторые проблемы для атакующей стороны. ЭВМ-адресат посылает все отклики по указанному адресу отправителя, кроме того, хакеру нужно как-то выяснить порядковый номер сегмента, записываемый в каждый пересылаемый пакет. При установлении соединения оконечный сегмент, содержащий ACK, должен нести ISN (initial sequence number; удаленной ЭВМ. Этот сегмент посылается ЭВМ, чей адрес указан в первоначальном запросе SYN. Хакер должен выяснить ISN каким-то иным способом (этому может помочь служба netstat). Так как ISN 32-разрядное число случайно угадать его совсем не просто. Но в большинстве систем (например, unix bsd) ISN берется из некоторого счетчика, содержимое которого увеличивается на 128 каждую секунду и на 64 после каждого нового соединения. Например:

x -> s: syn(ISNx)
s -> x: syn(ISNs), ack(ISNx) (получено искомое текущее значение кода ISNs)

Таким образом, установив однажды соединение с нужной ЭВМ (s), некоторое время спустя можно с высокой вероятностью угадать значение ISN, послав несколько пакетов с разными значениями ISN. При завершении процедуры посылается сегмент SYN+ACK, который будет отвергнут, так как машина получатель не инициализировала связь. В пакете отклике будет установлен флаг RST и соединение окажется абортированным. Чтобы этого не произошло, хакер может предпринять атаку типа syn-flooding, что приведет к игнорированию SYN+ACK. В результате соединение будет установлено и хакер, празднуя победу, может продолжить свое черное дело, например, он может исполнить какую-либо r-команду на атакуемой ЭВМ. Если даже изменять ISN каждые 4 микросекунды, проблему угадывания разрешить не удастся. Радикальным решением может стать лишь псевдослучайная генерация ISN-кодов (при этом случайным образом должны задаваться не менее 16 бит). Решить проблему поможет шифрование соответствующей части содержимого пакета. Рассмотрим здесь еще несколько таких атак.

Один из известных методов базируется на IP-опции “маршрутизации отправителя” (source routing). ЭВМ инициатор обмена может специфицировать маршрут, которым получатель должен воспользоваться при пересылке отклика. Маршрут может быть специфицирован так, чтобы он проходил через узел, контролируемый хакером. Эта, достаточно простая методика атаки, в настоящее время неэффективна, так как большинство маршрутизаторов сконфигурированы так, чтобы отфильтровывать пакеты с маршрутизацией отправителя.

Человек-по-середине. Интересные возможности предоставляет вариант, когда хакер вставляет свою машину на пути обмена двух других узлов (hijacking). Обычные методы атак (типа spoofing) могут не привести к успеху из-за необходимости идентификации (пароль!). В данном методе хакер позволяет завершиться установлению связи и аутентификации и только после этого перехватывает контроль над виртуальным каналом. Этот способ использует механизм “десинхронизации” tcp-соединения. Когда порядковый номер полученного пакета не совпадает с ожидаемым значением, соединение называется десинхронизованным. Полученный пакет в зависимости от его номера будет выброшен или буферизован (если он находится в пределах окна). Таким образом, если узлы, участвующие в обмене сильно десинхронизованы, приходящие к ним пакеты будут отбрасываться. Хакер в этом случае может вводить пакеты с корректными порядковыми номерами. Разумеется, это совсем просто, если машина хакера является транзитной, что позволяет ей “портить” или удалять нормальные пакеты и подменять их своими. Атака же возможна и в случае, когда машина хакера находится где угодно. В этом случае “отброшенные” пакеты могут вызвать посылку ACK, которые содержат ожидаемое значение порядкового номера пакета, но и они будут отвергнуты из-за неверного их номера и т.д.. При реализации этой схемы пересылается большое число “лишних” пакетов ACK. Количество их будет сколь угодно велико, по этой причине данная ситуация называется “штормом ACK’. Обмен уведомлениями (ACK) о неверных ISN будет продолжаться до тех пор, пока один из таких пакетов не будет потерян. Механизм обмена IP-дейтограммами устроен так, что вероятность потери тем выше, чем больше пакетов передается, т.е. процесс саморегулируется. Тем не менее, высокая интенсивность потока сегментов ACK может говорить об атаке. В норме процент сегментов ACK от общего потока TCP составляет 30-45%. Иллюстрацией данного метода нападения может служить рис. 6.1.

Рис. 6.1

Десинхронизация может быть осуществлена при установлении соединения. Хакер в этом случае обрывает процесс трехшагового диалога. После того как ЭВМ Б пошлет SYN+ACK ЭВМ А, ЭВМ хакера пошлет пакет от Б к А, который с помощью бита RST оповещает о закрытии соединения. После этого затевается новый трехшаговый диалог с целью установления соединения с А, но уже с другими кодами порядковых номеров. Схема алгоритма атаки показана на рис. 6.2

ЭВМ Б проигнорирует сообщения от А, так как они имеют неправильные (навязанные хакером) номера, а ЭВМ А проигнорирует сообщения от Б, так как ожидает, что они будут пронумерованы по-новому. Теперь хакер знает, какие номера нужны А и Б (непосредственно же А и Б взаимодействовать не могут, так как не знают правильных номеров) и может перехватывать, модифицировать или посылать сообщения по своему усмотрению как А, так и Б.

Но десинхронизация может быть реализована и в ходе сессии. Если послать флаг RST в середине сессии, соединение будет закрыто, о чем будет оповещено приложение и пользователь. Аналогичного эффекта можно добиться, послав отправляющей стороне ICMP_NET_UNREACH, ICMP_HOST_UNREACH или ICMP_PORT_UNREACH. Вариант с привлечением протокола ICMP привлекатетен тем, что не требует угадывания ISN. Для того чтобы вызвать десинхронизацию в середине сессии, не закрывая соединения, достаточно поменять порядковые номера в сообщениях. Протокол telnet имеет механизм, который позволяет решить такую задачу. В рамках протокола можно посылать команды nop (“Ничего не делать”, согласитесь - хорошие команды!). Эти команды не производят никакого эффекта, но увеличивают ожидаемое значение порядкового номера сегмента. Послав некоторое количество таких команд, ЭВМ хакера вызовет десинхронизацию. Теперь только хакер знает правильные значения порядковых номеров пакетов и может начать свою подрывную работу.

Одним из наиболее эффективных методов обнаружения таких атак помимо процента сегментов ACK является сравнение потоков ACK для сервера и клиента. Полной гарантией безопасности в такой ситуации может стать только шифрование на прикладном уровне, например по схеме kerberos. В случае использования почты хороший результат может дать электронная подпись (например, PGP).

Атака на раннем этапе установления соединения может осуществляться следующим образом. Соединение при этом разрушается и вместо него формируется новое с другим значением ISN. Хакер прослушивает виртуальный канал и ждет сообщения SYN+ACK от сервера клиенту (вторая фаза установления соединения). При получении такого сообщения хакер посылает серверу RST-кадр, а затем SYN-пакет с теми же параметрами (TCP-порт), но с другим значением ISN (далее и на рис 6.2 этот кадр обозначается a_ack_0; префикс А указывает на принадлежность атакующей машине хакера). Сервер, получив RST, закроет прежнее соединение и, получив SYN, сформирует новое для того же порта, но с новым значением ISN. После чего пошлет клиенту кадр SYN+ACK. Детектировав это пакет хакер посылает серверу кадр ACK. При этом сервер переходит в состояние established. Клиент перешел в это состояние при получении от сервера первого кадра SYN+ACK. На рис. 6.2 не показан обмен пакетами ACK, вызванными получением некорректных значений ISN. Как сервер так и клиент находятся в несинхронизованном состоянии established. Обмен здесь полностью контролируется атакующей ЭВМ

Рис. 6.2. Алгоритм атаки с использованием десинхронизации. Префикс А указывает на то, что сегмент послан атакующей ЭВМ; С - клиентом; s - сервером. Отправка атакующих кадров выделена малиновым цветом.

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

Протокол управляющих сообщений ICMP носит вспомогательный характер (вспомним популярную утилиту ping, использующую этот протокол). Пакеты ICMP также не требуют проверки доступа (именно благодаря этому протокол пригоден для работы в масштабах Интернет). По одной этой причине протокол привлекателен для хакеров. Известны случаи, когда с его помощью люди с разных континентов бесплатно обменивались сообщениями. Пригоден протокол и для блокировки обслуживания. Для блокировки обслуживания используются icmp-сообщения “time exceeded” (превышено время) или “destination unreachable” (адресат недоступен). Первое сообщение означает, что предел указанный в поле TTL заголовка пакета превышен. Такое может произойти из-за зацикливания пакетов или, когда адресат расположен очень далеко. Сообщение “destination unreachable” имеет несколько значений. Но все они означают, что нет способа благополучно доставить пакет адресату. Оба сообщения вынуждают адресата немедленно прервать соединение. Для реализации своих коварных планов хакеру достаточно послать одно из этих сообщений одному или обоим участникам обмена.

Протокол ICMP может использоваться и для перехвата пакетов. ICMP-сообщение “redirect” обычно используется внешними портами (gateway) сети в случаях, когда какая-то ЭВМ по ошибке полагает, что адресат находится вне локальной сети и направляет пакеты, адресованные ему, через внешний порт. Хакер может послать ICMP-сообщение “redirect” и вынудить другую ЭВМ посылать пакеты через узел, указанный хакером. У данного метода (также как и предыдущего с использованием RIP) имеется определенное ограничение - хакер и жертва должны находиться в пределах общей локальной сети.

Ещё одним объектом атак может стать DNS (domain name service) локальной сети. Например, администратор узла durak.dura.com может принять решение разрешить только местные соединения. Это может быть специфицировано с помощью записи “allow *.dura.com”, а не обязательно через указание IP-адресов. Тем более, что в сети может использоваться большое число блоков IP-адресов. Когда соединение установлено ЭВМ durak обращается к DNS для того, чтобы преобразовать IP-адрес отправителя в имя, которое затем служит для проверки условия, заданного администратором. Если хакер имеет доступ к местному DNS-серверу, он может заставить DNSоткликаться на его IP-адрес любым именем ЭВМ или домена. Зная об установленных администратором ограничениях, хакер может сделать так, что на запрос с его IP-адресом DNS будет откликаться именем “trustme.dura.com” (что удовлетворяет установленному ограничению). Такая атака может быть легко предотвращена путем повторного DNS-запроса с именем ЭВМ, присланным при первом запросе. Если IP-адрес, полученный при втором запросе, не совпадет с использованным в качестве параметра в первом, это означает, что DNS подверглась атаке.

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

Точкой уязвимости могут быть загружаемые через сеть рабочие станции или Х-терминалы. Процедура загрузки предполагает использование протоколов RARP, TFTP и BOOTP. Все они практически не имеют сколько-нибудь серьезной защиты. Наиболее уязвим протокол RARP. Здесь желательно позаботиться о том, чтобы номер порта udp выбирался ЭВМ, осуществляющей загрузку случайным образом. В противном случае хакер может легко перехватит процедуру обмена и загрузить нужную ему конфигурацию программного обеспечения, обеспечив себе широкие ворота для проникновения. bootp предлагает дополнительные возможности защиты в виде 4-байтного случайного кода идентификатора процедуры (transaction ID). Это заметно мешает хакеру прервать процедуру и инициировать новую сессию загрузки (rebooting). Должны быть предприняты все меры, чтобы начатая процедура загрузки была своевременно завершена. Пребывание системы в промежуточном состоянии заметно облегчает разнообразные атаки.

Некоторые другие виды атак описаны в разделе, посвященном протоколу http. Многие из перечисленных выше проблем решаются при использовании прокси серверов типа firewall.

Но даже Firewall не может предотвратить атак со стороны хакеров, работающих внутри локальной сети. Здесь к их услугам огромный арсенал. Это, прежде всОбновлено: 11.03.2015