Есть некая область, где бессилен самый
проницательный и опытный сыщик.
Шерлок Холмс

 

Компьютерные вирусы, как и любые программы, состоят из данных и кода. И если в
простых и средних вирусах данные видны не вооружённым глазом
(их можно увидеть при помощи текстового редактора),
то в вирусах посложнее они спрятаны в целях маскировки. 
В этом тексте мы попытаемся разобраться, как же вирусы хранят данные и прячут
их.

Рассмотрим пару схем стандартного хранения данных в простых вирусах:

(1) Вначале идёт код, а после него данные

(2) Вначале идёт переход на код вируса, а после него данные

Существует множество вариаций на тему хранения данных в вирусе, но в основном
это комбинации (1) и (2) метода. Стоит заметить, что второй метод хранения
данных называется "китайским". Почему он так называется? То ли из-за того, что
он считается не очень удачным, то ли из-за того, что он впервые был использован
китайцами? Я теряюсь в догадках...

Так как эвристичесике анализаторы многих антивирусов "привязываются" к типичным
для вирусов данным и по ним успешно их идентифицируют и лечат,
вирмейкеры стали использовать контрольные суммы вместо имён функций, но всё
равно им приходилось некоторые данные прятать
(например "*.exe"). Для сокрытия данных стало применяться шифрование данных. Но не все разработчики вирусов
использовали контрольные суммы имён WIN API функций, некоторые шифровали все
данные.

Теперь, мы можем рассмотреть некоторые более мощные методики хранения данных:

(1) Вначале идёт декриптор, который расшифровывает данные. После этого управление передается основному коду.

(2) Вначале идёт переход на декриптор, который расшифровывает данные вируса,
а после этого идёт исполнение основного кода

(3) Основные данные (имена WIN API функций) представлены в виде контрольных
сумм. А оставшиеся данные разбросаны по коду вируса и расшифровываются по мере необходимости.

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

Существует ещё один метод сокрытия данных, это генерация данных кодом. Про этот
метод уже писал Z0MBIE. Но он рассматривал данный метод как подготовительный
шаг к пермутации. А этот метод может использоваться и как сокрытие данных от
взломщика, и как антидизассемблерный трюк.

(5) Рассмотрим схему генерации данных кодом:

Таким образом в вирусе будет находится один код, а данных не будет.
Данные будут растворены в коде и будут помещаться в память по мере
необходимости.

Как это может выглядеть? Существует два метода: это используя цепочечные команды и используя стэк.

;--(I способ)--;
lea edi,temp_memory ; У
казываем
место для данных

mov eax,'.*ex' ; Помещаем в eax -
данные

stosd ;
И кладём их по
необходимому адресу

;----;

И второй способ используя напрямую стэк.

;--(II способ)--;
mov ebp,esp ;
Сохраняем esp в ebp

mov esp,temp_memory ; Устанавливаем esp - на нужную память

mov eax,'.*ex' ; Помещаем в eax - данные
push eax ;
И кладём их по необходимому адресу

mov esp,ebp ; Восстанавливаем esp из ebp
;----;

Как вы могли заметить и первый и второй способ практически идентичны по смыслу.
Но мне всё же ближе первый метод.

Рассмотрим разработанный мной модуль для использования WIN API функций без
применения данных.

Перейдём к листингу: n_d_bios.asm

В данном модуле мной было применено простейшее шифрование текстовых строк.
При помощи макросредств TASM.

Применение данного модуля мы можем рассмотреть на примере простейшего вируса.
Данный вирус не представляет собой НИКАКОЙ опасности, так как он работает
только в текущей директории. Этот вирус был разработан с целью демонстрации
генерации данных кодом и его модификация автором не одобряется.

Перейдём к следующему листингу: non_data.asm

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

Данные вирусные методики могут найти применение, как в написании программных
защит так и в других областях программирования.

Рекомендую мою книгу: http://www.abook.ru/browse.php?cmd=describe&id=6527

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии