Банду Gentlemen разбирали не по пресс-релизам, а по дизассемблеру: отлавливали сэмплы, поднимали драйверы в отладчике, прослеживали путь управления от юзермода до кольца 0. Картина, которая собирается из этих кусков, интересна не очередной дырой в очередном драйвере – таких десятки, и завтра будет ещё. Интересен подход. Gentlemen относятся к нейтрализации EDR не как к разовому трюку перед шифрованием, а как к продуктовой линейке со своим жизненным циклом: шаблон, версии, поддержка, обновления под новые цели.
Основной их инструмент – GentleKiller, самописный модульный фреймворк для снятия защиты. В фундаменте лежит классический BYOVD: в систему как сервис ставится подписанный, но уязвимый драйвер, и через него – уже из кольца 0 – выполняется то, что обычному процессу закрыто. Прежде всего терминация процессов EDR, которые прикрыты механизмом PPL и из юзермода неприкасаемы: антивирус сам себя защищает на уровне, куда атакующему легально хода нет. Дыра в драйвере этот барьер обнуляет – команда уходит в ядро, а ядру PPL не указ. Юзермодный компонент общается с драйвером через DeviceIoControl и нативные вызовы, исполнение уходит вниз, в драйвер. Техника не нова. Ново то, насколько индустриально она поставлена.
GentleKiller существует минимум в восьми вариантах, и роднит их общий шаблон разработки: одна логика, повторяющиеся строки, идентичная обфускация от сборки к сборке. Различает варианты ровно одно – конкретный уязвимый драйвер, вокруг которого собран экземпляр. Один опирается на драйвер игрового античита, другой – на драйвер антивирусного вендора, третий – на аудиодрайвер производителя железа. Архитектурно это значит, что добавление новой цели не требует переписывания инструмента: достаточно найти очередной подписанный драйвер с пригодной примитивной уязвимостью – произвольная запись в память ядра, неконтролируемый вызов, терминация процесса по PID – и обернуть его тем же шаблоном. BYOVD здесь не эксплойт, а сменный картридж к одному и тому же движку.
Существенная деталь, которую легко пропустить: не все драйверы чужие. Часть вариантов паразитирует на легитимных, но уязвимых драйверах сторонних вендоров – Safetica, Qihoo 360, IObit, NSecsoft, Huawei, Baidu; это подписанный, доверенный системой код, который не предназначался для убийства EDR, но позволяет это сделать. А как минимум два варианта несут собственные вредоносные руткиты, eb.sys и PoisonX. То есть группа работает на два фронта сразу: где есть чужая дыра – эксплуатирует чужое, где удобной дыры нет – заносит свою ядерную оснастку. Это принципиально иной уровень автономности, чем у тех, кто умеет только подбирать готовые уязвимые драйверы из публичных списков.
Поверх собранного кода накатывается отдельный слой защиты – и накатывается на уже готовый бинарь, а не вшивается в исходник. Сэмплы пакуются коммерческими протекторами Enigma или Themida, причём уровень брони закодирован прямо в имени файла суффиксом: по нему видно, упакован экземпляр и подделана ли подпись, ещё до запуска. Сверху – маскировка под доверенный софт: чужие иконки, поддельные сведения о версии, скопированные с легитимных продуктов цифровые подписи. Подписи невалидны и проверку целостности не проходят, но имя файла, иконка и атрибуты складываются в правдоподобную имитацию конкретного продукта – антивируса, античита, утилиты известного бренда. Этого достаточно, чтобы пройти беглый осмотр оператором и не вызвать вопросов в списке процессов.
Важно, что один и тот же набор приёмов маскировки группа применяет ко всему своему парку киллеров единообразно – это не индивидуальная упаковка под каждый сэмпл, а конвейерный постпроцессинг. Разнесение сборки и защиты по разным проходам – почерк команды с устойчивым билд-пайплайном, а не разовой компиляцией под конкретную операцию. Для обороны это плохая новость: ловить такие сэмплы по статичным признакам бесполезно, потому что внешний слой меняется механически и дёшево.
Внутри каждого варианта – перечень из 400+ имён процессов, сопоставленных с 48 вендорами защиты: от встроенного Defender до тяжёлых корпоративных EDR. Терминация идёт не разовым залпом, а периодически, в цикле: процесс, который служба защиты перезапустила после первого удара, снимается повторно – и так по кругу, пока в системе не останется ни одного живого агента. Это превращает временное отключение в устойчивое состояние: даже если защитный продукт настроен на самовосстановление, его просто не дают поднять.
На стороне жертвы это выглядит не как атака, а как необъяснимая деградация инфраструктуры безопасности – агент падает, не стартует, теряет связь с управляющим сервером, в консоли SOC хост уходит в офлайн. Пока администратор разбирается, «глюк» это или сбой обновления, окно для основной нагрузки – выгрузки данных и шифрования – уже открыто. В этом и расчёт: убийство защиты не должно выглядеть как убийство.
GentleKiller – не единственный инструмент группы. В арсенал интегрированы и сторонние киллеры, изначально связанные с другими бандами: HexKiller (след Warlock), ThrottleBlood (след MedusaLocker), HavocKiller. Gentlemen подбирают чужие наработки и встраивают их в свой конвейер под ту же единую маскировку – то есть унифицируют даже заимствованное, приводя к общему знаменателю своего постпроцессинга.
Скорость такой ассимиляции – отдельный диагноз зрелости. Появляющиеся в открытом доступе PoC-методы отключения EDR через драйверы группа ставит в строй за считаные дни, опережая выход патчей у вендоров. Это значит, что у них налажен не только билд-пайплайн, но и разведка: кто-то отслеживает свежие публикации и исследовательские релизы, оценивает применимость и сразу заводит их в продакшен. RaaS-операция работает как продуктовая команда с входящим потоком фич – только фичами здесь служат чужие уязвимости.
Язык, на котором написан сам GentleKiller, публично не зафиксирован, но контур инструментария группы показателен: стилер OxideHarvest собран на Rust, шифровальщик – на Go и C. Часть, работающая с драйверами напрямую через DeviceIoControl и нативные вызовы, по характеру задачи лежит в плоскости C и ассемблера – прямое управление памятью, ручная работа со структурами ядра, точный контроль вызовов и буферов, никакой рантайм-прослойки между кодом и кольцом 0. В ядре нет права на вторую попытку: некорректный IOCTL, неверно собранная структура, гонка – и вместо тихой нейтрализации защиты получаешь BSOD, шум и спалившуюся операцию.
Поэтому уровень владения этим уровнем и отделяет группу масштаба Gentlemen от потока ширпотребных шифровальщиков, собранных из готовых билдеров. Писать стабильный код, который живёт в кольце 0 на чужих, не своих машинах, в неизвестной заранее конфигурации, и при этом не роняет систему, – это не вопрос предпочтений в языке, а порог входа, который проходят единицы. И именно этот порог Gentlemen прошли.
Распределение целей для RaaS такого калибра нетипично: не США во главе списка, а Юго-Восточная Азия, Южная Америка и Западная Европа – среди пострадавших Таиланд, Бразилия, Франция. Отбор, судя по утёкшим данным самой группы, идёт по слабо настроенному периметру, в частности по уязвимым конфигурациям пограничных шлюзов: где криво настроен внешний доступ, там и заходят. Модель партнёрская и насквозь промышленная – операторы разрабатывают и сопровождают инструментарий, наёмные исполнители проводят вторжения, доля партнёра доходит до 90%. Группа поднялась в конце 2025-го и вышла на пик активности к началу 2026-го; её основателя под ником hastalamuerte деанонимизировали публично, но машину это, как водится, не остановило – она работает как процесс, а не как один человек.
Вывод не про конкретные драйверы – их отзовут, занесут в блок-листы, сигнатуры под сэмплы разойдутся по антивирусным базам. Вывод про модель. Gentlemen разнесли нейтрализацию защиты на независимые узлы: движок-шаблон, сменный драйвер-модуль, отдельный слой маскировки, конвейер поглощения чужих PoC, разведка под входящий поток уязвимостей. Каждый узел меняется независимо от остальных, и выбивание одного не ломает систему – на его место встаёт следующий.
Оборона, заточенная на детект «вредоносного файла», против такой архитектуры работает слабо: точка приложения сместилась с бинаря на легально загруженный в ядро драйвер. Ловить нужно не сэмпл, а сам факт появления в системе уязвимого или неожиданного драйвера и аномальной активности в кольце 0 – телеметрию загрузки драйверов, обращения к ним через DeviceIoControl, внезапную смерть собственных процессов защиты. Иначе оборона блокирует отдельные модули ровно с той скоростью, с какой фреймворк выпускает следующие, – а в этой гонке у конвейера фора.
В основе – техническое исследование ESET Research.
Автор: hacker@shifry.local