# Bytecode Jiu-Jitsu — разбор презентации Black Hat USA 2024

**Полное название:** *Bytecode Jiu-Jitsu: Choking Interpreters to Force Execution of Malicious Bytecode*.

**Авторы:** Toshinori Usui, Yuto Otsuki, Ryo Kubota, Yuhei Kawakoya, Makoto Iwamura и Kanta Matsuura. В презентации Usui, Otsuki, Kubota, Kawakoya и Iwamura указаны как NTT Security Holdings Corporation; Matsuura — Institute of Industrial Science, The University of Tokyo.

**Материал:** PDF, 77 страниц. Скачанная копия: `Bytecode-Jiu-Jitsu-Black-Hat-USA-2024.pdf` (5 110 065 байт). Исходная ссылка на paper.vulsee.com: https://paper.vulsee.com/Black%20Hat%20USA%202024%20slides/Toshinori%20Usui%20%26%20Yuto%20Otsuki%20%26%20Ryo%20Kubota%20%26%20Yuhei%20Kawakoya%20%26%20Makoto%20Iwamura%20%26%20Kanta%20Matsuura_Bytecode%20Jiu-Jitsu%20Choking%20Interpreters%20to%20Force%20Execution%20of%20Malicious%20Bytecode.pdf

## Тема и цель

Авторы описывают способ внедрения вредоносного байткода в память уже работающего процесса-интерпретатора (например, Python), чтобы заставить его исполнить подменённый код. В отличие от классической инъекции машинного кода, подход использует существующую среду исполнения и не требует выделять исполняемую страницу памяти или запускать отдельный поток. Цель доклада — показать, как автоматизированно исследовать внутренние структуры интерпретатора, выполнить такую инъекцию и оценить, что видят защитные инструменты.

## Основные идеи и технические приёмы

- **Подготовка полезной нагрузки:** в контролируемой среде авторы запускают вредоносный сценарий и извлекают соответствующие байткод и таблицы символов; известную область памяти используют как сигнатуру для последующего поиска.
- **Автоматизированный анализ интерпретатора:** динамически запускают специально составленные тестовые скрипты, наблюдают обращения к памяти и отслеживают указатели. Среди ключевых шагов — найти функцию интерпретации, определить счётчик виртуальной программы (VPC), обнаружить доступные области памяти, найти объект значения и восстановить цепочки ссылок к таблицам символов.
- **Определение VPC:** авторы исходят из того, что число чтений VPC растёт с числом операторов скрипта, текущая инструкция байткода адресуется через VPC, а функция интерпретации многократно читает его. Они проверяют это на скриптах разной длины.
- **Поиск и анализ структур:** тестовые присваивания используют характерные значения, которые можно найти в памяти. По трассам разыменования восстанавливают базы, смещения, индексы массивов и связи между управляющими структурами, таблицами символов и объектами значений.
- **Инъекция в целевом процессе:** приостановить выполнение, исследовать память только чтением, найти структуры и затем записать байткод/таблицы символов, перенаправить VPC на внедрённый байткод и продолжить выполнение.

## Примеры и демонстрации

В презентации пошагово сопоставлены обычная инъекция и подмена байткода интерпретатора; отдельно показаны этапы анализа структур и внедрения. Для экспериментов авторы выбрали Python, Lua и VBScript и сообщают, что смогли определить ключевые структуры и выполнить извлечение/инъекцию для всех трёх. Для оценки обнаружения использованы два варианта нагрузки: бесконечный цикл (изолированная проверка самой инъекции) и загрузчик (инъекция вместе с последующим поведением).

В таблице результатов доклада: антивирусы — 9 из 72 обнаружили оба варианта; sandbox и EDR не обнаружили вариант с бесконечным циклом, но обнаружили загрузчик; применённые средства memory forensics не обнаружили ни один вариант. Авторы объясняют это тем, что обычные средства часто ищут исполняемую память и подозрительные действия вроде запуска потока, тогда как этот метод обходится без исполняемой страницы; поведенческие средства всё же могут заметить последующее поведение внедрённого кода.

## Выводы авторов и оговорки

Авторы считают инъекцию байткода практической техникой и призывают защитников учитывать байткод как возможную полезную нагрузку. Среди мер защиты предлагаются мониторинг записей в память процессов-интерпретаторов, распознавание байткода/вредоносного байткода, защита интерпретаторов и ограничение прав записи, а также улучшение инструментов анализа. Они отмечают, что для ручного анализа байткода часто не хватает спецификаций, отладчиков и дизассемблеров.

Цифры обнаружения и успешности выше — результаты экспериментов, заявленные в слайдах, а не независимая проверка данного разбора. Они зависят от конкретных версий инструментов, конфигураций и образцов; презентация не даёт оснований считать эти значения универсальными для всех защитных продуктов или окружений.

## Источники проверки

- Исходный PDF на paper.vulsee.com (ссылка указана выше); текст всех 77 страниц извлечён из скачанной копии.
- Описание исследования NTT: https://group.ntt/en/topics/2024/10/16/cyberattack.html
- Страница Black Hat USA 2024 и запись выступления: https://www.youtube.com/watch?v=5fs9ntKOYW0
