Обычно Java-агенты используются для сбора телеметрии, логирования, профилирования, каких-то ультрабыстрых хотфиксов и прочих скучных вещей.
Но сегодня мы исследуем приложение Java-агент, которое модифицирует код другого Java-приложения “на лету” и создано для обхода лицензионных ограничений. Называть его мы будем “агент”, “вредоносный агент” и т. п.
Меня зовут Сергей, тимлид бэкэнд команды Cluster Manager ГК GlowByte.
Код в нашем примере будет максимально обезличен.
Эта тема рассматривается исключительно в целях исследования вопросов безопасности приложений и этичного использования инструментов изменения кода во время компиляции.
В конце я предложу примеры методов отслеживания несанкционированного вмешательства в Java-приложение, а также методов противодействия, чтобы избавиться от рисков, которые мы обнаружим в процессе исследования.
Читать далее