banner
Центр новостей
Мгновенная доставка

Злоумышленники используют скомпилированный байт-код Python, чтобы избежать обнаружения

Oct 03, 2023

Люциан Константин

CSO Старший писатель, CSO |

Злоумышленники, нацеленные на репозитории пакетов с открытым исходным кодом, такие как PyPI (Python Package Index), разработали новую технику сокрытия своего вредоносного кода от сканеров безопасности, ручных проверок и других форм анализа безопасности. В одном случае исследователи обнаружили вредоносный код, спрятанный внутри файла байт-кода Python (PYC), который может быть выполнен напрямую, в отличие от файлов исходного кода, которые интерпретируются средой выполнения Python.

«Это может быть первая атака на цепочку поставок, в которой используется тот факт, что файлы байт-кода Python могут быть выполнены напрямую, и она происходит на фоне всплеска вредоносных сообщений в индексе пакетов Python», — говорится в отчете исследователей из охранной компании ReversingLabs. «Если это так, то это создает еще один риск для цепочки поставок в будущем, поскольку этот тип атаки, скорее всего, будет пропущен большинством инструментов безопасности, которые сканируют только файлы исходного кода Python (PY)».

Подавляющее большинство пакетов, найденных в общедоступных репозиториях, таких как npm для JavaScript, PyPI для Python и RubyGems для Ruby, состоят из файлов с открытым исходным кодом, упакованных в архивы. Их легко распаковывать и читать, поэтому сканеры безопасности для этих репозиториев были созданы для обработки такого типа упаковки.

Злоумышленники постоянно борются с охранными компаниями, чтобы избежать обнаружения, и наиболее распространенным методом уклонения, когда дело касается открытого текстового кода, является запутывание. Это заключается в использовании функций самого языка программирования, таких как кодирование, декодирование или оценка, чтобы сделать код нечитаемым, но функциональным. Например, кодирование вредоносного кода в base64 является широко используемым методом, но инструменты безопасности могут справиться с таким кодированием.

В экосистеме PyPI киберпреступники, стоящие за вредоносным ПО W4SP Stealer, известны тем, что используют такие методы, как кодирование base64, сжатие LZMA и минимизацию — удаление пробелов и комментариев из кода, чтобы сделать его более компактным, но при этом труднее для чтения. Для этого группа использует некоторые сторонние инструменты с открытым исходным кодом, такие как pyminifier, Kramer или Hyperion. В одном из вариантов атак W4SP замаскированный вредоносный код в файлах был смещен за пределы границ экрана по умолчанию, так что кто-то, вручную просматривающий файл исходного кода, не мог его увидеть.

Однако файлы PYC разные. Они не читабельны для человека, как текстовые сценарии PY. Файлы PYC генерируются, когда интерпретатор Python импортирует или выполняет сценарий Python. Поскольку они уже представляют собой интерпретированный (скомпилированный) код, позже они могут быть выполнены непосредственно интерпретатором Python без повторной интерпретации исходного сценария. Это помогает повысить производительность, поскольку время выполнения сокращается, а такие файлы чаще всего используются при распространении модулей Python.

В большинстве случаев вредоносного ПО PyPI вредоносный запутанный код предназначен для обращения к внешнему URL-адресу и загрузки вредоносного ПО (обычно похитителя информации), что дает инструментам безопасности еще одну возможность обнаружить подозрительное поведение. В этом последнем инциденте, когда был обнаружен пакет под названием fshec2, содержащий вредоносный файл PYC, вся вредоносная полезная нагрузка может быть скрыта внутри файла, и его гораздо сложнее обнаружить, если инструмент безопасности не предназначен для его декомпиляции.

«Скрипты-загрузчики, подобные обнаруженным в пакете fshec2, содержат минимальное количество кода Python и выполняют простое действие: загрузку скомпилированного модуля Python», — говорят исследователи ReversingLabs. «Просто это вредоносный модуль. Inspector, инструмент по умолчанию, предоставляемый командой безопасности PyPI для анализа пакетов PyPI, на данный момент не предоставляет никакого способа анализа двоичных файлов для выявления вредоносного поведения. Скомпилированный код из Файл .PYC необходимо было декомпилировать, чтобы проанализировать его содержимое».