Контакты
Подписка
МЕНЮ
Контакты
Подписка

Технологии защиты вредоносных программ

Технологии защиты вредоносных программ

В рубрику "Оборудование и технологии" | К списку рубрик  |  К списку авторов  |  К списку публикаций

Технологии защиты вредоносных программ


Николай Гребенников,
заместитель директора департамента инновационных технологий "Лаборатории Касперского"

В начале 90-х гг. прошлого века, когда начала формироваться индустрия антивирусных программных продуктов, появились первые антивирусные программные пакеты, которые производили обнаружение вирусов на основе базы характерных участков вредоносного кода (сигнатур). В результате авторы вредоносных программ стали применять различные методы для усложнения детектирования своих продуктов появившимися программами защиты. В данной статье мы условно выделим три поколения методов защиты, придуманных вирусописателями за прошедшее время.

Первое поколение

К первому поколению методов защиты вредоносных программ относятся следующие: упаковка, полиморфизм, обфускация.

Упаковка - процесс уменьшения размера исполняемого файла с сохранением возможности самостоятельного выполнения. Реализуется с помощью специальных утилит - пакеров. Ранее упаковка использовалась для экономии места на жестком диске. На данный момент эта функция пакеров частично устарела, однако упаковкой активно пользовались и продолжают пользоваться авторы вредоносных программ, так как если программа-антивирус не умеет распаковывать файлы, упакованные некоторым пакером, то и найти в них вирус она также в большинстве случаев не сможет. На настоящий момент известно несколько сот упаковщиков, количество различных версий которых приближается к трем тысячам.

Полиморфизм - метод формирования экземпляров вируса, при котором код вируса формируется "на лету" - уже во время исполнения, при этом сама процедура, формирующая код, также не является постоянной и видоизменяется при каждом новом заражении. Таким образом, в большинстве случаев два образца одного и того же вируса-полиморфика не имеют ни одного совпадения.

Обфускация (от англ. "obfus-cation" - запутывание) - один из методов защиты программного кода, который позволяет усложнить процесс реверсивной инженерии кода защищаемого программного продукта. Суть метода заключается в том, чтобы запутать программный код и устранить большинство логических связей в нем, то есть трансформировать его так, чтобы он был очень труден для изучения и модификации посторонними лицами. Обфускация может применяться для защиты любого программного обеспечения, не обязательно вредоносного. Однако в настоящее время она активно применяется именно авторами вредоносных программ (например, Trojan-Downloader.Win32.Zlob).

Второе поколение

Ко второму поколению методов защиты вредоносных программ относятся "грубые" методы борьбы с защитным ПО и методы защиты от удаления.

В качестве методов борьбы с защитным программным обеспечением можно выделить следующие:

  1. нарушение доступа к серверам обновлений защитного ПО, которое производится либо путем модификации специального файла hosts (такой метод используется семейством сетевых червей Net-Worm.Win32.Mytob), либо путем установки драйвера, блокирующего доступ к сайтам на низком уровне (Email-Worm. Win32. Bagle.ie);
  2. завершение процессов, удаление файлов или записей реестра защитного ПО. Идея этого способа борьбы проста: зачем бороться с продвинутыми методами детектирования (эмуляция, проактивная защита и т.п.), если можно просто завершить процесс антивируса и делать все что угодно на незащищенной машине. В качестве примера подобной вредоносной программы приведем червя Worm.Win32.Feebs. Он интересен тем, что не просто пытается завершить все антивирусные процессы с определенными именами, а использует функцию скрытия своего процесса и мониторинг системной функции открытия процессов. Если какое-либо приложение пробует открыть скрытый процесс червя, то Feebs пытается завершить это приложение. Обычные менеджеры процессов, такие, как менеджер задач Windows, не могут увидеть скрытый процесс, а если некоторое приложение пытается открыть замаскированный процесс, значит, это антивирус или антируткит, и Feebs пытается с ним бороться.

Основные методы защиты вредоносных программ от удаления:

  1. Метод watchdog (двух процессов), который заключается в том, что вредоносная программа создает в памяти два процесса, которые непрерывно контролируют работу друг друга. В случае удаления одного из процессов антивирусом, второй процесс его мгновенно перезапускает.
  2. Метод троянского потока, основанный на создании одного или нескольких потоков в системных процессах. Эти потоки выполняют восстановление стертых файлов, восстановление ключей реестра, перезапуск процессов вредоносной программы. Одним из примеров реализации метода является not-a-virus:AdWare.Win32. Better-Internet. Входящую в его состав троянскую программу nail.exe можно удалить с диска, но она будет восстановлена при помощи троянского потока (образ файла nail.exe хранится в памяти); другим примером является not-a-virus:Adware.Win32.Look2me, регистрирующийся в качестве расширения WinLogon. Зарегистрированная таким образом библиотека загружается в ходе процесса загрузки и остается в памяти в течение всего времени работы системы, что затрудняет ее удаление.
  3. Блокировка доступа к файлу, которая сводится к открытию вредоносной программой собственных файлов в режиме монопольного доступа или к блокировке файлов при помощи функции LockFileEx. Антивирус в этом случае не может получить доступ к файлам для проверки и удаления стандартными способами.
  4. Пересоздание ключей реестра вредоносной программы с высокой частотой, что не позволяет антивирусу исключить программу из автозагрузки.
  5. Оба указанных способа защиты собственных файлов и ключей реестра применяются, например, тем же not-a-virus:Adware.Win32.Look2me.

    Третье поколение

    Третье поколение методов защиты вредоносных программ - это скрытие их с помощью руктит-технологий и борьба с подсистемами проактивной защиты.

    Руткит - программная техника или код, целью которых является сокрытие какой-либо деятельности или объектов в системе. Чаще всего злоумышленниками скрываются процессы, файлы, ключи реестра и сетевая активность. То есть все те объекты, которые могут демаскировать присутствие вредоносной программы в зараженной системе.

    Распространение руткитов в последнее время приняло угрожающий характер. Практически все новые "серьезные" вредоносные программы семейств Worm и Trojan имеют в своем составе мощный руткит-компонент, работающий в режиме ядра операционной системы: Email-Worm.Win32.Zhelatin, Email-Worm.Win32.Warezov, Email-Worm.Win32.Bagle, кейлоггеры EliteKeylogger, Perfect Keylogger, SpyLantern, Backdoor.Win32.Haxdoor, Trojan-Clicker.Win32.Costrat.n и другие. Последний из перечисленных троянов интересен тем, что реализует редко используемые дополнительные методы скрытия, такие, как хранение своего тела в NTFS-потоке каталогов и перехват функций при помощи SysEnter.

    Основным методом борьбы с подсистемами проактивной защиты на данный момент является программное нажатие на кнопку "Разрешить" в диалоге, показываемым антивирусным продуктом в тот момент, когда он проактивно определяет подозрительную активность вредоносного процесса. В результате пользователь вряд ли заметит очень быстро промелькнувший диалог, а вредоносная программа продолжит свое исполнение. Самым ярким примером такой программы является троянская программа Trojan-PSW.Win32.LdPinch, ворующая пароли для различных сервисов и прикладных программ, в том числе AOL Instant Messenger и ICQ, и личную информацию пользователей.

    Выводы

    Вредоносные программы будут двигаться все больше в сторону повышения своей технологичности и методов сокрытия своего присутствия в системе. Разработки в области полиморфизма, обсфукации кода и руткит-технологии станут еще более массовыми и практически будут являться стандартом для большинства новых вредоносных программ.

    Большинство существующих методик определения качества антивируса только по уровню детектирования вирусов путем сканирования коллекции файлов являются уже явно неполными. Дополнительно следует обязательно рассматривать такие аспекты работы антивирусной программы, как наличие проактивной защиты, возможность нахождения руткитов, самозащита, возможность удаления вредоносных программ, активно противодействующих своему удалению, и другие. В качестве примера можно привести тест защиты от удаления персональных сетевых экранов: http://www.firewallleaktester.com/termination.php.

Опубликовано: Журнал "Information Security/ Информационная безопасность" #2, 2007

Приобрести этот номер или подписаться

Статьи про теме