Одной из основных задач вредоносного кода является обеспечение раннего старта, который позволяет внести необходимые изменения в код операционной системы и системных драйверов — например, установить перехваты — раньше момента инициализации компонентов антивирусного продукта. В результате вредоносные программы и антивирусные продукты играют в кошки-мышки, поскольку находятся на одном уровне: операционная система, системные драйверы и руткиты работают в режиме ядра.
В настоящее время буткиты являются самой продвинутой технологией злоумышленников, позволяющей стартовать вредоносному коду до загрузки операционной системы. И технология эта используется во множестве зловредов.
В прошлом мы неоднократно писали о буткитах (например, о XPAJ и TDSS (TDL4)). В последней по времени публикации с упоминанием буткитов описаны сценарии таргетированных атак с использованием данной технологии в операции «Маска». Однако такие публикации появляются не часто, и у многих специалистов может создаться впечатление, что буткиты, как и файловые вирусы, «умерли», что «доверенная загрузка» сделала свое дело и угроза более не актуальна.
Тем не менее, буткиты существуют, востребованы на черном рынке и активно используются киберпреступниками, в том числе при проведении таргетированных атак.
Часть кода загрузчика вредоносной программы TDSS в MBR
Статистика
Для начала обратимся к статистике KSN. Ниже приведен рейтинг программ, детектируемых нами как Rootkit.Boot.*, в период c 19.05.2013 по 19.05.2014.
Большинство буткитов детектируются проактивно на основе поведенческой технологии еще на этапе своей установки в систему. Или же детектирование происходит при первой автоматической проверке системы антивирусом после ее старта, что приведет к запуску лечения активного заражения. Отметим, что выше приведена статистика детектирования только инфицированной загрузочной области. Кроме того, в эту статистику входят данные, полученные с ранее инфицированных машин, на которые уже после заражения был установлен наш антивирус.
Как видно в таблице выше, производные TDSS – Pihar и SST — входят в TOP 5 детектируемых бутктов. Буткит Harbinger, «прикрывающий» рекламные программы, оказался на 3-м месте по популярности, на 4-м месте Sinowal. Наконец, первое место с заметным отрывом занимает Rootkit.Boot.Cidox. Эта вредоносная программа сыграла особую роль в распространении буткитов, и поэтому на ее истории хотелось бы остановиться подробнее.
Cidox: доступные коды
Cidox предлагается в качестве дополнения к другим вредоносным программам и используется для их защиты. То есть буткит не используется для построения собственного ботнета а-ля TDSS.
Первые версии данной программы появились в антивирусных базах продуктов «Лаборатории Касперского» три года назад — 28.06.2011. Тогда Cidox стал прорывом в области вредоносных технологий, ибо эта программа была первой, способной заражать не MBR, а VBR.
Cidox использовался в том числе для защиты банковского троянца Carberp, а после публикации исходных кодов Carberp «утекли» и исходные коды буткита. В результате Cidox повторил историю знаменитого троянца ZeuS (Zbot). Только после «утечки» исходных кодов ZeuS стало намного проще воровать деньги в системах онлайн-банкинга, а после публикации исходных кодов Cidox любой мало-мальски опытный программист может попробовать свои силы в написании вредоносных программ, работающих на самом низком уровне до загрузки ОС.
Часть исходного кода вредоносной программы Cidox
В настоящее время Cidox используется для загрузки и защиты большого количества разнообразных зловредов, включая мошеннические программы, блокеры и программы для кражи денег в системах онлайн-банкинга.
Таргетированные атаки
Упомянутая выше операция «Маска» — не единственный случай использования буткитов в таргетированных атаках. В свое время мы писали о компании HackingTeam, программные продукты которой (в том числе буткиты) используются при проведении полицейских операций в разных странах мира. Компания FinFisher оказывает аналогичные услуги, а в состав программ, которые она разрабатывает, также входит буткит — Rootkit.Boot.Finfish, который занял последнее место в нашем рейтинге.
Список продуктов и услуг с официального сайта FinFisher
Анализ продуктов FinFisher был представлен в докладе «Лаборатории Касперского» на конференции Virus Bulletin. Презентацию можно посмотреть на сайте VB.
BIOS. В поиске новых стартовых точек
Непрекращающаяся борьба антивирусов и вредоносного кода приводит и тех, и других к очередному эволюционному витку развития. Вирусописателям необходимо искать новые стартовые точки, одной из которых становится BIOS. Однако дальше тестовых исследований дело почти не продвинулось, так как массовая модификация BIOS слишком уж «неудобная операция» для вирусописателей, требующая от них значительных усилий и потому применимая лишь в узкоспециализированных атаках.
Куда приводят мечты
В настоящее время классическая система BIOS является реликтом и несет в себе большое количество неудобств и ограничений. Вследствие этого логичным стало появление совершенно нового унифицированного модульного интерфейса – UEFI, разработанного консорциумом UEFI Forum с подачи компании Intel.
Что предлагает UEFI:
- Поддержку современного оборудования.
- Модульную архитектуру.
- Архитектуру и драйверы независимые от типа процессора (x86, x86-64, ARM/ARMv8) – EFI Byte Code.
- Различные расширения для UEFI, загружаемые с различных носителей, в том числе с портативных устройств.
- Разработку с использованием высокоуровневого языка программирования (диалект языка программирования C).
- Защищенную загрузку (Secure Boot).
- Загрузку по сети.
Также рекомендуем прочитать описание 10 самых распространенных заблуждений о UEFI.
Поддержка UEFI операционными системами:
- Linux с использованием elilo или с использованием специальной версии загрузчика GRUB.
- FreeBSD.
- Apple Mac OS X для Intel-совместимых систем (v10.4 и v10.5 – частичная поддержка, v10.8 – полная).
- Microsoft Windows начиная с Windows Server 2008 и Windows Vista SP1 x86-64. Microsoft Windows 8 получила поддержку в том числе 32х-битного UEFI, а также защищенную загрузку.
Что мы имеем в сухом остатке? Простой, понятный, документированный, унифицированный и удобный способ разработки без использования 16-ти битного ассемблера.
С точки зрения антивирусного решения UEFI – это чрезвычайно удобное место для внедрения чего-то вроде диска восстановления (rescue disk). Во-первых, отработает этот код еще до старта операционной системы и загрузчика, во-вторых, в UEFI присутствует удобный доступ к диску, а также более-менее удобный доступ к сети, в-третьих, в наличии возможность создать простой и понятный графический интерфейс. В случае борьбы со сложными и активно сопротивляющимися угрозами, такими, например, как буткиты – то, что нужно.
С точки зрения разработчика вредоносного кода все вышеперечисленное также является преимуществом и для буткита, обеспечивающим более надежную защиту вредоносных программ. По крайней мере до тех пор, пока разработчики прошивок не озаботятся реализацией правильной защиты.
Но прежде чем переходить к защитному функционалу, хотелось бы остановиться на одном важном моменте. Производители оборудования самостоятельно реализуют собственные прошивки и самостоятельно принимают решение о поддержке опциональных особенностей, предоставляемых UEFI. Такими особенностями являются, прежде всего, защита записи в SPI Flash с прошивкой и защищенная загрузка. В случае с UEFI наблюдается классическая проблема «удобство vs безопасность».
Угрозы и защитные механизмы
Неудивителен тот факт, что в связи с повсеместным внедрением UEFI, на него обратили внимание независимые исследователи, как на потенциальный вектор атак (раз, два, три). Список различных точек внедрения достаточно обширен и включает в себя компрометацию (внедрение, подмену или заражение) загрузчиков ОС и EFI, компрометацию UEFI драйверов, прямой доступ к SPI Flash прямо из операционной системы и многое другое. В случае работы в режиме UEFI+Legacy (CSM) продолжают работать и старые методы инфицирования системы, использующиеся разработчиками буткитов. Вполне очевидным является также и то, что в случае компрометации предзагрузочной среды сходят на нет все защитные механизмы Windows: Patch Guard, проверка подписей драйверов, да и любые другие.
В спецификацию UEFI 2.2 был добавлен протокол защищенной загрузки, который должен обеспечивать безопасную предзагрузочную среду и осуществлять защиту от запуска неправомерного вредоносного кода из потенциально уязвимых точек.
Протокол защищенной загрузки определяет процесс проверки загружаемых модулей, таких как драйверы, загрузчик ОС и приложения. Данные модули должны быть подписаны специальным ключом, а цифровая подпись проверена перед загрузкой. Ключи, используемые для проверки модулей, необходимо хранить в специальном защищенном от проникновения месте (базе данных), например, в TPM. Добавление или изменение ключей происходит с помощью других ключей, которые обеспечивают безопасный способ модификации самой базы.
Таким образом, оптимальным способом видится реализация следующих механизмов защиты со стороны производителей прошивок и операционных систем:
- Защита SPI Flash от вредоносной модификации. Отключение возможности обновления прошивки из операционной системы.
- Блокировка доступа к критичным секциям UEFI, в том числе к большинству переменных среды.
- Полный отказ от CSM.
- Защита системного тома, содержащего драйверы, загрузчик и приложения UEFI от вредоносной модификации.
- Реализация и включение Secure Boot (а также механизма Trusted Boot ОС Windows) со стороны операционных систем и производителей прошивок.
- Защита хранилища ключей от модификации.
- Защита, например, от спуфинг-атак механизма обновления базы данных, содержащей ключи.
- Защита от атак типа «Evil Maid» при непосредственном доступе к компьютеру.
- Использование экспертизы ведущих антивирусных компаний, а также внедрение антивирусных технологий непосредственно в прошивку.
Но стоит учитывать, что с реализацией более продвинутых алгоритмов защиты будут придуманы и более продвинутые методы атаки на UEFI. На текущий момент предлагаются способы, основанные на подмене UEFI загрузчика операционной системы Windows 8. Вредоносный загрузчик ОС во время своей инициализации подгружает в память подмененный загрузчик, отключает защитные механизмы Patch Guard и проверку подписи драйверов, тем или иным способом, устанавливает необходимые перехваты, и передает управление оригинальному коду загрузчика.
В случае с Mac OS, использующей шифрование всего диска, применяется оригинальный подход, который заключается в том, чтобы реализовать простой UEFI кейлоггер для получения секретной фразы, вводимой с клавиатуры пользователем, с помощью которой расшифровывается диск на стадии загрузки. В остальном способ, основанный на подмене или заражении системного загрузчика отработает и в этом случае.
Заключение
Буткиты прошли путь от разработки Proof-of-Concept к массовому распространению и сейчас фактически стали Open Source разработкой. Старт вредоносного кода из главной загрузочной записи (MBR) или из загрузочного кода активного раздела (VBR) позволяет контролировать все этапы загрузки ОС, и у вирусописателей такой тип заражений стал нормой. А для его реализации используются отработанные, изученные технологии, к тому же доступные на различных ресурсах в виде исходных кодов. В дальнейшем это может привести к существенному увеличению поделок на основе этих технологий лишь с небольшими изменениями в логике работы. Мы ждём новых модификаций уже известных злоумышленникам TDSS и Cridex, а также опасаемся их появления на других направлениях атак злоумышленников, например, в системах, где работают технологии Default Deny.
Важно, что современные антивирусные технологии, реализованные в наших продуктах, вполне успешно справляются с такими заражениями. Сейчас сложно предсказать какие конкретно методы маскировки, блокировки или противодействия антивирусным продуктам будут изобретены киберпреступниками в ближайшее время, поэтому внедрение антивирусных технологий непосредственно в прошивку в совокупности с вышеперечисленными механизмами защиты позволит прежде всего, безболезненно справляться с руткитами и буткитами до того, как вредоносный код получит управление. Кроме того, использование антивирусного модуля в UEFI позволит упростить процесс излечения и разработку новых методик обнаружения вновь появляющихся буткитов с новыми передовыми способами маскировки, а так же руткитов, которые нарушают работу системы или антивирусной программы.
P.S. Авторы выражают особую благодарность Василию Бердникову за помощь в подготовке материала.
Атаки до загрузки системы