Linux-руткит Diamorphine стал маскироваться под Netfilter Xtables

Linux-руткит Diamorphine стал маскироваться под Netfilter Xtables

Linux-руткит Diamorphine стал маскироваться под Netfilter Xtables

Исследователи из Avast обнаружили новый вариант руткита режима ядра Diamorphine, известного своим умением прятаться. Вредонос выдает себя за легитимный модуль x_tables фреймворка Netfilter и заточен под Linux 5.19.17.

Имитация Xtables делает Diamorphine еще более незаметным: регистрация хуков Netfilter не вызывает подозрений, и взаимодействие с этой подсистемой — ожидаемое поведение. Анализ семпла также выявил дополнительные функции: завершение работы и выполнение произвольных системных команд с помощью магических пакетов.

При выполнении функции init_module (вызывается при загрузке модулей ядра) обновленный зловред создает компонент xx_tables для коммуникаций между пространством режима пользователя и руткитом ядра.

Последний при этом всегда проверяет содержимое ввода (поля длины и указателя данных должны быть заполнены). При обнаружении строки «exit» вызывается exit_ function, и Diamorphine восстанавливает систему, освобождает ресурсы и выгружает из памяти свой модуль ядра.

Функциональность Magic Packet тоже помогает поддерживать иллюзию работы Netfilter. Для правдоподобия такой пакет (Pv4 или IPv6) должен содержать зашифрованные (XOR) значения «whitehat» и «2023_mn»; в этом случае включенная в него команда будет извлечена и выполнена на зараженном компьютере.

 

Классический руткит Diamorphine поддерживает различные версии ядра Linux (2.6.x, 3.x, 4.x, 5.x, 6.x) и архитектуры CPU (x86, x86_64, ARM64). При загрузке модуль становится невидимым и скрывает все свои файлы и папки с префиксом, заданным при компиляции (имитатор Xtables использует «…»).

По команде вредонос может скрывать / выявлять указанные процессы, свой модуль ядра, а также повышать свои привилегии до root.

Новый вариант был обнаружен в дикой природе в начале марта этого года. По состоянию на 20 июня его детектируют 13 из 62 антивирусов на VirusTotal.

Расширения 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