Инструменты для работы с Python 😦
Злоумышленники не стесняются использовать Python для своих целей. LazyStealer, упакованная PyInstaller, Python-бэкдор в ShadowPad и модули для Pupy RAT тому доказательство. Кроме того, задачи на снятие пакеров с дальнейшим исследованием встречаются на соревнованиях capture the flag.
Команда Supply Chain Security собрала памятку по работе с инструментами
PyInstaller
Один из самых популярных инструментов для упаковывания проекта в исполняемый файл под Windows, Linux, macOS. Библиотеки, относящиеся к проекту, дополнительно сериализуются с помощью стандартной библиотеки marshal в PYZ-файл.
Для работы с PyInataller можно использовать один из первых проектов — pyinstxtractor. Marshal не реализует обратную совместимость между своими версиями, поэтому для распаковки PYZ-файла pyinstxtractor требует запуска на той версии Python, которой был упакован PyInstaller.
Решает этот нюанс pyinstxtractor-ng: он использует библиотеку xdis, реализующую (де)сериализатор под Python 2.4–3.13, в силу чего для полной распаковки больше не требуется конкретная версия Python. Автор pyinstxtractor-ng выпустил веб-версию, переписанную на Go, она работает локально в браузере. Оба проекта активно обновляются и разбирают последние версии PyInstalller.
py2exe
Решение, нацеленное на упаковку проекта в исполняемый файл под Windows. Чуть-чуть не успевает за тенденциями и пока не умеет работать с Python 3.12 и 3.13. «Убийцей» пакера должен был стать unpy2exe, но последний коммит в master семь лет назад оставляет чувство печали. Автор этого решения так же, как и автор решения pyinstxtractor, предупреждает, что версии (хотя бы major) установленного Python и конечной нагрузки должны совпадать.
Файлы .pyc
На уровне Python используются для ускорения запуска кода и оптимизации импорта модулей. Для превращения обратно в исходный код есть несколько проектов, и если такое возможно, стоит сравнивать полученный декомпилированный код из одного проекта с декомпилированным кодом из другого.
1️⃣ Uncompyle6 и decompyle3 — две утилиты от автора вышеупомянутого xdis. Uncompyle6 покрывает версии Python до 3.8, decompyle3 — c 3.7 до, частично, 3.9. Автор просит помочь с проектом.
2️⃣ Семейство unpyc (unpyc3, unpyc37, unpyc37-3.10) — поддерживает точечно версии 3.3, 3.7, 3.10.
3️⃣ Pycdc — многообещающий декомпилятор, написанный на C++, также регулярно обновляется и старается поддерживать все версии байт-кода Python. Порой имеет сложности с разбором конструкций, поэтому...
4️⃣ Pycdas — дизассемблер из проекта pycdc, помогает попробовать разобрать файл с расширением .pyc, когда декомпиляторы уже бессильны🐱 🐱 🐱
Существующие онлайн-проекты для файлов .pyc (осторожно, отправляют файлы на сервер):
• Decompiler.com — мультифункциональный, «под капотом» uncompyle6.
• PyLingual.io — многообещающее решение, находящееся в бете. Файлы версий 3.11, 3.12, 3.13 открывает без проблем.
Happy hacking!
#ti #python #tools #scs
@ptescalator
Злоумышленники не стесняются использовать Python для своих целей. LazyStealer, упакованная PyInstaller, Python-бэкдор в ShadowPad и модули для Pupy RAT тому доказательство. Кроме того, задачи на снятие пакеров с дальнейшим исследованием встречаются на соревнованиях capture the flag.
Команда Supply Chain Security собрала памятку по работе с инструментами
PyInstaller
, py2exe
и со скомпилированными файлами .pyc
.PyInstaller
Один из самых популярных инструментов для упаковывания проекта в исполняемый файл под Windows, Linux, macOS. Библиотеки, относящиеся к проекту, дополнительно сериализуются с помощью стандартной библиотеки marshal в PYZ-файл.
Для работы с PyInataller можно использовать один из первых проектов — pyinstxtractor. Marshal не реализует обратную совместимость между своими версиями, поэтому для распаковки PYZ-файла pyinstxtractor требует запуска на той версии Python, которой был упакован PyInstaller.
Решает этот нюанс pyinstxtractor-ng: он использует библиотеку xdis, реализующую (де)сериализатор под Python 2.4–3.13, в силу чего для полной распаковки больше не требуется конкретная версия Python. Автор pyinstxtractor-ng выпустил веб-версию, переписанную на Go, она работает локально в браузере. Оба проекта активно обновляются и разбирают последние версии PyInstalller.
py2exe
Решение, нацеленное на упаковку проекта в исполняемый файл под Windows. Чуть-чуть не успевает за тенденциями и пока не умеет работать с Python 3.12 и 3.13. «Убийцей» пакера должен был стать unpy2exe, но последний коммит в master семь лет назад оставляет чувство печали. Автор этого решения так же, как и автор решения pyinstxtractor, предупреждает, что версии (хотя бы major) установленного Python и конечной нагрузки должны совпадать.
Файлы .pyc
На уровне Python используются для ускорения запуска кода и оптимизации импорта модулей. Для превращения обратно в исходный код есть несколько проектов, и если такое возможно, стоит сравнивать полученный декомпилированный код из одного проекта с декомпилированным кодом из другого.
1️⃣ Uncompyle6 и decompyle3 — две утилиты от автора вышеупомянутого xdis. Uncompyle6 покрывает версии Python до 3.8, decompyle3 — c 3.7 до, частично, 3.9. Автор просит помочь с проектом.
2️⃣ Семейство unpyc (unpyc3, unpyc37, unpyc37-3.10) — поддерживает точечно версии 3.3, 3.7, 3.10.
3️⃣ Pycdc — многообещающий декомпилятор, написанный на C++, также регулярно обновляется и старается поддерживать все версии байт-кода Python. Порой имеет сложности с разбором конструкций, поэтому...
4️⃣ Pycdas — дизассемблер из проекта pycdc, помогает попробовать разобрать файл с расширением .pyc, когда декомпиляторы уже бессильны
Существующие онлайн-проекты для файлов .pyc (осторожно, отправляют файлы на сервер):
• Decompiler.com — мультифункциональный, «под капотом» uncompyle6.
• PyLingual.io — многообещающее решение, находящееся в бете. Файлы версий 3.11, 3.12, 3.13 открывает без проблем.
Happy hacking!
#ti #python #tools #scs
@ptescalator
Please open Telegram to view this post
VIEW IN TELEGRAM