Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|
Низкоуровневое шифрование самописных вирей |

18.08.2006, 06:45
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Низкоуровневое шифрование самописных вирей
Низкоуровневое шифрование самописных вирей.
Благодаря этому разделу (из за того, что будущие крякеры учатся своему мастерству) мы значительно(а может и не слишком значительно) осложняем(хотя если они читают форум то может и облегчаем) работу разработчиков программных продуктов, но я думаю, стоит немного подумать и о разработчиках антивирусного ПО  .
Теория:
Антивирусы, проверяя большие объемы файлов, ищут в файлах заранее подготовленные программистами последовательности байт. Значит для обхода этой процедуры, нужно сделать тело вируса уникальным, а всё остальное наиболее похожим на остальные программы, именно этим я и предлагаю заняться в этой теме.
Чтоб не начинать с пустого места, я приготовил несколько “программок”, скомпилированных с одного и того же исходника (без внесения в него каких либо изменений), с интервалом времени примерно в 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]
|
|
|

18.08.2006, 15:26
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
ну дык это ведь неново - банальный СамоМодифицирующийсяКод, при4ем практи4ески все авери давно палят декриптор, расшифровующий код вируса таким методом
Последний раз редактировалось ProTeuS; 18.08.2006 в 15:34..
|
|
|

18.08.2006, 16:52
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Сообщение от ProTeuS
ну дык это ведь неново - банальный СамоМодифицирующийсяКод, при4ем практи4ески все авери давно палят декриптор, расшифровующий код вируса таким методом
Ну так я для этого и создал тему, чтоб обсудить и сделать его не таким банальным, одна голова хороше, а форум голов очень хорошо  .
Лично я не пойму как они его палят(ведь там только пара байт остаёться одинакова), может посветишь?
|
|
|

18.08.2006, 18:17
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
ну раз так - давай обсуждать =)
нас4ет как палят:
1. поскольку в слу4ае СМК код сохраняется в бинарнике пошифрованым (неважно каким алгоритмом), то сигнатурный анализатор (базы) аверя сразу не дадут никакого результата
2. стало быть, палит вирус эвристи4еский анализатор с заданым уровнем достоверности.
например: если есть пошифрованое тело, то эвристик заметит неладное если на старте проги идут не стандартные GetModuleHandle и т.д. апи, а сам декриптор, который в цикле долго и нудно 4то-то будет расшифровывать - это первое. второе: 4аще всего тот же декриптор выносят в другую секцию файла, либо осуществляю EPO-инфекцию (вызов вредоносного кода подменой, например, вызова какой-либо апи функции, подменив ее в импорте).
вообще вариантов ку4а и по4итать о подобных вещах монжо в любой книге по вирусописанию, форумам по vx\rat, васме (рукомендую), архивах зомбы (суперрекомендую 
|
|
|

18.08.2006, 22:13
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Сообщение от 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то-то будет расшифровывать
Шифрование используют не только в вирусах, но и при защите прог, требующих регистрацию, от крякеров  .
Сообщение от ProTeuS
4аще всего тот же декриптор выносят в другую секцию файла, либо осуществляю EPO-инфекцию (вызов вредоносного кода подменой, например, вызова какой-либо апи функции, подменив ее в импорте).
Вот это кокраз и легче всего обнаружить, нарушение таблицы импорта.
Сообщение от ProTeuS
архивах зомбы (суперрекомендую 
А где эти архивы найти можно?
|
|
|

18.08.2006, 22:25
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
>>Ну, если зайти в папку system32 и посмотреть, в >>начале модулей DLL  , очень редко встречается >>вызов API
дык на дллмейн смотрят, либо трейсером на у4астки выполняемые в самой либе
>>А вообще его можно обнаружить, таким >>регулярным выражением
какие РВ? 4ет первый раз слышу. и за4ем они, если всеравно будет код их обрабатывающий?
|
|
|

18.08.2006, 22:43
|
|
Постоянный
Регистрация: 23.04.2006
Сообщений: 622
Провел на форуме: 5887054
Репутация:
1292
|
|
Сообщение от 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
архивах зомбы (суперрекомендую 
|
|
|

18.08.2006, 23:58
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
>>поэтому я и ищу что-нибудь, чем можно лучше защитить этот код.
имено защитить? и какой именно код?
>>Шифрование используют не только в вирусах, но и при защите прог, требующих регистрацию, от крякеров .
эт понятно, на то она и криптограйия 4тобы защищать все на основе теории сложности
>>А где эти архивы найти можно?
где-то на форуме кряклаба линк на этой недели на некоторые статьи пробегал, а вообще по4итай A29, фряк
Последний раз редактировалось ProTeuS; 19.08.2006 в 00:01..
|
|
|

19.08.2006, 00:09
|
|
HARDstasy
Регистрация: 26.11.2004
Сообщений: 1,367
Провел на форуме: 4226592
Репутация:
2175
|
|
Сообщение от 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ески в время выполнения?
|
|
|

19.08.2006, 01:07
|
|
Участник форума
Регистрация: 11.03.2006
Сообщений: 119
Провел на форуме: 1166355
Репутация:
177
|
|
за4ем это все, если трейсер в складе аверя будет палить ЛЮБОЙ код динами4ески в время выполнения?
Это как раз и есть основной недостаток всех крипторов, как не защищай, не прячь, код будет выполнятся и анализироваться, думать надо не о том как спрятать, а как скрыть вредоносное действие.
Как то нужно было срочно криптануть файл, ничего подходящего под рукой не было, в итоге поступил так: запаковал файл каким-то стандартным упаковщиком с защитой паролем + написал простой скриптик который водил пароль в форму и жал ОК. Заняло это 3 минуты, а защита практически неуязвимая. Естественно, только в том случае, если антивирус не запущен на постоянную проверку.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|