Етап 4. Зондування мережі
Встановивши можливі мережеві адреси, можна спробувати визначити топологію мережі, а також можливі шляхи проникнення в неї.
Відстежування маршрутів
Це завдання може бути виконана за допомогою утиліти traceroute
(ftp://ftp.ee. lbl.gov/traceroute.tar.Z), яка входить в комплект постачання практично всіх версій UNIX і Windows NT. У системі Windows NT назва утиліти адаптована до формату 8.3 — tracert.
Утиліта traceroute,
написана Ван Якобсоном (Van Jacobson), є діагностичний засіб, що дозволяє відстежувати маршрут, по якому IP-пакеты проходять при передачі від одного вузла до іншого. Для отримання від кожного з відстежуваних вузлів повідомлення ICMP Time_exceeded утиліта використовує параметр TTL (time to live — час життя) пакету IP. Кожен маршрутизатор, який обробляє такий пакет, повинен зменшити на одиницю значення поля TTL. Таким чином, поле TTL грає роль лічильника пройдених вузлів (hop counter). Ми скористаємося утилітою traceroute, щоб визначити точний шлях, по якому проходять наші пакети. Як вже згадувалося вищим, ця утиліта грає роль зонда, за допомогою якого можна з'ясувати топологію мережі, що представляє інтерес. Крім того, вона дозволяє виявити пристрої управління доступом (програмні брандмауери або маршрутизатори, що фільтрують), які можуть фільтрувати ініціалізований дослідником потік даних.
Розглянемо наступний приклад.
[bash]$ traceroute Acme.net
traceroute to Acme.net (10.10.10.1), 30 hops max, 40 byte packets
1 gate2 (192.168.10.1) 5.391 ms 5.107 ms 5.559 ms
2 rtrl.bigisp.net (10.10.12.13) 33.374 ms 33.443 ms 33.137 ms
3 rtr2.bigisp.net (10.10.12.14) 35.100 ms 34.427 ms 34.813 ms
4 hssitrt.bigisp.net (10.11.31.14) 43.030 ms 43.941 ms 43.244 ms
5 gate.Acme.net (10.10.10.1) 43.803 ms 44.041 ms 47.835 ms
На підставі отриманої
інформації можна прослідкувати шлях, по якому пакети, що пройшли через маршрутизатор (шлюз), пройшли, минувши три вузли (2—4), до точки призначення. На всьому шляху проходження пакети ніде не були заблоковані. На підставі раніше отриманої інформації відомо, що МХ-запись домена Acme. net указує на вузол gate.acme.net. Отже, можна припустити, що цей вузол є не логічним пристроєм, а реальним комп'ютером мережі, а сегмент, через який пакет пройшов на попередньому кроці (4), — це прикордонний маршрутизатор організації. Сегмент 4 може бути реалізований як у вигляді виділеного програмного брандмауера, так і у вигляді простого маршрутизатора, що фільтрує. На даному етапі про це поки важко судити. Як правило, саме на пристрій, що знаходиться на сегменті, безпосередньо за яким знаходиться реальний комп'ютер мережі, покладається завдання маршрутизації (наприклад, маршрутизатор або брандмауер).
Розглянутий
приклад
дуже простий. У реальних ситуаціях до одного і тому ж вузла може вести декілька маршрутів, що створюються пристроями з декількома інтерфейсами (наприклад, маршрутизатори серії Cisco 7500). Більш того, кожен інтерфейс може мати власний список управління доступом (ACL — access control list). Часто деякі інтерфейси такого пристрою пропускають запити traceroute, а інші — ні, що визначається конкретним списком ACL. Таким чином, дуже важливо за допомогою traceroute отримати схему всієї мережі. Після того, як ви спробуєте прослідкувати за допомогою traceroute маршрути, по яких проходять пакети до кожного виявленого вами вузла мережі, можна створити схему мережі, наочно демонструючу архітектуру шлюзу Internet, а також що показує, в яких місцях розташовані пристрої, що виконують функції управління доступом. Ми називатимемо цю схему діаграмою шляхів доступу (access path diagram).
Необхідно підкреслити, що більшість версій traceroute систем UNIX за умовчанням відправляють пакети UDP (User Datagram Protocol), а пакети ICMP (Internet Control Messaging Protocol) — тільки у разі явної вказівки параметра -i. Проте в Windows
NT для цих цілей за умовчанням використовуються пакети протоколу ICMP, звані ехо-запросамі (echo request). Тому, якщо досліджуваний вузол блокує або пакети UDP, або ICMP, ви можете отримувати в разних операційних системах різні результати. Серед інших цікавих параметрів traceroute можна відзначити параметр -q, який дозволяє користувачеві визначати маршрутизацію з втратою джерела запиту. Якщо ви упевнені, що шлюз, що цікавить вас, пропускає пакети із зміненим джерелом (що є дуже великою помилкою адміністратора цього шлюзу), то можна спробувати включити даний режим, вказавши потрібну кількість ділянок (докладнішу інформацію можна отримати за допомогою команди man traceroute).
Є і дещо інших параметрів, які дозволяють обійти пристрої управління доступом. Наприклад, параметр -р
n утиліти traceroute дає можливість вказати початковий номер порту UDP (л), який повинен збільшуватися на 1 при кожній спробі відстежування маршруту. Таким чином, ми не зможемо використовувати фіксовані номери портів, не модифікуючи traceroute. На щастя, Майкл Шифман (Michael Schiffman) вже створив модуль оновлення, який дозволяє за допомогою додаткового параметра -s зупинити автоматичне збільшення лічильника для traceroute версії 1.4а5
(ftp://ftp.ee.lbl.gov/traceroute-1. 4a5.tar. Z). Це дозволяє в кожному пакеті, що відправляється, використовувати один і той же номер порту сподіваючись на те, що пристрій управління доступом пропустить ці пакети у внутрішню мережу. Як правило, для цих цілей краще всього підходить UDP-порт з номером 53 (запити DNS). Оскільки багато вузлів пропускають вхідні запити DNS, існує висока вірогідність того, що пристрій управління доступом не зреагує на таку спробу проникнення.
[bash]$ traceroute 10.10.10.2
traceroute to (10.10.10.2), 30 hops max, 40 byte packets
1 gate (192.168.10.1) 11.993 ms 10.217 ms 9.023 ms
2 rtrl.bigisp.net (10.10.12.13)37.442 ms 35.183ms 38.202ms
3 rtr2.bigisp.net (10.10.12.14) 73.945 ms 36.336 ms 40.146 ms
4 hssitrt.bigisp.net (10.11.31.14) 54.094 ms 66.162 ms 50.873 ms
5 * * *
6 * * *
З лістингу видно, що спроба використання утиліти traceroute, яка за умовчанням посилає пакети UDP, була заблокована брандмауером.
Тепер ще раз спробуємо запустити утиліту traceroute, проте цього разу використовуватимемо фіксований порт UDP 53, який використовується для запитів DNS.
[bash]$ traceroute -s -p53 10.10.10.2
traceroute to (10.10.10.2), 30 hops max, 40 byte packets
1 gate (192.168.10.1) 10.029ms 10.027ms 8.494ms
2 rtrl.bigisp.net (10.10.12.13) 36.673 ms 39.141 ms 37.872 ms
3 rtr2.bigisp.net (10.10.12.14) 36.739 ms 39.516 ms 37.226 ms
4 hssitrt.bigisp.net (10.11.31.14)47.352 ms '47.363 ms 45.914 ms
5 10.10.10.2 (10.10.10.2),50.449ms 56.213ms 65.627ms
Оскільки тепер пакети не викликають підозри у пристрою управління доступом (сегмент 4), вони без проблем його долають. Таким чином, ми можемо зондувати вузли, що знаходяться за пристроєм управління доступом, просто відправляючи запити по протоколу UPD в порт 53. Крім того, якщо ви зондуватимете систему, яка опитує порт 53 на предмет надходження повідомлень по протоколу UDP, ви не отримаєте звичайного повідомлення ICMP про те, що дана система недоступна. Таким чином, якщо ви не побачили інформації про вузол, це означає, що пакети дійшли до мети.
Всі операції, які ми проробляли до цих пір з утилітою traceroute, виконувалися в командному рядку. Якщо вам до душі графічний Інтерфейс, то можна скористатися утилітою Visualroute (www.visualroute.com) або Neotrace
(http://www.
neotrace. com/). Утиліта Visualroute наочно представляє кожен пройдений сегмент маршруту і пов'язує його із запитами whois. Хоча, ця утиліта представляє отримувані дані в зручному форматі, проте, як правило, її можливостей для широкомасштабного зондування великих мереж виявляється недостатньо.
Існують
спеціальні прийоми, що дозволяють уточнити дані про список ACL, використовуваний для конкретного пристрою управління доступом. Одним з таких методів є сканування протоколу брандмауера (firewall protocol scanning), про що піде мова в розділі 11, "Брандмауери".
Контрзаходи: як присікти зондування мережі
У даному розділі ми лише злегка торкнулися такої обширної теми, як методів зондування мережі. У подальших розділах ми знову повернемося до неї і поговоримо про серйозніші методи. Проте вже зараз можна сформулювати деякі міркування про те, як запобігти розглянутим вище спробам зондування. По-перше, багато комерційних систем виявлення вторгнень (NIDS — Network Intrusion Detection Systems) дозволяють виявляти спроби зондування такого роду. Крім того, подібні вторгнення можна виявити за допомогою безкоштовної програми Марті Рош (Marty Roach)
(http://www.snort.org/). Якщо ви хочете прийняти заходи і захиститися від зондування мережі за допомогою утиліти traceroute, звернете увагу на утиліту Rotorouter, написану Хамблом
(Humble) (http://packet storm, securify .com/linux/trinux/src/rr-l.0 . tgz). Ця утиліта дозволяє не тільки реєструвати що входять від утиліти traceroute запити, але і
генерувати помилкові відповіді. І нарешті, залежно від загальної політики безпеки вашої організації можна набудувати прикордонні маршрутизатори так, щоб обмежити потік даних по протоколах ICMP і UDP тільки строго певними вузлами. Такий підхід дозволить звести ризик проникнення у внутрішню мережу за допомогою зондування до мінімуму.
|