Обфускація — навмисне заплутування коду чи даних, яке ускладнює їх читання та аналіз, але не змінює поведінку програми.
Як працює обфускація
Обфускація змінює не те, що робить програма, а те, як вона виглядає. Типові прийоми:
- заміна імен змінних і функцій безглуздими рядками;
- шифрування або кодування рядків — адрес, команд — з розшифруванням лише під час виконання;
- «сплющування» потоку керування та сміттєвий код, що приховують справжню логіку;
- розбиття та склеювання команд — улюблений трюк у PowerShell і JavaScript;
- пакування всього файлу пакувальником, який розпаковує його в пам’яті.
Чому це важливо для безпеки
Майже все сучасне шкідливе ПЗ обфусковане. Це допомагає обходити сигнатурні антивіруси, сповільнює реверс-інжиніринг і приховує індикатори на кшталт адрес командних серверів. Веб-скімери в інтернет-магазинах ховають код у сильно обфускованому JavaScript і навіть у зображеннях, а фішингові набори обфускують HTML, щоб обійти поштові фільтри. Відкритий інструмент Invoke-Obfuscation показав, як легко замаскувати команди PowerShell.
Обфускація має й легальне застосування: розробники захищають інтелектуальну власність і логіку ліцензування в мобільних застосунках і JavaScript за допомогою ProGuard та комерційних протекторів.
Як із нею працюють захисники
- Відстежують поведінку, а не рядки: EDR бачить, що робить скрипт після декодування.
- Використовують Windows AMSI та журналювання блоків скриптів PowerShell, які фіксують уже деобфускований код.
- Аналізують зразки динамічно в пісочниці й застосовують інструменти деобфускації — CyberChef, de4dot.
- Вважають сильну обфускацію в скриптах і документах тривожною ознакою саму по собі.