Мережеві рішення
За загальновживаною класифікацією, всі атаки, як і вразливості, дозволяють їх виконати, діляться (крім іншого) на локальні і віддалені. У випадку з локальною атакою напад відбувається зсередини системи, для проведення такої атаки зловмиснику спочатку потрібен певний рівень доступу до системи. Зазвичай такого роду атаки спрямовані підвищення привілеїв користувача, хоча можуть бути інші варіанти, наприклад, DoS. На відміну від локальних, віддалені атаки зовнішні по відношенню до системи (звідси і друга назва – «зовнішні атаки»), тобто теоретично їх може виконати будь-який «громадянин» мережі, що має базовий, непривілейований доступ до системи. Тобто достатньо, щоб хост, що атакується, був просто доступний атакуючому по IP/TCP/HTTP і т. п. в залежності від конкретного різновиду атаки. Видалені атаки потенційно небезпечніші, ніж локальні, оскільки а) коло «ворогів» у цьому випадку набагато ширше, ніж для локальних атак і б) ворогів цих набагато важче відстежити і закликати до відповідальності, чим вони і користуються.
Мережеві атаки базуються на вразливості прямо пов'язані з протоколами або їх реалізаціями. Існує безліч варіантів атак, проте переважна їх більшість заснована на п'яти відомих типах.
атаки, засновані на IP-фрагментації
Дана атака спрямована на обладнання, що знаходиться за захистом IP фільтруючого обладнання. Для її реалізації зловмисники використовують два різні методи: "мікрофрагменти" (Tiny Fragments) та "перекриття фрагментів" (Fragment Overlapping). Ці атаки стають надбанням історії, оскільки сучасні міжмережові екрани давно успішно справляються з ними.
Згідно з RFC 791 (IP), всі вузли (маршрутизатори) Internet повинні вміти передавати пакети розміром 68 байт.без фрагментації. Мінімальний розмір заголовка IP-пакета без опцій - 20 байт. При заданих опціях максимальний розмір заголовка дорівнює 60 байтам. У полі IHL (Internet Header Length) міститься довжина заголовка в 32 бітових словах. Це поле використовує 4 біти, тому кількість можливих його значень дорівнює 2^4 - 1 = 15 (поле не може набувати значення 0000). Отже, максимальний розмір заголовка дійсно дорівнює 15 * 4 = 60 байт. Нарешті, поле зміщення фрагмента (Fragment Offset), що вказує на зсув першого байта фрагмента щодо всієї дейтаграми, займе 8 байт. Таким чином, дані у фрагменті займають мінімум вісім байт. Звідки і отримуємо розмір пакета 68 байт. Атака складається із запиту TCP-з'єднання, фрагментованого на два IP-пакети. Перший IP-пакет складається з 68 байт і містить лише перші вісім байт заголовка TCP (порти джерела, призначення та порядковий номер). Дані другого IP-пакета містять запит на з'єднання TCP (прапор SYN встановлений, ACK знято). Пакетні фільтри застосовують те саме правило до всіх фрагментів пакета. За першим фрагментом (зміщення = 0) вибирається правило, відповідно до якого обробляються всі інші фрагменти пакета без будь-якого додаткового контролю. Таким чином, при складанні фрагментів на цільовій машині формується пакет із запитом на з'єднання. В результаті встановлюється з'єднання, незважаючи на те, що пакетний фільтр повинен був запобігти такій ситуації.



Відповідно до того ж RFC 791, якщо два IP-фрагменти перекриваються, другий перезаписуєсобою перший. Даний тип атаки також полягає у розбитті IP-пакету на два фрагменти. Пакетний фільтр пропускає перший пакет з 68 байт (за тим же принципом, що і в атаці типу "мікрофрагменти"), оскільки він не містить запиту на з'єднання TCP (прапор SYN = 0 і прапор ACK = 0). І знову це правило застосовується для всіх фрагментів пакета. Другий фрагмент (зі зміщенням = 1), що містить дані про з'єднання, пропускається фільтром, так як він не бачить, що в цьому фрагменті міститься запит на встановлення з'єднання. При дефрагментації дані другого фрагмента заміщають дані першого, починаючи з восьмого байта (так як зміщення = 1). Результуючий пакет виходить коректним запитом з'єднання для цільової машини. З'єднання встановлено, незважаючи на пакетний фільтр. На малюнках 1 і 2 показані обидва фрагменти, а на третьому - дефрагментований пакет на цільовій машині:




перехоплення TCP-сеансу (TCP Session Hijacking)
Перехоплення TCP-сеансу дозволяє зловмиснику перенаправляти потік TCP. Далі атакуючий може подолати парольний захист (як у Telnet або FTP). Необхідність прослуховування (sniffing) обмежує застосування даного типу атаки до фізичного сегменту мережі цільового хоста. Перед розглядом деталей цієї атаки, розберемо деякі базові принципи протоколу TCP. Ми не детально розглядатимемо протокол, а сконцентруємося на моментах, необхідних для розуміння атаки. Заголовок TCP містить різні поля: - порт джерела і порт призначення, що ідентифікують з'єднання; - номерпослідовності, що ідентифікує кожен посланий байт; - номер підтвердження, що відповідає останньому отриманому байту; - різні прапори, у тому числі SYN (використовується для синхронізації при встановленні сеансу), ACK (прапор підтвердження TCP-сегменту) та PSH (вказує на необхідність передачі даних додатку). На малюнку 8 представлений процес встановлення TCP-з'єднання (механізм потрійного квитування):

У цьому прикладі машина A ініціювала TCP-з'єднання з машиною B. Малюнок 9 демонструє процес передачі даних у протоколі TCP:


підміна ARP-інформації (ARP Spoofing)
]$ traceroute 10.0.0.1 traceroute to 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets 1 10.0.0.1 (10.0.0.1) 1.218 ms 1.061
]$ arp Address HWtype HWAddress Flags Mask Iface 10.0.0.1 ether 00:b0:c2:88:de:65 C eth0 10.0.0.227 ether 00:00:86:35:c9:3f C eth0
Зловмисник запускає програму ARPSpoof:
]$ arpspoof -t 10.0.0.171 10.0.0.1 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0 :86:35:c9:3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86: 35:c9:3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9 :3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f 0:0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f 0 :0:86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f 0:0: 86:35:c9:3f 0:60:8:de:64:f0 0806 42: arp reply 10.0.0.1 is-at 0:0:86:35:c9:3f
Тепер ARP-кеш машини 10.0.0.171 виглядаєтак:
]$ arp Address HWtype HWAddress Flags Mask Iface 10.0.0.1 ether 00:00:86:35:c9:3f C eth0 10.0.0.227 ether 00:00:86:35:c9:3f C eth0 Щоб переконатися, що весь трафік тепер проходить через машину 10.0.0.227, достатньо ще раз запустити traceroute до шлюзу 10.0.0.1: [root@cible ->
]$ traceroute 10.0.0.1 traceroute до 10.0.0.1 (10.0.0.1), 30 hops max, 40 byte packets 1 10.0.0.227 (10.0.0.227) 1.715 ms 1.1. .0.1 (10.0.0.1) 2.238 ms 2.121 ms 2.169 ms
Тепер зловмисник може прослуховувати трафік між машинами 10.0.0.171 та 10.0.0.1. Він повинен не забути активувати маршрутизацію своєю машиною 10.0.0.227.
заміна DNS (DNS Spoofing)
заміна DNS ID (DNS ID Spoofing)
Рис.11: DNS-запит надісланий до ns.cible.com.

DNS Cache Poisoning
атаки на додатки
Атаки на програми ґрунтуються на специфічних уразливості, виявлених у деяких програмах. Однак деякі з них можуть бути класифіковані.
Одними з перших є проблеми безпеки, пов'язані з помилками в конфігурації додатків. Існують два типи помилок: встановлення за замовчуванням та неправильна конфігурація. Програмне забезпечення, таке як веб-сервери, в установці за замовчуванням часто містять приклади сайтів, які може використовувати зловмисник для доступу до конфіденційної інформації. Наприклад, такі установки можуть містити інтерфейси віддаленого адміністрування з паролем за промовчанням (який можна знайти в посібнику адміністратора за цією програмою). Внаслідок цього зловмисник отримує повний доступ до сайту. Найпоширеніша вразливість - це неправильнісписок доступу. Через це зловмисник може отримати доступ до конфіденційної інформації. Класичним прикладом помилкової конфігурації програми є налаштування веб-сервера Lotus Domino. Після встановлення цього сервера, у конфігурації відсутні списки доступу. Тобто до бази names.nsf можна отримати доступ безпосередньо з браузера без будь-якої аутентифікації.
Неякісне програмування завжди веде до помилок у ПЗ. Це і є найкритичніші вразливості. Їхнє виявлення дозволяє виконувати несанкціоновані команди, отримувати вихідний код динамічних сторінок, виводити сервіс з ладу, отримувати контроль над машиною тощо. Найбільш відомі з цих помилок, і найцікавіші щодо їх використання, це помилки переповнення буфера. Переповнення буфера - це вразливість, що у результаті неякісного програмування. Помилка переповнення буфера відбувається, коли змінна, передана функції аргументом, копіюється в буфер без перевірки розміру. Якщо розмір змінної більший за буфер, виходить переповнення. Щоб використовувати цю вразливість, змінну посилають фрагмент програми. Якщо зловмиснику вдається виконати переповнення буфера, може віддалено виконувати команди на машині-жертві з правами атакованого докладання.
Низькоякісне написання скриптів часто впливає на безпеку системи загалом. Існує можливість використання вразливостей у Perl-скриптах для доступу до довільних файлів або виконання несанкціонованих команд.
атака "Посередник" (Man in the Middle)
Головною метою атаки є перенаправлення трафіку між двома машинами. Це необхідно для перехоплення, модифікації чи знищення даних, якими обмінюються системи. Ця атака, швидшеконцептуальна, ніж практична. Існує безліч типів атак, що реалізують принцип "Посередника", наприклад, "посередник" у DNS, що використовує заміну DNS для перенаправлення трафіку між веб-сервером і клієнтом. Нещодавно створено програми для перенаправлення SSH-трафіку.
відмова в обслуговуванні (DoS)
Назва цих атак добре відбиває їх суть, оскільки результатом даних атак є недоступність тієї чи іншої сервісу (певного додатку) чи цільової машини. Ми розглянемо два типи відмови в обслуговуванні: один, заснований на помилці у додатку, та інший, заснований на поганій реалізації або вразливості протоколу. Відмова в обслуговуванні програми. Якщо вразливість програми веде до можливості отримання контролю над машиною (наприклад, за допомогою переповнення буфера), вони можуть вести до відмови в обслуговуванні. Додаток стане недоступним або через брак ресурсів, або через аварійне завершення. Мережева відмова в обслуговуванні. Існує кілька типів атак "відмова в обслуговуванні", що ґрунтуються на особливостях стека протоколів TCP/IP.
Відмова в обслуговуванні, що досягається за допомогою пакетної фрагментації, використовує вразливість деяких стеків TCP/IP, пов'язаних з дефрагментацією пакетів (складанням IP-фрагментів). Відома атака, що використовує цей підхід - це Teardrop. Фрагментарне усунення другого сегмента менше розміру першого сегмента. Це означає, що при складанні фрагментів перший сегмент повинен містити дані другого сегмента, відбувається перекриття фрагментів. Під час складання таких пакетів деякі системи не можуть обробити ситуацію, що призводить до відмови в обслуговуванні. Існують різні варіанти цієї атаки, наприклад bonk, boink та newtear. DoS-атака "пінг смерті" використовує некоректнуобробку ICMP-фрагментів, надсилаючи більше даних, ніж максимальний розмір IP-пакета.
Розподілена атака "відмова в обслуговуванні" перевантажує цільову мережу або систему. Ідея атаки полягає у використанні різних джерел (демонів) для атаки, і "власників" для управління. Найбільш відомі утиліти організації DDoS (Distributed Denial of Service) - це Tribal Flood Network (TFN), TFN2K, Trinoo та Stacheldraht. На малюнку 13 наведено приклад організації DDoS:
