Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #106, ОКТЯБРЬ 2007 г.

Ловушка для хищника

Сергей «zepps» Грушко

Хакер, номер #106, стр. 066

(zepps@list.ru)

Защита сети от внешних вторжений

Сколько способов защиты локальных сетей от внешних вторжений ты знаешь? Два? Три? Пять? Сегодня ты узнаешь еще один. Думаешь, я расскажу о новом способе строительства стен (читай: файрволов) и прочих фортификационных сооружений (читай: IDS или IPS)? Нет, мы будем рыть ямы и тщательно маскировать их. Да так, что хакер, попав в одну из них, поймет это далеко не сразу. Речь пойдет о системах-ловушках, а именно honeypot.

Honeypot – программное средство, суть которого заключается в том, что оно должно привлекать хакеров и быть легко взламываемым. Будучи взломанным, honeypot способен сообщить о том, как взлом был осуществлен.

По своему устройству honeypot предполагает пассивное существование в надежде на то, что хакер по неосторожности зайдет и на него. Тогда сработавший сенсор сообщит о проникновении. Но если хакер на него не зайдет, то так и останется незамеченным (если, разумеется, не сработают другие механизмы защиты). Поэтому сегодня мы задействуем ловушку несколько по-другому - мы приведем в нее хакера. Как мы узнаем, хакер это или нет? В нашей сети нет серверов, доступных из интернета. Все они либо вынесены в DMZ, либо находятся на хостинг-площадках. Внутренние серверы обслуживают только внутренние запросы. По-умолчанию, все, кто пытается проникнуть на файрвол из интернета, - хакеры. А хакеры идут лесом. Точнее, в ловушку.

Еще пару слов о honeypot

Системы honeypot бывают двух видов: низкоинтерактивные и высокоинтерактивные.

Низкоинтерактивные honeypot, как правило, представляют собой программу, реализующую один или несколько сетевых сервисов, предназначенных для взлома, разумеется. Такими сервисами могут быть FTP, HTTP, SMTP, MySQL, DNS и множество других. Например, Honeypot KFSensor имеет на борту около 60 различных сервисов. Сервисы относятся к разным категориям: «Веб-сервер», «Рабочая станция MS Windows», «Сервер Linux», «Сервер MS Windows» и т.д. Также в качестве бонуса для хакера в этой программе (да и во многих остальных) содержатся эмуляции троянских бэкдоров. Но это только для того, чтобы привлечь его внимание. Основное назначение низкоинтерактивного honeypot – вовремя узнать о совершении атаки. Для сбора информации о хакере, его инструментах и особенностях взлома он чаще всего не годится. Зато он прекрасно подходит для отвлечения внимания хакера и отнимания у него времени. Просканировав такую приманку сканером уязвимостей, хакер с удовольствием обнаружит одну или несколько (сколько ты пожелаешь) дырок, которыми ему наверняка захочется воспользоваться.

Также у нас будет использоваться HoneyD. HoneyD (и его порт WinHoneyD) – это специализированная платформа для построения ловушек. Она работает по модульному принципу. Каждый сервис – отдельный скрипт, определяющий поведение ловушки и реализующий механизм «запрос-ответ». Зная, как устроен тот или иной сервис (можно заглянуть в RFC), и обладая навыками программирования, ты сможешь сделать такой сервис-ловушку сам. Кроме того, HoneyD имеет расширенные средства формирования виртуальных сетей, в которых роль узлов выполняют сконфигурированные ловушки. Довольно интересно то, как можно сделать эту сеть более реалистичной. Например, можно ввести коэффициент потери пакетов на линии, время задержки отклика, добавить недостижимые сети и т.д. Таким образом, например, лог ping будет более реалистичным. HoneyD позволяет запустить 65536 ловушек, которые работают как отдельные машины и, по сути, представляют собой сенсоры, реагирующие на проникновение хакера. Другой особенностью этого honeypot является возможность осуществления подмены отпечатка сетевого стека (network fingerprint). Причем эти самые отпечатки берутся от самих программ сканирования сетей, таких как NMap или Xprobe. Тем самым можно достаточно реалистично реализовать сеть сложной топологии с различным оборудованием, такими как компьютеры на базе Windows, Linux, *BSD, маршрутизаторы Cisco и т.д. Посидев один вечер над файлом конфигурации, можно реализовать системы с сотнями машин, десятками маршрутизаторов и серверов.

Простой конфигурационный файл HoneyD может выглядеть так:

## Honeyd configuration file ##

### Создаем ловушку, работающую как Windows Server

create default

set default personality "Windows NT 4.0 Server SP5-SP6"

set default default tcp action reset

add default tcp port 110 "sh scripts/pop.sh"

add default tcp port 80 "perl scripts/iis-0.95/main.pl"

add default tcp port 25 block

add default tcp port 21 "sh scripts/ftp.sh"

add default tcp port 22 proxy $ipsrc:22

add default udp port 139 drop

set default uptime 3284460

### Ловушка, работающая как маршрутизатор Cisco

create router

set router personality "Cisco 4500-M running IOS 11.3(6) IP Plus"

add router tcp port 23 "/usr/bin/perl scripts/router-telnet.pl"

set router default tcp action reset

set router uid 32767 gid 32767

set router uptime 1327650

#Задаем привязку IP-адреса к конкретной ловушке

bind 192.168.1.150 router

Директивой create задается название машины, например WinXP, Cisco, Router. Опцией default описываются все прочие машины.

  • set $название_хоста personality "$Fingerprint" - сетевой отпечаток какой-либо операционной системы из файла nmap.prints.
  • set $название_хоста default $транспортный_протокол action $действие (reset или drop) - действие, осуществляемое при присоединении на неуказанные порты.
  • add $название_хоста tcp (или udp) port $номер_порта "действие" - правило или скрипт, запускаемый при подключении к указанному порту указанного адреса.
  • bind $IP_adress $название_хоста - привязка конкретного IP-адреса к настроенной ловушке.

Как видишь, все директивы интуитивно понятны, и собрать небольшую сеть можно за короткое время.

Высокоинтерактивная ловушка

Высокоинтерактивный honeypot работает по совершенно иному принципу: ничего не эмулируется. В качестве приманки используется обычный компьютер с обычной операционной системой. Но для того чтобы можно было наблюдать за действиями хакера, устанавливается специальный программный модуль. Этот модуль скрыт в системе и по принципу работы ничем не отличается от руткита ядра. В его задачи входит протоколирование системных событий на низком уровне.

Говорить мы будем о системе The HoneyNet Project. Именно о ней хотя бы потому, что других нет. Разработчики из The HoneyNet Project предложили свою концепцию построения ловушек. Так как изначально предполагалось, что будут разворачиваться сети ловушек, которые могут включать в себя десятки, а то и сотни машин, то для удобства управления и сбора информации такая система должна быть централизованной. Система состоит из модуля Sebek, устанавливаемого на компьютер-ловушку, и выделенного компьютера с ОС Roo HoneyWall (от слов Honeypot FireWall), который осуществляет сбор информации со всех сенсоров, отслеживает сетевые соединения и может ограничивать действия хакера при совершении атаки. Roo HoneyWall работает в режиме моста, то есть соединяет сегменты сети, но для узлов в этих сегментах он незаметен. Таким образом, он представляет собой «прозрачный» файрвол, работающий на канальном уровне. Ты тоже о таком не слышал? :) В простейшем виде такая связка работает так, как показано на рисунке «Хитрая схемка работы сети».

Так как Roo HoneyWall прозрачен для сетевых соединений, он прозрачен и для любых подключений к себе. Оба его сетевых интерфейса даже не имеют IP-адресов. Для того чтобы к нему можно было удаленно подключиться, необходим третий сетевой интерфейс, подключенный к третьему сетевому сегменту. В принципе, третьего сетевого сегмента можно и избежать, прописав маршрутизацию или сделав его виртуальным а-ля Hamachi (он, кстати, поддерживается). Но появление чужеродного трафика в этом сегменте может натолкнуть хакера на подозрения. Управление будет производиться либо по SSL из браузера, либо по SSH. Какая ОС будет стоять на станции управления – решать тебе.

Теперь поговорим о новом способе защиты сети от внешних вторжений, который упоминался в начале статьи.

Общая концепция построения такой защиты заключается в том, чтобы параллельно обыкновенной производственной сети сформировать сеть-ловушку. Производственной может быть любая сеть: корпоративная, твоей кафедры или факультета, домашняя сеть. А может - вообще один компьютер, на случай если ты хочешь использовать ловушку в исследовательских целях или просто поиздеваться над хакерами.

Как это все работает

Как ты видишь, на схеме представлено 3 сети, соединенных маршрутизатором: интернет, сеть-ловушка и производственная сеть. Как устроены интернет и твоя производственная сеть рассказывать не стану. Устройство сети-ловушки должно быть похожим на устройство производственной сети, но в целом остается на твое усмотрение. Главное, чтобы в ней присутствовал файрвол, рабочие станции и какие-нибудь серверы. Разумеется, фейковые. Одним из вариантов создания сети-ловушки будет дублирование ключевых компьютеров производственной сети, а именно самого файрвола, сервера и эталонных рабочих станций. Это будет полезно из следующих соображений. Хакер атакует подставной файрвол. Через какое-то время он проникает на него и, следовательно, в локальную сеть. После этого он производит сканирование сети и атакует какие-либо машины. Если этими машинами будут аналоги существующих машин, то тебе станет ясно, каким образом хакер смог бы проникнуть в реальную сеть и обеспечить себе доступ к отдельным узлам сети. Тут как раз и появится повод призадуматься об инфраструктуре безопасности твоей сети.

Отдельно на твое усмотрение остаются следующие вопросы: сделать ли специально файрвол и машины бажными или использовать точные копии реальных машин. У каждого подхода есть свои преимущества и недостатки. Разумеется, на самих машинах сети-ловушки должны храниться фейковые данные.

Ключевым моментом работы такой сети является наличие граничного маршрутизатора. В его задачи входит трансляция всех пакетов из интернета в сеть-ловушку и обратно и возможность доступа пользователей из локальной сети в интернет. Эти задачи будут решаться с помощью механизмов NAT и PORT MAPPING. На граничном маршрутизаторе создается несколько правил. В общем виде они могут выглядеть так:

Для того чтобы хакер не стал использовать твою сеть в корыстных целях, а именно для DDoS’а, спама, проведения атак на другие серверы интернета и прочих гадостей, ты можешь еще немного поколдовать над правилами брандмауэра и обеспечить более высокий уровень защиты. Но здесь необходимо балансировать на грани разумного и безопасного. Слишком жесткие ограничения дадут хакеру возможность понять, что он попал в контролируемую ловушку, а отсутствие ограничений сможет превратить твою сеть в ботнет или площадку для атак, особенно если ты долгое время не будешь следить за ловушкой.

Особенности внедрения

Наверное, ты уже успел подумать о том, сколько машин может потребоваться для такой затеи. Штук 5-10? Можно и так. А можно проще и гораздо дешевле.

Когда-то кто-то, наверное, очень умный, придумал, как на одном компьютере запустить несколько операционных систем. Одновременно. Да, речь пойдет о технологиях виртуализации. Причем именно о технологиях, а не о конечных продуктах. Таких технологий я насчитал 4 штуки.

Для нас наиболее интересными будут две технологии виртуализации, а именно гипервизорная виртуализация, работающая поверх железа, и виртуализация на уровне ОС. Наиболее известными продуктами, работающими по первой технологии, являются XEN и VMware ESX. Ко второму типу относятся MS Virtual PC (а также Server) и VMware Workstation (а также GSX, Server и т.д.).

Так как именно VMware Workstation получила наиболее широкое распространение, то и систему мы будем поднимать на ней. В наши задачи входит создание сети виртуальных машин, работающих как приманки, файрвола-приманки, трансляции всего внешнего трафика на подставной файрвол через Roo HoneyWall, решение проблем, связанных с маршрутизацией трафика между сетевыми сегментами, и прочие мелочи.

Попробуем развернуть всю сеть-приманку на твоем файрволе. Он должен иметь достаточное количество памяти и шустрый процессор. В качестве маршрутизатора используем последнюю версию Kerio WinRoute FireWall (KWRF). Базовые правила для файрвола будут такими же, как те, что указаны в таблице.

В качестве гипервизора виртуальных машин используем VMware Workstation 5.5. Отключаем ее встроенные сервисы NAT и DHCP. Сделать это можно либо через services.msc, либо через настройки самой Вары. Создаем 6 виртуальных машин. Устанавливаем Roo HoneyWall. Для этого скачиваем дистрибутив с сайта www.honeynet.org или берем его с DVD-диска. Подключаем ISO-образ или прожигаем болванку. Запускаем машину и производим установку. Установка полностью автоматическая, поэтому проблем возникнуть не должно. Первый интерфейс (eth0) заводим в сетевой сегмент, который виден на физическом компьютере. В данном случае это VMNet 4. Далее устанавливаем какую-нибудь ОС и делаем из нее файрвол. Внешний IP-адрес этого файрвола будет 192.168.130.2. Обрати внимание, что именно на него будет производиться полная трансляция всех пакетов, приходящих из интернета, с помощью KWRF.

Для того чтобы транслированные в сеть VMNet 4 пакеты смогли достигнуть файрвола, находящегося в сети VMNet 7, маски подсети на интерфейсе физической машины и фейкового файрвола должны быть установлены в 255.255.0.0. Объединяем второй сетевой интерфейс Roo HoneyWall (eth1) и новоиспеченный файрвол. В данном случае это VMNet 7. Вторым сетевым интерфейсом наш фейковый файрволл будет находиться в сетевом сегменте VMNet 1. Именно сегмент VMNet 1 будет сетью твоих ловушек. В этой сети устанавливается несколько высокоинтерактивных ловушек, например Windows XP + модуль Sebek в качестве пользовательского компьютера и несколько других серверов, тоже в связке с модулями Sebek, и один низкоинтерактивный honeypot, например HoneyD. HoneyD поможет организовать массовку с использованием минимальных ресурсозатрат. Как я уже говорил, в этой виртуальной сети желательно сделать некое подобие твоей реальной сети.

Управление ловушками

Управлять Roo HoneyWall можно несколькими способами. Самый простой и одновременно самый сложный – управлять локально. Простой – потому что никаких дополнительных телодвижений не требуется. Сложный – потому что конфигурировать систему и осуществлять мониторинг, используя одну консоль, способны лишь отдельные аксакалы. Система предусматривает удаленное администрирование в Web-based GUI. Можно поставить рядом еще одну виртуальную машинку и завести ее и интерфейс eth2 Roo HoneyWall в один сетевой сегмент, например VMNet 9. Можно обойтись и без виртуальной машины: вывести этот самый VMNet 9 наружу, то есть на физическую машину, и управлять с нее. А можно и еще хитрее: перевести только что выведенный наружу VMNet 9 в режим Bridging с физической сетевой картой LAN Interface и управлять со своего компьютера, находящегося в локальной сети. Для этого придется немного повозиться с таблицей маршрутизации, но если ты не пропускал лекции по сетям, то сделаешь это за 5 минут.

После того как вся сеть собрана, щедро награждай багами отдельные фейковые машины, чтобы привлечь к ним внимание хакера. Для уверенности ты можешь разместить несколько honeypot’ов в производственной сети. Это позволит узнать о неприятеле, в случае если он попал в сеть другим образом.

После атаки

Как узнать, была ли совершена атака или нет? Каждое honeypot-средство предлагает для этого свои инструменты. Для одних honeypot’ов более важным является сам факт обнаружения атаки, в то время как для других - все детали ее совершения. Например, Honeypot KFSensor может рассказать о том, с каких узлов было произведено подключение, какие сервисы задействовались, какие пароли использовались при переборе и т.д. Высокоинтерактивные ловушки с модулями Sebek через свой сервер на Roo HoneyWall дают более подробную информацию, а именно какие процессы запускал взломщик на ловушке, какие процессы модифицировал, совершая атаку, и т.д. Благодаря тому что данные с десятков машин собираются на одном Roo HoneyWall, можно оперативно наблюдать за тем, что там творится. Как происходит само оповещение об атаке, тоже зависит от самого honeypot’а. В одних при атаке отправляется письмо на почтовый ящик администратора, в других - сообщение ICQ или других IM. Несложно реализовать отправление sms-сообщения на телефон админа. Отдельные представители умеют пищать системным динамиком и обращать на себя внимание другими замысловатыми способами.

И это еще не конец!

Процесс заманивания хакера в ловушку похож на рыбалку. Насадил наживку, забросил поплавок в камыши и сидишь - ждешь большую рыбу. Колебания поплавка на воде дадут понять, с какой рыбой ты будешь иметь дело. Наверняка, будет попадаться и всякая мелочевка. Значит, пора сменить наживку (усилить защиту подставного файрвола и т.д.). Конечно, это целая наука. Но знание особенностей работы и понимание ее фундаментальных принципов позволит экспериментировать и создавать интересные системы. Но, как бы там ни было, приятное (а я бы сказал, и полезное) времяпрепровождение тебе обеспечено.

DVD

На нашем DVD ты найдешь все программы, которые были использованы в процессе работы, дистрибутив Roo HoneyWall и схемы в высоком разрешении.

Содержание