Двухэтапная атака на Windows: загрузчик в памяти разворачивает троян BotHelper со слежкой за экраном

Двухэтапная атака на Windows: загрузчик в памяти разворачивает троян BotHelper со слежкой за экраном

На рабочих станциях под управлением Windows разворачивается многоэтапная цепочка заражения. Первый её шаг выглядит почти безобидно, а заканчивается всё постоянным наблюдением за экраном пользователя. Жертва не видит ни окон, ни значков, ни предупреждений. Небольшая программа собирает сведения о компьютере, скачивает зашифрованный файл и запускает его в скрытом режиме. За файлом скрывается программа удалённого доступа BotHelper, которую до этого случая никто не описывал. Имя ей дали по внутреннему пространству имён в коде. Основная цель таких инструментов - рабочие станции сотрудников, где хранится доступ к корпоративным системам.

Описание

Первый этап начинается со сбора данных о хосте. Загрузчик запрашивает у Windows имя компьютера, учётную запись вошедшего пользователя, параметры процессора и объём установленной памяти. Затем он открывает защищённое соединение с внешним сервером и подставляет в запрос типичный для браузера идентификатор. Нужный файл лежит за длинным случайным идентификатором, поэтому подобрать адрес вручную невозможно. Перед отправкой запроса программа отключает проверку сертификата. Из-за этого передача проходит, даже если сервер предъявляет самоподписанный или просроченный сертификат. Ответ приходит блоками по 8 КБ и целиком собирается в оперативной памяти. На диск на этом шаге не попадает ничего.

Скачанный объект размером около 53 КБ оказался зашифрованным. По данным Point Wild Threat Intelligence, у него нет ни заголовка, ни читаемых строк, ни узнаваемой структуры: байты распределены равномерно по всему диапазону. Публичные проверки репутации адреса не дали ни одного срабатывания среди девяноста движков, хотя сервер отдавал рабочий вредоносный файл. Расшифровка идёт прямо в памяти, ключ программа вычисляет на ходу и нигде не хранит. После расшифровки в начале данных появляется подпись исполняемого файла Windows. Загрузчик сохраняет результат во временную папку под именем компонента Microsoft Edge и запускает без окна. Расчёт здесь простой: защита, опирающаяся на репутацию ссылок, пропускает такой файл целиком.

Второй этап - BotHelper. Программа копирует себя в скрытое место, создаёт задачу в планировщике Windows с запуском каждые 30 минут и отключает встроенный интерфейс антивирусной проверки. Затем она связывается с тем же сервером, что отдал её загрузчику, и начинает опрашивать набор серверных скриптов в ожидании команд. В наблюдаемом случае сервер приказал снимать экран. Клиент подчинился и начал отправлять уменьшенные кадры основного дисплея в формате изображения. Обратная связь идёт по обычному защищённому соединению, поэтому отдельного канала управления здесь нет.

Скрытая копия и задача в планировщике меняют картину восстановления после заражения. Даже если удалить запущенный файл из временной папки, задача вернёт его обратно через полчаса. Рядом программа ведёт обычный текстовый журнал, где построчно отмечает пройденные шаги: старт, проверку окружения, подготовку, отключение защиты. Журнал остаётся на диске открытым текстом, и по нему удобно понять, на какой стадии остановился запуск. Такой файл сам по себе служит следом для проверки машины.

Набор команд у BotHelper широк. Помимо снимков и потоковой передачи экрана он умеет выполнять команды оболочки и PowerShell, скачивать и запускать файлы по ссылке, следить за буфером обмена и подменять адреса криптовалютных кошельков при копировании. К этому набору относятся перезагрузка, выключение и завершение сеанса пользователя, а также управление самим клиентом: обновление, перезапуск и удаление. Отдельная ветка загружает дополнительный модуль из сети и подключает его во время работы. Значит, список возможностей не закрыт, и разработчики могут наращивать функциональность, не меняя уже разосланный файл. Команды приходят вместе с ответом сервера на очередной запрос, так что проверка связи и канал управления совпадают.

Сетевой перехват подтвердил соединение на уровне трафика. Заражённый узел обращался к внешнему серверу по современной версии протокола защищённых соединений, и имя узла открыто читалось в служебном поле рукопожатия. Сетевые средства защиты могли заметить адрес, но репутация домена оставалась чистой. Поток кадров шёл небольшими фрагментами примерно три раза в секунду. Программа ограничивает частоту сверху, что бы сервер ни запрашивал. Кадр при этом захватывается в полном разрешении и уменьшается уже перед отправкой, поэтому качество задаёт оператор, а не сама жертва.

Практический вывод прост: важнее всего остановить первый этап. Файл, который попадает на диск, носит имя доверенного компонента браузера, а полезная нагрузка существует в открытом виде только в памяти. Проверки репутации адресов и файлов здесь бесполезны, поэтому решение переносится на конечную точку. Помогают регулярные обновления Windows, ограничение прав пользователей, контроль автозапуска и задач планировщика, а также наблюдение за обращениями к внешним серверам. Отдельно следят за появлением исполняемых файлов во временных папках и за короткими периодическими соединениями.

Полезную нагрузку удалось забрать, пока инфраструктура злоумышленников оставалась в сети. Когда сервер отключат, один загрузчик не даст ничего: расшифровывать будет нечего, и второй этап по образцу не восстановить. Это ограничение самой схемы, рассчитанной на поздний разбор. Удалением одного файла заражение тоже не снять, поэтому защита строится на раннем перехвате.

Индикаторы компрометации

Комментарии: 0