Етап 3. Прослуховування серверів DNS
Після встановлення всіх доменів можна приступати до роботи з серверами DNS. DNS — це розподілена база даних, призначена для перетворення IP-адресов в імена вузлів і навпаки. Якщо сервер DNS не налаштований на забезпечення максимального ступеня захисту, то з його допомогою можна отримати інформацію про внутрішню мережу організації.
Перенесення зони
Одна з найсерйозніших помилок адміністратора при налаштуванні параметрів мережі полягає в наданні можливості зломщикові здійснити перенесення зони DNS.
При перенесенні зони (zone transfer) вторинний сервер DNS може відновити власну базу даних зони на підставі даних, отриманих від первинного DNS-сервера. Це дозволяє забезпечити надмірність в роботі служби DNS, яка необхідна для тих випадків, коли первинний сервер по якихось причинах стає недоступним. У загальному випадку цілком достатньо, щоб перенесення зони виконувалося тільки вторинним DNS-сервером. Проте багато DNS-серверы настроєно таким чином, що надають копію зони будь-якому вузлу Internet по першому ж запиту. У цьому немає нічого поганого за умови, що інформація, що надається, містить лише відомості про комп'ютери, безпосередньо підключені до Internet. Проте така можливість таїть в собі небезпеку того, що отримані зломщиком відомості можуть полегшити його завдання проникнення в мережу. Ця загроза реалізується повною мірою, коли в організації не використовується механізм розділення DNS-информации на загальнодоступну і закриту. Якщо це так, то будь-який охочий без особливих проблем може отримати зведення про імена вузлів і IP-адресах внутрішньої мережі. Надання інформації про внутрішні IP-адресах кому потрапило можна порівняти лише з наданням повної схеми внутрішній мережі організації.
Давайте розглянемо декілька методів перенесення зони, а також з'ясуємо, які відомості можна отримати з цих даних. Зі всієї безлічі різних інструментів, які можна застосовувати для виконання даної операції, ми розглянемо лише найпоширеніші.
Одін з найпростіших методів перенесення зони полягає у використанні клієнта nslookup, який зазвичай входить в комплект постачання більшості версій UNIX і NT. Скористаємося цією утилітою і введемо наступні дані.
[bash]$ nslookup
Default Server: dns2.acme.net
Address: 10.10.20.2
>> server 10.10.10.2
Default Server: [10.10.10.2]
Address: 10.10.10.2
>> set type=any
>> Is -d Aome.net. >> /tmp/zone_out
Перша введена команда — це запуск утиліти nslookup в інтерактивному режимі. Після запуску утиліта повідомляє, який сервер ним, ен в даний момент використовується за умовчанням. Зазвичай таким сервером є
DNS-сервер вашої організації або DNS-сервер провайдера. Оскільки використовуваний в даному прикладі DNS-сервер (10.10.20.2) не обслуговує домен, що цікавить нас, нам потрібно перейти на інший сервер, на якому ми зможемо знайти необхідну інформацію про внутрішню мережу. Таким чином, утиліті nslookup необхідно явно повідомити про те, до якого сервера DNS їй потрібно звернутися. У нашому прикладі ми використовуватимемо
основний сервер мережі Acme Networks з адресою 10.10.10.2. Пригадаєте, що його адресу ми дізналися з реєстраційної бази даних доменів на попередньому етапі.
Потім ми встановлюємо тип запису any, що означає, що в список вибраних записів будуть відібрані всі записи з бази даних DNS-сервера. (Докладніше про параметри утиліти nslookup можна дізнатися за допомогою команди man nslookup (UNIX) або nslookup ? (NT).)
І нарешті, для отримання всіх записів, відповідних заданому критерію, скористаємося командою Is. Параметр -d служить для включення режиму виведення всіх записів домена. В кінці доменного імені доданий символ ".", як це потрібно для явного завдання повністю певного імені (fully qualified domain name). Проте в більшості випадків крапку можна не використовувати. Крім того, ми перепризначували вивід у файл /tmp/zone_out для можливості подальшого аналізу отриманих даних.
Після виконання перенесення зони можна відкрити створений файл і подивитися, чи міститься в нім інформація, яка може допомогти нам у виборі якоїсь конкретної системи як плацдарм для проникнення в мережу. Ось фрагмент такого файлу.
[bash]$ more zone_out
acctls ID IN A ' 192.168.230.3
ID IN HINFO "Gateway2000"
"WINWKGRPS" ID IN MX 0 acmeadmin-smtp
ID IN RP bsmith.rci bsmith.who
ID IN TXT "Location:telephone Room"
це ID IN CNAME aesop
au ID IN A 192.168.230.4
ID IN HINFO "Aspect" "MS-DOS" ID IN MX 0
andromeda
ID IN RP jcoy.erebus jcoy.who
ID IN TXT "Location: Library"
acct21 ID IN A 192.168.230.5
ID IN HINFO "Gateway2000"
"WINWKGRPS" ID IN MX 0 acmeadmin-smtp
ID IN RP bsmith.rci bsmith.who
ID IN TXT "Location:accounting"
Ми
не розглядатимемо детально кожен елемент всіх знайдених записів, а зупинимося лише на деяких важливих типах інформації, яку можна отримати таким чином. Як видно з приведеного вище лістингу, для кожного вузла є запис типу 'А, що містить IP-адрес вузла, ім'я якого вказане в лівому стовпці. Крім того, кожен вузол має запис типу HINFO, що ідентифікує використовувану платформу або операційну систему (опис див. в RFC 952). Інформація записів HINFO не використовується операційними системами, проте дуже часто виявляється корисною для зломщиків. Оскільки результати перенесення зони збережені у файлі, то його вміст без особливих проблем можна відсортувати за допомогою таких програм UNIX, як grep, sed, awk або
perl.
Припустимо, зломщик є експертом якої-небудь певної операційної системи, наприклад SUNOS або Solaris. У такому разі знайти у файлі IP-адреса, відповідні записам HINFO комп'ютерів SPARC, Sun або Solaris, можна за допомогою наступної команди.
[bash]$ grep -i Solaris zone_out |wc -1
388
Таким чином, зломщик має 388 записів, в яких присутнє слово Solaris, і кожен з цих 388 комп'ютерів може стати потенційною жертвою.
Припустимо, потрібно знайти комп'ютери, які використовуються для тестування програмного забезпечення або апаратних засобів. Такі комп'ютери часто представляють "ласий шматок" для зломщика, оскільки зазвичай на них встановлені мінімальні засоби забезпечення безпеки, використовується легко вгадуваний
пароль, а адміністратори, як правило, не стежать за тим, хто за ними працює. Такі комп'ютери ідеально підходять для злому! Тому можна спробувати пошукати тестові системи за допомогою наступної команди.
[bash]$ grep -i test /tmp/zone_out |wc -1
96
Отже, в нашому розпорядженні близько сотні записів файлу зони, в яких міститься слово test. Як правило, ця кількість приблизно відповідає кількості реальних тестових систем мережі. Приведені приклади — лише мала частина того, що можна при відомій частці наполегливості і винахідливості отримати з файлу зони. Досвідчений зломщик, "просіявши через сито" отримані дані, рано чи пізно виявить самий уразливий комп'ютер мережі, з якого він зможе почати вторгнення.
Існують
деякі особливості, про які потрібно пам'ятати. Вищеописаний метод дозволяє одночасно звертатися лише до одного сервера імен. Це означає, що зломщикові доведеться виконати ті ж операції по відношенню до решти всіх серверів імен, обслуговуючих необхідний домен. Крім того, ми поводилися із запитом лише до домена Acme.net. Якщо в мережі, що представляє інтерес, є підлеглі домени, доведеться виконати ті ж дії і з кожним з них (наприклад
greenhouse.Acme.net). І нарешті,
можна отримати повідомлення про те, що список записів домена недоступний або що запит не може бути виконаний. Таке повідомлення зазвичай говорить про те, що параметри налаштування забороняють виконувати перенесення зони з цього сервера. Проте якщо в мережі декілька серверів, то, можливо, вдасться знайти той з них, який дозволяє здійснювати перенесення зони.
Тепер, коли ви познайомилися з тим, як перенесення зони виконується уручну, можна розглянути і ті засоби, які дозволяють прискорити цей процес. До таких засобів відносяться host, Sam Spade, axfr і dig.
Команда host входить в комплект постачання багатьох версій системи UNIX. Ось декілька найпростіших способів її використання.
host -1 Acme.net
або
host -i -v -t any Acme.net
Якщо
потрібно визначити лише IP-адреса, щоб згодом вставити їх в сценарій оболонки, можна скористатися командою cut, що дозволяє виділити IP-адреса з вихідного лістингу команди
host.
>>host -l acme.net |cut -f 4 -d" " » /tmp/ip_out
В процесі попереднього збору даних використовувати команди системи UNIX для виконання всіх завдань немає необхідності. Існує досить багато продуктів для Windows, які дозволяють отримати ту ж інформацію (рис 1.5).
І нарешті, можна скористатися одним з кращих засобів перенесення зони — утилітою axfr
(http://ftp.edit.edu.cn/pub/linux/ www.trinux.org/src/netmap/axfr-0.5.2.tar.gz ), написаною Гаюсом (Gaius). Ця утиліта послідовно опитує вказані домени, виконує для кожного з них перенесення зони і створює стислу базу даних зони і файлів вузлів по кожному домену. Крім того, як параметр цій утиліті можна передати домени верхнього рівня, такі як com або edu, і отримати таким чином список всіх доменів, пов'язаних з вказаним доменом. Проте цією можливістю користуватися не рекомендується. Для запуску утиліти axfr використовуйте наступну команду.
[bash]$ axfr Acme.net
axfr: Using default directory:
/root/axfrdb Found 2 name servers for domain 'Acme.net.':
Text deleted.
Received XXX answers (XXX records).
Для того, щоб поводитися із запитом до отриманої за допомогою утиліти axf r базі даних, необхідно ввести наступну команду.
[bash]$ axfrcat Acme.net
Отримання записів обміну поштою (MX)
Визначення комп'ютера, на якому обробляється пошта, - це один з найбільш вдалих способів виявлення мережевого брандмауера організації, що представляє інтерес. Як правило, в комерційних компаніях пошта обробляється на тому ж комп'ютері, який служить як брандмауер, або принаймні на комп'ютері, який знаходиться в тому ж сегменті мережі. Для отримання докладнішої інформації можна скористатися командою host.
[bash]$ host Acme.net
Acme.net has address 10.10.10.1
Acme.net mail is handled (pri=20) by smtp-forward.Acme.net
Acme.net mail is handled (pri=10) by gate.Acme.net
Мал. 1.5. Прихильники Windows можуть виконати перенесення зони, а також інші завдання попереднього збору даних за допомогою багатофункціональної утиліти Sam Spade
Якщо команда host застосовується без параметрів або тільки з ім'ям домена, то спочатку вона спробує знайти записи А, а потім записи MX. Приведена вище інформація перетинається з тією інформацією, яку раніше була отримана при пошуку в базі даних ARIN з використанням утиліти whois. Це зайвий раз підтверджує, що ми правильно визначили адресу потрібної нам мережі.
Контрзаходи: забезпечення безпеки бази даних DNS
Інформація DNS представляє для хакера дуже великий інтерес, тому дуже важливо зменшити об'єм даних, доступних через Internet. З погляду налаштування вузла, необхідно обмежити можливість перенесення зони, дозволивши її лише певним серверам. У сучасних версіях служби BIND для цих цілей можна використовувати директиву xfernets файлу named.boot. Для того, щоб обмежити можливість перенесення зони служби DNS компанії Microsoft, необхідно використовувати параметр Notify (докладнішу інформацію з цього питання можна знайти за адресою
http://support.-microsoft.eom/support/kb/articles/ql93/8/37.asp). Для налаштування служб імен інших розробників необхідно звернутися до відповідної документації.
З точки зору зашиті мережі необхідно набудувати брандмауер або маршрутизатор, що фільтрує, так, щоб вони відсікали всі несанкціоновані вхідні з'єднання з портом 53 протоколи TCP. Оскільки в запитах на отримання імен використовується протокол UDP, а в запитах на перенесення зони — протокол TCP, це дозволить ефективно присікати будь-які спроби перенесення зони. Крім того, доцільно встановити пристрій управління доступом або систему виявлення вторгнень (IDS — intrusion detection system), щоб реєструвати всю інформацію, яка може свідчити про небезпечні дії.
Обмеження
можливості перенесення зони збільшить час, який повинен витратити зломщик, перебираючи IP-адреса і пробуючи різні імена вузлів. Проте оскільки запити на отримання імен як і раніше залишаються дозволеними, зломщик може уручну перебрати всі IP-адреса з виділеного для мережі діапазону адрес. Таким чином, набудуйте зовнішні сервери імен так, щоб вони надавали інформацію тільки про комп'ютери, які безпосередньо підключені до Internet. Ці зовнішні сервери DNS ні за яких обставин не повинні розголошувати інформацію про внутрішню мережу. Може здатися, що перераховані вище рекомендації є очевидними, проте ми не рідко зустрічали DNS-серверы, які дозволяли "витягнути" з них більше 16000 внутрішніх IP-адресов і імен вузлів. І нарешті, краще не використовувати запису HINFO. Як ви побачите нижче в цьому розділі, це навряд чи допоможе приховати від зломщика тип операційної системи, проте утруднить його завдання, оскільки він не зможе автоматизувати процес отримання даної інформації програмним способом.
|