Вредоносный клон aiohttp: httpserver-cache, извлечение ключа по имени файла

Технический анализ выявил вредоносный клон библиотеки aiohttp, распространяемый под вариантом httpserver-cache. Особое внимание привлек файл connector.py, в котором обнаружены заметные отклонения от оригинальной реализации и реализован необычный механизм обработки ключей шифрования в функции mar.

Краткие выводы

  • Вредоносный модуль извлекает ключ шифрования не из кода, а из имени файла одного из установленных модулей: вместо прямой инжекции ключа он сохраняет хэш и перебирает доступные модули для поиска соответствия.
  • Такой подход делает ключ легко воспроизводимым при анализе локальной установки (в т.ч. при изучении модулей стандартной библиотеки Python), что упрощает смягчение последствий.
  • Несмотря на успешную загрузку вредоносного ПО и расшифровку полезной нагрузки, при тестировании в изолированных средах Linux и Windows не было зафиксировано заметного вредоносного поведения.
  • Модуль загружался, но не экспортировал функций — это указывает на возможную нефункциональность полезной нагрузки, её состояние «спящей» или на попытку избежать немедленного обнаружения.
  • Кампания использовала тактику typosquatting: обнаружено пять пакетов с незначительными вариациями в названиях. Все идентифицированные пакеты были удалены или помещены в карантин из репозиториев.
  • Ситуация подчёркивает сохраняющуюся уязвимость цепочек поставок ПО и необходимость повышенной бдительности.

Технические детали: как реализован механизм ключа

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

  • В коде сохраняется хэш ожидаемого ключа.
  • Далее выполняется итерация по именам установленных модулей в окружении — сравниваются хэши имён файлов модулей с сохранённым хэшем.
  • При совпадении имя файла выступает источником реального ключа.

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

Поведение полезной нагрузки в тестах

Анализ расшифрованной полезной нагрузки показал отсутствие observable effects в тестовых средах на Linux и Windows. Вредоносный код загружался в память, однако не экспортировал функций и не проявлял активной вредоносной деятельности.

Возможные объяснения:

  • полезная нагрузка намеренно бездействует до получения внешнего сигнала (C2) или определённых условий среды;
  • релиз кода был неполнофункционален или ошибочен;
  • механизмы эваздисации/антианализ включают детектирование песочницы и отключение действий.

Кампания и тактика распространения

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

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

Рекомендации по защите

  • Тщательно проверяйте имена пакетов при установке: обращайте внимание на орфографию и подозрительные вариации.
  • Используйте фиксированные зависимости (pinning) и lock-файлы для воспроизводимости окружения.
  • Ограничьте установку пакетов в production-окружение и применяйте allowlist/denylist для внешних репозиториев.
  • Проводите регулярный аудит установленных пакетов и их файловых имён в виртуальных окружениях.
  • Применяйте инструменты для сканирования зависимостей и уязвимостей (например, pip-audit, Dependabot) и анализируйте подозрительные пакеты в изолированных sandboxes.
  • Мониторьте поведение пакетов в рантайме — особенно импорт модулей с необычными именами и динамическую загрузку кода.
  • При возможности используйте проверку подписей пакетов и источников поставки (supply chain provenance).

Заключение

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

Цитата из анализа:

«ключ извлекается из имени файла одного из установленных модулей»

Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.

Ознакомиться подробнее с отчетом можно по ссылке.

Технологии киберугроз
Автор: Технологии киберугроз
Технологии киберугроз – технологическая компания, специализирующаяся на решениях по анализу угроз для предприятий любого размера. Мы собираем, нормализуем, обогащаем информацию о киберугрозах со всего мира. Нашими источниками являют более 260 открытых фидов, более 100 открытых поставщиков Threat Intelligence-отчетов, открытые online sandbox, социальные сети и репозитории GitHub. Мы также предоставляем ряд сервисов по: семантическом анализу Threat Intelligence-отчетов и приведения их в машиночитаемый формат STIX 2.1, проверки IoC на потенциальные ложноположительные сработки, а также получению WHOIS-записей для доменных имен.
Комментарии: