IP-спуфинг (IP-vhrsnui)

Перейти к навигации Перейти к поиску
Пример применения 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.

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

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

Единственными идентификаторами, по которым конечный хост может различать 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 адрес шлюза — этот пакет стоит отбросить. В современных сетевых устройствах изменение MAC-адреса (физического адреса) не является проблемным.

Сервисы, уязвимые для атаки

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

Примечания

[править | править код]
  1. 1 2 IP Spoofing: An Introduction (англ.). Symantec.com. Архивировано из оригинала 11 июня 2013 года.
  2. DNS Amplification Attacks. SecuriTeam. Дата обращения: 15 декабря 2014. Архивировано 16 декабря 2014 года. (англ.)