Аналитики из калифорнийской компании FireEye, специализирующиеся на вопросах сетевой безопасности, опубликовали результаты изучения семейства новых вредоносных программ. Обнаруженный ими буткит «Немезида» и связанные с ним компоненты – это целая платформа, скрыто работающая на низком уровне. Она загружается до Windows, благодаря чему избегает обнаружения при обычном сканировании файловой системы.
Ещё в сентябре принадлежащая FireEye группа Mandiant Consulting обнаружила новый буткит, ориентированный на кражу и подмену финансовых данных. Он способен осуществлять скрытую передачу файлов, делать скриншоты экрана, выполнять функции клавиатурного шпиона, внедряться в системные процессы и планировать отложенные операции. Особенность состояла в том, что антивирусные средства обратившихся в FireEye клиентов не могли его удалить, а использование безопасного режима не влияло на его работоспособность.
В своём исследовании специалисты FireEye описывают буткит, прерывающий классическую последовательность загрузки [MBR] -> [BS] -> [загрузчик ОС] на уровне второго компонента цепочки. Анализ показал, что основной вредоносный компонент Nemesis представляет собой тонкий гипервизор, который внедряется в загрузочную запись тома (Volume Boot Record — VBR) и сохраняет код остальных файлов троянца в неразмеченной области диска (unallocated space). Nemesis использует встроенные средства виртуализации процессоров x86 и x86-64. Фактически он запускает установленную ОС как виртуальную машину и полностью контролирует её.
Присутствующие в коде и метаданных кириллические символы стали основанием для утверждения, что за Nemesis стоят «русские хакеры». Авторами «Немезиды» называется группа FIN1 (не запрещена в России). Сейчас на Западе больше них боятся только ИГИЛ (запрещена в России).
«Мы идентифицировали присутствие угроз безопасности от финансово-мотивированной группы, которую мы уже несколько лет отслеживаем как FIN1, – пишут эксперты FireEye. – Группа распространила многочисленные вредоносные файлы, каждый из которых является частью вредоносной экосистемы, называемой ‘Немезида'».
Указанные особенности буткита стали поводом для нездоровой сенсации. В ArsTechnica и других солидных изданиях появились многочисленные сообщения о якобы неуловимом «вирусе», от которого не спасает даже полная переустановка системы. Собственно, почему она вообще должна помогать?
Виртуализация на десктопных компьютерах поддерживается начиная с процессора i80386. Загрузочные вирусы существовали со времён MS-DOS, а буткиты стали их дальнейшим развитием. В отличие от остальных типов вредоносных программ, они запускаются до операционной системы и получают возможность подменять любые данные, скрывая своё присутствие.
Каждый раз во время загрузки заражённого компьютера буткит прерывает её нормальную последовательность. Он получает управление ещё до передачи цепочки непосредственно загрузчику ОС (например, NTLDR) и перехватывает обработку системных вызовов. То есть, он контролирует поведение как самой ОС, так и всех запущенных в ней программ, включая антивирусы без специфических механизмов противодействия.
«Использование вредоносного кода, существующего за пределами операционной системы, требует других методов обнаружения и удаления, – комментируют эксперты FireEye в корпоративном блоге. – Буткиты выполняются независимо от операционной системы Windows, поэтому определить их наличие могут только утилиты с функцией прямого доступа к диску».
Большинство комплексных систем защиты как раз обладают такой возможностью. Обычно она реализована в модулях «антируткит», хотя в интегрированных решениях её может использовать и основной сканер как отдельную опцию. Бесплатная утилита для анализа системы и поиска вредоносных программ AVZ также при необходимости использует прямое чтение с диска, определяет перехват системных функций, анализирует таблицу векторов прерываний и детектирует маскирующиеся процессы.
Основную проблему составляет не столько поиск руткитов и буткитов, сколько их корректное удаление и восстановление нормальной работы компьютера. При грубой попытке удалить найденный буткит часто нарушается загрузка операционной системы. В простейших случаях помогает консоль восстановления (fixmbr + fixboot или bootrec.exe /FixBoot). Однако отдельные буткиты (включая «Немезиду») обладают механизмом противодействия и пытаются при своём обнаружении удалить файлы с диска – в знак мести и для заметания следов.
На концептуальном уровне «Немезида» – вовсе не новая проблема. Ещё девять лет назад на Black Hat Briefings был представлен буткит Bluepill с поддержкой аппаратной виртуализации AMD-V. В дальнейшем он получил поддержку Intel VT-x и стал универсальным руткитом. Лежащие в его основе идеи были реализованы как в легитимных, так и разных вредоносных программах.
Алгоритм «Немезиды» во многом похож на Backdoor.Win32.Sinowal, появившийся в 2009 году. Есть в нём также сходство с Olmarik (BackDoor.Tdss.9693 по классификации «Доктор Веб»), Win32/Rovnix (Trojan.Win32.Genome.aglua по классификации Касперского) и другими буткитами последних лет.
Nemesis ориентирована в первую очередь на кражу данных платёжных систем и перехват транзакций онлайн-банкинга, но может научиться выполнять и другие действия на заражённом компьютере, поскольку обладает расширяемым функционалом. Её автоматический апдейт возможен при очередной связи «Немезиды» со своим C&C-сервером.
Противодействие «Немезиде» очевидно из алгоритма её работы. Необходимо загрузиться с заведомо чистого загрузочного носителя, а затем выполнить анализ логической структуры диска и его антивирусную проверку пока буткит находится в неактивном состоянии. При желании неразмеченную область можно дописать к имеющемуся разделу или создать на ней новый. Опционально – выполнить fixboot или установить отдельный загрузчик (например, GRUB).
К счастью, «Немезида» и подобные ей буткиты не актуальны на компьютерах с новым менеджером загрузки EFI. Они не заражают диски с таблицей разделов GPT и не имеют средств обхода механизма безопасной загрузки SecureBoot, но не стоит считать его панацеей. Эксперты Legbacore уже представили доклад о буткитах самого низкого уровня, заражающих UEFI/BIOS независимо от производителя материнской платы. В общем случае компьютером управляет тот программный код, который запустился первым.