Что это полиморфный генератор

Что это полиморфный генератор Полиморфик-генераторы, как и конструкторы вирусов, не являются вирусами в прямом смысле этого слова, поскольку в их алгоритм не закладываются функции

Что это полиморфный генератор

Что это полиморфный генератор

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

Virus Creation Laboratory

Помимо того, что этот конструктор был первым, он имел несколько замечательных черт, таких как :

  • Дистрибутив поставляется с неплохим инсталлятором и подробной документацией и примерами использования. Также устанавливается .pif и .ico файлы для MS Windows.
  • Дружественный пользовательский интерфейс, по типу TurboVision сред (a la Borland). Наличие контестной подсказки и поддержка мышки. Автор даже утверждает, что его среда является CUA-совместимой. :-)
  • Разнообразие типов генерируемого кода :

  1. Overwriting вирусы
  2. Appending вирусы
  3. Companion (spawning) вирусы
  4. Код для создания троянцев и логических бомб

  • Возможность задания свойств генерируемого кода. Код даже слегка оптимизируется. При желании можно добавить в него анти-отладочные и анти-дизассемблерные вставки.
  • Настраиваемость среды. Настраиваемые цвета, пополняемая библиотека процедур (эффектов/условий срабатывания).

Однако, несмотря на все свои положительные качества, VCL не вызвал очень большой волны свежих вирусов и не снискал широкой популярности в кругах авторов вирусов. Причин этому было много, но скорее всего, главной была высокая уязвимость сгенерированных вирусов для антивирусных продуктов. Большинство антивирусов стали обнаруживать VCL-made вирусы еще до выхода его в свет (вероятно, по восьми тестовым вирусам).

Другим его недостатком было довольно невысокое качество ассемблерного кода. Зачастую антиотладочные вставки просто не работали и завешивали систему, а иногда ассемблерный код вообще не компилировался. Тем не менее автор Nowhere Man анонсировал выход VCL for Windows и VCL II. Насколько мне известно, VCL for Windows никогда не был выпущен, хотя и существует оболочка от VCL for Windows, получившего название Scare Project. VCL II был практически написан, но в связи с распадом NuKE в целом так и не был отлажен и выпущен.

Прикол из документации: Nowhere Man объявил код сгенерированный VCL своей собственностью и запретил антивирусным производителям использовать участки этого кода в своих продуктах. Мдаа. Как обычно Copyright не сработал. :-)

В апреле 1994 года Firecracker (затем вступивший в NuKE) выпустил VCL Mutator, заменяющий характерные участки кода VCL-вирусов на аналогичные, не обнаруживаемые (тогда) антивирусами.

Известные мне на данный момент версии: (Если еще существует человек, знающий ASM, но не знающий пароля к инсталятору VCL, то вот он: Chiba City )

Phalcon-Skism Mass Produced Code Generator

PS-MPS является намного более мощным и качественным продуктом, нежели VLC. Одной из его отличительных черт является полное отсутствие красивого интерфейса. Иделогия P/S ‘Настоящий профессионал работает с командной строкой’. Конфигурация создаваемого вирусного кода задается посредством текстового конфигурационного файла.

С помощью PS-MPC можно создавать полноценные вирусы со следующими свойствами:

  • поражение COM и EXE файлов
  • резидентый и нерезидентный код
  • два разных алгоритма обхода для нерезидентных вирусов
  • три способа размещения в памяти резидентного кода
  • исключение COMMAND.COM из поражаемых файов
  • генерируемый обработчик критических ошибок
  • случайно генерируемый алгоритм шифрования кода вируса
  • компактный, чуть лучше (чем в VCL) оптимизированный код
  • исходники замечательно откомментированы

Сам по себе PS-MPS не генерирует каких-либо деструктивных функций, но предоставляет очень понятный и отлично откомментированный код, так что понимание и изменение вирусного кода не представляет никакого труда. PS-MPS оказался гораздо более продуктивным инструментом нежели VCL, С его помощью было создано несколько сотен вирусов и многие из них имели широкое хождение. После того, как Aristotle (NuKE) выпустил Metric Buttload of Code Generator, генерировавший десятки слегка модифицированных PS-MPC вирусов, количество таких вирусов выросло еще больше.

Примечательной особенностью этого конструктора было то, что он распространялся в исходных кодах (Turbo C), что было побуждением для многих авторов выпустить свои, измененные версии компилятора. Это привело к еще большему увеличению числа вирусов, произведенных с помощью этого компилятора.

Известные мне на данный момент версии:

G2 в работе очень напоминает PS-MPC, но на самом деле он более мощный инструмент в создании вирусного кода. Dark Angel вынес логику генерации кода во внешний файл G2.DAT и декларировал, что будет выпускать новые версии G2 путем замены этого файла на новый. К сожалению, мне неизвестны усовершенствованные варианты G2.DAT. Отличительная черта G2 — это встроенный модификатор кода, позволяющий при каждом запуске компилятора создавать слегка отличающийся код. G2 совместим снизу вверх с PS-MPC по формату конфигурационных файлов. С помощью G2 создано несколько десятков реальных вирусов.

Известные мне на данный момент версии:

Biological Warfare

Генерируемые вирусы имеют следующие характеристики:

  • Резидентные / не резидентные
  • Поражение EXE/COM файлов
  • Шифрование — как простое так и с помощью BWME (см.ниже)
  • Анти-трассировочные приемы
  • Поражение COMMAND.COM — опционально
  • Обработчик Int24 (критической ошибки DOS)
  • Два уровня Stealth
  • Прочие : способ обхода каталогов, проверка оверлеев, итд.

С компилятором поставляется Biological Warfare Mutation Engine небольшой (609 байт) полиморфный генератор, что несколько затрудняет обнаружение вирусов.

Опять же если кто-то не знает пароля — ‘ frea ‘.

Известные мне на данный момент версии:

NuKE Randomic Life Generator

Компилятор позволяет задать набор свойств вируса, среди которых противодействие резидентным антивирусов, уничтожение файлов контрольных сумм, процедуру шифровки/дешифровки. Помимо этого NRGL предлагает набор деструктивных функций, которые можно внедрить в код создаваемого вируса, таких как уничтожение MBR, файлов и случайных секторов. Код, генерируемый NRGL не отличается читабельностью, хотя человек неплохо знающий ассемблер, может в нем разобраться.

Известные мне на данный момент версии:

Virus Construction Set

Выпущенная в конце 1990 года группой, название которой переводится как ‘Ассоциация Любителей Вирусов’, VCS не отличается особой изощренностью. VCS запрашивает текст, появляющийся в теле вируса и количество поколений вируса, после которого наступает активация. Затем VCS создает файл Virus.Com, содержащий вирусный код. Вирусы, созданные этим компилятором, имеют одинаковые характеристики :

  • Поражение только COM-файлов
  • Количество поражаемых файлов фиксировано
  • Алгоритм активации : уничтожение Autoexec.bat и Config.sys и вывод заданного при генерации текста

Единственной «изюминкой» конструктора является наличие в создаваемых вирусах средств маскировки под антивирусом FluShot. Тем не менее, известно несколько VCS-вирусов.

Известные мне на данный момент версии:

Virus Creation 2000

Известные мне на данный момент версии:

VICE (‘Virogen’s Irregular Code Engine’)

VICE (Virogen’s Irregular Code Engine) -это очереднойполиморфик-генератор, см. MtE и TPE.Существуют несколько версийгенератора, они содержат строки:
[VICE v0.1с, by _irogen]


[_iCE v0.5, by _iro
Несколько вирусов на базе VICEраспространяются вместе с самимгенератором. Это неопасныерезидентные вирусы. Ониперехватывает INT 21h и записываются вконец запускаемых COM- и EXE-файлов.

Amber

Конструктор Amber.Создан в 1996 году.Автор:неизвестен,возможно Reminder[DVC].Полиморфный генератор шифровщикови расшифровщиков.
Amber — генератор полиморфных вирусов.Содержит текст: [email protected]

IVP (‘Instant Virus Production Kit’)

IVP (‘INSTANT VIRUS PRODUCTION KIT’) являетсяутилитой для создания вирусов IVPгенерирует исходные ассемблерныетексты вирусов различных типов,характеристики которыхописываются в конфигурационномфайле. К таким характеристикамотносятся: заражение COM, EXE или обоихтипов; самошифрующийся вирус илинет; перехват INT 24h или нет;заражение COMMAND.COM; встроенныеэффекты и т.д.

Генератор IVP в значительнойстепени повторяет генератор PS-MPS и ,скорее всего, является егоуменьшенной версией.
Автор : Youngsters Against McAffe (USA)

MME (MiMe) является очереднымполиморфик-генератором.
«MME.WhoNoName» — опасныйнерезидентный вирус. При запускеищет .COM-файлы и записывается в ихконец. Часто зараженные файлы виснут при исполнении.
Вируссодержит строки:
[This is WhoNoName V2.1 Virus By Dark Tommy]
The WhoNoName V2.1 Virus Make With MiMe v1.0

Конструктор TPE

Автор: Masud Khafir. Trident Polimorphic EngineTPE — это генераторполиморфик-вирусов, как и генераторMtE. Существуют несколько версийгенератора TPE.
Они содержат строки:
«[ MK / TridenT ]», «[TPE 1.1]» или»[TPE 1.2]» или «[TPE 1.3]» или»
[TPE 1.4]».
См. также MtE, NED, «TPE-Bosnia»,»TPE-Girafe».

Создан в 1991 г. Автор: MadManiac (Bulgaria).
MtE (MuTation Engine) является первымизвестным полиморфик-генератором.Выпущен в 1991 году и по тем временамявлялся наиболее сложнымполиморфик-вирусом. В результатеработы полиморфик-алгоритма врасшифровщике вируса могутвстретиться операции SUB, ADD, XOR, ROR, ROL в произвольном количестве ипорядке. Загрузка и изменениеключей и других параметровшифровки производится такжепроизвольным набором операций, вкотором могут встретиться болееполовины инструкций процессора 8086(ADD, SUB, TEST, XOR, OR, SHR, SHL, ROR, MOV, XCHG, JNZ, PUSH,POP . ) со всеми возможными режимамиадресации.
Содержат текст: «MtE0.90».

Bizatch

Создан в 1996 г.Автор:Quantum /VLAD.
Первый конструктор дляWin’95-вирусов.Использует язык C++.Приего помощи создан вирус Bizatch.Win95.Boza

CPE-APE

Создан в 1994 г.
Автор: Петр Деменюк (Москва). Он же создатель нового вируса PM.Wanderer.
Генераторзашифрованных-полиморфиквирусов. Генерирует 50 файлов.
Описания нет.

Создан в 1994 г.
Автор: Rajaat.
Rajaat’s Tiny Flexible Mutator.Объектный модульлинкуется с исходником вашеговируса, в результате получаетсязашифрованныйполиморфик-вирус.Содержит строку[RTFM].
Описания нет.

Конструктор UCF (TCHK)

Создан в 1992 г.
Автор: Stinger/VIPER.
Trojan Horse Construction Kit.Конструктортроянских вирусов.При его помощи собраны вируса: UCF.a,UCF.Syktyvkar.
Содержит три файла:
thck-fp.exe — обрезает файлы доопределенного размера.
thck-tbc.exe — создает троянский вирус UCF.a
thck-tc.exe — создает троянский вирусUCF.Syktyvkar
Описания нет.

Конструктор TSR-TB


Конструктор VLC

Создан 03-03-1995 г.
Авторы: Trixter & White Cracker.
Virus Lab Creations.Конструктор вирусов на языке C++.Большое количество опций.
Описания нет.

IT История

История IT-Компаний

  • Apple
  • Acer
  • Asus
  • Cisco
  • Compaq
  • Dell
  • Fujitsu
  • HP
  • IBM
  • Intel
  • Texas Instruments
  • Другие
  • Новости и события

Новости it-компаний

Intel вложила 20 млн долларов в солнечную энергетику

Сегодня организация Intel Capital, занимающаяся инвестициями от имени корпорации Intel, объявила об инвестиции в компанию Tr.

Положение о работе

От истории до новостей

  • История ВТ
  • Интернет
  • Новости
  • Интересные факты
  • IT-Персоны
  • IT-технологии
  • История Суперкомпьютеров
  • История первых ЭВМ
  • История становления Интернет

История ЭВМ

  • История ЭВМ и философия науки
  • Понятие и основные виды архитектуры ЭВМ
  • История, развитие компьютерных технологий
  • История развития языков программирования
  • История возникновения компьютерных вирусов
  • Операционные системы Unix
  • Компания Apple
  • Персоны
  • Развитие программного обеспечения

Авторизация

Развитие технологий:

Процессор Pentium III

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

История развития ВТ и первых ЭВМ

История появления ЭВМ и персональных компьютеров насчитывает всего несколько десятилетий. Предыдущий период использования вычислительной технике относится к эпохе применения средств, со.

Популярные

  • Найм подходящей компании SEO для вашего бизнеса
  • Перспективы развития компьютерной техники
  • Расширение сотрудничества между Cisco и МГУУ Правительства Москвы
  • Основные направления развития компьютерной индустрии в ближайшем будущем в рамках форума IDF
  • Вычислительное ядро
  • Технология шлюзов Oracle. Характеристика продуктов

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

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

Добавить комментарий

Программист, который писал притчи и не любил бейсик

В прикладной науке имена людей, внесших огромный вклад в развите техники и технологии, как правило, скрыты за названиями компаний и ст.

Дэвид Паккард, один из основателей компании Hewlett-Packard

За свою легендарную полувековую карьеру Дэвид Паккард оказал огромное влияние на развитие современной электронной индустрии и методов управления. Сегодня Hewlett-Packard — .

Жесткие диски для ноутбуков становятся тоньше

На данный момент жесткие диски для ноутбуков могут быть толщиной 9,5 мм и 12,5 мм. Первые получили наибольшее распространение, а об.

MacBU подытоживает две тысячи девятый год

Как прошел 2009 год в компании, которую традиционно принято считать вторым крупнейшим разработчиков ПО для платформы Apple Macintosh? В Microsoft Ma.

Financial Times обещает iTablet уже в следующем месяце

Конец декабря редакция Financial Times решила скрасить очередной порцией слухов о планшетнике Apple. По данным издания, это устройство, покорившее заголовки СМ.

Внедрение 6-ядерных процессоров Intel Xeon может потребовать

Изданию Fudzilla стали известны подробности по первому 6-ядерному процессору Intel Xeon. Он получит обозначение Core i7 980X, а его несущая тактовая ча.

VESA официально утвердила стандарт mini DisplayPort

Презентованный Apple осенью 2008-го новый видеоинтерфейс mini DisplayPort (сокращенно mDP) вызвал неоднозначную реакцию, отголоски которой оставались различимыми вплоть до вчерашнего дн.

Планшетный Мак покажут 26 января?

За несколько дней до начала нового 2010 года онлайн-пресса разразилась новым потоком слухов на тему планшетного компьютера Apple: сначала хорошо ос.

Малварь по шагам [№6] Полиморфизм

Здравствуйте, мои маленькие любители малвари ! Чувствую острую потребность расставить все точки на i в теме полиморфизма .

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

Полиморфизм , как свойство – это наличие разных ассемблерных форм, для одного и того же кода.

Мутация – это процесс морфинга кода:

  • замена опкодов на аналоги
  • смешивание целевого кода с мусорным
  • математические преобразования
  • перестановка местами блоков кода
  • генерация случайного алгоритма декриптора
  • и многие другие бинарные девиации

History chanel
В своём первоначальном значении, которое появилось более десятка лет назад:

  • Полиморфный вирус – тело вируса накрыто полиморфным декриптором.
  • Метаморфный вирус – способный мутировать своё тело целиком, пересобирая его по внутренним “чертежам”.
  • Пермутирующий вирус – способный мутировать откомпилированный код, обычно свой. То есть, он дизассемблирует код, мутирует его и кладёт на место.

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

Конечно оно будет сильно затруднено, но современные эвристики и проактивки являются достойным решением возникшей угрозы сигнатурным сканерам. Говоря по-простому, эти красивые идеи несколько порастеряли свою актуальность, а вырванные из контекста термины используются совсем в других областях…
Исторический экскурс закончен, подробней вы сможете почитать в разделе ссылок, а мы переходим к современным реализациям.

Декрипторы
Зашифровать код и вызвать декриптор перед исполнением – наиболее распространённое решение. Код меняет свою бинарную форму? Да, он превращается в мусор и без исполнения декриптора бесполезен. Но как быть с появлением сигнатур на декрипторе ? Тут на нам помощь приходит полиморфизм!

Поиграть с этим декриптором можно здесь .

У декрипторов в современных ОС есть одна проблемка – для работы расшифрованного кода, он должен иметь атрибуты памяти Read|Write|Execute, что достигается:

  1. назначением таких прав в pe-хидерах, на что плохо реагирует эвристика хидеров.
  2. динамическим вызовом VirtualProtect( PAGE_EXECUTE_READWRITE ) или VirtualAlloc( PAGE_EXECUTE_READWRITE ), что может заинтересовать эвристику эмулятора.

Получается, что сначала морфленный шеллкод создаёт плацдарм для расшифровки, меняя атрибуты памяти, после чего отрабатывает декриптор . Разумеется, эмулятор должен прекратить работу до получения секции с PAGE_EXECUTE_READWRITE ибо это защита от сканера only!

Генераторы
Алгоритмы, способные создавать разные ассемблерные представления одного кода, называют полиморфными движками:

  • C++ beetle2
  • MASM xTG21

Суть любого движка в абстрагировании: от бинарной реализации мы переходим к всё более высокоуровневым формам.
Давайте мысленно проследим развитие одной команды полиморфного генератора :

  1. GEN_MOV_REG_0 – умеет генерировать одну команду mov reg,0
  2. SET_REG_0 – умеет генерировать случайную из 21 варианта
  3. SET_REG_0_TRASH – прошлый шаг щедро разбавляется мусором
  4. SET_REG_0_MEGATRASH – мусор становится сложнее, на каждый целевой опкод приходится по сотне вложенных функций с WinApi .

На данном этапе сложность движка зависит только от фантазии автора, Вы можете разбавлять код антиотладочным трюками, антиэмуляцией или поэмами Шекспира.

Полиморфизм

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

Содержание

Термин «полиморфизм» (с греч. «многоформенность») применительно к компьютерным вирусам появился приблизительно в 1990 году. С того времени полиморфизм в вирусах прошел множество стадий своего развития: от простейшего побайтного xor-шифрования до сложнейших метаморфов, использующих сложнейшие алгоритмы, в том числе криптографические.

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

Полиморфные вирусы

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

Каждый экземпляр полиморфного вируса шифруется своим ключом. Для шифрования кода полиморфного вируса могут использоваться случайные ключи и алгоритмы шифрования.

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

Уровни полиморфизма

В классификации CARO полиморфные вирусы в зависимости от их сложности разделяют на несколько уровней.

Уровень 1. Вирусы первого уровня полиморфизма используют постоянные значения для разных расшифровщиков. Их можно обнаружить по некоторым постоянным участкам кода расшифровщика. Такие вирусы принято называть «не совсем полиморфными», или олигоморфными (oligomorphic).

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

Уровень 3. Вирусы, использующие в расшифровщике команды, не участвующие в расшифровании вирусного кода, или «команды-мусора», относят к третьему уровню полиморфизма. Это такие команды ассемблера, как NOP, MOV AX, AX, STI, CLD, CLI и т.д. Данные вирусы также можно определить с помощью некоторой сигнатуры, если произвести отсеивание всех «мусорных» команд.

Уровень 4. Вирусы четвертого уровня используют в расшифровщике взаимозаменяемые инструкции и «перемешанные» инструкции без изменения алгоритма расшифрования. Например, ассемблерная команда MOV AX,BX имеет взаимозаменяемые инструкции: PUSH BX — POP AX; XCHG AX,BX; MOV CX,BX — MOV AX,CX и т. д. Детектирование данных вирусов возможно с помощью некоторой перебираемой сигнатуры.

Уровень 5. Пятый уровень полиморфизма включает свойства всех перечисленных уровней, а кроме того, расшифровщик может использовать различные алгоритмы расшифрования вирусного кода. Для расшифровки возможно использование основного вирусного кода, расшифровки части самого же декриптора или нескольких расшифровщиков, поочередно расшифровывающих друг друга либо непосредственно вирусный код. Как правило, обнаружение вирусов данного уровня полиморфизма с помощью сигнатуры невозможно. Если для обнаружения такого вируса возможен серьезный анализ кода только самого расшифровщика, то для лечения необходимо произвести частичную или полную расшифровку тела вируса, чтобы извлечь информацию о зараженном файле.

Уровень 6. К нему относятся нешифрованные вирусы — т. е. вирусы, состоящие из программных единиц-частей, которые «перемешиваются» внутри тела вируса. Данные вирусы, как «кубики», тасуют свои подпрограммы (инсталляции, заражения, обработчика прерывания, анализа файла и т. д.). Такие вирусы еще называются пермутирующими (permutating).

История

Первым представителем полиморфных вирусов стал «Chameleon» в начале 1990 года, однако проблема стала серьезней чуть позже – в апреле 1991 года была зарегистрирована эпидемия «Tequila». Идея полиморфных вирусов стала столь популярна, что дошло до создания генераторов полиморфных вирусных кодов – первым стал MtE. Кроме того, генератор позволял получать полиморфный вирус из обычного – путем присоединения к OBJ-файлу вируса файла полиморфного кода с идентичным расширением.

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

Генераторы полиморфных вирусов также совершенствовались – в середине девяностых это были MTE 0.90 (Mutation Engine), TPE (Trident Polymorphic Engine), четыре версии NED (Nuke Encryption Device) и DAME (Dark Angel’s Multiple Encryptor).

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

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

PolyEngine — полиморфные генераторы

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

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

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

вирус программа компьютер

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

Основными путями проникновения вирусов в компьютер являются съемные диски (гибкие и лазерные), а также компьютерные сети. Заражение жесткого диска вирусами может произойти при загрузке программы с дискеты, содержащей вирус. Такое заражение может быть и случайным, например, если дискету не вынули из дисковода А и перезагрузили компьютер, при этом дискета может быть и не системной. Заразить дискету гораздо проще. На нее вирус может попасть, даже если дискету просто вставили в дисковод зараженного компьютера и, например, прочитали ее оглавление.

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

Наиболее часто вирусом заражаются загрузочный сектор диска и исполняемые файлы, имеющие расширения EXE, COM, SYS, BAT. Крайне редко заражаются текстовые файлы.

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

3.1 Признаки появления вирусов

Есть ряд признаков, свидетельствующих о заражении компьютера:

вывод на экран непредусмотренных сообщений или изображений;

подача непредусмотренных звуковых сигналов;

неожиданное открытие и закрытие лотка CD-ROM-устройства;

произвольный, без вашего участия, запуск на компьютере каких-либо программ;

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

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

Кроме того, есть некоторые характерные признаки поражения вирусом через электронную почту:

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

в вашем почтовом ящике находится большое количество сообщений без обратного адреса и заголовка.

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

Есть также косвенные признаки заражения вашего компьютера:

частые зависания и сбои в работе компьютера;

медленная работа компьютера при запуске программ;

невозможность загрузки операционной системы;

исчезновение файлов и каталогов или искажение их содержимого;

частое обращение к жесткому диску (часто мигает лампочка на системном блоке);

интернет-браузер «зависает» или ведет себя неожиданным образом (например, окно программы невозможно закрыть).

В 90% случаев наличие косвенных симптомов вызвано сбоем в аппаратном или программном обеспечении. Несмотря на то, что подобные симптомы с малой вероятностью свидетельствуют о заражении, при их появлении рекомендуется провести полную проверку вашего компьютера установленной на нем антивирусной программой. В случае отсутствия таковой, можно скачать и установить пробную версию Антивируса Касперского Personal или Drweb`а, которая будет полностью работоспособна две недели с момента установки.

Генератор полиморфного кода

3.2.3. Генератор полиморфного кода

3.2.3.1. Блочная структура полиморфного кода

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

// Служит для организации цикла.

// ES_VARIABLE_0 – ячейка, которая может быть занята под счетчик.

// ES_REG_0 — регистр, который может быть занят под счетчик.

// ES_ADDRESS_0 — куда осуществить переход для повтора цикла.

EO_DEC, EOP_VAR, ES_VARIABLE_0,

EO_CMP, EOP_VAR, ES_VARIABLE_0, EOP_CONST, 0,

EO_JNZ, EOP_CONST, ES_ADDRESS_0

EO_DEC, EOP_REG, ES_REG_0,

EO_CMP, EOP_REG, ES_REG_0, EOP_CONST, 0,

EO_JNZ, EOP_CONST, ES_ADDRESS_0

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

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

Вернемся к распределению блоков в памяти. Помимо того, что каждый алгоритм состоит из произвольного набора функциональных блоков, эти блоки не имеют фиксированного места расположения. Скажем, что под весь алгоритм выделено 200 байт, а размер всех блоков в сумме составляет 100 байт. В результате положение этих блоков как бы «плавает» от одного сгенерированного алгоритма к другому. Должно выполняться лишь одно условие: соблюдение четкой последовательности расположения блоков. То есть, адрес расположения блока с большим номером не может быть меньше, чем адрес блока с меньшим номером. Для большей наглядности приведем рисунок 6.

Рисунок 6. Расположение функциональных блоков в памяти.

Белым цветом показаны все функциональные блоки. Серым цветом отмечены пустые места, которые будут заполнены произвольными холостыми блоками.

Может получиться, например, и такая картина распределения блоков, когда между некоторыми нет промежутка заполняемого холостыми блоками. Такая ситуация показана на рисунке 7.

Рисунок 7. Плотное расположение функциональных блоков в памяти.

Как функциональные блоки, так и холостые, могут иметь различную длину. После случайного расположения функциональных блоков происходит заполнение пустых пространств между ними холостыми блоками. Причем, существуют холостые блоки длиной 1, для того чтобы можно было заполнить пустые места в любом случае. Размер памяти, выделенный под создаваемый код алгоритма, выбирается произвольно. В данной версии он лежит в пределах от 160 до 200 байт. Это с запасом покрывает максимально необходимый размер памяти, необходимый для размещения 8 самых больших функциональных блоков из всех возможных, и оставляет место под холостые блоки. Более большой полиморфный код хоть и будет сложнее для анализа, но это может существенно замедлить процесс шифрования и расшифрования. По этому лучше всего придерживаться разумного баланса.

3.2.3.2. Алгоритм генерации полиморфного кода

Опишем теперь пошагово как работает генератор полиморфного кода.

На первом этапе выбираются характеристики будущих алгоритмов. К ним относятся:
a) размер памяти, выделенной под код;
б) в каких регистрах или ячейках будут располагаться указатели на модифицируемый код;
г) сколько раз будут повторяться функциональные блоки 3 и 4;
д) в каких регистрах или ячейках будут располагаться счетчики циклов;
При этом количество повторений блоков 3 и 4 должно быть одинаковым и для алгоритма шифрования и для алгоритма расшифрования, так как каждой команде преобразования данных при шифровании должна быть сопоставлена обратная команда в алгоритме расшифрования.

Виртуальная память, используемая в алгоритме, заполняется случайными значения.

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

Создается 2-ой функциональный блок и помещается в промежуточное хранилище. Алгоритм создания подобен алгоритму, описанному в шаге 3. Но только теперь подставляется не только номер регистра или ячейки памяти, куда помещается значение, но и адрес памяти с источником. В эту ячейку памяти в дальнейшем виртуальная машина будет помещать размер шифруемой/расшифруемой области.

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

Подсчитывается размер уже сгенерированных блоков. Это число затем будет использоваться для случайной генерации адреса начала блоков в цикле.

Рассчитывается размер памяти, который будет выделен под уже сгенерированные блоки (расположенные до цикла) с резервированием места под холостые блоки. Также подсчитывается адрес первого блока в цикле.

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

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

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

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

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

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

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

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

Яков Кузнецов/ автор статьи

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

Понравилась статья? Поделиться с друзьями:
NEVINKA-INFO.RU
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: