Пакувальник (packer) — інструмент, що стискає чи шифрує виконуваний файл і додає невеликий код, який розпаковує оригінал у пам’яті під час запуску.
Як працює пакувальник
Пакувальник бере програму, стискає й часто шифрує її код і дані та загортає в новий виконуваний файл. Під час запуску розпакувальна заглушка відновлює вихідну програму в пам’яті й передає керування на її справжню точку входу. На диску файл зовсім не схожий на оригінал.
- Пакувальники-компресори, як відкритий UPX, просто зменшують розмір файлів.
- Протектори на кшталт Themida чи VMProtect додають захист від налагодження й віртуалізацію коду, щоб комерційне ПЗ було складніше зламати.
- Криптори — пакувальники, які продають на кримінальних форумах саме для того, щоб зробити шкідливе ПЗ непомітним для антивірусів.
Чим пакувальники важливі для безпеки
Більшість сучасного шкідливого ПЗ упаковано. Пакування приховує рядки, імпорти й шаблони коду, за якими працюють сигнатури, а кожна нова збірка може виглядати унікально. Тому фахівці вважають пакування тривожною ознакою: висока ентропія секцій, дуже мало імпортованих функцій чи незвичні назви секцій. Самого статичного аналізу часто замало, і аналітики розпаковують зразки в пісочницях, через дампи пам’яті та налагоджувачі. Водночас легітимне ПЗ теж буває упакованим, тож упакований файл — ще не вирок.
Рекомендації
- Використовуйте захист кінцевих точок з аналізом поведінки й пам’яті, а не лише сигнатури файлів.
- Вважайте упаковані файли з невідомих джерел високоризиковими й перевіряйте їх у пісочниці.
- Розробникам — підписувати упаковані файли, щоб їх можна було відрізнити від шкідливих.