Методы обнаружения и защиты

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

Технический компонент. Поскольку всякая вредоносная программа представляет собой одновременно и файл с определенным содержимым, и совокупность производимых в операционной системе действий, и совокупность произведенных в ОС эффектов, существуют различные способы сбора данных с целью идентификации зловредов. Способы перечислены в соответствии с повышением уровня абстракции при работе с кодом. Под уровнем абстракции в данном случае подразумевается то, под каким углом зрения рассматривается исполняемая программа: как первичный цифровой объект (набор байт), как поведение (более абстрактное следствие из набора байт) или как совокупность эффектов в операционной системе (более абстрактное следствие из поведения). Примерно по этому же вектору шло и развитие антивирусных технологий: работа с файлами, работа с событиями через файл, работа с файлом через события, работа с самой средой, — поэтому приведенный список естественным образом оказался выстроен и по хронологии.

1. Работа с файлом как с массивом байтов.

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

2. Эмуляция кода программы.

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

3. Виртуализация: запуск программы в «песочнице» (Sandbox).

«Песочница» представляет собой среду для безопасного исполнения программ, построенную на частичном или полном ограничении или эмуляции ресурсов ОС. Виртуализация в данном случае позволяет работать с программой, выполняющейся в реальной среде, контролируя эту программу. Исходя из метафоры: если операционная система — реальный мир, а вредоносная программа — ребенок, то «стены» песочницы — некий набор правил их взаимодействия. Виртуализироваться могут любые точки соприкосновения программы со средой — файловая система, реестр. Если эмуляция предоставляет среду для исполнения программы, то при виртуализации в качестве среды выступает сама ОС, а «песочница» лишь контролирует взаимодействие между ней и программой.

4. Мониторинг системных событий.

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

5. Поиск системных аномалий.

Данный метод основан на следующих положениях:

· операционная среда вместе со всеми выполняющимися в ней программами — это интегральная система;

· ей присуще некое «системное состояние»;

· если в среде исполняется вредоносный код, то состояние системы является «нездоровым» и отличается от состояния «здоровой» системы, в которой вредоносного кода нет.

Для эффективного обнаружения вредоносного кода методом анализа аномалий необходима достаточно сложная аналитическая система — наподобие экспертной системы или нейронной сети. По причине такой сложности в настоящее время этот способ разработан мало. Существующие разработки в этой области основаны, в основном, на сравнении состояния системы с неким уже известным эталонным ее состоянием, что не является эффективным.

Что касается аналитического компонента, то сложность алгоритма принятия решений может быть совершенно любой. Очень условно здесь можно выделить три категории:

1. Простое сравнение.

Вердикт выносится по результатам сравнения единственного объекта с имеющимся образцом.

2. Сложное сравнение.

Вердикт выносится по результатам сравнения одного или нескольких объектов с соответствующими образцами. Шаблоны для сравнения могут быть гибкими, а результат сравнения — вероятностным.

3. Экспертная система.

Вердикт выносится в результате тонкого анализа данных. Это может быть система, содержащая в себе зачатки искусственного интеллекта.

Аналитический компонент той или иной защитной технологии ответственен за проактивность (способность технологии обнаруживать новые вредоносные программы), процент ложных срабатываний и нагрузку на пользователя (имеется в виду степень его участия в формировании политики защиты — правил, исключений, белых и черных списков — и участия в процессе вынесения вердикта — подтверждение или опровержение «подозрений» аналитической системы). Вывод можно сделать следующий: чем сложнее аналитическая система, тем она могущественнее, но и тем выше процент ложных срабатываний. Последние компенсируются взаимодействием с пользователем.
4. Защита программного кода: Статическое/динамическое исследование и методы защиты от него. Защита от несанкционированного копирования и использования.

Для анализа кода используются методы статического и динамического анализа. При статическом анализе код исследуется без выполнения самой программы, при динамическом анализе, программа исследуется на основании информации, полученной во время ее выполнения.

Отсюда следует, что первые являются более универсальными в том смысле, что теоретически могут получить алгоритм всей программы, в том числе и тех блоков, которые никогда не получат управления. Динамические средства могут строить алгоритм программы только на основании конкретной ее трассы, полученной при определенных входных данных. Поэтому задача получения полного алгоритма программы в этом случае эквивалентна построению исчерпывающего набора текстов для подтверждения правильности программы, что практически невозможно, и вообще при динамическом исследовании можно говорить только о построении некоторой части алгоритма.

Методы исследования:
Статические: Дизассемблирование

Динамические: Отладка, Мониторинг событий, Снятие дампа

Основное методы защиты от дизассемблирования:

1. Шифрование кода

2. Шифрование данных

3. Запутывание (обфускация) кода и данных

4. Переходы во внутрь команд

5. Сокрытие адресов API-функций (динамическая компоновка с помощью функций LoadLibrary, GetProcAddress или самостоятельный поиск в загруженных библиотеках)

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

7. сокрытие перекрестных ссылок, чтобы было не ясно к какому месту программы откуда обращаются

В основе отладки лежит использование:

1. Точек остановки

2. Трассировка

Защита от трассировки:

1. Замер времени выполнения участков кода

2. Самотрассировка

Защита от точек остановки:

· Программные точки останова

1. Контороль прав доступа секции кода

2. Поиск опкода 0xCC в коде

3. Контроль целостности кода в памяти контрольными суммами

· Аппаратные точки останова

1. Контроль содержимого отладочных регистров посредством SEH/VEH

2. Использование значений отладочных регистров в алгоритме программы

3. Самоотладка с использованием отладочных регистров

Обнаружение отладчиков:

1. Поле BeingDebugged из PEB – функция IsDebuggerPresent

2. CheckRemoteDebuggerPresent

3. Поиск процесса по имени

4. Поиск имен псевдоустройств отладчиков ядра (\\.\ntice, \\.\sice)

5. Использование спец. поведения программ

a. S-Ice:

i. mov si, 4647h / mov di, 4a4dh / int 3

ii. Int 3 в UnhandledExceptionFilter

Программы-мониторы

· API-шпионы

o APISpy32

o APIMonitor

· Мониторы событий

o FileMon

o RegMon

o ProcMon

Противодействие снятию дампа:

· На уровне интефейсов ОС

· Перехват функций открытия / чтения адресного пространства процесса

· Модификация маркера доступа

· Модификация “служебных” значений

o TEB / PEB

o Заголовок PE

· Динамическая распаковка

Упаковщик = Формат PE + Алгоритм кодирования / сжатия + [Средства затруднения исследования] (UPX, ASPack, ASProtect, tElock, Armadillo, PECompact...)

Распаковщик выполняет часть работы ОС – загрузчика исполняемых файлов

o Разжать код / данные

o Расположить секции согласно таблице секций исходного файла

o Обработать импорт

o Обработать иные директории PE-файла

o Передать управление распакованной программе

Защита от несанкционированного копирования:

Это привязка к носителям информации, привязка к аппаратному окружению.

Проверка ключей, активации и модификации программ для обхода этого.

Первый крестовый поход

По всей видимости, первой защитой от компьютерных пиратов можно считать технологию «read the manual», появившуюся в конце 80-х гг. Покупая, к примеру, лицензионную игру, пользователь получал к ней инструкцию. Для запуска игры требовалось ввести специальное слово, которое находилось в определенном месте инструкции. В некоторых случаях в инструкции содержались подсказки, как пройти наиболее сложные участки игры. Взлом такой системы, конечно, не составлял труда, да и рассчитана она была лишь на сознательных компьютерщиков. Распространению игрушки мешали только нераспространённость компьютеров и отсутствие развитых сетей передачи информации. Пиратство находилось в зачаточной стадии как юридически, так и морально. Скопировать понравившуюся игру другу считалось так же естественно, как дать почитать любимую книгу.

Цифровой код

Естественным развитием словарного кода стал символьно-цифровой ключ, отличавшийся от своего предшественника лишь большим геморроем при вводе для законно-послушных пользователей. Использование такой системы в Windows 95 установило стандарт де-факто для всех серьёзных программных продуктов. Ключи взяли на вооружение как производители игр, так и большинство софтостроительных контор, распространявших свою продукцию по триальной системе. Взлом системы произошел практически сразу после её массового распространения. Полученные ключи пираты аккуратно приклеивали к пиратским копиям диска, давая возможность любому получить бесплатно сравнительно качественный продукт. Оперативно появляющиеся кейгены позволили каждый компьютер оснастить всем необходимым софтом.

Волшебный ключик

За прошедшие годы разработчики софта так и не смогли отказаться от цифрового ключа, однако привнесли в оригинальную идею много нового. Одной из самых удачных вариаций кода можно считать технологию Steam корпорации Valve, основанную на проверке аутентичности ключа через интернет. Первоначально Steam включал в себя технологию защиты от копирования SecuROM, требовавшую присутствия оригинального диска. После того как Steam позволила скачивать нужное вам приложение через интернет, в обход коробочной версии, было принято решение отказаться от SecuROM. Через несколько недель после применения технологии Steam произошел взлом, и в сети появилась программа SteamDown. Теперь все пользователи, обладающие инетом, могли позволить себе скачать бесплатную копию.

Жёсткая привязка

Не менее удачной можно назвать и отечественную разработку – систему StarForce. В частности, в ней были реализованы проверки скорости течения секторов и возможности записи на вставленный диск. Программа физически привязывалась к носителю и с подозрением проверяла вставленные в CD-ROM диски. Если запись была возможна, то диск считается нелицензионным, программа требовала оригинальный блинчик. StarForce была взломана эмуляцией дисков с учётом геометрии расположения данных. Вообще же среди разработчиков софта стало очень популярно привязывать продукт к конкретному программному обеспечению, пусть не всегда это удобно для конечного пользователя. Например, привязка к серийным номерам компонентов компьютера: серийный номер BIOS, материнской платы или винчестера. Такая защита ломается либо апгрейдом компьютера, либо перепрошивкой BIOS’a. Показателен пример «аппаратных ограничений» в консолях PlayStation и XBOX. Для того чтобы пиратские диски запустились на этих приставках, консоль необходимо просто «очиповать» - встроить специальный модуль, который позволит обойти фабричные ограничения приставки. Защита, на которую потратили миллионы долларов, вскрывается одним паяльником.

Система черных меток

Современные технологии борьбы с пиратством не пытаются спасти оригинал от многочисленных копий. Они пытаются выследить и наказать нарушителей уже после совершения преступления. Так, институт Фраунхофер, откуда появилось «пиратское знамя» - формат MP3 – взял на вооружение старую добрую стеганографию. Watermark technology (система водяных знаков) позволит ещё на заводе добавлять в аудио файл специальные контрольные биты. Как известно, лишний бит в шумовом потоке звукового файла практически нельзя обнаружить и устранить… если не знать, где он находится. Специальные стеганофайлы никак не повлияют на качество композиции и станут уникальными идентификаторами медиа-информации. Они позволят отслеживать траффик нелегальных mp3-записей в сетях p2p и на каждом отдельном компьютере, имеющем выход в Интернет. Вполне возможно добавление функции, когда стего-файл активизируется наподобие вируса и посылает в Интернет сигнал о своем существовании.

Подобная технология вполне может использоваться в цифровом фото и даже электронном тексте. Правда в данных областях её легко можно обойти – достаточно распечатать «заражённый» файл, а затем вновь отсканировать или пропустить через специальный стегософт, обнуляющий конечные биты. Технология пришлась по душе и в кинопроизводстве. В ближайшем будущем в звуковую дорожку каждой копии картины, предназначенной для кинопроката, на этапе изготовления вставят свои метки. Их наличие в звуке пиратки может послужить поводом для блокирования воспроизведения в плеере (как на аппаратном уровне, так и в программной части). Водяные знаки кинопроката встроены в звук таким образом, что они переносятся независимо от того, как сделана нелегальная копия. Конечно, взломать сканер меток не составит труда, как не составило труда вскрыть защиту Blu-ray и HD-DVD, однако избавиться от меток современными способами не получится. На вашем домашнем компьютере угроза минимальна, но если вы вздумаете загрузить видео в Интернет, обнаружить вас не составит труда.

На службе сил зла

Очень часто в качестве защиты компании не брезгают использовать технологии, позаимствованные у хакеров, в частности - шпионский софт. Система под названием Fade использует довольно старую технологию исправления ошибок на поцарапанных CD и DVD. Fade наносит на диск поддельные царапины, и если считывающее устройство их находит, то проигрывает диски, как обычно. При копировании царапины исчезают, и программа-мастер идентифицирует диск как копию. В целом, всё относительно законно, однако Fade прописывается в реестре на автозагрузку и крайне трудно удаляется из системы, что свойственно вредоносным программам. Данную систему, как ни странно, не взломали. Ею просто перестали пользоваться, поскольку она доставляла очень много лишних неудобств. Подобное уже случалось, когда компания Intuit защитила свой продукт TurboTax-системой Macrovision SafeCast/C-Dilla. Эта система не давала запускать программу без активации, а шпионский компонент позволял программе работать только на одной машине. Не выдержав обвинений в нарушении неприкосновенности частной жизни, Intuit убрала свой шпионский модуль сама.

Показательна также нашумевшая история Sony. В 2005 году фирма использовала метод защиты компакт-дисков, известный как Extended Copy Protection (XCP). Диски с XCP имеют дополнительную дорожку с данными и при первой установке устанавливают скрытую программу, запрещающую копирование дисков. Поскольку эта программа ставится независимо от желания пользователя, маскируется и препятствует своему удалению, многие независимые исследователи сочли её троянцем, потенциально опасным для безопасности пользователя. В результате скандала Sony предложила программу-деинсталлятор и бесплатную замену дисков с XCP, но все проблемы не были решены.

Analog Copy Protection

Победить пиратство на аппаратном уровне – трудная задача. Всё, что может быть услышано или увидено, оказывается, можно записать. Технология ACP препятствует переносу видеофайлов с одного устройства на другое по аналоговым каналам. Технология ACP построена на основе особых импульсов, встраиваемых в видеопоток. Их назначение – сигнализировать приемному устройству, что передачу записывать нельзя. В бытовые аппараты для цифровой видеозаписи, такие как DVD-рекордеры, эта система обычно устанавливается уже на этапе изготовления.

ДОП ИНФА О ПРИВЯЗКЕ К CD-ROM
Привязка к носителю CD-ROM

1. Некорректные размеры файлов, препятствующие пофайловому копированию CD

2. Некорректный размер диска

3. Нестандартные треки, промежутки между треками

4. Нестандартные питы – с оригинального носителя информация считывается по-разному. Требует специального записывающего оборудования.
5. Стандартные средства защиты ОС Windows.

· Внутренние механизмы разграничения доступа (маркеры доступа и дескрипторы защиты), структура и назначение, участие маркеров доступа и дескрипторов защиты в процедуре получения субъектов доступа к объектам ОС.

· Права ФС NTFS, назначение прав, управление правами, определение действующих прав, проверка прав при обращении к объекту ФС.

· Шифрованная файловая система EFS, используемые алгоритмы шифрования и генерации ключей, способы хранения ключевой информации, разница в действии атрибута шифрования для файла и каталога, агенты восстановления EFS, организация совместного доступа к зашифрованному файлу.*

· Механизмы аудита и протоколирования в ОС Windows, классы регистрируемых событий, управление аудитом (включение, отключение аудита определенных событий), аудит доступа к объектам ФС и реестра, журналы аудита, правила обращения с журналами аудита.

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

А) Внутренние механизмы разграничения доступа (маркеры доступа и дескрипторы защиты), структура и назначение, участие маркеров доступа и дескрипторов защиты в процедуре получения субъектов доступа к объектам ОС.

Защищаемые объекты Windows включают: файлы, устройства, каналы, события, мьютексы, семафоры, разделы общей памяти, разделы реестра ряд других. Сущность, от которой нужно защищать объекты, называется "субъектом". Субъектами в Windows являются процессы и потоки, запускаемые конкретными пользователями. Субъект безопасности - активная системная составляющая, а объект - пассивная.

Помимо дискреционного доступа Windows поддерживает управление привилегированным доступом. Это означает, что в системе имеется пользователь-администратор с неограниченными правами. Кроме того, для упрощения администрирования (а также для соответствия стандарту POSIX) пользователи Windows объединены в группы. Принадлежность к группе связана с определенными привилегиями, например, привилегия выключать компьютер. Пользователь, как член группы, облекается, таким образом, набором полномочий, необходимых для его деятельности, и играет определенную роль. Подобная стратегия называется управление ролевым доступом.

Наши рекомендации