Личный блог Suvan`a.

Работая и играя с Linux... И что из этого иногда получается.

IP-спуфинг

Рубрика: Безопасность -> Уязвимости Linux-сервера
Метки:
Четверг, 29 января 2009 г.
Просмотров: 9157

Очень часто в прошлом использовался так называемый IP-спуфинг (подделка IP-адреса), поэтому рассмотрим, как он работает. Чтобы осуществить IР-спуфинг, нужно знать, как это делается .Это не трудно, может справиться средний пользователь, а вот новичок, нахватавшийся базовых знаний о Unix точно не справится.


     IP-спуфинг - это фальсификация адреса отправителя. Адрес отправителя - это одно из полей IP-заголовка. Ничто не мешает отправителю подменить его, записав другое значение. Сложность состоит в следующем: машина, получив заголовок с таким адресом, отправит ответ на этот адрес, а не на адрес крекера.

     При UDP/ICMP-флудинге - это не проблема, поскольку ответ не важен, однако в случае с TCP-соединением нам нужно получить ответ от адресата - иначе не получится установить соединение с ним. Также важен IP-спуфинг при взломе сервисов , у которых используется аутентификация по имени узла.

     При установке TCP-соединения важен так называемый ISN (Initial Sequence Number) - начальный порядковый номер. Во время установки соединения между машинами передается еще и ISN. ISN клиента обозначим как ISNc, a ISN сервера - как ISNs.

     Рассмотрим установку соединения:

1. клиент отправляет TCP-пакет с установленным флагом SYN, также он выбирает ISNc.

2. сервер увеличивает на единицу ISNc и отправляет его обратно вместе со своим ISNs.

3. клиент отвечает пакетом АСК, содержащим ISNs, увеличенный на единицу.

     Рассмотрим подробно, что произойдет, если крекер сделает попытку установить TCP-соединение с подделанным IP-адресом. Сервер отправит пакет SYN-ACK, содержащий его ISN, компьютеру А, адрес которого указал атакующий. Компьютер А не отправлял серверу пакет SYN (не запрашивал соединение), поэтому он ответит пакетом RST, чтобы прервать неизвестное соединение. Злоумышленнику ничего не остается, как ждать, пока компьютер А будет выключен или перезагружен, или вывести его из строя, что не так уж и сложно. Крекер не сможет увидеть ISN, отправленный одной машиной к другой. Этот ISN ему нужен на третьем шаге, когда он должен будет увеличить его на 1 и отправить. Атакующий должен угадать ISN.

     В старых операционных системах (ОС) было очень легко угадать ISN - он увеличивался на единицу с каждым соединением. Современные ОС используют механизм, который предотвращает угадывание ISN. Использовавшиеся раньше сервисы аутентификации по имени узла (rsh, rexec и др.), сегодня заменены на более безопасные (SSH и др.). Современные сервисы используют для аутентификации имя пользователя и пароль и передают данные в зашифрованном виде, поэтому в наше время отпала всякая необходимость в IP-спуфинге.

     Кевин Митник в своей атаке на компьютер Цутому Шимомуры использовал именно эту атаку и сумел взломать его. Эта атака - кульминация его крекерской карьеры.

     Этот вид атаки называют слепым спуфингом. Различают еще неслепой спуфинг. Неслепой спуфинг отличается от слепого тем, что крекер находится в одном сегменте с жертвой и может перехватить последовательности ISN. В этом случае IP-спуфинг сильно упрощается - ведь у крекера есть шаблоны, по которым генерируются ISN. Наибольшей опасностью, которую представляет собой неслепой спуфинг, является захват сеанса (session hacking), с помощью которого злоумышленник может обойти любую аутентификацию по имени пользователя и паролю.