Спуффинг включает в себя подделку собственного IP адреса, это использование одной машины, чтобы выдать себя за другую. Многие приложения и утилиты в UNIX при идентификации полагаются на IP адрес; для обеспечения безопасности в своих сетях многие разработчики используют контроль доступа, основанный на имени (IP адресе) вызывающего компьютера. IP адрес - это уникальный идентификатор, но в таких ситуациях на него нельзя полагаться, так как его легко подделать.
Чтобы понять процесс спуффинга, сначала я объясню процесс идентификации TCP и IP, а потом как нападающий может проникнуть в вашу сеть.
Сначала клиентская система посылает серверу сообщение SYN (от слова синхронизация). Сервер подтверждает получение SYN сообщения, посылая клиенту сообщение SYN-ACK (подтверждение синхронизации). Клиент завершает процесс установки соединения посылкой сообщения ACK (подтверждение). После этого соединение между клиентом и сервером установлено. Теперь сервер и клиент могут обмениваться службо-специфическими данными.
TCP использует последовательные номера пакетов. Когда между двумя машинами установлен виртуальный канал связи, TCP присваивает каждому пакету номер в качестве идентифицирующего индекса. Обе машины используют этот номер для проверки ошибок и для сообщения друг другу об ошибках.
Rik Farrow в своей статье "Атаки с использованием последовательных номеров (Sequence Number Attacks)" объясняет систему последовательной нумерации пакетов так:
"Последовательный номер используется для подтверждения получения данных. В начале TCP соединения клиент посылает TCP пакет с начальным номером, но не подтверждение. Если на другом конце соединения запущено серверное приложение, сервер посылает в ответ TCP пакет с его собственным начальным номером и подтверждение: начальный номер клиентского пакета + 1. Когда клиентская система получает этот пакет, она должна послать свое собственное подтверждение: начальный последовательный номер сервера + 1."
Поэтому у атакующего есть две проблемы:
1) Он должен подделать исходный адрес.
2) Он должен поддерживать правильную последовательность номеров с объектом атаки.
Вторая задача - самая сложная, потому что, когда сервер устанавливает начальный последовательный номер, атакующий должен послать правильный ответ. Как только атакующий правильно угадает последовательный номер, он сможет синхронизироваться с сервером и установить действительную сессию.
Службы, уязвимые для IP спуффинга:
- RPC (Remote Procedure Call services) - службы удаленного вызова процедур
- Любая служба, которая использует идентификацию по IP адресу
- Система X Window
- Набор программ на R (rlogin, rsh и т.д.)
Инструменты для TCP и IP спуффинга:
1) Mendax for Linux
легкий в использовании инструмент для угадывания последовательных номеров TCP и обмана rshd. [Текущий URL неизвестен. -Ред.]
2) spoofit.h
хорошо комментированная библиотека для включения функциональности IP спуффинга в ваши программы. [Текущий URL неизвестен. -Ред.]
3) ipspoof
ipspoof - утилита для TCP и IP спуффинга.
4) hunt
hunt - сниффер (программа, которая анализирует сетевой трафик в поисках необходимой пользователю информации), который также имеет многие функции для спуффинга.
5) dsniff
dsniff - набор инструментов для тестирования сетевого аудита и возможности проникновения в сеть. Включает в себя dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf и webspy, который пассивно просматривает сеть в поисках интересных данных (пароли, адреса e-mail, файлы и т.д.). arpspoof, dnsspoof и macof облегчают перехват сетевого трафика.
Меры для предотвращения атак с использованием IP спуффинга:
- Избегайте идентификации по клиентскому IP адресу. Применяйте шифрование процесса идентификации во всей системе.
- Сконфигурируйте вашу сеть так, чтобы отвергать пакеты (reject packets) из Сети, IP адрес которой происходит из семейства локальных адресов. Обычно это делается с помощью маршрутизатора.
- Если вы разрешаете соединения извне с узлами, которым вы доверяете, включите шифрование сессии на маршрутизаторе.
Заключение:
Спуффинг-атаки очень опасны, и их трудно заметить. Сейчас они становятся все более популярными, и единственный способ предотвратить такие атаки - внедрение мер безопасности, таких как шифрование всего процесса идентификации, чтобы обезопасить вашу сеть.