Дослідження ESET виявили кластер шкідливих проектів Python, які поширюються в PyPI, офіційне сховище пакетів Python. Загроза націлена як на системи Windows, так і на Linux і зазвичай створює спеціальний бекдор. У деяких випадках кінцеве корисне навантаження є варіантом сумно відомого Викрадач W4SP, або простий монітор буфера обміну для крадіжки криптовалюти, або обидва. У травні 2023 року ми повідомляє на іншому кластері пакетів, які ми знайшли на PyPI, які доставляють зловмисне програмне забезпечення для крадіжки паролів і криптовалюти, але ці два кластери, здається, є різними кампаніями.
Ключові моменти цього блогу:
- Дослідження ESET виявили 116 шкідливих пакетів у PyPI, офіційному сховищі програмного забезпечення для мови програмування Python, завантажених у 53 проекти.
- Жертви завантажили ці пакети понад 10,000 XNUMX разів.
- З травня 2023 року швидкість завантаження становить приблизно 80 на день.
- Зловмисне програмне забезпечення забезпечує бекдор, здатний віддалено виконувати команди, викрадати та робити знімки екрана.
- Компонент бекдор реалізовано як для Windows, у Python, так і для Linux, у Go.
- У деяких випадках замість нього постачається W4SP Stealer або монітор буфера обміну, який викрадає криптовалюту, або обидва.
PyPI популярний серед програмістів Python для обміну та завантаження коду. Оскільки будь-хто може внести свій внесок у сховище, зловмисне програмне забезпечення – іноді видаючи себе за законні, популярні бібліотеки коду – може з’явитися там. Ми знайшли 116 файлів (дистрибутиви джерел і колеса) з 53 проектів, які містять зловмисне програмне забезпечення. Назви деяких пакетів справді схожі на інші легітимні пакети, але ми вважаємо, що потенційні жертви встановлюють їх головним чином не за допомогою тиражу, а соціальної інженерії, за допомогою якої жертви перевіряються. pip install {package-name} мати можливість використовувати «цікавий» пакет з будь-якої причини.
За минулий рік жертви завантажили ці файли більше 10,000 1 разів; дивіться малюнок XNUMX.
Зараження PyPI
Пакети PyPI можуть мати дві форми: вихідні пакунки, які містять увесь вихідний код проекту та створюються під час інсталяції, і попередньо зібрані пакунки (так звані колеса), який може містити скомпільовані модулі для певної операційної системи або версії Python. Цікаво, що в деяких випадках код Python у вихідному дистрибутиві відрізняється від вбудованого дистрибутива. Перший є чистим, а другий містить шкідливий код. Менеджер пакетів Python, типун, надає перевагу колесу, коли воно доступне, а не джерельному розподілу. У результаті встановлюється зловмисник, якщо інше не вказано явно.
Ми спостерігали, як оператори, що стоять за цією кампанією, використовують три методи для включення шкідливого коду в пакети Python.
Шкідливий модуль test.py
Перший прийом полягає в тому, щоб розмістити «тестовий» модуль із злегка заплутаним кодом всередині пакета. На малюнку 2 показано a test.py файл із функцією під назвою graby визначається, а потім викликається. Зауважте, що функція працює як з системами Windows, так і з Linux.
Цей тестовий модуль імпортовано в середині вихідного коду основного модуля пакета (__init__.py), щоб шкідливий код запускався щоразу, коли пакет імпортується. На рисунку 3 показано модуль, який маскується під скріншот і імпортує зловмисник test.py.
PowerShell у файлі setup.py
Друга техніка полягає у вбудовуванні коду PowerShell у setup.py файл, який зазвичай автоматично запускається менеджерами пакетів, такими як типун щоб допомогти встановити проекти Python.
На малюнку 4 показано сценарій PowerShell, який завантажує та виконує наступний етап.
Цей сценарій PowerShell завантажується передача[.]sh/eyRyPT/Updater.zip у тимчасовий каталог як update.zip. Потім сценарій розпаковує ZIP-файл у C: ProgramData і видаляє його з тимчасового каталогу. Далі сценарій запускає типун програма для встановлення залежностей. Нарешті, він запускає код Python C:ProgramDataUpdaterserver.pyw.
Ця техніка працює лише в Windows і не заражає системи Linux.
У метаданих пакета на малюнку 4 ви, можливо, помітили, що автором пакета є billythegoat356. Було багато повідомлень, які пов’язували цей псевдонім зі зловмисною діяльністю, зокрема стаття з Phylum, де вони розкривають потенційний зв’язок Біллі з W4SP Stealer.
Просто зловмисне програмне забезпечення…
У третій техніці оператори не докладають зусиль для включення законного коду в пакет, так що присутній лише шкідливий код у злегка заплутаній формі. На малюнку 5 показано дві частини шкідливого коду для Windows, які записуються в тимчасові файли, а потім запускаються з ними pythonw.exe, який використовується замість python.exe так що код виконується без відкриття вікна консолі.
Наступним етапом є пакети Python, сценарії або двійкові файли, завантажені з Dropbox або передача.ш.
Наполегливість
У Windows постійність у більшості випадків досягається за допомогою a Кодування VBScript (VBE), який є закодованим файлом VBScript, у який записується %APPDATA%/Pythonenv/pythenenv.vbe. Малюнок 6 показує cmd.exe приховування каталогу %APPDATA%/Pythonenv, біг pythenenv.vbe, а потім запланувати виконання файлу VBE кожні п’ять хвилин у рамках завдання MicrosoftWinRaRUtilityTaskB.
У Linux стійкість досягається шляхом розміщення шкідливого запис на робочому столі, mate-user-share.desktop, В ~ / .config / автозапуск / каталогу, як показано на малюнку 7 . Файли, розташовані в автозапуск каталогу виконуються під час кожного запуску системи. Запис на робочому столі використовує ім’я a MATE підпроект за назву файлу, але це лише для того, щоб зменшити підозри, оскільки це не має нічого спільного з середовищем робочого столу.
На рисунку 7 також показано завантаження модулів dl.dropbox[.]com/s/u3yn2g7rewly4nc/proclean до ~/.config/.kde/.kdepath. Ймовірно, це спроба уособити каталог конфігурації для KDE Графічний інтерфейс Плазми для Linux.
Запуск mate-user-share.desktop файл, у свою чергу, виконує завантажений .kdepath файл, який є виконуваним файлом Linux, що містить бекдор-компонент.
Остаточне корисне навантаження
Як правило, остаточне корисне навантаження – це спеціальний бекдор, який дозволяє віддалено виконувати команди, викрадати файли та іноді включає можливість робити знімки екрана. У Windows бекдор реалізовано на Python.
На малюнку 8 показано бекдор, який створює підключення до TCP-сокета blazywound.ignorelist[.]com на порт 6001. Після надсилання імені хоста, MAC-адреси та імені користувача на сервер C&C бекдор безпосередньо оброблятиме деякі команди або виконуватиме будь-яку іншу команду в окремому процесі та надсилатиме на сервер вихідні дані команди та будь-яку інформацію про помилки.
У Linux бекдор реалізований у Go; див. малюнок 9.
У деяких випадках замість бекдора корисне навантаження є варіантом сумнозвісного Викрадач W4SP, або простий монітор буфера обміну, який краде криптовалюту, або обидва. На малюнку 10 показано монітор буфера обміну, націлений на криптовалюти Bitcoin, Ethereum, Monero та Litecoin. Зловмисне програмне забезпечення використовує законні pyperclip пакет для перевірки вмісту буфера обміну для адрес гаманців. У разі виявлення зловмисне програмне забезпечення копіює контрольовану зловмисником адресу в буфер обміну в надії, що жертва вставить цю адресу замість майбутньої транзакції криптовалюти.
Продукти ESET виявляють шкідливі пакети Python як варіанти Python/Agent і Python/TrojanDownloader, а бекдор — як Python/Agent.AOY або Linux/Spy.Agent.BB.
Більшість пакетів уже було видалено PyPI на момент цього дослідження. ESET зв’язалася з PyPI, щоб вжити заходів проти решти, і всі відомі шкідливі пакети тепер офлайн. Повний список із 116 пакетів можна знайти в нашому GitHub сховище.
Варто зазначити, що зловмисне програмне забезпечення в сховищі проекту PyPI не є проблемою безпеки самого PyPI. Насправді програмне забезпечення, на якому працює PyPI нещодавно перевірено сторонньою фірмою, яка оцінила, що PyPl «відповідає загальноприйнятим найкращим практикам».
Висновок
Кібератаки продовжують зловживати PyPI, щоб компрометувати пристрої програмістів Python. Ця кампанія демонструє різноманітні методи, які використовуються для включення зловмисного програмного забезпечення в пакети Python. Розробники Python повинні ретельно перевіряти код, який вони завантажують, особливо перевіряючи ці техніки, перед тим інсталювати його у своїх системах. Окрім продовження зловживання W4SP Stealer з відкритим кодом, оператори також розгорнули простий, але ефективний бекдор. Ми очікуємо, що таке зловживання PyPI продовжуватиметься, і радимо бути обережними під час встановлення коду з будь-якого загальнодоступного сховища програмного забезпечення.
З будь-якими запитами щодо нашого дослідження, опублікованого на WeLiveSecurity, зв’яжіться з нами за адресою prijetintel@eset.com.
ESET Research пропонує приватні звіти APT та канали даних. Якщо у вас є запитання щодо цієї послуги, відвідайте ESET Threat Intelligence стр.
IoCs
Файли
SHA-1 |
ім'я файлу |
Виявлення |
Опис |
439A5F553E4EE15EDCA1CFB77B96B02C77C5C388 |
cache.py |
Python/Agent.AGL |
Завантажувач бекдорів Linux.. |
B94E493579CC1B7864C70FAFB43E15D2ED14A16B |
coloramma-0.5.4-py3-none-any.whl |
Python/Agent.AGU |
Пакет із бекдор-інсталятором Linux. |
AE3072A72F8C54596DCBCDE9CFE74A4146A4EF52 |
coloramma-4.5-py3-none-any.zip |
Python/Agent.AOY |
Пакет з бекдором Windows. |
70C271F79837B8CC42BD456A22EC51D1261ED0CA |
junk.py |
Python/Agent.AGM |
Постійний інсталятор Windows. |
B0C8D6BEEE80813C8181F3038E42ADACC3848E68 |
очистити |
Linux/Spy.Agent.BB |
Linux бекдор. |
07204BA8D39B20F5FCDB9C0242B112FADFFA1BB4 |
пров.пи |
Python/Agent.AGL |
Завантажувач бекдорів Linux. |
EF59C159D3FD668C3963E5ADE3C726B8771E6F54 |
tmp |
Linux/Spy.Agent.BB |
Linux бекдор. |
Щоб отримати повний список шкідливих пакетів, перегляньте наш GitHub сховище malware-ioc.
мережу
Доменне ім'я |
IP-адреса |
Перший побачений |
Опис |
blazywound.ignorelist[.]com |
204.152.203[.]78 |
2022-11-21 |
C&C сервер для бекдор компонента. |
Методи MITER ATT & CK
Ця таблиця була побудована за допомогою версія 14 рамки MITER ATT & CK.
Тактика |
ID |
ІМ'Я |
Опис |
Початковий доступ |
Порушення ланцюга постачання: Порушення програмних залежностей та інструментів розробки |
Зловмисне програмне забезпечення поширюється за допомогою служби керування пакетами PyPl Python. |
|
Наполегливість |
Запланована задача/завдання: запланована задача |
У Windows постійність досягається за допомогою запланованого завдання. |
|
Виконання автозапуску при завантаженні або вході: записи автозапуску XDG |
У Linux запис автозапуску створюється для запуску бекдору, коли користувач входить в систему. |
||
Ухилення від захисту |
Маскування: Знайдіть відповідне законне ім’я чи місцезнаходження |
У Linux постійні файли мають назви, подібні до законного програмного забезпечення |
|
Доступ до облікових даних |
Облікові дані зі сховищ паролів: облікові дані з веб-браузерів |
W4SP викрадає паролі від встановлених веб-браузерів. |
|
COLLECTION |
Дані буфера обміну |
Для викрадення коштів під час операції з криптовалютою дані буфера обміну замінюються. |
|
Управління та контроль |
Протокол не прикладного рівня |
Бекдор використовує незашифрований бінарний протокол через TCP. |
- Розповсюдження контенту та PR на основі SEO. Отримайте посилення сьогодні.
- PlatoData.Network Vertical Generative Ai. Додайте собі сили. Доступ тут.
- PlatoAiStream. Web3 Intelligence. Розширення знань. Доступ тут.
- ПлатонЕСГ. вуглець, CleanTech, Енергія, Навколишнє середовище, Сонячна, Поводження з відходами. Доступ тут.
- PlatoHealth. Розвідка про біотехнології та клінічні випробування. Доступ тут.
- джерело: https://www.welivesecurity.com/en/eset-research/pernicious-potpourri-python-packages-pypi/
- : має
- :є
- :де
- 000
- 1
- 10
- 116
- 14
- 152
- 2023
- 7
- 8
- 80
- 9
- a
- здатність
- Здатний
- МЕНЮ
- зловживання
- прийнятий
- досягнутий
- дію
- діяльності
- адреса
- адреси
- радити
- після
- проти
- Агент
- ВСІ
- дозволяє
- вже
- Також
- серед
- an
- та
- Інший
- будь-який
- будь
- з'являтися
- APT
- ЕСТЬ
- AS
- оцінюється
- At
- автор
- автоматично
- доступний
- назад
- закулісний
- BE
- оскільки
- було
- за
- буття
- Вірити
- КРАЩЕ
- Біткойн
- обидва
- браузери
- побудований
- Пакет
- але
- by
- званий
- Кампанія
- Кампанії
- CAN
- здатний
- випадків
- обережність
- ланцюг
- перевірка
- контроль
- очистити
- кластер
- код
- COM
- спілкувалися
- скомпільований
- компонент
- компроміс
- конфігурація
- зв'язку
- Консоль
- контакт
- містити
- містить
- зміст
- продовжувати
- триває
- триває
- сприяти
- створений
- створення
- Повноваження
- cryptocurrencies
- криптовалюта
- виготовлений на замовлення
- дані
- день
- певний
- поставляється
- постачає
- залежно
- розгорнути
- робочий стіл
- виявляти
- розробників
- розробка
- прилади
- різний
- безпосередньо
- відкритий
- дисплеїв
- розподілений
- розподіл
- Розподілу
- do
- вниз
- скачати
- Завантаження
- завантажень
- Dropbox
- під час
- кожен
- Ефективний
- зусилля
- або
- Вставляти
- вбудований
- Машинобудування
- запис
- Навколишнє середовище
- помилка
- особливо
- Ефіріума
- Кожен
- виконано
- Виконує
- виконання
- ексфільтрація
- очікувати
- явно
- зовнішній
- факт
- FAIL
- милостей
- Рисунок
- філе
- Файли
- остаточний
- в кінці кінців
- Фірма
- Перший
- п'ять
- для
- форма
- Колишній
- форми
- знайдений
- Рамки
- від
- Повний
- функція
- засоби
- майбутнє
- GitHub
- Go
- обробляти
- Ручки
- Мати
- допомога
- надія
- HTTPS
- if
- зображення
- реалізація
- реалізовані
- імпорт
- імпорт
- in
- включати
- includes
- У тому числі
- ганебний
- інформація
- Запити
- всередині
- встановлювати
- установка
- встановлений
- установка
- замість
- Інтелект
- в
- питання
- IT
- ЙОГО
- сам
- відомий
- мова
- запуск
- шар
- законний
- менше
- libraries
- злегка
- LINK
- Linux
- список
- Litecoin
- розташований
- подивитися
- макінтош
- головний
- зробити
- шкідливих програм
- управління
- менеджер
- Менеджери
- матч
- Може..
- середа
- метадані
- Середній
- хвилин
- Модулі
- Модулі
- Monero
- монітор
- більше
- найбільш
- ім'я
- Імена
- наступний
- немає
- нічого
- Зверніть увагу..
- відзначивши,
- зараз
- численний
- of
- Пропозиції
- офіційний
- offline
- on
- ONE
- ті,
- тільки
- з відкритим вихідним кодом
- відкриття
- операційний
- операційна система
- Оператори
- or
- Інше
- інакше
- наші
- вихід
- над
- пакет
- пакети
- сторінка
- Пароль
- Паролі
- Минуле
- для
- наполегливість
- частин
- місце
- розміщення
- Плазма
- plato
- Інформація про дані Платона
- PlatoData
- будь ласка
- точок
- популярний
- потенціал
- PowerShell
- представити
- приватний
- ймовірно
- процес
- Продукти
- Програмісти
- Програмування
- проект
- проектів
- протокол
- громадськість
- опублікований
- PYPL
- Python
- ставка
- швидше
- причина
- зменшити
- решті
- віддалений
- замінити
- Звіти
- Сховище
- дослідження
- результат
- показувати
- прогін
- біг
- пробіжки
- плановий
- планування
- скріншоти
- сценарій
- scripts
- другий
- безпеку
- побачити
- бачив
- послати
- відправка
- окремий
- сервер
- обслуговування
- установка
- поділ
- Повинен
- Шоу
- аналогічний
- простий
- з
- So
- соціальна
- Соціальна інженерія
- Софтвер
- деякі
- іноді
- Source
- вихідні
- конкретний
- Стажування
- етапи
- введення в експлуатацію
- крадеться
- магазинів
- такі
- система
- Systems
- таблиця
- Приймати
- прийняті
- взяття
- націлювання
- цілі
- Завдання
- техніка
- методи
- тимчасовий
- тест
- ніж
- Що
- Команда
- Джерело
- їх
- потім
- Там.
- Ці
- вони
- третій
- це
- ретельно
- загроза
- три
- через
- час
- times
- до
- угода
- ПЕРЕГЛЯД
- два
- типово
- при
- завантажено
- на
- us
- використання
- використовуваний
- користувач
- використовує
- використання
- зазвичай
- варіант
- різноманітність
- версія
- ПТО
- через
- Жертва
- жертви
- візит
- пішов
- Wallet
- було
- шлях..
- we
- Web
- Веб-браузери
- ДОБРЕ
- були
- будь
- Колесо
- коли
- коли б ні
- який
- в той час як
- широко
- ширина
- волі
- вікно
- windows
- з
- без
- працює
- вартість
- письмовий
- рік
- Ти
- зефірнет
- Zip