Дефектный шифратор Linux-версии Cl0p позволил экспертам создать декриптор

Дефектный шифратор Linux-версии Cl0p позволил экспертам создать декриптор

Дефектный шифратор Linux-версии Cl0p позволил экспертам создать декриптор

У шифровальщика Cl0p, атакующего Windows-машины, появился брат-близнец, совместимый с Linux. Новинка оказалась совсем сырой: в ней отсутствуют некоторые прежние функции, а схема шифрования пока слаба и допускает восстановление файлов.

Образец, подвергнутый анализу в SentinelOne, был обнаружен в конце декабря в ходе вымогательских атак на учебные заведения Колумбии. Злоумышленники использовали его вместе с Windows-версией Cl0p.

Как выяснилось, вирусописатели не стали портировать зловреда на Linux, а создали кастомную сборку. Новобранец использует тот же алгоритм шифрования (RC4), что и Windows-версия, и почти ту же логику, но начисто лишен механизмов самозащиты. Несмотря на это, он пока плохо детектится — его распознают лишь 2 антивируса из 63 на VirusTotal (по состоянию на 7 февраля).

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

 

При поиске объектов для шифрования Linux-версия Cl0p не перечисляет диски, а использует небольшой список целевых папок, вшитый в код. Этот перечень включает /home, /root, /opt и папки с файлами базы данных Oracle (/u01 – /u04). В настоящее время имя Oracle редко встретишь среди целей Linux-шифровальщиков, они скорее будут интересоваться содержимым виртуальных машин VMware ESXi.

В новом Cl0p отсутствует поддержка алгоритмов хеширования, позволяющая делать исключения для некоторых файлов и папок. Исследователи также не нашли вшитого списка исключений, механизма дифференциации обработки файлов разного веса, параметров командной строки, позволяющих управлять процессом шифрования.

Текущая Linux-версия не применяет RSA, чтобы скрыть RC4-ключи, используемые для шифрования файлов. Зловреду вшили в код мастер-ключ RC4, который он использует и для генерации ключей, и для их защиты, сохраняя итоги локально.

 

Более того, сгенерированный ключ RC4 не проверяется перед шифрованием (в Windows-версии такая проверка присутствует). Отсутствие адекватной защиты ключей позволяет без особых усилий добыть их и использовать для расшифровки, что и сделали исследователи, ускорив процесс с помощью Python-скрипта.

Созданный декриптор передан правоохранительным органам для оказания помощи жертвам заражения. Спасительный инструмент также выложили в общий доступ на GitHub.

Расширения Chrome могут слить секреты URL через атаку по стороннему каналу

Как оказалось, расширения Chrome можно использовать для слива кодов авторизации, сеансовых ID и других секретов из URL любой открытой вкладки. Никаких специальных разрешений для этого не понадобится, только доступ к declarativeNetRequest API.

Этот механизм, пришедший на смену webRequest API, позволяет расширениям сообщать браузеру, что следует изменить или заблокировать на загружаемой странице (заголовки, реклама, трекеры).

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

Исследователь Луан Эррера (Luan Herrera) обнаружил, что блокировку, диктуемую правилами, Chrome производит почти мгновенно, за 10-30 мс, а остальные запросы выполняются дольше (~50-100ms) — из-за сетевых подключений. Эту разницу во времени расширение может использовать для бинарного поиска с целью посимвольного слива URL.

// extensions/browser/api/web_request/extension_web_request_event_router.cc:1117-1127
case DNRRequestAction::Type::BLOCK:
  ClearPendingCallbacks(browser_context, *request);
  DCHECK_EQ(1u, actions.size());
  OnDNRActionMatched(browser_context, *request, action);
  return net::ERR_BLOCKED_BY_CLIENT;

Оракул для подобной тайминг-атаки строится с использованием chrome.tabs.reload для перезагрузки страницы и перехватчика chrome.tabs.onUpdated, помогающего отследить событие status === "complete". Замер времени между reload и завершением загрузки покажет, заблокирован запрос или успешно обработан.

Повторение проверок и бинарного поиска позволяет получить полный URL (с довеском после «?»), затратив на каждый знак строки несколько прогонов. Таким образом, можно незаметно для пользователя украсть включенные приложением в адрес секреты — токены OAuth и сброса пароля, API-ключи, ссылки на контент, закрытый для поисковых систем.

Проверка PoC проводилась на Windows 11 24H2 с использованием Chrome разных версий:

  • 144.0.7559.97 (Stable)
  • 145.0.7632.18 (Beta)
  • 146.0.7647.4 (Dev)
  • 146.0.7653.0 (Canary)

В Google подтвердили возможность подобной атаки по стороннему каналу, но заявили, что решить проблему нереально.

RSS: Новости на портале Anti-Malware.ru