Познавательная страничка для технарей. В данном случае атака с применением IP-спуфинга основывается на довольно старой технологии, называемой R-службой. Такая технология требовала конфигурировать каждую компьютерную систему так, чтобы она принимала доверенные соединения. Это означало, что пользователь может войти в учетную запись, которая зависит от конфигурации системы, но при этом не требуется вводить пароль. Таким образом, системный администратор мог задавать для сервера конфигурацию, которая заставляла систему доверять определенным компьютерам на этапе аутентификации. Практическим примером послужит ситуация, в которой системный администратор управляет сразу большим количеством машин, поэтому, когда кто-то входит в систему, имея административные привилегии, администратору не требуется пароль, чтобы входить и в другие системы, доверяющие серверу
При атаке с применением IP-спуфинга хакер сначала ищет такие системы, которые будут доверенными для административного аккаунта, работающего на сервере-мишени. То есть если какой-то пользователь приобретет административные права в одной из доверенных систем, то он сможет войти и в учетную запись администратора на атакуемом сервере, не указывая пароля.
В данном случае такое проникновение было несложным. При помощи команды «finger» атакующий мог определить, когда авторизованный пользователь подключается к целевой системе с другого компьютера, расположенного в той же локальной сети. Вероятно, эти две системы доверяют и открывают друг для друга административный доступ. На следующем этапе необходимо установить соединение с целевой системой, это делалось путем имитации IP-адреса одного из доверенных компьютеров.
Здесь ситуация становилась уже интереснее. Когда две системы устанавливают предварительное соединение по протоколу TCP, между ними в обоих направлениях отправляются последовательности пакетов, которые создают само соединение, или сессию. Такой процесс называется трехэтапным квитированием. Во время квитирования, или рукопожатия, целевая система передает пакет обратно к той машине, которая пытается установить соединение. Поскольку атакуемый сервер считает, что он отвечает на запрос реальной системы (его цель – установить сетевое соединение), процесс квитирования не завершается, так как система атакующего хакера не получает пакета, необходимого для выполнения трехэтапного квитирования.
Вводим порядковый номер TCP. Данный протокол использует порядковые номера, чтобы подтвердить прием данных. Если атакующий может предсказать порядковый номер пакета, пересылаемого из целевой системы на реальный сервер при первом квитировании, то у него есть возможность успешно завершить этот процесс, переслав пакет подтверждения синхронизации с правильным порядковым номером и установив соединение, которое явно казалось бы исходящим от доверенной машины.
Таким образом, при установлении соединения приходилось фактически отгадывать порядковый номер TCP. Поскольку атакуемая система была обманута и считала, что устанавливает соединение с доверенной машиной, атакующий мог воспользоваться доверенным статусом соединения и обойти обычное требование предъявления пароля, далее он приобретал полный контроль над атакованной машиной. На данном этапе хакер мог переписать файл. rhosts, который находился на тот момент на атакованном компьютере, позволив кому угодно попадать на атакованную машину без указания пароля.
Вся операция проникновения основывалась на способности атакующего предсказать порядковый номер TCP для того пакета, который отсылался целевым компьютером в момент предварительного контакта. Если бы атакующий умел успешно предсказывать порядковые номера TCP, которые атакуемый компьютер использует при квитировании, то такой взломщик мог бы выдавать себя за доверенный компьютер и обходить защитные механизмы, чья работа основывалась на проверке IP-адреса пользователя.
Я сказал JSZ, что читал эту статью. «Но все это теория. На практике она пока не реализована».
«Нет, приятель, не такая уж это и теория. Мы разработали один инструментик, и он фурычит как по маслу». Он говорил о программе, которую разрабатывал вместе с подельниками, жившими по всей Европе.
«Быть того не может! Прикалываешься надо мной!»
«Нет, я серьезно».
Тогда я спросил, не мог бы он скинуть мне копию программы.
«Может, попозже, – ответил JSZ, – но я в любой момент могу продемонстрировать тебе, как она работает. Просто даешь мне цель, и все готово».