Спуффинг включає в себе підробку власного 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 (remote): rlogin, rsh і т. д.
Інструменти для TCP і IP-спуффинга:
1. Mendax for Linux легкий у використанні інструмент для вгадування послідовних номерів TCP і обману rshd;
2. spoofit.h добре комментированная бібліотека для включення функціональності IP-спуффинга у ваші програми;
3. ipspoof утиліта для TCP і IP-спуффинга;
4. hunt сніффер (програма, яка аналізує мережевий трафік в пошуках необхідної користувачеві інформації), який також має багато функцій для спуффинга;
5. dsniff набір інструментів для тестування мережевого аудиту і можливості проникнення в мережу. Включає в себе dsniff, filesnarf, mailsnarf, msgsnarf, urlsnarf і webspy, який пасивно переглядає мережу в пошуках цікавих даних (паролі, адреси e-mail, файли тощо). arpspoof, dnsspoof і macof полегшують перехоплення мережевого трафіку.
Заходи для запобігання атак з використанням IP-спуффинга:
Уникайте ідентифікації по клієнтському IP-адресою. Застосовуйте шифрування процесу ідентифікації у всій системі.
Налаштуйте вашу мережу так, щоб відкидати пакети (reject packets) з Мережі, IP-адресу якої походить із родини локальних адрес. Зазвичай це робиться за допомогою маршрутизатора.
Якщо ви дозволяєте з’єднання ззовні з вузлами, яким ви довіряєте, увімкніть шифрування сесії на маршрутизаторі.
Спуффинг-атаки дуже небезпечні, і їх важко помітити. Зараз вони стають все більш популярними, і єдиний спосіб запобігти їх впровадження заходів безпеки, таких як шифрування всього процесу ідентифікації, щоб убезпечити вашу мережу.