Forwarded from ESCalator
Через блокчейн к данным ⭐️
Исследователи из Socket и Checkmarx рассказали об интересной вредоносной кампании в NPM. Злоумышленники мимикрировали под плагины для Puppeteer и блокчейн-клиенты. Для получения IP-адреса актуального командного сервера используется смарт-контракт в блокчейне Ethereum😦
Из занятного — в коде библиотек используется несколько комментариев на русском:
•
•
•
Socket предлагает быть осторожным с атрибуцией, так как это может быть следствием переиспользования кода либо сделано нарочно.
В зависимости от вашей платформы будет скачан и запущен один из следующих исполняемых файлов:
Мы изучили кампанию подробнее и обнаружили еще несколько интересных деталей.
1️⃣ Несмотря на то что Socket и Checkmarx приводят только один IP-адрес в качестве сетевого IoC, функция назначения нового URL в смарт-контракте вызывалась несколько раз. Всего нам известно о пяти адресах, и самым ранним из них был😈 , остальные представляют собой VPS-серверы.
2️⃣ Агент умеет закрепляться в системе и так же, как и JS-библиотеки, скачивающие и запускающие его, получать C2 через блокчейн. Исполняемый файл представляет собой Node.js Single Executable Application, который упаковывает проект и интерпретатор JS в единый файл.
3️⃣ Агент периодически опрашивает сервер на предмет команд в виде JS-кода. Первая нагрузка собирает информацию о системе жертвы: модель процессора, количество ядер, объем оперативной памяти, данные о видеокарте. Полученная информация отправляется обратно на сервер.
4️⃣ Агенты получают просто true, если нет новых задач. Из интересного: корень HTTP-сервера возвращал следующую ошибку:
Эта строка проливает свет на возможные цели злоумышленника☕️
IoCs:
#ti #npm #pyanalysis #scs
@ptescalator
Исследователи из Socket и Checkmarx рассказали об интересной вредоносной кампании в NPM. Злоумышленники мимикрировали под плагины для Puppeteer и блокчейн-клиенты. Для получения IP-адреса актуального командного сервера используется смарт-контракт в блокчейне Ethereum
Из занятного — в коде библиотек используется несколько комментариев на русском:
•
console.error("Ошибка при получении IP адреса:", err)
;•
console.error("Ошибка при запуске файла:", _0x88fda8)
;•
console.error("Ошибка установки:", _0x14ce94)
;Socket предлагает быть осторожным с атрибуцией, так как это может быть следствием переиспользования кода либо сделано нарочно.
В зависимости от вашей платформы будет скачан и запущен один из следующих исполняемых файлов:
node-win.exe
, node-linux
, node-macos
. Ниже мы будем называть их агентами.Мы изучили кампанию подробнее и обнаружили еще несколько интересных деталей.
1️⃣ Несмотря на то что Socket и Checkmarx приводят только один IP-адрес в качестве сетевого IoC, функция назначения нового URL в смарт-контракте вызывалась несколько раз. Всего нам известно о пяти адресах, и самым ранним из них был
https://localhost:3001
2️⃣ Агент умеет закрепляться в системе и так же, как и JS-библиотеки, скачивающие и запускающие его, получать C2 через блокчейн. Исполняемый файл представляет собой Node.js Single Executable Application, который упаковывает проект и интерпретатор JS в единый файл.
3️⃣ Агент периодически опрашивает сервер на предмет команд в виде JS-кода. Первая нагрузка собирает информацию о системе жертвы: модель процессора, количество ядер, объем оперативной памяти, данные о видеокарте. Полученная информация отправляется обратно на сервер.
4️⃣ Агенты получают просто true, если нет новых задач. Из интересного: корень HTTP-сервера возвращал следующую ошибку:
{"statusCode":404,"message":"ENOENT: no such file or directory, stat '/root/botnet-server/public/index.html'"}
Эта строка проливает свет на возможные цели злоумышленника
IoCs:
https://194.53.54.188:3001
https://193.233.201.21:3001
https://45.125.67.172:1337
https://45.125.67.172:1228
194.53.54.188
193.233.201.21
45.125.67.172
#ti #npm #pyanalysis #scs
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👾5😁2
Insecure Firewall 😖
Со мной несколько раз поделились проектом Supply-Chain Firewall от команды Datadog. Делюсь своими мыслями и я :)
Проект в своей ридми заявляет следующее (ниже перевод):
Supply-Chain Firewall — это инструмент командной строки, предназначенный для предотвращения установки вредоносных пакетов из PyPI и npm. В первую очередь он рассчитан на разработчиков, чтобы защитить их рабочие станции от компрометации в результате атак на цепочку поставок.
Основная цель Supply-Chain Firewall — полностью (на 100 %) блокировать установку всех известных вредоносных пакетов, охватываемых его источниками данных.
В качестве источника они используют публичный датасет Datadog и фиды OSV.dev. Принцип заключается в том, что вы будете оборачивать команды установки пакетов с помощью pip/poetry/npm — в их тулзу:
В свою очередь
1. Проверяет версию пакетного менеджера (
2. Добавляет к оригинальной команде параметры, отвечающие за прогон без установки — режим dry-run (место в логике для npm, pip, poetry).
3. Проверяет список пакетов-кандидатов на установку в фидах.
Что делает прогон без установки?
Вроде бы из названия понятно, что пакетный менеджер как-то соберет зависимости, но не установит их. Но что будет с пакетами, содержащими preinstall- и postinstall-логику(там обычно содержатся проверки окружения, доустановка необходимых зависимостей, которые невозможно указать в манифесте, компиляция сорсов, etc.) ...
У dry-run гипотетически возможны два варианта поведения:
1. Пытается установить все пакеты во временное виртуальное окружение, запуская все установочные скрипты. Для SCFW это плохо, так как подавляющий пласт троянов исполняются как раз в install-time.
2. Игнорирует/ругается на/выкидывает исключение на скрипты. Это более безопасный, но страдающий в плане полноты зависимостей вариант.
Давайте поставим
Получается, что dry-run в случае с Python-пакетами запускает код из setup.py, вместе со всей вредоносной install-time-активностью💀
SCFW задумывается как утилита для пользователей, которые хотят убедиться в безопасности выполняемой pip/poetry/npm-команды и запускают команду на своем компьютере без обязательной изоляции окружения. К сожалению, с данной задачей она не справится. Лучше взять
Хочу напомнить важное правило: do your own research. Будьте любознательны, даже если разработчик решения убеждает, что всё под контролем😊
#pypi #npm #ti #ресерч
@disasm_me_ch
Со мной несколько раз поделились проектом Supply-Chain Firewall от команды Datadog. Делюсь своими мыслями и я :)
Проект в своей ридми заявляет следующее (ниже перевод):
Supply-Chain Firewall — это инструмент командной строки, предназначенный для предотвращения установки вредоносных пакетов из PyPI и npm. В первую очередь он рассчитан на разработчиков, чтобы защитить их рабочие станции от компрометации в результате атак на цепочку поставок.
Основная цель Supply-Chain Firewall — полностью (на 100 %) блокировать установку всех известных вредоносных пакетов, охватываемых его источниками данных.
В качестве источника они используют публичный датасет Datadog и фиды OSV.dev. Принцип заключается в том, что вы будете оборачивать команды установки пакетов с помощью pip/poetry/npm — в их тулзу:
scfw run pip install hello_world
scfw run poetry install hello_world
scfw run npm install hello_world
В свою очередь
scfw
:1. Проверяет версию пакетного менеджера (
npm >= 7.0.0
, pip >= 22.2
, poetry >= 1.7.0
).2. Добавляет к оригинальной команде параметры, отвечающие за прогон без установки — режим dry-run (место в логике для npm, pip, poetry).
3. Проверяет список пакетов-кандидатов на установку в фидах.
Что делает прогон без установки?
Вроде бы из названия понятно, что пакетный менеджер как-то соберет зависимости, но не установит их. Но что будет с пакетами, содержащими preinstall- и postinstall-логику
У dry-run гипотетически возможны два варианта поведения:
1. Пытается установить все пакеты во временное виртуальное окружение, запуская все установочные скрипты. Для SCFW это плохо, так как подавляющий пласт троянов исполняются как раз в install-time.
2. Игнорирует/ругается на/выкидывает исключение на скрипты. Это более безопасный, но страдающий в плане полноты зависимостей вариант.
Давайте поставим
yandex-baobab-api
— этот пакет вызывает исключение при попытке его установить. Итог:(testvenv) $ scfw run pip install yandex-baobab-api
Collecting yandex-baobab-api
Using cached yandex-baobab-api-66.0.3.tar.gz (1.1 kB)
Preparing metadata (setup.py) ... done
Building wheels for collected packages: yandex-baobab-api
Building wheel for yandex-baobab-api (setup.py) ... error
error: subprocess-exited-with-error
...
File "/tmp/pip-install-.../yandex-baobab-api_.../setup.py", line 7, in run
raise RuntimeError("You are trying to install a stub package yandex-baobab-api. Maybe you are using the wrong pypi?")
RuntimeError: You are trying to install a stub package yandex-baobab-api. Maybe you are using the wrong pypi?
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for yandex-baobab-api
Running setup.py clean for yandex-baobab-api
Failed to build yandex-baobab-api
ERROR: Failed to build installable wheels for some pyproject.toml based projects (yandex-baobab-api)
Получается, что dry-run в случае с Python-пакетами запускает код из setup.py, вместе со всей вредоносной install-time-активностью
SCFW задумывается как утилита для пользователей, которые хотят убедиться в безопасности выполняемой pip/poetry/npm-команды и запускают команду на своем компьютере без обязательной изоляции окружения. К сожалению, с данной задачей она не справится. Лучше взять
osv-scanner
, обернуть в контейнер и сканировать зависимости с его помощью.Хочу напомнить важное правило: do your own research. Будьте любознательны, даже если разработчик решения убеждает, что всё под контролем
#pypi #npm #ti #ресерч
@disasm_me_ch
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8😁3🤬1
Обучаемся секьюрной разработке 😼
Хорошие новости: меня позвали рассказать интересности в рамках позитивного практикума AppSec для инженеров.
Практикум будет полезен DevOps-инженерам и программистам, которые заинтересованы в настройке процессов безопасной разработки. Во время подготовки материала я прошелся по курсу и нахожу его полезным для людей, кто очень хочет настроить адекватный поиск уязвимостей с использованием актуальных практик так, чтобы устранение проблем было не таким болезненным👀
В одном из блоков третьей недели я покрою вопросы, котором часто не уделяют внимание при внедрении security-инструментов: кто поставляет информацию об уязвимых компонентах, почему эти люди решили помогать мировому комьюнити в данном нелегком пути и каковы качество и полнота этих фидов.
Программа длится 6 недель и стартует уже 30 июня☕️
#курсы #appsec #supplychain #pypi #npm
@disasm_me_ch
Хорошие новости: меня позвали рассказать интересности в рамках позитивного практикума AppSec для инженеров.
Практикум будет полезен DevOps-инженерам и программистам, которые заинтересованы в настройке процессов безопасной разработки. Во время подготовки материала я прошелся по курсу и нахожу его полезным для людей, кто очень хочет настроить адекватный поиск уязвимостей с использованием актуальных практик так, чтобы устранение проблем было не таким болезненным
В одном из блоков третьей недели я покрою вопросы, котором часто не уделяют внимание при внедрении security-инструментов: кто поставляет информацию об уязвимых компонентах, почему эти люди решили помогать мировому комьюнити в данном нелегком пути и каковы качество и полнота этих фидов.
Программа длится 6 недель и стартует уже 30 июня
#курсы #appsec #supplychain #pypi #npm
@disasm_me_ch
Please open Telegram to view this post
VIEW IN TELEGRAM
Ptsecurity
Безопасность приложений: практикум для инженеров
Запишитесь на практикум 'Безопасность приложений: практикум для разработчиков' от Positive Technologies! Узнайте, как защитить свои приложения от угроз и уязвимостей, получая практические навыки и знания от экспертов в области ИБ.
10 9