Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Авторские статьи (https://forum.antichat.xyz/forumdisplay.php?f=31)
-   -   Низкоуровневое шифрование самописных вирей (https://forum.antichat.xyz/showthread.php?t=22797)

hidden 18.08.2006 06:45

Низкоуровневое шифрование самописных вирей
 
Низкоуровневое шифрование самописных вирей.

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

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

Чтоб не начинать с пустого места, я приготовил несколько “программок”, скомпилированных с одного и того же исходника (без внесения в него каких либо изменений), с интервалом времени примерно в 10 сек. И выполняющего следственно одну и туже функцию, вывод “MessageBox”.

Файлы были автоматически сгенерированы, и зашифрованы ассемблером(с использованием макросом), причём тело программы было зашифровано методом xor(“исключающее или”), а потом тело расшифровывателя, было превращено в код, который при запуске восстановит его на своё же место и передаст ему управление, что без проблем просматривается в любом отладчике.

При всём этом, пароль к xor шифровальщику и последовательность команд востанавливателя кода, зависят от текущего времени компиляции.

В восстановителе кода участвуют несколько команд:
Код:

xor byte[pos], sume byte
,
add byte[pos], sume byte
или
sub byte[pos], sume byte
,
mov byte[pos], sume byte
,
xor byte[pos], not sume byte
not byte[pos]
,
add byte[pos], not sume byte
not byte[pos]
или
sub byte[pos], not sume byte
not byte[pos]
,
mov byte[pos], not sume byte
not byte[pos]

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

Чего я жру:
Предложения способов автоматического выделения данной программы среди остальных программ, не требующих много ресурсов, и отладки программы, а также способов обхода этих способов. И ещё, недолжно использоваться прямых адресов, для возможности применения его в DLL модулях без таблицы исправления адресов.
ИМХО будущее за DLL вирусами.

Все файлы сжаты раром, сумма размеров 6 файлов 9,2 Кб, в архиве 4 Кб <скачать>

P.S. Думаю тема будет долгая.
[offtop]
В результате мы разработаем основу для самых опастных не находимых автоматическисаморегенери руемых вирусов, которые в будущем захватят мир, ктулху и феникгс отдыхают. Хотя помоему я немножко приувеличил :-)
[/offtop]

ProTeuS 18.08.2006 15:26

ну дык это ведь неново - банальный СамоМодифицирующийсяКод, при4ем практи4ески все авери давно палят декриптор, расшифровующий код вируса таким методом

hidden 18.08.2006 16:52

Цитата:

Сообщение от ProTeuS
ну дык это ведь неново - банальный СамоМодифицирующийсяКод, при4ем практи4ески все авери давно палят декриптор, расшифровующий код вируса таким методом

Ну так я для этого и создал тему, чтоб обсудить и сделать его не таким банальным, одна голова хороше, а форум голов очень хорошо :D .
Лично я не пойму как они его палят(ведь там только пара байт остаёться одинакова), может посветишь?

ProTeuS 18.08.2006 18:17

ну раз так - давай обсуждать =)

нас4ет как палят:

1. поскольку в слу4ае СМК код сохраняется в бинарнике пошифрованым (неважно каким алгоритмом), то сигнатурный анализатор (базы) аверя сразу не дадут никакого результата

2. стало быть, палит вирус эвристи4еский анализатор с заданым уровнем достоверности.

например: если есть пошифрованое тело, то эвристик заметит неладное если на старте проги идут не стандартные GetModuleHandle и т.д. апи, а сам декриптор, который в цикле долго и нудно 4то-то будет расшифровывать - это первое. второе: 4аще всего тот же декриптор выносят в другую секцию файла, либо осуществляю EPO-инфекцию (вызов вредоносного кода подменой, например, вызова какой-либо апи функции, подменив ее в импорте).

вообще вариантов ку4а и по4итать о подобных вещах монжо в любой книге по вирусописанию, форумам по vx\rat, васме (рукомендую), архивах зомбы (суперрекомендую;)

hidden 18.08.2006 22:13

Цитата:

Сообщение от ProTeuS
стало быть, палит вирус эвристи4еский анализатор с заданым уровнем достоверности.

например: если есть пошифрованое тело, то эвристик заметит неладное если на старте проги идут не стандартные GetModuleHandle и т.д. апи

Ну, если зайти в папку system32 и посмотреть, в начале модулей DLL ;), очень редко встречается вызов API
А вообще его можно обнаружить, таким регулярным выражением
Код:

/\xE8.\0{3}.{16,32}\x5D(\x80[\x75\x4D\x45\x65\x4D\x6D]..|\xC6\x45..|\xF6\x55.){8,}/
, поэтому я и ищу что-нибудь, чем можно лучше защитить этот код.
Цитата:

Сообщение от ProTeuS
сам декриптор, который в цикле долго и нудно 4то-то будет расшифровывать

Шифрование используют не только в вирусах, но и при защите прог, требующих регистрацию, от крякеров :D .
Цитата:

Сообщение от ProTeuS
4аще всего тот же декриптор выносят в другую секцию файла, либо осуществляю EPO-инфекцию (вызов вредоносного кода подменой, например, вызова какой-либо апи функции, подменив ее в импорте).

Вот это кокраз и легче всего обнаружить, нарушение таблицы импорта.
Цитата:

Сообщение от ProTeuS
архивах зомбы (суперрекомендую ;)

А где эти архивы найти можно?

ProTeuS 18.08.2006 22:25

>>Ну, если зайти в папку system32 и посмотреть, в >>начале модулей DLL ;), очень редко встречается >>вызов API
дык на дллмейн смотрят, либо трейсером на у4астки выполняемые в самой либе

>>А вообще его можно обнаружить, таким >>регулярным выражением

какие РВ? 4ет первый раз слышу. и за4ем они, если всеравно будет код их обрабатывающий?

hidden 18.08.2006 22:43

Цитата:

Сообщение от ProTeuS
какие РВ? 4ет первый раз слышу.

Перл, хотя похожее можно легко перенести и на с++
Код:

sub findvir(){
  local($fn)=@_;
  open(IN,$fn)||next;binmode(IN);read(IN,$buf,-s$fn);close(IN);
  return ($buf=~/\xE8.\0{3}.{16,32}\x5D(\x80[\x75\x4D\x45\x65\x4D\x6D]..|\xC6\x45..|\xF6\x55.){8,}/);
}

while(<*.exe>){ print "Found in $_\n\n" if(&findvir($_)); }

while(<C:\\windows\\system32\\*.*>){ print "Found in $_\n" if(&findvir($_)); }

Цитата:

Сообщение от ProTeuS
за4ем они, если всеравно будет код их обрабатывающий?

Ну например: Если в шифровщик будет включено половина ассемблерских комманд, то этот код, будет не отличить от осталькых программ.
Но это конечно слишком, поетому стоит подумать, что именно надо, и какким способом это реализовать, придумать своё!

Кстати, ссылочку не подкинешь?
Цитата:

Сообщение от ProTeuS
архивах зомбы (суперрекомендую ;)


ProTeuS 18.08.2006 23:58

>>поэтому я и ищу что-нибудь, чем можно лучше защитить этот код.
имено защитить? и какой именно код?

>>Шифрование используют не только в вирусах, но и при защите прог, требующих регистрацию, от крякеров .
эт понятно, на то она и криптограйия 4тобы защищать все на основе теории сложности


>>А где эти архивы найти можно?
где-то на форуме кряклаба линк на этой недели на некоторые статьи пробегал, а вообще по4итай A29, фряк

ProTeuS 19.08.2006 00:09

Цитата:

Сообщение от hidden
Перл, хотя похожее можно легко перенести и на с++
Код:

sub findvir(){
  local($fn)=@_;
  open(IN,$fn)||next;binmode(IN);read(IN,$buf,-s$fn);close(IN);
  return ($buf=~/\xE8.\0{3}.{16,32}\x5D(\x80[\x75\x4D\x45\x65\x4D\x6D]..|\xC6\x45..|\xF6\x55.){8,}/);
}

while(<*.exe>){ print "Found in $_\n\n" if(&findvir($_)); }

while(<C:\\windows\\system32\\*.*>){ print "Found in $_\n" if(&findvir($_)); }


Ну например: Если в шифровщик будет включено половина ассемблерских комманд, то этот код, будет не отличить от осталькых программ.
Но это конечно слишком, поетому стоит подумать, что именно нтатадо, и какким способом это реализовать, придумать своё!

Кстати, ссылочку не подкинешь?

а за4ем это все, если трейсер в складе аверя будет палить ЛЮБОЙ код динами4ески в время выполнения?

DisturbeR 19.08.2006 01:07

Цитата:

за4ем это все, если трейсер в складе аверя будет палить ЛЮБОЙ код динами4ески в время выполнения?
Это как раз и есть основной недостаток всех крипторов, как не защищай, не прячь, код будет выполнятся и анализироваться, думать надо не о том как спрятать, а как скрыть вредоносное действие.
Как то нужно было срочно криптануть файл, ничего подходящего под рукой не было, в итоге поступил так: запаковал файл каким-то стандартным упаковщиком с защитой паролем + написал простой скриптик который водил пароль в форму и жал ОК. Заняло это 3 минуты, а защита практически неуязвимая. Естественно, только в том случае, если антивирус не запущен на постоянную проверку.


Время: 15:46