Полиморфный код
Эта статья нуждается в дополнительных цитатах для проверки . ( ноябрь 2010 г. ) |
В вычислениях полиморфный код — это код, который использует полиморфный механизм для мутаций, сохраняя при этом исходный алгоритм нетронутым — то есть код меняется каждый раз при запуске, но функция кода (его семантика ) остается той же. Например, простые математические выражения 3+1 и 6-2 дают один и тот же результат, но выполняются с разным машинным кодом в ЦП . Этот метод иногда используется компьютерными вирусами , шеллкодами и компьютерными червями , чтобы скрыть свое присутствие. [1]
Шифрование — наиболее распространенный метод сокрытия кода. При шифровании основная часть кода (также называемая его полезной нагрузкой ) шифруется и становится бессмысленной. Чтобы код работал как раньше, в код добавляется функция расшифровки. Когда код выполняется , эта функция считывает полезную нагрузку и расшифровывает ее перед своим выполнением.
Шифрование само по себе не является полиморфизмом. Чтобы добиться полиморфного поведения, пара шифратор/дешифратор мутирует с каждой копией кода. Это позволяет использовать разные версии некоторого кода, которые функционируют одинаково. [2]
Вредоносный код
[ редактировать ]Большинство антивирусных программ и систем обнаружения вторжений (IDS) пытаются обнаружить вредоносный код путем поиска в компьютерных файлах и пакетах данных, передаваемых по компьютерной сети . Если программное обеспечение безопасности обнаруживает шаблоны, соответствующие известным компьютерным вирусам или червям, оно предпринимает соответствующие шаги для нейтрализации угрозы. Полиморфные алгоритмы затрудняют распознавание вредоносного кода таким программным обеспечением, поскольку он постоянно мутирует.
Вредоносные программисты пытались защитить свой зашифрованный код от этой стратегии сканирования вирусов, переписывая незашифрованный механизм дешифрования (и получающуюся в результате зашифрованную полезную нагрузку) каждый раз, когда распространяется вирус или червь. Антивирусное программное обеспечение использует сложный анализ шаблонов для поиска основных шаблонов в различных мутациях механизма дешифрования в надежде надежно обнаружить такое вредоносное ПО .
Эмуляцию можно использовать для преодоления полиморфной обфускации, позволяя вредоносному ПО раскрыть себя в виртуальной среде, прежде чем использовать другие методы, такие как традиционное сканирование сигнатур. Такую виртуальную среду иногда называют песочницей . Полиморфизм не защищает вирус от такой эмуляции, если расшифрованная полезная нагрузка остается неизменной независимо от изменений в алгоритме расшифровки. Методы метаморфического кода могут использоваться для дальнейшего усложнения обнаружения, поскольку вирус может выполняться, даже не имея в памяти идентифицируемых блоков кода, которые остаются постоянными от заражения к заражению.
Первый известный полиморфный вирус был написан Марком Уошберном. Вирус, названный 1260 , был написан в 1990 году. Более известный полиморфный вирус был создан в 1992 году хакером Dark Avenger как средство уклонения от распознавания образов антивирусным программным обеспечением. Распространенным и очень вирулентным полиморфным вирусом является файловый заразитель Virut .
См. также
[ редактировать ]- Метаморфический код
- Самомодифицирующийся код
- Буквенно-цифровой шеллкод
- Шеллкод
- Запутанный код
- Олигоморфный код
Ссылки
[ редактировать ]- ^ Рагунатан, Шринивасан (2007). Защита антивирусного программного обеспечения от вирусных атак (магистр). Университет штата Аризона. CiteSeerX 10.1.1.93.796 .
- ^ Вонг, Винг; Штамп, М. (2006). «Охота за метаморфическими двигателями». Журнал компьютерной вирусологии . 2 (3): 211–229. CiteSeerX 10.1.1.108.3878 . дои : 10.1007/s11416-006-0028-7 . S2CID 8116065 .
- Спинеллис, Диомидис (январь 2003 г.). «Надежная идентификация вирусов ограниченной длины является NP-полной» . Транзакции IEEE по теории информации . 49 (1): 280–4. дои : 10.1109/TIT.2002.806137 .