Развертывание honeypot, технологии использующейся для скрытного отслеживания хакеров, это очень сложная задача. Ценность honeypot в его способности оставаться необнаруженным. В первой части этой статьи мы описали некоторые проблемы, связанные со снятием отпечатков (fingerprinting) honeypots, а также привели несколько примеров, таких как tarpits и виртуальные машины. Теперь мы продолжим описание с большим количеством практических примеров обнаружения honeypots, таких как honeypots базирующихся на Sebek, snort_inlne, Fake AP, и Bait and Switch honeypots.
Развертывание honeypot, технологии использующейся для скрытного отслеживания хакеров, это очень сложная задача. Ценность honeypot в его способности оставаться необнаруженным. В первой части этой статьи мы описали некоторые проблемы, связанные со снятием отпечатков (fingerprinting) honeypots, а также привели несколько примеров, таких как tarpits и виртуальные машины. Теперь мы продолжим описание с большим количеством практических примеров обнаружения honeypots, таких как honeypots базирующихся на Sebek, snort_inlne, Fake AP, и Bait and Switch honeypots.
Если вы еще не читали первую часть этой серии статей, пожалуйста, ознакомьтесь с ней, перед тем как продолжить чтение.Sebek [ссылка 0] это клиент/сервер приложение, и одна из основных утилит перехвата данных, используемая администраторами honeypot для перехвата всей активности атакующего, обнаруженного внутри honeypot. Это rootkit на основе ядра, перехватывающий системный вызов read() и поэтому имеющий возможность записывать всю информацию, к которой осуществляется доступ через read(). Sebek живет полностью в пространстве ядра и имеет доступ ко всем считываемым данным, что дает доступ к большинству незашифрованных каналов связи. Например, он может вести логи SSH сессий, восстанавливать файлы, скопированные с помощью SCP, и записывать все пароли, используемые злоумышленником. Сохраненные данные тайно отсылаются по протоколу UDP на сервер Sebek, являющийся частью архитектуры клиент/сервер Sebek. Возможность передачи данных осуществлена путем изменения кода ядра для сокрытия уходящих пакетов, так чтобы их не мог видеть злоумышленник. Кроме этого, все сетевые счетчики и структуры данных адаптированы для того, что сделать обнаружение этих изменений наиболее трудным. Более подробная информация о Sebek и его архитектуре может быть найдена на сайте Honeynet [ссылка 1].
Однако Sebek можно обнаружить, используя возможности сетевого уровня. Так как Sebek сохраняет все, к чему происходит обращение через read(), и затем отсылает эти данные по сети, некоторая нагрузка на канал будет заметна при чтении больших объемов данных. Если мы прочитаем один байт с помощью read(), Sebek должен будет передать почти 100 байт данных, включая все сетевые заголовки, по сети к хосту, на котором сохраняются логи. Таким образом, если мы сделаем вызов read() несколько десятков тысяч раз в секунду, это приведет к перегрузке сети и, в конце концов, к потере пакетов.Мы может сделать много вызовов read() с помощью команды dd:
user@honey:~ dd if=/dev/zero of=/dev/null bs=1А также мы можем идентифицировать перегруженную сеть с помощью команды ping, как показано ниже.
Сначала мы сделает ping локального IP адреса для получения краткой информации о текущей нагрузки сети. Затем запустим dd как фоновый процесс и снова выполним команду ping. Если Sebek установлен на хосте, это вызовет существенное увеличение времени прохождения пакетов туда и обратно. На практике, среднее время прохождения пакетов туда и обратно возрастало с 0.7 миллисекунд до более 4800 миллисекунд.
Есть также другие методы обнаружения и противодействия Sebek, с использованием других уровней OSI. Эти атаки и техники будут рассмотрены в другой статье.Пример такой техники это замена строки /bin/sh в шелкоде на /ben/sh. Другой пример - замена некоторых характерных образцов в сетевом трафике, чтобы сделать бесполезными соответствующие атаки, как это показано в следующем листинге, изменяющем x86-shellcode:
alert ip $HONEYNET any -> $EXTERNAL_NET any (msg:"SHELLCODE x86 stealth NOOP"; sid:651; content:"|EB 02 EB 02 EB 02|"; replace:"|24 00 99 DE 6C 3E|";)Эта разновидность системы предотвращения вторжений (IPS) используется в GenII (второе поколение) Honeynets [ссылка 4] для идентификации и блокирования известных атак. Snort_inline также нужен для препятствия возможности атакующего использовать honeypot для атаки на другие системы. Таким образом, Snort_inline также добавляет некоторую безопасность с юридической точки зрения.
Но блокирование или модификация исходящих пакетов дает атакующему очень простой способ обнаружения Snort_inline: если исходящие пакеты блокируются, это может показаться подозрительным для атакующего. Если исходящие пакеты модифицируются, это будет обнаружено подготовленным атакующим. Он пошлет пакеты со злонамеренным содержанием на другой хост, который он контролирует, и проверит, дойдут ли пакеты до цели в неизмененном виде (хотя некоторые небольшие изменение все же будут, например, уменьшится TTL). Если содержимое пакетов будет различаться, он, вероятно, что-нибудь заподозрит. Скрытность Snort_inline может быть повышена уменьшением количества правил, но это приведет к большему количеству необнаруженных атак. Нужно найти баланс между скрытностью и безопасностью.
Кроме того, GenII Linux Honeynets обычно используют возможности netfilter/iptables [ссылка 5] для создания ограничений на количество соединений. Это предотвращает использование скомпрометированного honeypot для организации DoS атак или массового сканирования, однако позволяет атакующему загружать такие утилиты или устанавливать автоматизированных ботов. В качестве примера можно привести конфигурацию по умолчанию скрипта rc.firewall, предоставляемого Honeynet Project, разрешающего 15 исходящих TCP-соединений и 50 исходящих ICMP пакетов в день.[...] ### Set the connection outbound limits for different protocols. SCALE="day" TCPRATE="15" UDPRATE="20" ICMPRATE="50" OTHERRATE="15" [...]Ограничение на количество соединений также создает проблемы со скрытностью honeypot: атакующий просто может попробовать создать много исходящих соединений с различными хостами или послать большое количество ICMP эхо запросов на различные компьютеры в сети. Если он заметит, что через некоторое время исходящие пакеты перестали доходить до адресата, то это будет явный признак чего-то необычного, вероятно honeypot. И снова нужно найти компромисс между скрытностью и безопасностью. Если вы разрешите больше исходящих пакетов, обнаружить honeypot станет сложнее, но у атакующего появится больше способов злоупотребления honeypot.
В текущей версии Fake AP не генерирует поддельный трафик на одной из моделируемых точек доступа и, следовательно, есть простой способ обнаружения присутствия Fake AP: эта утилита отсылает только фреймы, без какого-либо реального трафика. Поэтому атакующий может следить за сетевым трафиком и без проблем определять присутствие Fake AP.
Атакующий может обнаружить Bait and Switch Honeypot, анализируя определенные значения заголовка TCP/IP пакета, такие как время пути пакета туда и обратно (RTT), Время жизни пакета (TTL), временные метки TCP и другие. После события переключения, атакующий прекращает взаимодействовать с реальным компьютером, и начинает обмен данными с honeypot. Во время переключения с реальной системы на honeypot, может быть замечено внезапное изменение IPID. Предыдущие значения полей заголовка TCP/IP пакета также вероятно изменятся после переключения, что также может быть замечено подготовленным атакующим.
Повторюсь: tcpdump и другие подобные утилиты это ценные инструменты для атакующего, используемые для сбора информации о том, что происходит в системе. Кроме того, honeypot вероятно сильно отличается от реальной системы. Атакующий скорее всего будет пытаться найти способ идентифицировать honeypot, анализируя различия, которые могли бы быть, между реальной системой и honeypot. Имейте в виду, что некоторые атакующие будут использовать различные IP адреса в качестве источников атаки для противодействия различным типам IPS. Например, если атакующий использует щелкод, создающий соединение с IP адресом отличным от того, с которого шелкод был послан, IPS ничего не заметит. Принцип работы будет разным при каждом развертывании Bait and Switch Honeypot, поэтому администратор honeypot такого типа должен быть очень осторожным в процессе установки.В этой серии статей мы показали, как ведут себя атакующие в попытке идентификации honeypot и привели несколько технических примеров использования различных методов. Мы надеемся, что эта информация будет полезной специалистам по безопасности, которые хотят установить и использовать honeypot. Важно чтобы администратор honeypot настроил и приспособил его под свои потребности. Например, MAC адрес (в случае с Labrea или User-mode Linux) или сообщения об ошибках должны быть указаны применительно к своей системе. Чтобы быть на шаг впереди атакующего, создатели honeypot ПО должны постоянно обновлять свои программы для избежания обнаружения - "гонка вооружений" между белыми и черными шляпами началась.
Обратите внимание, что есть даже коммерческие утилиты, такие как Honeypot Hunter [ссылка 9], использующие anti-honeypot технологию. Honeypot Hunter проверяет списки HTTPS и SOCKS4/SOCKS5 прокси на наличие honeypot и используется спаммерами для обнаружения tarpits и других типов honeypots/прокси. Honeypot Hunter создает локальный поддельный почтовый сервер на 25 порту (SMTP) и подключается сам с собой через прокси. Honeypot детектируется, если прокси сообщает что, подключение установлено, но утилита не смогла соединиться с эмулируемым почтовым сервером. Таким достаточно простым способом обнаруживается большинство honeypots и неработающих прокси. Но этот метод можно легко обойти, если разрешить хотя бы небольшое количество соединений с honeypot/прокси. Такая простота программы показывает, что кибер-сражение между обнаружением и скрытием honeypot такого типа еще не началась, но в будущем вероятная "гонка вооружений" предвидится.Спойлер: она начинается с подписки на наш канал