Система X Windows, становящаяся все более популярной, также уязвима перехвату данных. X позволяет открывать несколько окон на рабочей станции для работы с графическими и мультимедийными приложениями( например, WWW-браузером Netscape). Злоумышленники могут иногда открывать окна на других системах и перехватывать текст, набираемый на клавиатуре, который может содержать пароли и критическую информацию.
Как уже отмечалось в части 1.2.1, предполагается, что IP-адрес хоста правильный, и службы TCP и UDP поэтому могут доверять ему. Проблема заключается в том, что используя маршрутизацию IP-источника , хост атакующего может замаскироваться под доверенного хоста или клиента. Коротко говоря, маршрутизация IP-источника - это опция, с помощью которой можно явно указать маршрут к назначению и путь, по которому пакет будет возвращаться к отправителю. Это путь может включать использование других маршрутизаторов или хостов, которые в обычных условиях не используются при передаче пакетов к назначению. Рассмотрим следующий пример того, как это может быть использовано для маскировки системы атакующего под доверенный клиент какого-то сервера:
Многие хосты Unix принимают пакеты с маршрутизацией источника и будут передавать их по пути, указанному в пакете. Многие маршрутизаторы также принимают пакеты с маршрутизацией источника, в то время как некоторые маршрутизаторы могут быть сконфигурированы таким образом, что будут блокировать такие пакеты.
Еще более простым способом маскировки под клиента является ожидание того момента времени, когда клиентская система будет выключена, и последующая маскировка под нее. Во многих организациях сотрудники используют персональные ЭВМ с сетевой математикой TCP/IP для подключения к хостам с Unixом и используюют машины с Unix как серверы ЛВС. ПЭВМ часто используют NFS для получения доступа к директориям и файлам на сервере(NFS использует только IP-адреса для аутентификации клиентов). Атакующий может сконфигурировать по окончании работы свой ПЭВМ таким образом, что он будет иметь то же самое имя и IP-адрес, что и другая машина, а затем инициировать соединение с Unixовским хостом, как если бы он был доверенным клиентом. Это очень просто сделать и именно так поступают атакующие-сотрудники организации.
Электронную почту в Интернете особенно легко подделать, и ей вообще нельзя доверять, если в ней не применяются расширения, такие как электронная подпись письма[NIST94a]. Например, давайте рассмотрим взаимодействие между хостами Интернета при обмене почтой. Взаимодействие происходит с помощью простого протокола, использующего текстовые команды. Злоумышленник может легко ввести эти команды вручную, используя TELNET для установления сеанса с портом SMTP( простой протокол передачи почты). Принимающий хост доверяет тому, что заявляет о себе хост-отправитель, поэтому можно легко указать ложный источник письма, введя адрес электронной почты как адрес отправителя, котоырй будет отличаться от истинного адреса. В результате, любой пользователь, не имеющий никаких привилегий, может фальсифицировать электронное письмо.
В других сервисах, таких как DNS, также можно замаскироваться под другую машину, но сделать это несколько сложнее, чем для электронной почты. Для этих сервисов до сих пор существуют угрозы, и их надо учитывать тому, кто собирается пользоваться ими.
Хосты тяжело поддерживать в безопасном состоянии и это занимает много времени. Для упрощения управления хостами и большего использования преимуществ ЛВС, некоторые организации используют такие сервисы, как NIS(Network Information Service) и NFS(Network File system). Эти сервисы могут сильно уменьшить время на конфигурирование хостов, позволяя управлять рядом баз данных, таких как файлы паролей, с помощью удаленного доступа к ним и обеспечивая возможность совместного использования файлов и данных. К сожалению, эти сервисы небезопасны по своей природе и могут использоваться для получения доступа грамотными злоумышленниками. Если скомпрометирован центральный сервер, то другие системы, доверяющие центральной системе, также могут быть легко скомпрометированы.
Некоторые сервисы, такие как rlogin, позволяют хостам "доверять" друг другу для удобства работы пользователей и облегчения совместного использования систем и устройств. Если в систему было совершено проникновение или ее обманули с помощью маскарада, и этой системе другие системы, то для злоумышленника не составит труда получить доступ к другим системам. Например, пользователь, зарегистрированный на нескольких машинах, может избавиться от необходимости вводить пароль, сконфигурировав себя на этих машинах так, что они будут доверять подключению с основной системы пользователя. Когда пользователь использует rlogin для подключения к хосту, то машина, к которой подключаются, не будет спрашивать пароль, а подключение будет просто разрешено. Хотя это и не так уж плохо, так как пароль пользователя не передается и не сможет быть перехвачен, это имеет тот недостаток, что если злоумышленник проникнет на основную машину под именем пользователя, то злоумышленник легко сможет воспользоваться rlogin для проникновения в счета пользователя на других системах. По этой причине использование взаимного доверия хостов друг к другу не рекомендуется[Bel89][Ches94].
Системы управления доступом в хостах часто сложны в настройке и тяжело проверить, правильно ли они работают. В результате неправильно сконфигурированные меры защиты могут привести к проникновению злоумышленников. Несколько крупных производителей Unix все еще продают свои системы с системой управления доступом, сконфигурированной так, что пользователям предоставлен максимальный ( то есть наименее безопасный) доступ, который может привести к неавторизованному доступу, если не будет произведена переконфигурация.
Ряд инцидентов с безопасностью произошел в Интернете отчасти из-за того, что злоумышленники обнаружили уязвимые места( позднее их обнаружили пользователи, группы компьютерной безопасности и сами производители) . Так как большая часть современных вариантов Unix позаимствовала свой сетевой код из версии BSD, и так как исходный код этой версии широко доступен, злоумышленники смогли изучить его на предмет ошибок и условий, при которых их можно использовать для получения доступа к системам. Отчасти ошибки существуют из-за сложности программ и невозможности проверить их во всех средах, в которых они должны работать. Иногда ошибки легко обнаруживаются и исправляются, но бывает и так, что надо, как минимум, переписать все приложение, что является последним средством( программа sendmail тому пример).
Безопасность на уровне хостов плохо шкалируется: по мере того, как возрастает число хостов в сети, возможности по обеспечению гарантий безопасности на высоком уровне для каждого хоста уменьшаются. Учитывая то, что администрирование даже одной системы для поддержания безопасности в ней может оказаться сложным, управление большим числом таких систем может легко привести к ошибкам и упущениям. Важно также помнить, что зачастую важность работы системных администраторов не понимается и эта работа выполняется кое-как. В результате некоторые системы могут оказаться менее безопасными, чем другие, и именно эти системы станут слабым звеном, которое в конечном счете приведет к появлению уязвимого места в системе безопасности.
Если обнаруживается уязвимость в сетевом ПО, сети, которая не защищена брандмауэром, нужно срочно исправить ошибку на всех системах, где она обнаружена. Как уже говорилось в пункте 1.3.2, некоторые уязвимые места позволяют получить легкий доступ с правами суперпользователя Unix. Организация, имеющая много Unix-хостов, будет особенно уязвима к атакам злоумышленников в такой ситуации. Заделывание уязвимых мест на многих системах за короткий промежуток времени просто невозможно, и если используются различные версии ОС, может оказаться вообще невозможным. Такие сети будут просто-таки напрашиваться на атаки злоумышленников.
3 вопрос
Если говорить строго, то TCP/IP - это стек протоколов, включающий TCP, IP, UDP (User Datagram Protocol), ICMP (Internet Control Message Protocol), и ряд других протоколов. Стек протоколов TCP/IP не соответствует модели взаимодействия открытых систем (ВОС), и его структура показана на рисунке 1.1
IP
Уровень IP получает пакеты, доставлемые нижними уровнями, например драйвером интерфейса с ЛВС, и передает их лежащим выше уровням TCP или UDP. И наоборот, IP передает пакеты, полученные от уровней TCP и UDP к нижележащим уровням.
Пакеты IP являются дейтаграмами с негарантированной доставкой, потому что IP ничего не делает для обеспечения гарантии доставки пакетов IP по порядку и без ошибок. Пакеты IP содержат адрес хоста, с которого был послан пакет, называемый адресом отправителя, и адрес хоста, который должен получить пакет, называемый адресом получателя.
Высокоуровневые сервисы TCP и UDP при приеме пакета предполагают, что адрес отправителя, указанный в пакете, является истинным. Другими словами, адрес IP является основой для аутентификации во многих сервисах; сервисы предполагают, что пакет был послан от существующего хоста, и именно от того хоста, чей адрес указан в пакете. IP имеет опцию, называемую опция маршрутизации источника, которая может быть использована для для указания точного прямого и обратного пути между отправителем и получателем. Этот путь может задействовать для передачи пакета маршрутизаторы или хосты, обычно не использующиеся для передачи пакетов к данному хосту-получателю. Для некоторых сервисов TCP и UDP пакет IP c такой опцией кажется пришедшим от последней системы в указанном пути, а не от своего истинного отправителя. Эта опция появилась в протоколе для его тестирования, но [Bel89] отмечает, что маршрутизация источника может использоваться для обмана систем с целью установления соединения с ними тех хостов, которым запрещено с ними соединяться. Поэтому, то, что ряд сервисов доверяют указанному IP-адресу отправителя и полагаются на него при аутентификации, очень опасно и может привести к проникновению в систему.