![]() |
Низкоуровневое шифрование самописных вирей
Низкоуровневое шифрование самописных вирей.
Благодаря этому разделу (из за того, что будущие крякеры учатся своему мастерству) мы значительно(а может и не слишком значительно) осложняем(хотя если они читают форум то может и облегчаем) работу разработчиков программных продуктов, но я думаю, стоит немного подумать и о разработчиках антивирусного ПО ;) . Теория: Антивирусы, проверяя большие объемы файлов, ищут в файлах заранее подготовленные программистами последовательности байт. Значит для обхода этой процедуры, нужно сделать тело вируса уникальным, а всё остальное наиболее похожим на остальные программы, именно этим я и предлагаю заняться в этой теме. Чтоб не начинать с пустого места, я приготовил несколько “программок”, скомпилированных с одного и того же исходника (без внесения в него каких либо изменений), с интервалом времени примерно в 10 сек. И выполняющего следственно одну и туже функцию, вывод “MessageBox”. Файлы были автоматически сгенерированы, и зашифрованы ассемблером(с использованием макросом), причём тело программы было зашифровано методом xor(“исключающее или”), а потом тело расшифровывателя, было превращено в код, который при запуске восстановит его на своё же место и передаст ему управление, что без проблем просматривается в любом отладчике. При всём этом, пароль к xor шифровальщику и последовательность команд востанавливателя кода, зависят от текущего времени компиляции. В восстановителе кода участвуют несколько команд: Код:
xor byte[pos], sume byteЧего я жру: Предложения способов автоматического выделения данной программы среди остальных программ, не требующих много ресурсов, и отладки программы, а также способов обхода этих способов. И ещё, недолжно использоваться прямых адресов, для возможности применения его в DLL модулях без таблицы исправления адресов. ИМХО будущее за DLL вирусами. Все файлы сжаты раром, сумма размеров 6 файлов 9,2 Кб, в архиве 4 Кб <скачать> P.S. Думаю тема будет долгая. [offtop] В результате мы разработаем основу для самых опастных не находимых автоматическисаморегенери руемых вирусов, которые в будущем захватят мир, ктулху и феникгс отдыхают. Хотя помоему я немножко приувеличил :-) [/offtop] |
ну дык это ведь неново - банальный СамоМодифицирующийсяКод, при4ем практи4ески все авери давно палят декриптор, расшифровующий код вируса таким методом
|
Цитата:
Лично я не пойму как они его палят(ведь там только пара байт остаёться одинакова), может посветишь? |
ну раз так - давай обсуждать =)
нас4ет как палят: 1. поскольку в слу4ае СМК код сохраняется в бинарнике пошифрованым (неважно каким алгоритмом), то сигнатурный анализатор (базы) аверя сразу не дадут никакого результата 2. стало быть, палит вирус эвристи4еский анализатор с заданым уровнем достоверности. например: если есть пошифрованое тело, то эвристик заметит неладное если на старте проги идут не стандартные GetModuleHandle и т.д. апи, а сам декриптор, который в цикле долго и нудно 4то-то будет расшифровывать - это первое. второе: 4аще всего тот же декриптор выносят в другую секцию файла, либо осуществляю EPO-инфекцию (вызов вредоносного кода подменой, например, вызова какой-либо апи функции, подменив ее в импорте). вообще вариантов ку4а и по4итать о подобных вещах монжо в любой книге по вирусописанию, форумам по vx\rat, васме (рукомендую), архивах зомбы (суперрекомендую;) |
Цитата:
А вообще его можно обнаружить, таким регулярным выражением Код:
/\xE8.\0{3}.{16,32}\x5D(\x80[\x75\x4D\x45\x65\x4D\x6D]..|\xC6\x45..|\xF6\x55.){8,}/Цитата:
Цитата:
Цитата:
|
>>Ну, если зайти в папку system32 и посмотреть, в >>начале модулей DLL ;), очень редко встречается >>вызов API
дык на дллмейн смотрят, либо трейсером на у4астки выполняемые в самой либе >>А вообще его можно обнаружить, таким >>регулярным выражением какие РВ? 4ет первый раз слышу. и за4ем они, если всеравно будет код их обрабатывающий? |
Цитата:
Код:
sub findvir(){Цитата:
Но это конечно слишком, поетому стоит подумать, что именно надо, и какким способом это реализовать, придумать своё! Кстати, ссылочку не подкинешь? Цитата:
|
>>поэтому я и ищу что-нибудь, чем можно лучше защитить этот код.
имено защитить? и какой именно код? >>Шифрование используют не только в вирусах, но и при защите прог, требующих регистрацию, от крякеров . эт понятно, на то она и криптограйия 4тобы защищать все на основе теории сложности >>А где эти архивы найти можно? где-то на форуме кряклаба линк на этой недели на некоторые статьи пробегал, а вообще по4итай A29, фряк |
Цитата:
|
Цитата:
Как то нужно было срочно криптануть файл, ничего подходящего под рукой не было, в итоге поступил так: запаковал файл каким-то стандартным упаковщиком с защитой паролем + написал простой скриптик который водил пароль в форму и жал ОК. Заняло это 3 минуты, а защита практически неуязвимая. Естественно, только в том случае, если антивирус не запущен на постоянную проверку. |
2Disturber, ты прав, но вот описаный тобой метод работает только для статика, а мониторы сей4ас практи4ески у всех.
и кстать, а смысл был писать скрипт, если в том же винрара можно сделать самораспаковывающийся с паролем sfx безо всяких палевных эмуляций нажатий |
Цитата:
Скрытие действий и криптовка готовых вирей это уже совсем другая тема. Кстате кто криптует вири в sfx? Вопервых антивири проверяют внутри архивов, а во вторых, после того как sfx распакует его в temp антивирь сразу захочит его проверить. |
Цитата:
Цитата:
Если хочешь скрыть программу от мониторов, то юзай метаморфизм + ВМ и ниодин эмуль никогда не сможет проэмулировать твой код. |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Антивири не особо обращают внимание на самомодификацию. Это привелегия эвристики. Она пасёт помимо самомодификации к каким апи обращается код. А ав по большей части ждут, когда вирь засветит свои сигнатуры. Потоки пох, если ав не найдёт сигнатур. Максимум будет сообщение эвристики, что вроде как вирус нашёлся. Не забываем про такую вещь, как метаморфизм. Кто сумеет сбацать надёжный качественный метаморф-движок репу можно прокачать значительно :)
|
>>и хочешь скрыть программу от мониторов, то юзай >>метаморфизм + ВМ и ниодин эмуль
>>никогда не сможет проэмулировать твой код. у наших "продвинутых" росийских аверях на это один только метод - вбивать соответствующую ВМ в блэк и все функции, выполняемый на ней туда же =( >>Кто сумеет сбацать надёжный качественный метаморф-движок репу можно >>прокачать значительн о4 сомневаюсь, эт привилегия едениц - у мну, например, дальше метаморфа декриптора дело не дошло =( |
Цитата:
Цитата:
|
>>Так что они туда пихать будут если она заморфлена будет?
сигатуру ВМ, как было с VmProtect и каспером (на 4то я намикал) >>А чем отличается код декриптора от любого другого кода программы? нет, метаморф. а на примере декриптора я говорил о коде, слабо "общающимя" с другими 4астями софта, вообщем 4асти4ный слу4ай, так сказать... |
Цитата:
Цитата:
|
Полиморфные и метаморфные, это значит они самомодифицируются, изменяя себя до неузнаваимости, но я считаю это не кчиму, в моём примере он меняется примерно также но только на стадии компиляции, причём даже размер кода меняется.
|
>>Так у VMProtect'ора ВМ не заморфлена вроде.
а я разве такое говорил? Цитата:
|
Цитата:
сигатуру ВМ, как было с VmProtect и каспером (на 4то я намикал) Цитата:
Поверим бывшему мемберу 29a? :) |
>>сигатуру ВМ, как было с VmProtect и каспером (на 4то я намикал)
"заморфлен" (с то4ки зрения анализатора; незнаю по4ему ты так любишь это слово) будет ПИ-КОД()!!!, выпоняемый на декектируемой ВМ >>Поверим бывшему мемберу 29a? =) ну раз уж так, то в свою о4ередь процитирую ms-rem (Спец Хакер, №57, стр 58) Полиморф обы4но просто ДОБАВЛЯЕТ в код мусорные инструкции, 4тобы затруднить дизассмеблировние и анализ кода, а метаморф старается целиком ИЗМЕНИТЬ ВИД кода, сохряняя при этом оригинальный алгоритм его работы, для 4его он заменяет интрукции синонимами, состоящими в свою о4ередь из нескольких других инструкций. тоесть, вывод в обеих цитатах делается с упором на ПОЛНОЕ изменение кода, а не на ТЕЛО ВСЕГО ВИРУСА, т.к. цель всех манипуляций полиморфов\метаморфов - обмануть анализатор ТОЛЬКО в тех кусках кода, которые в этом нуждаются, а морфировать весь код не представляется нужным, т.к. это, за4астую, дополнительно такты процессора... |
Цитата:
Disassembler -> Shrinker -> Permutator -> Expander -> Assembler имхо неважно где код находится(сохраняется), а важно просто 4тобы входной файл(дамп и т.д.) пропускался 4ерез такую последовательность |
Цитата:
|
Цитата:
|
Да только, что друг попросил глянуть файл т.к. он начал палиться каспером как Trojan.Win32.Pakes, оказывается он был просто запакован приватным пакером, который наверное или вышел на паблик или попал в руки какому-нибудь любителю пинчей)
|
Дизассемблирование и ассемблирование - имхо слишком геморный просесс, лучьше зашифровать код, разбить расшифровщик на байты(может есщё на слова и двойные слова), а потом сгенерировать случайную последовательность из набора инструкций или набора груп инструкций, способных модифицировать первую часть себя в расшифровщик кода вируса и передать на него управление, а ко всему прочему можно их(инструкции) ещё и поменять местами. А чем больше закладываешь в него инструкций, тем длинее получается код способный его найти, а значит и быстродействие АВ падает.
А вот телько-что придумал, если между каждыми 3-5 инструкциями вставить вызовы функций, только-что расшифрованных предидущими, думаю тогда и регулярные выражения не помогут, потому-что будут палиться большая часть запускаемых файлов. Или добавить безполезные инструкции например: Код:
mov [pos], val |
| Время: 23:33 |