Полиморфное вредоносное ПО — вредоносные программы, которые постоянно меняют свой код или шифрование с каждой копией или заражением, так что все образцы выглядят по-разному, а поведение остаётся прежним.
Как работает полиморфное вредоносное ПО
Полиморфная программа обычно состоит из зашифрованного вредоносного тела и небольшого расшифровщика. При каждом распространении мутационный движок заново шифрует тело новым ключом и переписывает расшифровщик другими инструкциями, регистрами и мусорным кодом. В итоге у каждой копии новый хеш и новая последовательность байтов. Родственные подходы:
- Метаморфные вредоносы — переписывают весь свой код, а не только расшифровщик, поэтому постоянного зашифрованного тела у них нет.
- Серверный полиморфизм — сервер распространения генерирует свежеупакованный файл для каждой загрузки, как у Storm Worm в 2007 году и во многих современных кампаниях.
Полиморфизм — продвинутая форма обфускации. Идея не нова: первым полиморфным вирусом считается 1260 (1990), а Dark Avenger Mutation Engine начала 1990-х позволил другим вирусописателям добавлять полиморфизм в свои творения.
Почему полиморфное вредоносное ПО опасно
Классический сигнатурный анализ ищет известные последовательности байтов или хеши файлов. Когда каждый образец уникален, сигнатура для одного файла не срабатывает на следующем, а блок-листы хешей становятся почти бесполезны. Сегодня большинство массовых вредоносов — от загрузчиков в почтовых рассылках до шифровальщиков — использует ту или иную форму полиморфизма или автоматической переупаковки.
Как обнаружить полиморфное вредоносное ПО
- Опираться на поведенческий анализ: действия вредоноса остаются прежними, даже когда меняется код.
- Использовать эмуляцию и эвристический анализ, чтобы дать расшифровщику отработать и изучить распакованный код в памяти.
- Писать YARA-правила для устойчивых признаков распакованной нагрузки, а не внешнего файла.
- Сочетать телеметрию EDR с классификаторами машинного обучения, обученными на структуре файлов.