РАЗБОР Статья

Этичный хакинг против ботнета: кейс RCE

Сергей Попов
Сергей Попов Red Team · 6,7 тыс. сообщений
Подписаться
488
[ обложка статьи ]
Режим чтения
Керамическая сфера рассечена хирургическим лезвием на белую и тёмную половины, на срезе выгравированы код уязвимости и тактика атаки. Резкий верхний свет, глубокие тени, красное свечение вдоль лезв...


Ликвидация Qakbot - одна из крупнейших disruption-операций в истории: правоохранители из нескольких стран перехватили C2-инфраструктуру сети из 700 000+ заражённых машин и через штатный механизм обновления ботнета разослали модуль деинсталляции. По факту - массовая эксплуатация уязвимости RCE на чужих компьютерах, санкционированная судебным ордером. Тот же MITRE ATT&CK T1190 (Exploit Public-Facing Application), тот же pipeline доставки payload - но с инвертированным вектором. Я не раз видел, как пентестер находит критическую RCE в массовом ПО, открывает Shodan, видит тысячи уязвимых хостов - и замирает. Где заканчивается этичный хакинг против ботнета и начинается уголовная статья?

Disruption-операция: как white hat хакеры ломают ботнеты​

Этичный хакинг против ботнета - не классический пентест с согласованным scope и подписанным NDA. Тут другое. Исследователь обнаруживает критическую RCE в массово развёрнутом ПО (CMS, IoT-прошивка, сетевое оборудование), через Censys или Shodan видит десятки тысяч уязвимых инстансов и понимает: часть из них уже под контролем оператора ботнета. Или скоро будет - после публикации PoC. Дальше - развилка.

Путь 1: ответственное раскрытие уязвимостей. Координированный процесс через вендора или национальный CERT. Исследователь сообщает вендору, даёт 90 дней на патч, публикует advisory после выхода исправления. Всё это время уязвимые устройства остаются открытыми для массовой эксплуатации. Юридически - чисто. Операционно - ботнет не ждёт патча.

Путь 2: ликвидация ботнета правоохранителями. Передача данных в CERT/CSIRT с рекомендацией по disruption. Правоохранители получают судебный ордер, перехватывают C2-домены через sinkhole, при необходимости - удалённо модифицируют код на заражённых устройствах. Именно так работала операция против Qakbot. По данным исследования Carleton University, успешные botnet-takedown инициативы строятся на сочетании юридических, технических и координационных действий: объём, разнообразие и непредсказуемость определяют результат.

Путь 3: самостоятельная нейтрализация (серая зона). Исследователь эксплуатирует найденную уязвимость для превентивного патчинга или отключения заражённых устройств. Технически - white hat ботнет-операция, мотивированная защитой. Юридически - неправомерный доступ к чужим информационным системам. Уголовное право оценивает не результат, а факт доступа без авторизации. Мотивация "я хотел помочь" - не аргумент для суда.

NATO CCDCOE в исследовании "Proactive Botnet Countermeasures: An Offensive Approach" (Leder et al.) прямо аргументирует необходимость проактивных наступательных мер для нейтрализации ботнет-угроз - техники, основанные на формализованном анализе ботнет-инфраструктур. Но тот же документ фиксирует: без правовой рамки наступательные контрмеры - юридическая мина для исполнителя.

Операционная сложность disruption в том, что ботнет - распределённая система с redundancy. Односторонний технический перехват одного C2-домена редко убивает ботнет целиком: операторы мигрируют на backup-каналы, используют DGA (Domain Generation Algorithm) или P2P-архитектуры. Bredolab (по разным оценкам - до 30 миллионов заражённых ПК, 2009-2010) удалось ликвидировать только после совместной операции голландской полиции с хостинг-провайдерами и международной координации. Один sinkhole ничего не решил бы.

Бизнес-логика ботнета: зачем атакующим ваш сервер​

Прежде чем разбирать механику RCE против ботнета, стоит зафиксировать мотивацию операторов - она определяет масштаб угрозы и urgency реагирования.

DDoS-as-a-Service. Операторы сдают ботнет в аренду. В 2016 году Mirai - ботнет из сотен тысяч IoT-устройств (камеры, роутеры, DVR) - атаковал DNS-провайдера Dyn, обрушив Twitter, Reddit и Netflix. Техника по MITRE ATT&CK: OS Exhaustion Flood (T1499.001, Impact). Камера за $30 без пароля - и вот она уже часть армии.

Ransomware distribution. Ботнет работает как initial access vector. По данным ransomware.live, группа Storm за последние недели опубликовала данные 9 жертв - от производства (alliedmachine.com) до здравоохранения (West County Health Centers) и образования (stepbystepusa.com). Qakbot до ликвидации был ключевым лоадером для ransomware-операторов.

Credential harvesting и proxy-сервисы. Заражённые устройства перепродаются как residential proxy для отмывания трафика. Ваш домашний роутер может прямо сейчас проксировать чей-то фрод.

Cryptomining. Тихая монетизация: бот майнит криптовалюту в фоне, не вызывая подозрений у владельца.

По данным StormWall, в 2025 году более 607 тысяч устройств российских пользователей находились в составе ботнетов. Активность IoT-ботнетов за тот же период возросла на 500% - заводские пароли, устаревшие прошивки, отсутствие автообновления делают массовую эксплуатацию тривиальной.

Массовая эксплуатация уязвимости RCE: анатомия CVE-2025-24893​

1793243468311.webp

Разберём конкретный кейс - CVE-2025-24893, критическую RCE в XWiki Platform. Уязвимость - идеальный вектор для массовой эксплуатации: zero-click, без аутентификации, через единственный HTTP-запрос.

XWiki Platform - open-source wiki-движок для корпоративных баз знаний. Уязвимость сидит в эндпоинте SolrSearch, который принимает пользовательский ввод через параметр text и передаёт его в движок рендеринга без должной нейтрализации. Результат: произвольный Groovy-код, переданный через URL-параметр, исполняется на сервере с правами процесса XWiki. Один GET-запрос - и ты внутри.

Уязвимость классифицируется одновременно по двум CWE:
  • CWE-95 (Eval Injection) - код инжектируется в динамически оцениваемое выражение
  • CWE-94 (Code Injection) - более широкая категория, покрывающая произвольную инъекцию кода в генерируемый приложением код
CVSS 9.8 (CRITICAL) - вектор CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Разбор:

КомпонентЗначениеЧто это означает на практике
AV:NNetworkАтака через сеть, достаточно HTTP-доступа к инстансу
AC:LLowЭксплуатация не требует специальных условий или подготовки
PR:NNoneПривилегии не нужны, уязвим гостевой доступ
UI:NNoneДействия пользователя не требуются (zero-click)
C:H / I:H / A:HHighПолная компрометация конфиденциальности, целостности, доступности

CISA внесла CVE-2025-24893 в каталог KEV (Known Exploited Vulnerabilities) 30 октября 2025 года - уязвимость описана как "XWiki Platform Eval Injection Vulnerability" с предписанием "Apply mitigations per vendor instructions or discontinue use". Дедлайн - 20 ноября 2025 года. На AlienVault OTX - 50 pulses с тегом actively_exploited_kev, что подтверждает: её ломают прямо сейчас.

На Exploit-DB опубликованы два рабочих эксплойта: EDB-52136 (RCE, автор Al Baradi Joy, апрель 2025) и EDB-52429 (модуль Metasploit, автор Maksim Rogov, сентябрь 2025). Metasploit-модуль снижает порог эксплуатации до use exploit/multi/http/xwiki_eval_injection -> set RHOSTS -> run. Три команды - и RCE.

PoC-запрос, реконструированный из описания CVE:
Код:
GET /xwiki/bin/get/Main/SolrSearch?media=rss&text=%7D%7D%7D%7B%7Basync%20async%3Dfalse%7D%7D%7B%7Bgroovy%7D%7Dprintln(%22RCE_TEST%22)%7B%7B/groovy%7D%7D%7B%7B/async%7D%7D HTTP/1.1
Host: target-xwiki:8080
В декодированном виде payload: }}}{{async async=false}}{{groovy}}println("RCE_TEST"){{/groovy}}{{/async}}. Тройная закрывающая скобка }}} вырывается из текущего контекста рендеринга XWiki, после чего блок {{groovy}} исполняет произвольный Java/Groovy-код на сервере. Проверка версии XWiki на авторизованном хосте: curl -s https://target/xwiki/rest -H 'Accept: application/json' - в ответе ищите поле version. Если версия подпадает под affected - фиксируете в отчёте и рекомендуете emergency patching.

Масштабируйте: сканирование Shodan по сигнатуре XWiki покажет публично доступные инстансы - корпоративные wiki, выставленные без WAF или reverse proxy. Атакующий с этим payload компрометирует серверы за секунды. И именно здесь возникает классическая развилка: использовать ту же уязвимость для массового патчинга - или координировать раскрытие и ждать.

Kill chain disruption-операции по MITRE ATT&CK​

При наложении disruption-операции на фреймворк MITRE ATT&CK видна зеркальная симметрия: защитник проходит те же фазы kill chain, что и атакующий, но с инвертированной целью.

ФазаТехника ATT&CKДействие оператора ботнетаЗеркальное действие disruption
РазведкаNetwork Service Discovery (T1046)Массовое сканирование портовFingerprinting C2-трафика заражённых нод
Initial AccessExploit Public-Facing Application (T1190)Эксплуатация RCE для установки ботаЭксплуатация RCE/C2 для деинсталляции
ИсполнениеExploitation for Client Execution (T1203)Запуск bot payloadЗапуск cleanup-скрипта
Lateral MovementExploitation of Remote Services (T1210)Распространение бота по сетиИдентификация и очистка смежных заражённых хостов
ОбнаружениеSystem Information Discovery (T1082)Профилирование жертвыИнвентаризация масштаба заражения
C2Ingress Tool Transfer (T1105)Загрузка дополнительных модулейПерехват C2-канала, доставка uninstaller
ВоздействиеOS Exhaustion Flood (T1499.001)DDoS с заражённых устройствSinkhole C2-доменов, отключение DDoS-модуля

Вот что тут интересно: техническая разница между построением ботнета и его ликвидацией - минимальна. Один и тот же PoC для CVE-2025-24893 запускает println("RCE_TEST") или Runtime.getRuntime().exec("rm -f /tmp/botpayload"). Разница - в юридической авторизации. Для суда это единственное значимое различие.

В операции против Qakbot правоохранители прошли полный цикл: recon C2-инфраструктуры -> перехват управления через судебный ордер -> доставка uninstaller через штатный update-канал ботнета -> верификация деинсталляции. Каждый шаг задокументирован в судебных материалах. Без ордера - те же действия, та же квалификация, что и у операторов ботнета.

Правовые риски пентеста: где легальность этичного взлома заканчивается​

1793243502752.webp

Киберпреступность и white hat хакеры разделяются не технологиями, а документами. Один и тот же Metasploit-модуль EDB-52429 для CVE-2025-24893 - инструмент пентестера при наличии договора и орудие преступления без него. Звучит банально, но на практике эту границу пересекают чаще, чем кажется.

В России ключевые нормы - ст. 272, 273 и 274 УК РФ.

Ст. 272 (неправомерный доступ к компьютерной информации) прямо применима к самостоятельной нейтрализации ботнета. Пентестер, который без авторизации патчит чужой уязвимый сервер, совершает неправомерный доступ вне зависимости от мотивации. Отсутствие ущерба не исключает состав: для квалификации достаточно самого факта доступа без согласия владельца. Санкции - штраф до 200 000 руб. или лишение свободы до 2 лет, при тяжких последствиях - до 7 лет.

Ст. 273 (создание, использование и распространение вредоносных программ) касается инструментария. Эксплойт для CVE-2025-24893, скрипт массовой эксплуатации, cleanup-payload - всё это формально может квалифицироваться как "вредоносная программа", потому что норма не различает цель использования. Судебная практика трактует статью широко: хранение PoC без авторизованного проекта создаёт риск, если будет доказана осведомлённость о вредоносных возможностях кода. Да, PoC на гитхабе - уже потенциальный риск.

Ст. 274 (нарушение правил эксплуатации) срабатывает, когда действия исследователя приводят к нарушению работы информационных систем. Cleanup-скрипт, который уронил production при деинсталляции бота - классический сценарий. Хотел помочь, а получил уголовное дело.

Американский Computer Fraud and Abuse Act (CFAA) построен на аналогичном принципе: "unauthorized access" - ключевой элемент состава. Операция против Qakbot потребовала судебного ордера именно потому, что без него действия ФБР квалифицировались бы как violation of CFAA.

Конкретный сценарий серой зоны. Пентестер на bug bounty сканирует scope, обнаруживает CVE-2025-24893 на XWiki-инстансе заказчика. Подтверждает эксплуатацию - RCE работает. Параллельно видит в логах: на сервере уже установлен веб-шелл, оставленный кем-то ранее. Правильные действия: зафиксировать артефакт, уведомить заказчика, НЕ взаимодействовать с веб-шеллом. Взаимодействие с артефактом третьего лица - потенциальное нарушение ст. 272, даже при авторизованном пентесте. Логи и таймстемпы подтверждают: вы зафиксировали находку, а не эксплуатировали её. Руки чешутся посмотреть, что внутри шелла - но не надо.

В российском контексте есть ещё одна тонкость: даже при наличии договора на пентест тестирование инфраструктуры третьих лиц (SaaS-провайдера заказчика, хостинг-площадки) без прямого согласия этого третьего лица - потенциальное нарушение ст. 272. Scope должен покрывать только то, чем заказчик реально владеет или управляет. Safe harbor для ответственного раскрытия уязвимостей в российском праве не существует.

Документирование scope: судебная практика по пентесту​

Защита пентестера строится на документировании. Минимальный checklist, который отделяет легитимный проект от уголовного дела:
  1. Договор на оказание услуг с явным scope: IP-адреса, домены, сервисы, разрешённые техники, временные рамки. Формулировка "все системы заказчика" - недостаточна. Нужна адресная конкретика. Каждый IP.
  2. Письменная авторизация от владельца системы. Подписанный документ с печатью юрлица или квалифицированной ЭЦП. Для физлиц - нотариально заверенное согласие. Не устная договорённость, не переписка в Telegram.
  3. Явное указание разрешённых техник. Если scope включает эксплуатацию RCE, социальную инженерию, физический доступ - каждый тип прописывается отдельным пунктом договора.
  4. Логирование всех действий. Таймстемпы, введённые команды, скриншоты. Если уронили production или обнаружили данные третьих лиц - логи доказывают, что действия были в рамках scope.
  5. NDA и процедура обращения с данными. Обнаруженные уязвимости и артефакты не покидают периметр проекта. Процедура уничтожения по завершении - обязательна.
  6. Координация при обнаружении active breach. Если на целевой системе обнаружен ботнет или веб-шелл третьего лица - немедленное уведомление заказчика и фиксация момента обнаружения в логах. Не трогать, не анализировать, не «помогать».
Для disruption-операций логика масштабируется: правоохранители оформляют судебный ордер, CERT координирует с ISP, вендор готовит патч. Каждый шаг проходит юридический review. Без этой обвязки даже благонамеренный white hat ботнет-takedown - потенциальное уголовное дело.

Ответственное раскрытие уязвимостей: от PoC до координированного патча​

1793243589006.webp

Ответственное раскрытие - единственный юридически безопасный путь для пентестера, обнаружившего критическую RCE с потенциалом массовой эксплуатации. Два реальных кейса покажут, как это работает (и почему не всегда быстро).

Кейс 1: PHP2Shell. По данным Wiz Research, уязвимый код сидел в ядре PHP более десяти лет - каждая версия начиная с PHP 5.4 содержала хотя бы одну из обнаруженных проблем (severity CVSS 9.2). Уязвимости позволяли неаутентифицированное удалённое выполнение кода на серверах с WordPress, Drupal, Joomla, а также чтение конфиденциальных данных из памяти процесса - паролей, токенов, API-ключей. PHP обслуживает 70% веб-сайтов по данным Wiz - масштаб потенциальной эксплуатации колоссальный.

Хронология координированного раскрытия:
  • Обнаружение. Wiz Research совместно с AI-моделями нашли уязвимости, скрытые более десяти лет. Построение рабочего эксплойта требовало цепочки из нескольких багов и адаптации к memory layout каждой конфигурации - по данным Wiz, "complexity may no longer provide a meaningful barrier""сложность, возможно, больше не служит значимым барьером" благодаря AI. Десять лет баг лежал на виду - и AI его нашёл.
  • Координация. До публичного раскрытия Wiz работал с командой PHP, Calif и OpenAI. Параллельно Automattic, Akamai, AWS, Cloudflare, Fastly, Google, Imperva, Microsoft и Vercel подготовили рекомендации и out-of-the-box mitigation для клиентов, которые не могут немедленно поставить патч.
  • Патч. По данным Wiz Research, PHP выпустил исправление, устранив корневую причину всех вариантов.
Масштаб координации - кросс-индустриальный: более десятка компаний подготовили защитные меры до публичного раскрытия. Модельный пример для уязвимостей уровня интернет-инфраструктуры.

Кейс 2: CVE-2025-24893. Между публикацией первого эксплойта на Exploit-DB (апрель 2025, EDB-52136) и внесением в CISA KEV (октябрь 2025) прошло полгода. За это время появился Metasploit-модуль (EDB-52429, сентябрь 2025), снизивший порог эксплуатации до нескольких кликов. 50 pulses на AlienVault OTX подтверждают активную эксплуатацию. Полгода - достаточно, чтобы ботнет набрал тысячи нод.

Фактор AI. Исследование PHP2Shell демонстрирует сдвиг: AI сокращает время от обнаружения до рабочего эксплойта с недель до часов. Для пентестера это двойной вызов - ускоряется и обнаружение, и эксплуатация злоумышленниками. Окно между нахождением RCE и её массовым использованием сжимается, и скорость координированного раскрытия становится критичнее.

Практический workflow для пентестера, обнаружившего массовую RCE:
  1. Зафиксируй. PoC, affected versions, вектор, impact - задокументируй до контакта с вендором.
  2. Оцени масштаб. Определи количество публично доступных инстансов:
Код:
shodan search "XWiki" --fields ip_str,port,org,country_code
  1. Контакт с вендором/CERT. Через security@vendor или национальный CERT (в РФ - ГосСОПКА/НКЦКИ). Стандартный срок - 90 дней; при подтверждённой активной эксплуатации - 30 дней.
  2. Мониторинг. Отслеживай появление эксплойтов на Exploit-DB, GitHub, shadow-форумах. Если PoC утёк до патча - уведоми CERT повторно с пометкой об urgency.
  3. Публикация advisory. После патча - публикуй подробности для community. Это ускоряет патчинг оставшихся инстансов.
Между обнаружением RCE и её попаданием в арсенал операторов ботнета - окно в недели или месяцы. Координированное раскрытие через вендора и CERT - способ закрыть это окно без уголовного риска для исследователя.

За несколько лет работы с координированными раскрытиями и red team-проектами, где RCE-находки затрагивали тысячи хостов, я утвердился в позиции, которую в отрасли не принято озвучивать: индустрия системно переоценивает disruption-операции и недооценивает ежедневную работу пентестеров с responsible disclosure. Qakbot - красивая история с пресс-конференцией, судебным ордером и цифрой 700 000. Но к моменту ликвидации ботнет уже был лоадером для ransomware-групп, атакующих больницы и заводы. Ликвидация - не профилактика, а хирургия после метастазов. Профилактика - это пентестер, который в апреле 2025 года нашёл CVE-2025-24893, задокументировал PoC и отправил вендору через координированный процесс. Без пресс-конференций. Но этот пентестер юридически защищён ровно настолько, насколько у него оформлен scope. Один IP за границей договора - и ст. 272 работает против него. Законодательство РФ, как и CFAA, не различает intent: для состава достаточно факта несанкционированного доступа. Safe harbor для ответственного раскрытия в российском праве не существует. Пока эта ситуация не изменится, пентестер остаётся в зоне процедурного риска: документирование, scope, координация через CERT - не потому что идеально, а потому что альтернативы хуже. Если хочешь повторить injection-to-RCE цепочку в контролируемой инфре - лабы на HackerLab (ХакерЛаб) для этого и существуют.
Полезно

Комментарии

0