Honeypots являются новой интересной технологией. Они позволяют нам брать инициативу в свои руки и изучать работу хакеров. В последние несколько лет растет интерес к этой технологии. Цель этой статьи – рассказать вам про honeypots и продемонстрировать их возможности. Мы начнем с обсуждения, что такое honeypots и как они работают, затем перейдем к OpenSource решению Honeyd.
Михаил Разумов, по материалам SecurityFocus
Honeypots являются новой интересной технологией. Они позволяют нам брать инициативу в свои руки и изучать работу хакеров. В последние несколько лет растет интерес к этой технологии. Цель этой статьи – рассказать вам про honeypots и продемонстрировать их возможности. Мы начнем с обсуждения, что такое honeypots и как они работают, затем перейдем к OpenSource решению Honeyd.
На этот вопрос гораздо сложнее ответить, чем кажется. Множество людей имеют свое определение, что такое honeypot, и что он должен делать. Некоторые считают его средством для соблазнения и обмана взломщиков, другие полагают, что это технология для обнаружения атак, в то время как третьи думают, что honeypots – это реальные компьютеры, созданные для взлома и последующего изучения. На самом деле, все эти определения верны.
Honeypot – это средство безопасности, значение которого состоит в подверженности его сканированиям, атакам и взломам. Ключевым моментом в этом определении является то, что honeypots не ограничиваются решением только одной проблемы, а имеют несколько различных областей применения. Чтобы лучше понять ценность honeypots, мы можем подразделить их на две различные категории: производственные и исследовательские. Производственные honeypots используются для защиты вашей сети, они напрямую помогают обеспечить безопасность вашей организации. Исследовательские honeypots различны; они используются для сбора информации. Эта информация затем может быть использована для различных целей, таких как раннее предупреждение и предсказание, накопление информации, и обеспечение правопорядка.
Ни одно из решений не превосходит другое, все зависит от того, чего вы хотите достичь. В этой статье мы сконцентрируем внимание на производственных honeypots. Чтобы узнать больше об исследовательских honeypots, вы можете начать со статьи Know Your Enemy: Honeynets проекта Honeynet.
Чтобы лучше понять ценность производственных honeypots, мы будем использовать модель безопасности Bruce Schneier'а, а именно три уровня предотвращения, обнаружения и ответа. Honeypots могут применяться ко всем трем уровням. Для предотвращения honeypots могут использоваться при замедлении или остановке автоматизированных атак. Например, honeypot LaBrea Tarpit используется для замедления автоматизированных TCP атак, например червей. Против взломщиков-людей,для предотвращения атак, honeypots могут использовать психологическое оружие, такое как обман и устрашение (например, Fred Cohen's site).
Honeypots также могут быть использованы для обнаружения неавторизованной активности. Традиционные решения обнаружения могут завалить организацию сигналами тревоги, в то время как всего несколько из этих сигналов относятся к реальным атакам. Также, многие из сегодняшних технологий не способны обнаруживать незнакомые атаки. Honeypots помогают решить обе эти проблемы. Они создают очень мало сигналов тревоги, но если создают, то вы можете быть почти уверены, что произошло что-то злонамеренное. Также honeypots могут обнаруживать и перехватывать как известные, так и неизвестные атаки.
И наконец, производственные honeypots могут использоваться для ответа на атаку. Если взломщик взломал сеть вашей организации и одна из систем, которую он взломал, оказалась honeypot, информация, собранная с этой системы, может использоваться для ответа на атаку. Honeypots могут также использоваться для разоблачения и идентификации нападавшего после того, как он однажды побывал в вашей организации. Для более всестороннего изучения honeypots вы можете прочитать книгу Honeypots: Tracking Hackers.
Теперь, когда вы имеете лучшее представление о технологиях honeypot, давайте создадим один из них. Мы собираемся использовать OpenSource решение Honeyd, которое разработано и поддерживается Niels Provos. Honeyd разработан для использования в Unix’овых операционных системах, таких как OpenBSD или Linux; однако вскоре будет адаптирован и к Windows. Поскольку это решение OpenSource, оно не только бесплатно, но мы также имеем полный доступ к исходному коду, находящемуся под лицензией BSD.
Первичной целью Honeyd является обнаружение, особенно обнаружение неавторизованной деятельности внутри вашей организации. Любая попытка подсоединения к неиспользуемому IP адресу считается неавторизованной или злонамеренной активностью. В конце концов, если не существует системы, использующей этот IP, почему кто-то или что-то пытается подсоединиться к нему? Например, если у вас сеть класса С, навряд ли используются все из 254 IP адресов. Любая попытка подсоединения к одному из неиспользуемых IP адресов наверняка является проверкой, сканированием, или червем, просачивающимся в вашу сеть.
Honeyd может наблюдать за всеми неиспользуемыми IP адресами одновременно. Когда происходит попытка подключения к одному из них, Honeyd автоматически определяет принадлежность неиспользуемого IP адреса, и начинает исследовать взломщика. Этот подход к обнаружению имеет множество преимуществ по сравнению с традиционными методами. Всякий раз, когда Honeyd выдает сигнал тревоги, вы знаете, что это наверняка реальная атака, а не ложный сигнал. Вместо того, чтобы засыпать вас десятками тысяч сигналов в день, Honeyd может выдавать всего 5-10. Более того, поскольку Honeyd не основан на каких-либо продвинутых алгоритмах, его легко устанавливать и обслуживать. И наконец, он обнаруживает не только известные атаки, но также неизвестные. Все, что проходит через него, будет обнаружено, не только последняя IIS атака, но и новая RPC атака, о которой еще никто не знал.
По умолчанию, Honeyd может обнаружить (и запротоколировать) любую активность на любом UDP или TCP порту, а также ICMP активность. Вам не нужно создавать сервис или прослушивать порт, к которому вы хотите контролировать подключения, Honeyd делает это все за вас. Однако, работая с Honeyd, Вы имеете дополнительную возможность не только обнаруживать атаки, но и создавать эмуляции сервисов, которые взаимодействуют с хакером заранее определенным образом. Например, вы можете создать FTP скрипт, который будет эмулировать wu-ftpd демон под Linux, или Telnet соединение к маршрутизатору Cisco. Эти эмулированные сервисы ограничены тем, что они имеют заранее определенное поведение. Такой скрипт может быть написан почти на любом языке, таком как Perl, Shell, или Expect. В момент написания этой статьи, Honeyd имел семь эмулированных сервисов, из которых вы можете выбирать. Поскольку Honeyd является открытым кодом, вы можете создавать и предоставлять свои собственные сервисы. Ниже находится пример сервиса, эмулирующего маршрутизатор Cisco. В этом случае, когда хакер подключается к Honeyd honeypot, он решит, что подключился к маршрутизатору Cisco.
attacker $telnet 192.168.1.150 Trying 192.168.1.150... Users (authorized or unauthorized) have no explicit or implicit expectation of privacy. Any or all uses of this system may be intercepted, monitored, recorded, copied, audited, inspected, and disclosed to authorized site, and law enforcement personnel, as well as to authorized officials of other agencies, both domestic and foreign. By using this system, the user consents to such interception, monitoring, recording, copying, auditing, inspection, and disclosure at the discretion of authorized site. Unauthorized or improper use of this system may result in administrative disciplinary action and civil and criminal penalties. By continuing to use this system you indicate your awareness of and consent to these terms and conditions of use. LOG OFF IMMEDIATELY if you do not agree to the conditions stated in this warning. User Access Verification Username: cisco Password: % Access denied
Эта атака должна быть обнаружена и запротоколирована. Honeyd протоколирует как попытки подсоединения, так и закрытие соединения. Скрипт также эмулирует работу сервиса.
Jan 3 11:23:32 marge honeyd[22885]: Connection request: (192.168.1.10:2783 - 192.168.1.150:23) Jan 3 11:23:32 marge honeyd[22885]: Connection established:(192.168.1.10:2783 - 192.168.1.150:23) <-> /usr/bin/perl scripts/router-telnet.pl Jan 3 11:23:42 marge honeyd[22885]: E(192.168.1.10:2783 - 192.168.1.150:23): Attempted login: cisco/cisco Jan 3 11:23:47 marge honeyd[22885]: Connection dropped with reset: (192.168.1.10:2783 - 192.168.1.150:23)Honeyd также предоставляет другую замечательную возможность honeypot: эмулирование операционной системы на уровне ядра. Мы только что обсудили, как Honeyd может эмулировать различные операционные системы с использованием различных скриптов для различных сервисов. Эта возможность не уникальна, множество других honeypots также используют ее. Однако, Honeyd может также эмулировать операционные системы на уровне ядра. Взломщики часто удаленно определяют операционные системы по характерным отпечаткам (fingerprints) с использованием таких утилит, как Nmap или Xprobe. Honeyd использует ту же базу отпечатков, что и Nmap, для подделки ответов любой операционной системы, которую вы хотите эмулировать. В случае маршрутизатора Cisco, если взломщик использует опцию –o Nmap для проверки IP адреса, он получит результат, соответствующий маршрутизатору Cisco. Это помогает повысить реализм honeypot.
Чтобы установить Honeyd, нам нужно скомпилировать и использовать две утилиты: Arpd и Honeyd. Honeyd не может все делать сам и требует помощи Arpd. Arpd используется для ARP спуфинга; он наблюдает неиспользуемое IP пространство и направляет атаки к Honeyd honeypot. Honeyd не имеет возможности направлять атаки к себе, он может только взаимодействовать с хакерами. Команды для их запуска представлены ниже. Сети в этих командах задаются те, которые должен мониторить Arpd и обрабатывать Honeyd. В нашем примере, мы хотим, чтобы honeypot контролировал неиспользуемое IP пространство в подсети 192.168.1.0/24.
arpd 192.168.1.0/24 honeyd -p nmap.prints -f honeyd.conf 192.168.1.0/24
Таким образом, основываясь на вышеуказанной команде, Arpd будет наблюдать за всем неиспользуемым IP пространством в подсети 192.168.1.0/24. Если он увидит пакеты, направленные к несуществующим IP адресам, он перенаправит эти пакеты к honeypot, используя Arp спуфинг второго уровня (layer 2). Он подделывает IP адрес жертвы под MAC адрес Honeypot. Поскольку этот спуфинг второго уровня, он также работает в среде switches. В команде запуска Honeyd, -p nmap.prints означает использование базы данных отпечатков операционных систем Nmap. Файл nmap.prints входит в пакет Hoheyd, но вы можете захотеть скачать свежую версию базы данных непосредственно с Nmap. Вторая опция для запуска Honeyd -f honeyd.conf – это конфигурационный файл honeypot. Он определяет поведение вашего honeypot. Ниже приведен пример.
## Honeyd configuration file ## ### Windows computers (default) 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 router 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 # Bind specific templates to specific IP address # If not bound, default to Windows template bind 192.168.1.150 router
Начинается он с создания различных типов компьютеров, которые вы хотите эмулировать, то что в Honeyd называется шаблонами. Эти шаблоны определяют поведение каждой эмулированной операционной системы. В этом конфигурационном файле мы создали два различных эмулированных компьютера: default и router. Первое, что необходимо сделать в каждом шаблоне, это задать "personality"; это то, что операционная система будет эмулировать на уровне IP стека. Описание типа ОС берется из базы данных отпечатков Nmap. В шаблоне default, мы присвоили personality "Windows NT 4.0 Server SP5-SP6", а в шаблоне router мы имеем personality "Cisco 4500-M running IOS 11.3(6) IP Plus". Обратите внимание, что personality не влияет на поведение эмулированного сервиса, а только на IP стек. Для эмулирования сервисов, вам необходимо выбрать различные скрипты, в зависимости от того, какой тип ОС вы хотите эмулировать. Другими словами, если ваш personality – Windows, не используйте скрипт Apache на порте HTTP. Вместо этого установите лучше на порт HTTP скрипт IIS.
Следующим шагом необходимо задать поведение каждого порта. Вы можете либо задать специфическое поведения для каждого порта, либо задать общее поведение. Например, в шаблоне default, мы задали всем TCP портам поведение reset, таким образом они будут на все попытки подсоединения отвечать RST (порты UDP, ICMP недостижимы). Другие опции – open (будет посылать в ответ ACK, или ничего для UDP) или block (не будет отвечать на TCP и UDP запросы). Четвертой опцией является использование скриптов для эмуляции сервисов. В случае шаблона default, мы привязали скрипты к портам 21, 80 и 110. Эти скрипты запускаются и взаимодействуют с хакером. У вас также есть возможность перенаправить попытки подсоединения к другой системе, или даже ко взломщику. В шаблоне default, мы перенаправляем все SSH подсоединения назад к хакеру. Существует также множество других продвинутых возможностей Honeyd, таких как создание виртуальной маршрутизируемой сети и поддельных временных отметок, но детальное объяснение находится за рамками этой статьи.
После того, как вы создали свои шаблоны, вам необходимо решить, какие IP адреса к какому шаблону привязаны. Используя команду bind, как мы делали в шаблоне router, вы можете привязать шаблон к определенному IP адресу. В этом случае, если кто-либо попытается подсоединиться к IP адресу 192.168.1.150, они будут взаимодействовать с Honeyd honeypot, с использованием шаблона router. Шаблон по умолчанию (default) является ключевым для Honeyd. Он обрабатывает все остальные подсоединения к неиспользуемому IP пространству. То есть, если хакер осуществит любое подсоединение к любому неиспользуемому IP адресу в подсети 192.168.1.0/24, он получит Windows компьютер, эмулированный Honeyd, за исключением IP 192.168.1.150, на котором он получит маршрутизатор Cisco.
Перед запуском Honeyd, ее автор (Niels Provos) рекомендует запустить на вашем honeypot Snort для сбора дополнительной информации. Преимущество использования Snort состоит в том, что он не только предоставляет больше информации об атаках, используя свои IDS предупреждения, но и может перехватывать любой пакет с данными, идущий к или от honeypot. Эта информация может быть важной при анализе атак, особенно неизвестных.
Как правило, перехват всей сетевой активности и всех данных пакетов требует много системных ресурсов. Однако учтите, что honeypot имеет очень низкий трафик, и этот трафик в большинстве случаев является злонамеренной или неавторизованной активностью. Чтобы облегчить пользователям работу с Honeyd, был создан пре-компилированный Linux Honeyd Toolkit. Этот набор утилит включает статически скомпилированные Arpd и Honeyd бинарники для Linux, со всеми требуемыми конфигурационными файлами и скриптами, обсужденными в этой статье. Цель этого в том, чтобы вы могли закачать это на свой Linux компьютер и немедленно начать работать с Honeyd.
Целью этой статьи было кратко рассказать вам о honeypots и их значении. Далее мы в деталях обсудили, как работает один из honeypot, Honeyd, и как вы можете установить его. Более подробно о Honeyd и honeypots вообще, вы можете узнать на сайте автора http://www.tracking-hackers.com/.
Собираем и анализируем опыт профессионалов ИБ