VBR-буткит, основное функциональное назначение — блокировка доступа в Интернет и демонстрация в окне браузера специально сформированной веб-страницы, с использованием которой пользователя вынуждают согласиться с условиями подписки на какие-либо псевдоуслуги.
Перед началом атаки на инфицируемый компьютер дроппер вредоносной программы проверяет зараженность системы: если в ветке HKLM\Software\Classes\CLSID отсутствует соответствующий раздел, то заражение продолжается.
В операционных системах Windows Vista и Windows 7 троянец пытается повысить собственные права путем постоянного перезапуска самого себя с запросом на повышение привилегий. Дроппер несет в себе как 32-битный, так и 64-битный драйвер, в будущем способный обеспечить загрузку основного функционала данной вредоносной программы. На диске сохраняется соответствующий драйвер в зависимости от разрядности пользовательской операционной системы. Он может быть записан как в начало диска (до первого активного раздела), если там достаточно места, так и в его конец.
Затем выполняется заражение VBR (Volume Boot Record). Trojan.Mayachok.2 отказывается от заражения, если файловая система раздела имеет формат, отличный от NTFS. Анализируя загрузочную запись, троянец находит удобное место для своего размещения и перезаписывает имеющийся там код. Оригинальный код упаковывается при помощи библиотеки aplib (http://www.ibsensoftware.com) и дописывается следом за вирусным. Номер начального сектора размещенного ранее на диске драйвера и его размер также «прошиваются» в тело зараженной VBR.
Получив управление, вирусный загрузчик резервирует для себя небольшой объем памяти, переносит себя туда и перехватывает прерывание int 13h для просмотра содержимого считываемых с диска секторов. Затем он целиком загружает с диска свой драйвер и распаковывает на прежнее место оригинальный код VBR. Управление возвращается системному загрузчику.
Далее идет череда снятий/установок перехватов в загружаемых модулях, таких как ntldr, bootmgr, osloader.exe, winload.exe и т. д., в зависимости от используемого операционной системой загрузчика. Следует отметить, что помимо обычных перехватов (сплайсинга) в ключевых мостах используются аппаратные отладочные регистры (dr0-dr7) и трассировка (пошаговое исполнение) кода.
Точка выхода вирусного драйвера вызывается дважды. Это связано с тесной работой зараженного VBR и драйвера. Поскольку код вирусного VBR составляет всего 2078 байт, часть функционала авторы решили перенести в тело драйвера. При первом вызове он добавляет себя в списки из LOADER_PARAMETER_BLOCK: в LoadOrderList как копия первого модуля в списке (а это ядро ОС) и в BootDriverList как загрузочный драйвер, якобы прописанный в \Registry\Machine\System\CurrentControlSet\Services\null. Таким образом, вредоносная программа имитирует свою загрузку в качестве обычного boot-драйвера.
Второй раз драйвер вызывается операционной системой, которая уверена, что сама загрузила его. Задачей драйвера является инжект (внедерение) своего кода в запущенные процессы. Внедрение кода осуществляется обычной установкой нотификаций через функции PsCreateProcessNotifyRoutine и PsCreateProcessNotifyRoutine с последующим вызовом асинхронной функции через механизм APC. Внедрившись в процессы браузеров (поддерживаются Microsoft Internet Explorer, Mozilla Forefox, Opera, Google Chrome и др.), вредоносный модуль блокирует их нормальную работу и демонстрирует пользователю в окне обозревателя заранее сформированное злоумышленниками содержимое.