Коллектив авторов - Защита от хакеров корпоративных сетей
Глава 12 Подмена сетевых объектов: атаки на доверенную идентичность
В этой главе обсуждаются следующие темы:
• Определение спуфинга
• Теоретические основы спуфинга
• Эволюция доверия
• Установление идентичности в компьютерных сетях
• Способность сомневаться
• Обман пользователей настольных компьютеров
• Эффект обмана
• Малоизвестные подробности: разработка систем спуфинга
· Резюме
· Конспект
· Часто задаваемые вопросы
Введение
...«По моему мнению, нельзя назвать сеть настоящей, если она основана на полном доверии ко всем работающим в ней, потому что всегда найдется хитроумный, невидимый и всемогущий злоумышленник, который опасен тем, что, зная протоколы работы сети, он желает обмануть меня. Я предполагаю, что коммутаторы, администраторы, пользователи, заголовки передаваемых по сети пакетов, команды и реакция сети на них, а также все используемые дружественные средства передачи данных, объединенные в сеть, являются лишь иллюзорной защитой от него. Даже используя локальные адреса, хитроумные протоколы защиты, работая через доверенных третьих лиц, используя специализированный клиентский код и не устанавливая коды состояния, нельзя быть уверенным в своей полной защите».
Дэн «Effugas» Каминский (Dan «Effugas» Kaminsky)
Определение спуфинга
Мирике Keao (Merike Keao) в своей книге «Проектирование систем безопасности» определяет атаки спуфинга (spoofing) как «предъявление ложной информации во время процедур идентификации с целью получения несанкционированного доступа к системе и ее сервисам». (К настоящему времени под спуфингом понимается следующее. Во-первых, отуфинг – это имитация соединения, при которой маршрутизатор может реагировать на некоторые сетевые запросы локально, без установления соединения с удаленным хостом. Во-вторых, отуфинг – это получение доступа путем обмана, то есть это ситуация, когда пользователь пытается соединиться с сервером Интернет, прокси-сервером или межсетевым экраном, используя ложный IP-адрес. Другим словами, спуфинг – это подмена сетевых объектов.) Далее она приводит пример атаки спуфинга, в результате которой не пользующийся доверием пользователь смог получить доверенный доступ, воспользовавшись несовершенством протокола аутентификации для реконструкции прослушиваемых пакетов. Данное Мирике определение правильное, но для того, чтобы лучше подчеркнуть разницу между спуфингом и другими сетевыми атаками, его следует уточнить.
Спуфинг – подлог идентификационных данных
В основе спуфинга лежит идея присваивания чужих идентификационных данных. Каноническим примером спуфинга является атака, использующая для фальсификации протокол IP. Протоколы TCP/IP позволяют легитимным пользователям Интернета устанавливать собственные адреса при обмене с другими хостами. Подобно тому как на конверте письма указывается обратный адрес, так и каждое сообщение в сети содержит в заголовке пакета информацию об адресе отправителя. И если отправитель использует фальсифицированный адрес отправителя, то на это сообщение он никогда не получит ответа. Как было показано в одиннадцатой главе и как читатель увидит в этой главе, часто это не является проблемой для злоумышленника.
Спуфинг – активная атака против процедур идентификации
По своей сути спуфинг является посылкой по сети ложного сообщения, то есть сообщения, которое на самом деле не является тем, за что или за кого оно себя выдает. Разберем пример передачи по сети ложного пакета IP с фальсифицированным IP-адресом отправителя. Такой пакет может быть воспринят как сообщение от хоста с более высоким уровнем доверия или как сообщение от несуществующего в сети хоста, обеспечивая в этом случае анонимность злоумышленника. В приведенных случаях при отправке сообщения содержание пакета не было изменено (хотя кто-то будет утверждать, что создатели стека протоколов TCP/IP приняли меры для того, чтобы не принимать пакет, полученный от недоступного хоста). Что касается отправителей пакетов во время атаки Ping of Death, скрывающихся за подложными IP-адресами отправителя, то они были идентифицированы как ошибочные. Поэтому этот тип атаки также относится к спуфингу.
Спуфинг возможен на любом уровне
Один из наиболее интересных и малоизвестных аспектов спуфинга состоит в том, что с методологической точки зрения спуфинг может быть выполнен на любом из семи уровней модели OSI, описывающей обмен данными между клиентом и сервером. Например, простейшим вариантом спуфинга является спуфинг на физическом уровне, который проявляется в физическом подавлении или перехвате данных, передаваемых по пользующемуся доверием каналу связи. Подключение к доверенному каналу волоконно-оптической связи и внедрение в него злонамеренного потока данных является спуфингом до тех пор, пока внедренные данные считаются данными, полученными от другого конца линии. Точно так же локальное подавление радиосигнала популярной радиостанции собственным пиратским радиосигналом тоже квалифицируется как спуфинг, если при этом нельзя определить пиратскую станцию. Таким образом, для спуфинга характерен не столько специфический способ осуществления атаки, сколько незаконное присвоение чужых данных идентификации.
Если содержимое пакета было фальсифицировано, то это значительно реже воспринимается как спуфинг. Пакеты, непосредственно использующие уязвимые места в онлайновых протоколах, с точки зрения протоколов не содержат правильного сообщения и, если возможно, поступают со случайным или фальсифицированным адресом отправителя так, чтобы переложить ответственность за пакет на другого отправителя, маскируя адрес атакующего. Подобные пакеты – фальсификация. Их предназначение состоит в незаконном присваивании чужих идентификационных данных на уровне сети. Администратор, исследующий содержимое пакета, сразу обнаружил бы попытку переполнения буфера или запрос с превышением полномочий, направленный на разрушение сети. На первый взгляд такой пакет является тем, чем он кажется на самом деле, но поскольку он был послан кем-то, то очевидно, что этот кто-то пытается нанести сети ущерб. На уровне содержимого пакета обмана может и не быть, несмотря на то что фальсифицированный заголовок является неоспоримым доказательством попытки спуфинга.
Однако верно то, что фальсификацию на уровне содержимого пакета (content-level spoof) труднее обнаружить, поскольку при этом основное внимание должно обращаться на цели кодирования и внутреннее содержимое кода, а не на механизм достижения отказа в работе. Проблема понимания смысла кода настолько серьезна и критична, что заслуживает специального рассмотрения и выработки правил анализа кода. Достаточно сказать, что пакеты, комплекты программного обеспечения и даже целые системы могут стать источником спуфинга, если они располагают скрытыми идентификационными данными, отличающимися от данных, поддерживаемых во время эксплуатации.
Спуфинг никогда не бывает случайным
У спуфинга есть странное свойство: два абсолютно идентичных пакета могут быть отправлены одним и тем же хостом с разницей в две минуты, но один из них может иметь отношение к спуфингу, а другой – нет. Почему так? Пусть читатель немного потерпит, и он об этом узнает.
Спуфинг предполагает использование онлайновой идентификации вместо непосредственной идентификации пользователя. Но пользователь, даже выполняя функции администратора, не может (как это ни грустно) подключить себя в сеть Ethernet. Вместо этого он подключает компьютер к сети и взаимодействует с сетью с его помощью. Компьютер является модулем доступа к сети, даря пользователю окно в мир сетей.
И если пользователь умело попросит компьютер солгать по поводу того, кем является пользователь на самом деле, компьютер представит общественности искаженные сведения о пользователе. Компьютер сделает это с согласия пользователя и по его желанию.
Если выполняющий функции модуля доступа компьютер даст сбой и пошлет фальсифицированные сведения о пользователе без уведомления об этом пользователя, то, посылая идентификационные данные пользователя, он выступает не от его лица. Скорее, компьютер выполняет волю собственных программ, поскольку у него нет собственных желаний. В данном случае он не может представлять собой что-либо иное, чем на самом деле он является: неисправным источником помех.
Это особенно важно, потому что проведенный Кеао анализ случайных изменений маршрутизации, главным образом рабочих станций Sun с многочисленными сетевыми портами, свидетельствует о том, что рабочие станции информируют о передаче данных идентификации, используя протоколы маршрутизации первых версий, например RIPvl (RIPvl, Routing Information Protocol версии 1 – протокол маршрутной информации, стандарт IGP. В сетях IP – внутренний протокол маршрутизации, используемый также для обмена информацией между сетями. В сетях IPX – это динамический протокол, используемый для сбора информации о сети и управления ею). Все, что необходимо выполнить для обновления общедоступных маршрутов по протоколу RIPvl, – это выдать широковещательное объявление о своей доступности. При этом вся сеть переводится в нестабильное состояние.