Это называется подменой адреса (IP-spoofing)[36] и легко осуществимо. В пакетах присутствует информация об источнике и адресате, но нападающий может изменить их как пожелает. Он может создавать пакеты, которые с виду прибывают от некоего отправителя, хотя на самом деле это не так. Компьютеры в Интернете не в состоянии проверить, соответствуют ли действительности сведения об отправителе и адресате; таким образом, если компьютер получает пакет, пришедший от известного ему отправителя, которому можно доверять, то содержимое пакета также считается заслуживающим доверия. Нападающий может с выгодой использовать эти отношения взаимного доверия, чтобы внедриться в машину: он отправляет пакет, который будет выглядеть, как поступивший от проверенного компьютера, в надежде, что адресат, на которого нацелено нападение, поверит ему.
Это – атаки на маршрутизацию: нападающий сообщает двум узлам в Интернете, что кратчайший маршрут между ними пролегает через его компьютер. При этом легко можно прослушивать отдельные узлы. Данную тему можно продолжать и продолжать, многие книги уже написаны об атаках в Интернете.
Решение этих проблем выглядит очевидным в теории, но трудно осуществимо на практике. Если вы зашифровываете пакеты, никто не сможет прочесть их при пересылке. Если вы проверяете их подлинность, ни у кого не получится вставить дополнительные пакеты, которые имитируют адрес отправителя, а удаление пакетов не пройдет незамеченным и будут приняты меры к их восстановлению.
Фактически в Интернете уже реализуется шифрование пакетов. Программы типа SSH шифруют и аутентифицируют внешние связи пользователя с другими компьютерами через сеть. Протоколы типа SSL могут шифровать и подтверждать подлинность веб-трафика в Интернете. Протоколы типа IPsec, возможно, будут способны шифровать все и аутентифицировать всех.
Domain Name Service[37] (DNS) – система доменных имен (механизм, используемый в Интернете и устанавливающий соответствие между числовыми IP-адресами и текстовыми именами), – по существу, огромная распределенная база данных. Большинство компьютеров в Интернете – узлы, маршрутизаторы и серверы – имеют доменные имена, вроде brokenmouse com или anon penet fi. Эти имена созданы для удобства запоминания и использования, например, в указателях информационного ресурса (URL) или адресах электронной почты. Компьютеры не понимают доменных имен; они понимают IP-адреса, наподобие 208.25.68.64. IP-адреса используются при отправке пакетов по сети.
DNS преобразует доменные имена в IP-адреса. Когда компьютер получает имя домена, он запрашивает сервер службы доменных имен для перевода этого имени в IP-адрес. Тогда он знает, куда послать пакет.
Проблема в том, что система службы доменных имен не имеет никакой защиты. Таким образом, когда компьютер посылает запрос серверу DNS и получает ответ, он воспринимает ответ как верный и сервер DNS как подлинный. Фактически при этом нет никакой гарантии, что сервер DNS не взломан. И ответ, который компьютер получает от сервера службы доменных имен, мог прибыть вовсе не с этого узла – он может быть сфальсифицирован. Если нападающий произведет изменения в таблицах DNS (фактических данных, которые переводят домены в IP-адреса и наоборот), компьютер будет всецело доверять измененным таблицам.
Несложно представить себе виды нападений, которые могут быть осуществлены при таком состоянии дел. Нападающий способен убедить компьютер, что ему можно доверять (изменив таблицы службы доменных имен так, чтобы компьютер нападающего выглядел как заслуживающий доверия IP-адрес). Нападающий в состоянии завладеть сетевым подключением (изменив таблицы таким образом, что кто-нибудь, желающий подключиться к legitimate company com, в действительности получит соединение с evil hacker com). Нападающий может сделать все что угодно. У серверов DNS есть процедура обновления информации: если один сервер службы доменных имен изменит запись, он сообщит об этом другим серверам DNS, и они поверят ему. Таким образом, если нападающий сделает изменения в нескольких точках, есть вероятность распространения этих поправок по всему Интернету.
В 1999 году было совершено такое нападение: кто-то взломал систему службы доменных имен для того, чтобы трафик к Network Solutions – так называлась одна из компаний регистрации доменных имен – был переадресован другим компаниям, занимающимся аналогичной деятельностью. Подобная же атака, рассчитанная на огласку, была проведена в 1997 году. Это случилось до того, как регистрация домена стала предметом конкурентной борьбы. Евгений Кашпурев, владелец альтернативного сайта AlterNIC, в качестве акции протеста перенаправил трафик Network Solutions на свой собственный сайт. Он был арестован, осужден и получил два года условно.
В 2000 году злоумышленники получили обманным путем доступ к таблицам службы доменных имен и присвоили домашнюю страницу RSA Security. Это не то же самое, что внедриться на веб-сайт и стереть страницу. Нападающий создает фальшивую домашнюю страницу и переадресует на нее весь трафик посредством манипулирования записями DNS. Хакер осуществляет вторжение, взламывая не DNS-сервер RSA, а серверы DNS в направлении, противоположном основному потоку в Сети. Умно и очень легко. Получение обманным путем доступа к записям службы доменных имен – это тривиальный путь взлома реального веб-сайта. И чтобы дела «похищенного» сайта обстояли еще хуже, взломщик вводит людей в заблуждение: они думают, что взломан веб-сайт компании А, в то время как на самом деле злоумышленниками контролируется сервер службы имен домена компании В.
Это серьезные проблемы, и они не могут быть легко решены. Аутентификация с использованием криптографии в конечном счете поможет преодолеть эти трудности, потому что больше не будет компьютеров, безоговорочно доверяющих сообщениям, которые якобы прибыли с сервера DNS. В настоящее время продолжается работа по созданию надежной версии системы DNS, которая справится с этими проблемами, но ждать придется долго.
В сентябре 1996 года неизвестный хакер или группа хакеров атаковали компьютеры нью-йоркского интернет-провайдера Panix. Они посылали сообщения hello (пакеты синхронизации SYN) на компьютеры Panix. Обычно предполагается, что удаленный компьютер отправляет Panix приветственное сообщение, ожидает ответа и после этого продолжает сеанс связи. Нападавшие фальсифицировали обратный адрес удаленных компьютеров, так что Panix пытался синхронизироваться с компьютерами, которые в действительности не существовали. Компьютеры Panix 75 секунд ожидали ответа удаленного компьютера, прежде чем прервать связь. Хакеры «топили» Panix со скоростью более 50 сообщений в секунду. Это превышало возможности компьютеров Panix, что и привело их к аварийному отказу. Такое нападение называется атакой синхронизации (SYN flooding).
Это был первый получивший огласку случай атаки на хосты Интернета, приводящей к отказу в обслуживании. С тех пор было предпринято много других. Атака, приводящая к отказу в обслуживании, – это особо вредоносная атака на коммуникационные системы, поскольку они разрабатывались именно для связи. В сети лавинная адресация запросов на установление связи является хорошим способом привести компьютер к аварийному выходу из строя. И часто не бывает возможности отождествления организатора этого нападения.
Существует возможность вызвать «отказ в обслуживании» обычного почтового сервиса: злоумышленник подписывает жертву на все каталоги почтовых заказов и на прочие издания, которые только могут прийти на ум. Жертва получает так много корреспонденции, допустим, 200 единиц в день, что шансы потери полезной почты среди ненужного хлама увеличиваются соответственно. Теоретически так обязательно и случится. Единственный способ воспрепятствовать этому нападению – ограничить количество рассылок ненужного хлама. А в Интернете почтовые серверы по определению рассылают почту. В 1995 году Фронт освобождения Интернета (Internet Liberation Front – это, скорее всего, вымышленное название, с тех пор о нем не было упоминаний) направил поток сообщений по электронной почте в журнал Wired и его автору Джошуа Квиттнеру. Поток был так велик, что компьютеры перестали работать.
36
Подмена адреса отправителя в заголовке IP-пакета с целью взломать аутентификацию, основанную на определении IP-адреса источника пакета. – Примеч. ред.
37
Сохранено написание оригинала, но в действительности во всех руководящих документах (RFC) используется слово «система» (system). Подмена одного слова другим стала настолько частой, что в лучших книгах по информационным технологиям употребляется именно service (служба) и соответственно переводится. Система доменных имен (DNS, Domain Name System) была разработана Питером Мокапетрисом и представлена в 1983 году в виде двух документов IETF. Позже этих документов стало огромное количество. Система DNS состоит из трех основных элементов: иерархического пространства имен («доменов»), серверов DNS для хранения имен поддоменов и распознавателей, генерирующих запросы для серверов DNS. Службой является последний элемент, а все в совокупности – системой. – Примеч. ред.