Библиотека сайта rus-linux.net
Как обнаружить ботнет
Оригинал: Detecting Botnets
Автор: Grzegorz Landecki
Дата: 1 января 2009
Перевод: Александр Тарасов aka oioki
Дата перевода: 29 августа 2009
Все мы слышали новости о ботнетах (справка с википедии: Ботнет (англ. botnet) - это компьютерная сеть, состоящая из некоторого количества хостов, с запущенными ботами - автономным программным обеспечением. Чаще всего бот в составе ботнета является программой, скрытно устанавливаемой на компьютере жертвы и позволяющей злоумышленнику выполнять некие действия с использованием ресурсов заражённого компьютера. Обычно используются для нелегальной или неодобряемой деятельности -рассылки спама, перебора паролей на удалённой системе, атак на отказ в обслуживании). Более того, выявлены профессиональные средства их управления. Однако у большинства инженеров нет возможности повзаимодействовать с ними или хотя бы исследовать.
Число ботнетов и компьютеров-зомби увеличивается огромными темпами. Организация ShadowServer Foundation, которая продолжает собирать статистику этой тенденции, приводит следующие данные по активности ботнетов за последние два года (см. рисунок 1).
Рисунок 1. Число известных ботнетов за последние два года
Вопросы, которые нас интересуют, достаточно просты. Можно ли утверждать, что в нашей сети нет компьютеров-зомби? Достаточна ли защита, предоставляемая патчами, антивирусами, анти-руткитами и антиспамом? Может быть, нужно что-то еще? Можно ли доверять одному ведущему поставщику безопасности? Может быть, следует воспользоваться услугами двух? Нужно ли задействовать какие-либо другие способы обеспечения безопасности?
К сожалению, на эти вопросы нет простых ответов. В марте 2008 года компания Damballa, занимающаяся информационной безопасностью, известила мир о существовании нового ботнета под названием Kraken. Он распределен по всему миру и гораздо более ресурсоемок, чем предыдущий Storm. По заявлению Damballa ботнет содержит около 400,000 зараженных компьютеров (жертв) - некоторые из них из числа компьютеров списка компаний Fortune 500. Это очень интересный пример, ведь многие поставщики средств безопасности (в основном, антивирусов) быстро отреагировали на эти заявления тем, что защита на местах работает, и угроза была в прошлом и нет смысла расстраиваться. Была ли это настоящая угроза, и откуда Damballa взяла эти цифры?
Расскажу вкратце. Damballa обнаружила (возможно, во время аудита безопасноти) новое вредоносное ПО (malware) с жестко закодированными адресами (URL) центров управления (control center, CC - компьютеры, откуда посылаются задания для зараженных компьютеров и куда в итоге идет отчетность о проделанных действиях). Также Damballa обнаружила, что эти жесткие адреса не зафиксированы в DNS (возможно, ботнет в это время еще тестировался, и авторы лишь готовили его к последующему запуску). Они взяли и зарегистрировали эти DNS-имена на себя и таким образом получили контроль над достаточно большим ботнетом, который можно было бы исследовать. Таким образом специалисты Damballa смогли определить IP-адреса компьютеров-зомби, посылающих отчеты о проделанной работе - было обнаружено огромное число компьютеров в больших корпоративных сетях. Теперь Damballa могла играть с ботами и исследовать их потенциальные вредоносные возможности.
Такое поведение специалистов из Damballa вызвало бурные обсуждения. Компания не связалась ни с одной компанией по безопасности, чтобы обсудить обнаруженные методы заражения компьютеров. Она не опубликовала никаких сведений об эксплойтах, и не предупредила поставщиков безопасности. Ребята из Damballa хотели забрать все себе.
Как специалист по информационной безопасности, я понимаю, что возможность исследовать подобный ботнет действительно завлекает, но отнюдь не поддерживаю Damballa в их решениях. Иметь армию зомби под контролем подобной организации намного лучше, чем позволять им гулять в "диком" виде. С другой стороны, Damballa позволила вредоносному ПО распространиться просто с той целью, чтобы провести исследование.
Однако это не самое главное. Главное, что компания Damballa показала существование необнаруженных ботнетов, состоящие из компьютеров в высокозащищенных средах, даже в компаниях, существенно заботящихся о своей информационной безопасности.
Так что даже если большие корпорации, обеспокоенные своей безопасностью, подвержены риску стать частью ботнета, что же можно говорить о других? Очевидно, одних лишь антивируса и средства защиты от вредоносного ПО недостаточно. Но что же делать? И как защитить свою IT-инфраструктуру от необнаруживаемого вредоносного ПО?
Одно из решений называется Darknet ("темная сеть").
Идея Darknet не нова. Она родилась из "медовых горшков" (honeypot) - решение, до сих пор оставшееся недооцененным, хотя его на самом деле легко реализовать. Термин Darknet обозначает закрытую или публичную часть сети, в которой нет никаких серверов/служб. На самом деле, в этой сети есть как минимум один тихий хост, отлавливающий и проверяющий все пакеты. Назовем его "тихий медовый горшок" (silent honeypot). Идея проста. Мы не ожидаем никакого трафика в этой сети, поэтому любой пакет, пришедший сюда, не является разрешенным и его нужно анализировать.
Рисунок 2. Darknet сидит тихо и ждет
Как показано на рисунке 2, сеть разделяется на две части с сетевой маской /26. Часть Darknet состоит из тихих "ловцов трафика" или систем обнаружения вторжений (Network Intrusion Detection Systems, NIDS).
Существует множество сложных коммерческих систем обнаружения вторжений, но если не хотите платить кучу денег, можно воспользоваться одним из открытых и свободных решений, таким как Snort, Argus или полнофункциональным решением Darknet от Team Cymru (см. источники информации в конце статьи). Эти средства позволят вам получить полный анализ пакетов, относящихся к новым и еще неизвестным эксплойтам.
На рисунке 3 с веб-сайта Team Cymru показано, как Darknet обнаруживает червя спустя несколько минут после его запуска.
Рисунок 3. Обратите внимание на необычный пик трафика
В этом примере Darknet обладает публичным адресным пространством, таким образом, будет отлавливаться весь входящий трафик. Мы будем обладать знанием того, какие существуют угрозы из внешнего мира, какие шаблоны трафика имеют место быть, и таким образом предугадывать будущие неизвестные эксплойты. Однако как мы можем обнаружить ботнеты внутри нашей сети? Чтобы ответить на этот вопрос, нужно взглянуть подробнее на поведение вредоносного ПО.
В настоящее время около 90% вредоносного ПО ведет себя обычным и примерно одинаковым способом. С точки зрения сетевого трафика, можно сказать, что типичное вредоносное ПО обладает следующими отличительными особенностями:
- Должна обеспечиваться выживаемость. Это относится не совсем к сети. Вредоносное ПО постарается прописать себя в папку Автозагрузка, в стартовые скрипты или в реестр Windows.
- Активные попытки самокопирования и распространения (заражение других соседних компьютеров). Способы различны - рассылка почтовых сообщений по адресам из адресной книги (почтовый канал); создание файлов в общих папках Windows, на сетевых дисках и в P2P-ресурсах (назовем это P2P-каналом); либо прямое заражение - путем применения 0-day эксплойтов на непропатченные системы.
- Будут попытки связаться с управляющим центром (CC) с целью скачать другое вредоносное ПО, либо получить инструкции - обычно с веб-сайтов (веб-канал) или Internet Relay Chat (IRC-канал). Зачастую эти CC расположены на компьютерах с динамическим IP-адресом (используется динамический DNS) либо расположены в странах, известных дурной славой распространителей вредоносного ПО (Китай, Россия и т.д.), либо в подозрительных сетях (к примеру, известный Russian Business Network).
- Будут попытки вредоносных действий - обычно рассылка спама (почтовый канал), утечка данных/шпионаж/хищение аутентификационных данных/фишинг, DDOS, зачастую через веб-канал.
Как мы можем видеть, вредоносное ПО зачастую использует самые популярные каналы распространения и управления - в основном, веб, почта, P2P и IRC-каналы.
Обладая этой информацией, мы можем создать Darknet внутри нашей сети и поместить туда ловцов трафика или систему обнаружения вторжений для сбора подозрительных данных.
Рисунок 4. Подозрительные пакеты не просто отбрасываются, а еще и исследуются
Метод, изображенный на рисунке 4, можно объяснить одной фразой: "Весь исходящий трафик, который не разрешен (нарушает политику компании) или подозрителен, будет отправлен на анализ".
Остается одна проблема. Как определить, какой трафик можно считать подозрительным или нежелательным? Универсальным решением будет перенаправлять все пакеты с установленным evil-битом (RFC 3514). К сожалению, реализовать это достаточно сложно.
Рассмотрим пример. У нас есть компания с внутренним почтовым сервером и сервером имен (DNS/WINS). Мы можем перенаправлять весь исходящий трафик (если источник - не эти два сервера) на порты TCP 25 (SMTP), TCP/UDP 53 (DNS), TCP 6667-6669 (IRC) и всех известных P2P-клиентов (например, сети Limeware) на машины сети Darknet для дальнейшего анализа. Так как компьютеры внутренней сети не отправляют почту напрямую на другие сервера и не подсоединяются к IRC, мы можем попросту блокировать эти каналы и таким образом пресекать распространение вредоносного ПО. Если по своей природе деятельность компании направлена на близлежайшую местность или страну, мы можем перенаправлять все WWW-запросы (на порт TCP 80) к подозрительным доменам (таким как .cn или .ru), динамические DNS-имена и т.п.
Для решения этой задачи, мы установим базовые правила iptables в файрволле Linux, как в этом примере (мы перенаправляем все запросы с внутреннего интерфейса eth0 к порту TCP 6669 IRC на внутренний хост 1.1.1.1):
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 6669 -j DNAT --to 1.1.1.1:6669 iptables -A FORWARD -p tcp -i eth0 -d 1.1.1.1 --dport 6669 -j ACCEPT
Нам необходимо будет настроить внутренний сервер 1.1.1.1, чтобы он отлавливал весь трафик. Есть два способа сделать это: мы можем фиксировать все пакеты, пришедшие на сервер; либо установить определенные сервисы (WWW, IRC, SMTP, POP3, DNS) и затем следить за соединениями к ним и их целостностью.
Давайте подробнее рассмотрим способ с машиной, фиксирующей все пакеты. Более сложные решения (такие, как решения от антивирусных компаний) обычно включают несколько машин (зачастую как образы VMware) с различными операционными системами, открытыми общими ресурсами, веб-серверами, P2P-клиентами, почтовыми агентами, клиентами мгновенных сообщений и т.п.
После атаки/заражения, изменения в системе будут сравнены с входным состоянием (снимком VMware), и на основании этих изменений будет проводиться анализ вредоносного поведения и восстановление состояния.
Подобные лаборатории могут быть очень сложными, но для получения базовой функциональности (мониторинг трафика и предупреждения об угрозах) достаточно лишь одного компьютера с вашим любимым дистрибутивом Linux.
Мониторинг трафика
Одно из средств прослушивания трафика и сбора статистики называется ntop. Его можно скачать с сайта www.ntop.org, либо установить пакет с помощью пакетного менеджера. Для популярных дистрибутивов Linux, таких как Red Hat, Debian/Ubuntu и SUSE уже есть скомпилированные пакеты. Перед тем, как использовать ntop, нужно установить пароль администратора, введя следующую команду:
sudo ntop --set-admin-password
Программа запускается так:
sudo /etc/init.d/ntop start
Теперь можно открыть локальный адрес http://127.0.0.1:3000 и просмотреть статистику. Ntop - это мощнейшее средство, предоставляющее большой объем информации. Можно проводить сортировку по пакетам, портам, адресам хостов и т.п. Графики использования сети полезны при определении количества трафика, проходящего в вашу систему.
Запомните, ни один пакет не считается допустимым в Darknet. Таким образом, это средство способно собрать статистику по тем хостам/сетям, которые генерируют недопустимый трафик.
Рисунок 5. Ntop классифицирует трафик и помогает определить источник недопустимого трафика
На рисунке 5 показан графический интерфейс ntop и его способность определять операционную систему, фирму-производителя и другие подробности о машинах сети.
Рисунок 6. Ntop содержит большой набор графических средств представления статистики
Рисунок 6 демонстрирует стандартные графические возможности ntop. Графики строятся с помощью средства RRDTool.
Предупреждения об угрозах
Чтобы получать предупреждения о том, какие эксплойты существуют в вашей сети, нужно установить систему обнаружения вторжений (Intrusion Detection System, IDS). Лучшим свободным решением на данный момент является Snort. Систему можно скачать с сайта www.snort.org, во многих дистрибутивах система доступна как бинарный пакет.
Единственное, что нужно изменить в файле конфигурации /etc/snort/snort.conf - это переменная $HOME_NETWORK. Она должна содержать ваш IP-адрес и маску подсети. Snort - это система обнаружения вторжений, основанная на базе данных шаблонов.
Если трафик попадает под шаблон, предупреждение будет записано в журнал (по умолчанию, в файл /var/log/snort), а пакеты будут зафиксированы для последующего анализа (можно ответить на них с помощью команды tcpdump -r, либо исследовать их содержимое с помощью утилиты Wireshark).
Мощные и простые правила позволяют вам писать свои собственные сигнатуры, либо редактировать уже существующие. Так вы сможете записывать трафик, подходящий вашим критериям. В дополнение к этому можно установить средства поддержки Snort, к примеру IDScenter (см. источники информации).
Рисунок 7. Графический интерфейс honeypot отображает зафиксированные инциденты.
Существует проект Honeynet, основанный на технологиях Snort и Sebek. Это урезанная Linux-система, основанная на Fedora и содержащая собственные графические средства управления инцидентами (см. рисунок 7).
Желающие узнать больше в этой теме, могут обратиться к проекту HIHAT (Highly Interactive Honeypot Analyses Toolkit), преобразующий популярные PHP-приложения, такие как PHPNuke или osCommerce в полнофункциональные средства журналирования, создания отчетов и предупреждений.
Здесь можно с легкостью обнаруживать команды и SQL-инъекции, XSS (cross-site scripting) и отображать обнаруженные IP-адреса в географические координаты, как показано на рисунке 8.
Рисунок 8. Отображая IP-адреса на карте, можно узнать, откуда идет атака.
Результаты
Эта простая конфигурация, состоящая из одного сервера во внутренней сети Darknet, позволяет нам обнаруживать и получать предупреждения о следующих событиях:
- Активно распространяющееся вредоносное ПО.
- Тайные каналы и возможные утечки данных.
- Подозрительная активность (умышленная или нет), к примеру нарушение политики компании и разведка в сети (к примеру, сканирование портов).
- Предоставляет журнал аудита и записывает показания для дальнейших исследований.
- Предоставляет общую статистику использования сети.
Не всякий трафик подозрителен
Вы сами решили блокировать исходящий IRC-трафик, но это может быть неочевидно для других работников вашей компании. Когда Маша из соседнего отдела попытается в обед подключиться к своему любимому IRC-каналу, вы наверняка поймаете ее, но это вовсе не будет означать, что на машиной машине бот пытается соединиться с управляющим центром. Однако множество одинаковых соединений с одного или нескольких компьютеров зачастую ясно говорит о том, что что-то идет не так.
В моей повседневной работе я наблюдаю странные вещи. Люди постоянно пытаются установить запрещенные программы, зачастую даже не догадываясь об этом - к примеру, ребенок сотрудника устанавливает Limewire на ноутбук компании, который ему дали поиграть или погулять в интернете.
Спустя определенное время вы накопите большой объем статистики и сможете отличить настоящую угрозу от просто неправильного использования компьютеров и других изолированных инцидентов.
Обеспечение безопасности информационных систем - это очень сложная задача. Сегодня мы ведем постоянную войну против агрессоров - это война за время и деньги. Время играет решающую роль в защите всех сетей, окруженных угрозами. Однако прежде всего, нужно знать о них. Когда вы знаете своего врага, его намерения и его вооружение, среагировать и смягчить удар будет проще. Вот для чего придуманы Darknet и honeypot'ы.
Источники информации
ShadowServer Foundation: www.shadowserver.org
Damballa: www.damballa.com
Snort IDS: www.snort.org
Argus: www.qosient.com/argus/flow.htm
Team Cymru Project: www.team-cymru.org/Services/darknets.html
Setting an Evil Bit RFC3514: rfc.net/rfc3514.html
Snort IDS: www.engagesecurity.com/products/idscenter
Honeywall Project: https://projects.honeynet.org/honeywall
HIHAT Project: hihat.sourceforge.net
CAIDA Network Telescope Research: www.caida.org/research/security/telescope
University of Michigan - The Internet Motion Sensor: A Distributed Blackhole Monitoring System: www.isoc.org/isoc/conferences/ndss/05/proceedings/papers/ims-ndss05.pdf
Tracking Global Threats with the Internet Motion Sensor: www.nanog.org/mtg-0410/pdf/bailey.pdf
Commercial Example of the Darknet Implementation: https://tms.symantec.com/Default.aspx
The Honeynet Project: www.honeynet.org
Гржегорж Ландецки (Grzegorz Landecki), CCNP, CISSP - специалист по безопасности в Cyber Security Team в Дублине. Он ответственнен за защиту 85 тысяч компьютеров серьезных американских компаний.