Бот Zeus, пожалуй, один из самых известных представителей вредоносного программного обеспечения. Zeus ведет свою историю с 2007 (или даже 2006) года. Многие ошибочно полагают, что Zeus — просто очередной троян, однако это не так. В действительности, Zeus представляет собой образец так называемого crimeware — программного обеспечения, предназначенного для совершения противоправных действий.
В данном случае основное предназначение crimeware Zeus — кража учетных данных, используемых для проведения финансовых операций. По информации аналитиков, он отвечает за 90 % случаев банковского мошенничества в мире.
Другим заблуждением является утверждение о существовании одного огромного ботнета Zeus. На самом же деле Zeus лежит в основе очень большого числа – вероятно, нескольких сотен – различных ботнетов, и все они контролируются разными группировками киберпреступников. Создатели Zeus просто продают его заинтересованным лицам, а они уже с его помощью формируют собственные ботнеты. Таким образом, правильно говорить не о ботнете Zeus, а о ботнетах, созданных при помощи Zeus. Для отслеживания информации о командных серверах Zeus в феврале 2009 года Роман Хюсси (Roman Hussy), швейцарский специалист по компьютерной безопасности, создал сайт ZeusTracker.
Zeus, version 1
Разработчик ZeuS известен под никами Slavik и Monstr, именно он до 2010 года единолично производил сбыт и поддержку своего продукта.
Структурно Zeus состоит из нескольких частей — билдера (builder) бота и административной панели.
Основной модуль бота Zeus и билдер написан в среде Visual Studio на языке C и частично С++. Конечный исполняемый код бота Zeus создавался билдером и содержал в себе собственно основной модуль и файл конфигурации. Файл конфигурации содержит в себе адрес управляющего центра, пути к скриптам и другие данные, необходимые для работы. Билдер имеет аппаратную привязку к компьютеру покупателя, то есть мог запускаться только при наличии определенной конфигурации.
Исследователи отмечают, что в семействе ВПО Zeus не используются какие-либо техники сокрытия (rootkit) или использование эксплоитов для повышения своих привилегий в системе. Основной упор делался на стабильность функционирования, в том числе при работе с ограниченными пользовательскими правами.
Возможности Zeus первого поколения на примере версии 1.3.4.x, март 2010 года (источник):
- кража учетных данных, вводимых в браузере;
- кража учетных данных, хранимых в Windows Protected Storage;
- кража клиентских сертификатов X.509;
- кража учетных данных FTP и POP;
- кража и удаление HTTP и Flash cookies;
- модификация запрашиваемых HTML страниц для последующей кражи учетных данных (Web Injects);
- перенаправление запросов пользователя на другие сайты;
- создание снимков экрана;
- поиск и загрузка файлов на удаленный сервер;
- модифицирование файла hosts;
- загрузка и последующий запуск файла с удаленного сервера;
- удаление критически важных веток реестра для невозможности загрузки операционной системы.
Начиная с версии 1.4, появился функционал внедрения Web Injects в Firefox. Web Injects — набор HTML и JavaScript кода, обеспечивающий отображение форм ввода учетных данных систем ДБО (дистанционного банковского обслуживания), имитирующих настоящие. При попытке посещении сайта какой-либо системы ДБО через браузер, троян перехватывает запрос и отображает поддельную форму. Украденные таким образом учетные данные отправляются на командный центр злоумышленников. Для затруднения обнаружения антивирусным ПО, Zeus стал использовать полиморфное шифрование и механизм изменения размера своего файла. При этом файл Zeus на каждой зараженной системе шифровал себя заново с новыми параметрами, так что один и тот же билд на разных компьютерах выглядел совсем по-другому.
Расценки на компоненты версии Zeus 1.3.4.x:
- билдер и админпанель — от 3000$ до 4000$;
- модуль Back Connect (любой порт, позволяет например подключиться по RDP) — 1500$;
- модуль кражи учетных данных из браузера Firefox (form grabber) — 2000$;
- модуль уведомления и отправки украденной информации через Jabber — 500$;
- приватный (сделанный на заказ) модуль VNC (удаленного управления, аналог RDP) — 10000$;
- поддержка работы в ОС Windows Vista/Seven — 2000$.
Распространение ботов Zeus производилось различными способами. Например, осенью 2009 года он распространялся в спамерских сообщениях, рассылаемых от имени налоговой службы США. В другом случае в письме сообщалось о проведении всеобщей вакцинации от свиного гриппа H1N1. Ссылки в письмах вели на поддельные сайты, созданные злоумышленниками. На сайтах предлагалось скачать и запустить исполняемый файл формата exe, якобы содержащий определенные инструкции. На самом деле файл был ботом Zeus.
Для рассылки спама использовались «мощности» ботнета Cutwail (также известного как Pushdo и Oficla). Позднее тактика была изменена и в письмах стали присылаться ссылки на сайты, содержащего в себе iframe или jscript, ведущий на какой-либо эксплоит пак. Это позволяло производить заражение без каких-либо действий пользователя — ему достаточно было перейти по ссылке, и Zeus устанавливался автоматически, конечно, если браузер был подвержен уязвимости (не имел соответствующего обновления безопасности). В процессе написания писем широко использовались методы социальной инженерии.
Некоторые администраторские панели Zeus имели функцию проверки FTP аккаунтов «на лету» — как только присылалась новая порция украденных учетных данных, производилась проверка на наличие аккаунтов FTP и такие аккаунты сразу проверялись. Если в результате проверки выяснялось, что доступ есть, отдельный скрипт производил поиск файлов на удаленном FTP сервере с расширениями .htm, .html и .php (так как сервис FTP часто используется для заливки контента на сайт) и в эти файлы вставлялся iframe или jscript, ведущий на какой-либо эксплоит пак. Таким образом, происходило заражение сайтов в автоматическом режиме.
В апреле 2010 года Zeus получил дополнительный функционал внедрения своего дроппера в исполняемые файлы. 512 байт внедряемого кода производили следующие действия:
- загрузка удаленного файла, URL которого был задан внутри;
- запуск загруженного файла на исполнение;
- запуск оригинального кода зараженной программы.
Этот функционал чем-то напоминает вирусный. Однако если антивирус лечил зараженный файл, у вируса не было больше возможности запуститься. В данном же случае, сохранялся шанс, что антивирус удалит основной модуль Zeus и не тронет дроппер, что позволяет заразить компьютер повторно, возможно новой версией Zeus.
Конкурент
Приблизительно в декабре 2009 года на «черном рынке» появился конкурент Zeus — SpyEye, функционал и состав (билдер и админпанель) которого были очень схожи с Zeus, однако цена была ниже, для базовых модулей она составляла около 500$. В дальнейшем конкурентная борьба привела к появлению в SpyEye версии 1.0.7 от февраля 2010 года функции «Zeus Killer», предназначенной для удаления Zeus. Для завершения работы всех копий Zeus, SpyEye посылал команду через именованный канал, открываемый каждой копией Zeus для своих нужд.
SpyEye обнаруживал Zeus по специфическому имени мьютекса, который использовался Zeus для обнаружения своей копии и предотвращения повторного запуска. Кроме того, SpyEye мог перехватывать отчеты, отправляемые Zeus, и таким образом не делать двойную работу. Еще одна новинка — модуль, созданный для обхода системы безопасности Rapport компании Trusteer, направленной на блокирование возможности внедрения в браузер вредоносных программ, которая была создана, в том числе, для противодействия Zeus. Билдер SpyEye, как и билдер Zeus, содержал в себе систему лицензирования, основанную на привязке к заданной аппаратной конфигурации. Она реализовывалась при помощи навесной защиты VMProtect.
По информации с форума, в октябре 2010 года создатель Zeus Slavik передал исходные коды своему конкуренту — разработчику SpyEye, и прекратил дальнейшую разработку. Код был передан человеку с ником Harderman, известным также как Gribodemon. По словам Harderman, исходные коды он получил на безвозмездной основе и брал на себя обслуживание всех бывших клиентов Slavik, в дальнейшем предполагалось некое слияние исходных кодов Zeus и SpyEye. И действительно, с января 2011 года исследователи антивирусных компаний начали обнаруживать новые гибридные версии SpyEye, их нумерация началась с версии 1.3.
Расценки на компоненты версии SpyEye 1.3.45, август 2011:
- билдер и админпанель — 2000$;
- модуль Web Injects для браузера Firefox — 2000$;
- модуль обхода защиты Rapport — 500$;
- модуль прокси Socks5 — 1000$;
- модуль доступа по протоколу RDP — 3000$;
- модуль FTP Back Connect — 300$;
- модуль кражи сертификатов из браузера Mozilla Firefox — 300$;
- модуль кражи учетных данных кредитных карт — 200$;
- модуль кражи учетных данных из браузеров Opera & Chrome (form grabber) — 1000$.
Руководство пользователя к этой версии доступно в персональном блоге XyliBox.
Zeus, version 2.1
В тоже время исследователи из компании RSA обнаружили некоторые факты, позволяющие усомниться в словах Slavik о выходе из бизнеса. В августе 2010 года, то есть за два месяца до «официального» объявления о прекращении работы над Zeus, был обнаружен ботнет, созданный при помощи бота Zeus, имевшего версию 2.1.0.10. Расследование показало, что комплект указанной версии не продавался на «черном рынке». Последующие обнаружения бота такого типа уверили экспертов RSA в том, что данной модификацией владел один человек (или группа лиц) — в противовес прошлым инцидентам конфигурационный файл бота версии 2.1.0.10 не претерпевал значительных изменений в течение длительного времени (ранее каждый оператор какого-либо ботнета на базе Zeus использовал свой уникальный конфигурационный файл).
Ключевой особенностью Zeus 2.1.0.10 стало изменение схемы связи с управляющими серверами. Теперь адреса серверов не были жестко заданы в конфигурационном файле. Список адресов формировался с помощью DGA (Domain Generation Algorithm — алгоритм генерации доменных имен). Ранее подобная техника неоднократно применялась в таких образцах ВПО, как Bobax, Kraken, Sinowal (a.k.a. Torpig), Srizbi и Conficker. По сформированным адресам Zeus искал свои командные сервера. Для защиты от перехвата управления производилась проверка цифровой подписи загружаемого файла в ходе своего обновления (так же при помощи Windows Crypto API). Для этого в коде Zeus присутствовал открытый ключ RSA длинной 1024 бит.
Исследователи из RSA в 2011 году смогли получить доступ к одному из серверов Zeus версии 2.1.0.10. Ониобнаружили, что между августом 2010 и августом 2011, более 210 000 компьютеров связывались с этим сервером, на который было передано порядка 200 гигабайт данных с инфицированных компьютеров. Около 42% зараженных компьютеров находились в США. Удалось также выяснить, что один из логинов для авторизации доступа к этому командному серверу был «Slavik». Поэтому эксперты RSA предполагают, что Slavik на самом деле занялся созданием собственного ботнета (возможно не один).
Файловый инфектор
Идея заражения файлов получила свое развитие во вредоносной программе PE_LICAT (Murofet по классификации Kaspersky Lab), обнаруженной Trend Micro в октябре 2010 года. PE_LICAT представляет собой продвинутый дроппер Zeus, его основная функция — загрузка и запуск новых файлов Zeus с удаленных серверов. В исполняемые файлы внедряется 1771 байт вредоносного кода. PE_LICAT использует те же механизмы, что и в Zeus 2.1.0.10 — DGA с идентичным алгоритмом и процедуру проверки подписи загружаемого файла. Подробное описание DGA приведено в отчете Trend Micro «File-Patching ZBOT Variants» pdf, eng).
Вкратце — В DGA используется функция создания хэша из Windows Crypto API. Список доменов формировался при запуске по специальному алгоритму путем хэширования текущей даты и минуты (час не использовался). Кстати, во многих источниках ошибочно пишут то 800, то 1020 уникальных доменов (эти константы действительно используются в алгоритме). На самом деле их было всего 60 в день (минуты умножались на 17 и брался остаток от деления на 1020, 1020/17=60).
Хэши переводились в ASCII коды и к ним добавлялись префиксы доменов верхнего уровня .biz, .info, .org, .com, .net, а также строка /forum. Следует отметить, что PE_LICAT не является вирусом в прямом смысле этого слова (как его классифицирует Kaspersky Lab) — он не способен самостоятельно заражать файлы. Запуск процедуры заражения файлов инициирует Zeus из семейства 2.1, получивший название TSPY_ZBOT.BYZ в классификации Trend Micro.
Полный цикл распространения выглядел следующим образом:
- TSPY_ZBOT.BYZ запускается (автоматически путем при посещении сайта или в результате обновления предыдущей версией Zeus);
- TSPY_ZBOT.BYZ извлекает из себя PE_LICAT;
- TSPY_ZBOT.BYZ инфицирует при помощи PE_LICAT исполняемые файлы (в том числе на съемных носителях).
В дальнейшем TSPY_ZBOT.BYZ и PE_LICAT производили загрузку файла Zeus версии TSPY_ZBOT.SMEQ (по классификации Trend Micro) с доменов, созданных DGA.
Последователи дела Zeus
Несмотря на заявление Slavik о передаче всего кода, исходный код Zeus 2.0.8.9, начиная с февраля 2011 года, стал предлагаться на продажу. В конечном итоге в мае 2011 года произошла утечка исходных кодов данной версии в свободный доступ. В архиве с исходниками отсутствовали некоторые файлы:
- peinfector.cpp;
- peinfector.h;
- peloader32.asm;
- worm.cpp;
- worm.h.
Предполагается, что это и есть модуль PE_LICAT (Murofet).
Естественно, сразу появились люди, желающие продолжить начатое на базе этих исходников. Для примера можно упомянуть проект «ICE IX» (назван как вирус из фильма «Рекрут»?), который не предлагал ничего нового и являлся попыткой заработать денег на известном имени. Но «достойный» последователь нашелся, это — проект Citadel. Его ключевой особенностью стало создание онлайн-платформы, организованной по принципу социальной сети. Здесь заказчики могут запрашивать новые функции, сообщать об ошибках и добавлять собственные модули, что превращает процесс разработки в некое подобие opensource-проекта. Также организуется система технической поддержки покупателей, выражающаяся в постоянной поддержке Citadel в актуальном состоянии.
Так, авторы сообщают, что они стремятся сделать цикл обновления Citadel меньше цикла выпуска новых антивирусных баз, что позволяет долгое время не обнаруживаться на зараженном компьютере. Как заявляют разработчики, в Citadel исправлены все имеющиеся в ранних версиях Zeus изъяны, включая модуль по сбору данных при работе в Google Chrome. Помимо этого была добавлена возможность записи и передачи видео.
Впервые ботнет на базе Citadel был обнаружен в декабре 2011 года исследователи компании Securlet, сейчас количество ботнетов на базе Citadel исчисляется десятками.
Тогда базовый пакет Citadel продавался за 2399$, цена «аренды» составляла 125$ в месяц, дополнительные модули покупаются отдельно. Например, 395$ стоит модуль, который позволяет боту обновляться автоматически. Апдейты распространяются посредством Jabber, каждый апдейт стоит 15$.
В октябре 2012 года Citadel версии 1.3.4.5 (конструктор бота и панель управления) была замечена в открытом доступе. Возможно, эта утечка версии является своеобразной рекламной кампанией, так как в этом же месяце вышла новая версии Citadel 1.3.5.1 «Rain Edition». Руководство пользователя к этой версии доступно в персональном блоге XyliBox, из него можно узнать подробности о возможностях, нововведениях, установке и конфигурированию отдельных модулей. Цена базового комплекта последней версии составляет $3391, что на 41% больше первоначальной цены годичной давности. Как и прежде, ежемесячная аренда и модули оплачиваются отдельно.
Из последних «громких» событий можно отметить обнаружение в августе 2012 года специалистами компании Trusteer бота Citadel, модифицированного для атак на инфраструктуру аэропорта. При помощи Citadel злоумышленники могут получить контроль над защищенным VPN-соединением между ПК сотрудника аэропорта, работающим в удаленном режиме, и интерфейсами компьютерных систем, предназначенных для обеспечения работы аэропорта. Какой именно аэропорт стал целью атаки, не сообщается. Атака осуществляется следующим образом — сначала перехватывается пароль и имя пользователя, вводимое в форму подключения к VPN.
Далее задействуется упрощенный однофакторный режим аутентификации вместо двухфакторного (нажатием на кнопку «Get Image»). В результате этого вместо подтверждения по SMS пользователю будет демонстрироваться картинка (проверочный код) с десятью цифрами. Пользователь затем сопоставляет свой пароль со строкой цифр в изображении для создания «одноразового» пароля. Таким образом, получив цифры с проверочной картинки (путем снимков экрана) и пароль, а также зная алгоритм генерации «одноразового» пароля, можно легко его вычислить и войти в систему.
Интересный факт, что если на атакованном компьютере используется русская или украинская раскладка, Citadel самостоятельно деактивируется. Ранее уже отмечалось, что семейство Zeus разрабатывается русскоязычными программистами. Что на самом деле движет создателями — то ли некий «патриотизм», то ли из-за нежелания попадать в поле зрения отечественных правоохранительных органов (как известно к преступникам применяются правовые нормы страны, где произошло преступление). С другой стороны, в России распространение Интернет банкинга и системы электронных платежей через Интернет запаздывает по сравнению со странами Запада, так что распространение банковских троянских программ не имело бы большой финансовой отдачи.
Zeus, version 3 — Gameover
В версии Zeus 2.1 была сделана попытка уйти от жестко заданного командного центра и перехода к более защищенной от действий антивирусных компаний системе управления (использование DGA). Как выяснилось позже, создатели Zeus продолжили свои изыскания в данной области.
В октябре 2011 года Роман Хюсси, создатель ZeusTracker, исследуя последний полученный вариант Zeus, заметил наличие странного UDP-трафика. Дальнейший анализ показал, что новый вариант Zeus имел несколько IP-адресов в конфигурационном блоке, и компьютеры с этими IP отвечали инфицированной системе. В течении 24 часов было выявлено около 100 тысяч уникальных IP адресов, с которыми связывалась новая модификация. Большая часть зараженных компьютеров была расположена в Индии, Италии и США.
Так было установлено, что Zeus перешел на использование P2P механизма обновления себя и своих блоков данных конфигурации. Из-за использования названия скрипта gameover.php при обращении командного центра, для этой версии употребляется название Gameover Zeus. Это достаточно символично — как видно, «игры» c Zeus давно закончились.
Механизм Zeus P2P (ZP2P) основывался на протоколе Kademlia. Компьютер (узел) в сети ZP2P идентифицировался уникальным идентификатором (UID), который создавался во время первого запуска. Каждый экземпляр Zeus в ZP2P имел «таблицу соседей», хранящуюся в памяти. Этот массив содержит список около 30 соседних узлов в сети ZP2P — их UID, IP-адрес и номер порта UDP. В ZP2P сети использовалось несколько типов соединений:
- для обмена информацией о версии блока данных конфигурации (UDP);
- для обмена информацией об узлах в «таблице соседей» (UDP);
- для обмена двоичными данными — основного модуля и блоков данных конфигурации (с использованием протокола TCP).
DGA претерпел некоторые изменения, в частности, доменов верхнего уровня стало 6 — ru, com, biz, info, org, net (источник). DGA использовался в качестве «страховочного» варианта, если связь не могла быть установлена посредством ZP2P. В конечном итоге блоки данных конфигурации распространялись только через ZP2P, что затрудняло выявление управляющих центров. Кстати, управляющие центры теперь больше представляли собой хранилище украденной информации и сбора статистики, чем панель для отдачи ботам команд.
В феврале 2012 года исследователи компании Symantec обнаружили очередной вариант Zeus, использующий ZP2P. Данная модификация содержала в себе встроенный web-сервер на базе Nginx. Протоколы связи в ZP2P стали использовать только UDP, для затруднения отслеживания потоков данных Zeus. Теперь бот получил возможность загрузки исполняемых файлов через протокол HTTP от других ботов. Таким образом, каждый бот мог выступать в качестве своеобразного командного центра или выступать в качестве посредника (прокси) в цепочке управления. Такая же техника использовалась в ботнете Waledac/Kelihos версии С, возродившемся в начале 2012 года — через два года после закрытия при содействии Microsoft и ряда антивирусных компаний в 2010 году.
Интересно, что ботсеть ZP2P использовалась для распространения двух вредоносных программ сторонних разработчиков — фальшивого антивируса и прокси-сервера, чего ранее за Zeus не замечалось. С целью оценки распространения крайней версии Zeus, специалисты Symantec произвели мониторинг работы сети ZP2P. В период с апреля по июль 2012 года было зафиксировано 678.205 уникальных UID и 1.570.871 уникальных IP. Не все из данных IP были доступны, что объясняется нахождением за firewall или nat. К тому же провайдеры Интернета используют пул динамических адресов, поэтому к одному UID могли относиться разные IP адреса из диапазона пула. Наибольшее количество заражений приходилось на США (29.2%).
Как и прежде, основным источником заражения были письма, содержащие ссылки на вредоносные сайты, чаще всего перенаправлявший запросы браузера на эксплоит пак BlackHole. Благодаря этому установка вредоносных программ происходит без каких-либо действий пользователя (кроме просмотра зараженной страницы). Но на сей раз BlackHole загружал на компьютеры не сам P2P Zeus, а троянский загрузчик (trojan downloader) Pony. Pony представляет собой очередное crimeware, основная функция которого — загрузка и запуск вредоносных программ в обход средств антивирусной защиты. Pony имеет свою собственную админпанель, где отображается статистика успешных загрузок и запусков. Таким образом, установка P2P Zeus производилась следующим образом:
- пользователь получает письмо с ссылкой на вредоносный сайт;
- зайдя на этот сайт, BlackHole инициирует запуск загрузчика Pony на компьютере пользователя;
- Pony связывается со своим командным серверов и получает от него инструкции на загрузку, собственно, файла Zeus (с трех разных серверов).
Как видно, разработчики Zeus проделали большую работу по совершенствованию управления своим «детищем». Механизмы управления прошли несколько стадий в своем развитии:
- жестко заданные серверы (ver 1 и 2);
- использование DGA для обращения к динамически создаваемым доменным именам (ver 2.1 или 2+);
- DGA и гибридная схема P2P, где боты связывались между собой и сервером (version 3 или Gameover Zeus);
- только P2P, командные центры больше не нужны (ver 3+).
Что же будет дальше? Скорее всего, опять что-нибудь интересное. В этом нет никаких сомнений.