IP-спуфинг

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
пример применения IP-спуфинга

IP-спуфинг (от англ. spoof — мистификация) —

  1. Вид хакерской атаки, заключающийся в использовании чужого IP-адреса с целью обмана системы безопасности.
  2. Метод, используемый в некоторых атаках. Состоит в изменении поля "адрес отправителя" IP-пакета. Применяется с целью сокрытия истинного адреса атакующего, с целью вызвать ответный пакет на нужный адрес, а также с иными целями.

Описание[править | править вики-текст]

Для злоумышленника базовый принцип атаки заключается в фальсификации собственных IP-пакетов, в которых изменяется, среди прочего, IP-адрес источника. Атака IP-спуфинг часто называется "слепой подменой" (Blind Spoofing)[1]. Это связано с тем, что ответы на фальсифицированные пакеты не могут прийти машине крэкера, так как был изменен исходящий адрес. Однако, все-таки существуют два метода получения ответов:

  1. Маршрутизация от источника (en:Source routing): в протоколе IP существует возможность маршрутизации от источника, которая позволяет задавать маршрут для ответных пакетов. Этот маршрут представляет собой набор IP-адресов маршрутизаторов, через которые должен проследовать пакет. Для крэкера достаточно предоставить маршрут для пакетов до маршрутизатора, им контролируемого. В наше время, большинство реализаций стека TCP/IP отбраковывают пакеты с маршрутизацией от источника;
  2. Перемаршрутизация (Re-routing): если маршрутизатор использует протокол RIP, то его таблицы можно изменить присылая ему RIP-пакеты с новой информацией о маршрутах. С помощью этого, крэкер добивается направления пакетов на подконтрольный ему маршрутизатор.

Применение атаки[править | править вики-текст]

Протокол транспортного (4) уровня TCP имеет встроенный механизм для предотвращения спуфинга — так называемые номера последовательности и подтверждения (sequence number, acknowledgement number)[1]. Протокол UDP не имеет такого механизма, следовательно, построенные на его основе приложения более уязвимы для спуфинга.

Рассмотрим установку соединения протокола TCP (тройное рукопожатие):

  1. клиент отправляет TCP-пакет с установленным флагом SYN, также он выбирает ISNc (Initial Sequence Number клиента, Sequence Number).
  2. сервер увеличивает на единицу ISNc и отправляет его обратно вместе со своим ISNs (Initial Sequence Number сервера, Acknowledgement Number), а так же флагами SYN+ACK.
  3. клиент отвечает пакетом ACK, содержащим ISNs, увеличенный на единицу.

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

SYN-флуд[править | править вики-текст]

Разновидность DoS-атаки. Злоумышленник посылает SYN-запросы на удаленный сервер, подменяя адрес отправителя. Ответный SYN+ACK отправляется на несуществующий адрес, в результате в очереди подключений появляются так называемые полуоткрытые соединения (англ. half-open connection), ожидающие подтверждения от клиента. По истечении определенного тайм-аута эти подключения отбрасываются. Атака основывается на уязвимости ограничения ресурсов операционной системы для полуоткрытых соединений, описанной в 1996 году группой CERT, согласно которой очередь для таких подключений была очень короткой (например, в Solaris допускалось не более восьми подключений), а тайм-аут подключений — достаточно продолжительным (по RFC 1122 — 3 минуты).

DNS усиление[2][править | править вики-текст]

Другая разновидность DoS-атаки. Атакующий компьютер посылает запросы на DNS-серверу, указывая в качестве адреса отправителя - IP атакуемого компьютера. Ответ DNS-сервера превышает объем запроса в несколько десятков раз, что усиливает вероятность успешной DoS-атаки.

TCP hijacking[править | править вики-текст]

Единственными идентификаторами, по которым конечный хост может различать TCP-абонентов и TCP-соединения, являются поля Sequence Number и Acknowledge Number. Зная эти поля и используя подмену IP адреса источника пакета на IP-адрес одного из абонентов, атакующий может вставить любые данные, которые приведут к разрыву соединения, к состоянию ошибки, либо же будут выполнять какую-либо функцию во благо атакующего. Жертва может даже не заметить этих манипуляций.

Аутентификация на основе IP-адреса[править | править вики-текст]

Этот тип атаки наиболее эффективен там, где существуют доверительные отношения между машинами. Например, в некоторых корпоративных сетях внутренние системы доверяют друг другу, и пользователи могут войти без имени пользователя или пароля при условии, что машина пользователя находится в той же локальной сети. Подменив соединение из доверенной машины, злоумышленник может получить доступ к целевой машине без аутентификации. Известный пример успешной атаки - Кевин Митник применил ее против машины Цутому Симомура в 1994 году (The Mitnick attack).

Защита от IP-спуфинга[править | править вики-текст]

Простейший способ проверить, что подозритальный пакет пришел от верного отправителя - отправить пакет на IP отправителя. Обычно для IP-спуфинга используется случайный IP, и вполне веротяно, что ответ не придет. Если же придет, имеет смысл сравнить поле TTL (Time to live) полученных пакетов. Если поля не совпадают - пакеты пришли из разных источников.

На сетевом уровне атака частично предотвращается с помощью фильтра пакетов на шлюзе. Он должен быть настроен таким образом, чтобы не пропускать пакеты, пришедшие через те сетевые интерфейсы, откуда они прийти не могли. Например, фильтрация пакетов из внешней сети с исходным адресом внутри сети.

Одним из самых надежных методов защиты от подмены IP-адреса является сопоставление MAC-адреса (Ethernet кадр) и IP-адреса (заголовок протокола IP) отправителя. Например, если пакет с IP адресом из внутренней сети имеет MAC адрес шлюза - этот пакет стоит отбросить.

Сервисы, уязвимые к атаке[править | править вики-текст]

  1. RPC (удаленный вызов процедур)
  2. Любая служба, которая использует адрес аутентификацию IP
  3. X Window System
  4. r-службы (en:rcp, rlogin, en:rsh и т.д.)

Примечания[править | править вики-текст]

Ссылки[править | править вики-текст]