Обфускация — намеренное запутывание кода или данных, которое затрудняет их чтение и анализ, но не меняет поведение программы.
Как работает обфускация
Обфускация меняет не то, что делает программа, а то, как она выглядит. Типичные приёмы:
- замена имён переменных и функций бессмысленными строками;
- шифрование или кодирование строк — адресов, команд — с расшифровкой только во время выполнения;
- «сплющивание» потока управления и мусорный код, скрывающие настоящую логику;
- разбиение и склейка команд — любимый трюк в PowerShell и JavaScript;
- упаковка всего файла упаковщиком, который распаковывает его в памяти.
Почему это важно для безопасности
Практически всё современное вредоносное ПО обфусцировано. Это помогает обходить сигнатурные антивирусы, замедляет реверс-инжиниринг и прячет индикаторы вроде адресов командных серверов. Веб-скиммеры в интернет-магазинах скрывают код в сильно обфусцированном JavaScript и даже в изображениях, фишинговые наборы обфусцируют HTML, чтобы обойти почтовые фильтры. Открытый инструмент Invoke-Obfuscation показал, как легко замаскировать команды PowerShell.
У обфускации есть и легальное применение: разработчики защищают интеллектуальную собственность и логику лицензирования в мобильных приложениях и JavaScript с помощью ProGuard и коммерческих протекторов.
Как с ней работают защитники
- Отслеживают поведение, а не строки: EDR видит, что делает скрипт после декодирования.
- Используют Windows AMSI и журналирование блоков скриптов PowerShell, которые фиксируют уже деобфусцированный код.
- Анализируют образцы динамически в песочнице и применяют инструменты деобфускации — CyberChef, de4dot.
- Считают сильную обфускацию в скриптах и документах тревожным признаком сама по себе.