антитрассировочная фича - как это работает ?

Discussion in 'Реверсинг' started by B1t.exe, 19 Jan 2009.

  1. B1t.exe

    B1t.exe Elder - Старейшина

    Joined:
    6 Nov 2006
    Messages:
    1,020
    Likes Received:
    128
    Reputations:
    23
    копался у себя в исходниках и в одном из "хороших" вирусов в тебе обнаружил такой кусок кода:
    может даже кому-то пригадится:
    Code:
    	
    setupSEH:
    ; Небольшая антиотладочная, а точнее - антитрассировочная фича.
    	; Реально "помогает" от эвристики NOD32... 
    	cdq
    	assume	fs:nothing
    	push	dword ptr fs:[edx]
    	mov		fs:[edx], esp
    	pushfd
    	pop		eax
    	bts		eax, 8
    	push	eax
    	popfd
    	jmp		$
    можете пошагово мне рассказать в чем заключается этот хитрый момент, что до сих пор NOD32 (про других даже не стоит говорить) не видет ничего подозрительного, хотя вирус по сути - очень даже опасный.. сказал бы критичный опасный..

    P.S. публикавать не буду, кто хочет - мне в личку - исходники дам.
    школьникам и поинерам просьба не писать
     
    1 person likes this.
  2. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    не понимаю при4ем тут эвристика. антитрассирово4ные триксы юзают 4тобы вырубить эмуль в АВ, и нод должен все проэмулить имхо, завтра проверю если будет время
     
  3. GALIAFF

    GALIAFF Elder - Старейшина

    Joined:
    28 Sep 2007
    Messages:
    45
    Likes Received:
    28
    Reputations:
    5
    тут все просто, TP флаг возводится
     
  4. B1t.exe

    B1t.exe Elder - Старейшина

    Joined:
    6 Nov 2006
    Messages:
    1,020
    Likes Received:
    128
    Reputations:
    23
    ProTeuS
    Это автор вируса комментарии делал :) так что я вообше незнаю что там к чему ))))

    GALIAFF

    А все подробно не вариат написать? я плохо знаю ассемблер, но очень хотел этот момет хорошо понимать и как вообше делается обход NOD32.

    из описание вируса:
     
  5. Lamia

    Lamia Elder - Старейшина

    Joined:
    11 Jul 2007
    Messages:
    186
    Likes Received:
    77
    Reputations:
    -9
    На Wasm.ru усе подробно описано! :) И перехват
    функций и так далее!Зайди и поинтересуйся!
     
  6. B1t.exe

    B1t.exe Elder - Старейшина

    Joined:
    6 Nov 2006
    Messages:
    1,020
    Likes Received:
    128
    Reputations:
    23
    Lamia
    в книге Пирогов В. Assembler тоже много чего написано.
    тогда зачем вообше форум? ненадо меня никуда слать. знаешь - отвечай, нет - то проходи мимо.
     
  7. 0x0c0de

    0x0c0de Elder - Старейшина

    Joined:
    25 May 2007
    Messages:
    441
    Likes Received:
    396
    Reputations:
    297
    Сначала мы заталкиваем в стек регистр флагов

    pushfd

    потом он оказывается в eax

    pop eax

    http://sasm.narod.ru/apps/eflags/main.htm

    формат регистра EFLAGS. Взводим 8 бит

    bts eax, 8

    после этого после каждой инструкции будет генерироваться отладочное исключение #db. После первого исключения бит сбрасывается снова. Перед установкой флага трассировки, устанавливается SEH обработчик, и мы отправляемся в него при возникновении #DB. трюк старый же

    PS
    >> тут все просто, TP флаг возводится

    Флаг TF называется вообще-то

    PPS Нет бы заюзать трассировку ветвлений для самотрассировки; объявить свои сегменты кода, данных в GDT (для этого, ясное дело, драйвер написать), причем селектор на новый дескриптор получать динамически из драйвера, на ходу самомодифицируясь, активно прыгать между сегментами и тд. вот доразберусь в vmcb (это к теме amd-v), так напишу вам что-нибудь ядерное фо фан, если хотите. защитку, аля кракми
     
    #7 0x0c0de, 20 Jan 2009
    Last edited: 20 Jan 2009
    3 people like this.
  8. Lamia

    Lamia Elder - Старейшина

    Joined:
    11 Jul 2007
    Messages:
    186
    Likes Received:
    77
    Reputations:
    -9
    Обязательно напиши!Только для новичьков!Пускай гуру этого дела не обьясняют,что к чему!
     
  9. B1t.exe

    B1t.exe Elder - Старейшина

    Joined:
    6 Nov 2006
    Messages:
    1,020
    Likes Received:
    128
    Reputations:
    23
    0x0c0de

    Спасибо, вот уже понятно, хотя без хорошего знание ассемблера всеравно трудно понятно.
    вот остался только такой любопытный момент - почему антивирус не видет это как вирус?
    вот отчет от вирустотала:
    __http://www.virustotal.com/ru/analisis/17f485f6ddab32965cb4f9b0d75b43cb
    как видно - самые известные антивирусы ничего не видят.
     
  10. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Ты уверен, что это единственный подобный приём в коде? Поскольку, вообще-то, не должны аверы так плохо на вызов обработчика исключений реагировать.
     
  11. 0verbreaK

    0verbreaK Elder - Старейшина

    Joined:
    30 Apr 2008
    Messages:
    318
    Likes Received:
    42
    Reputations:
    -3
    Допустим если антивирус проверяет по определенной сигнатру, а не эмулирует работу вируса, то вставив такой код он не будет его видеть, но все же он должен и эмулировать вирус, так что это фантастика..
     
  12. Lamia

    Lamia Elder - Старейшина

    Joined:
    11 Jul 2007
    Messages:
    186
    Likes Received:
    77
    Reputations:
    -9
    Я тебе могу множество произвести и даже криптор полиморфный предложить,но если ты сам будеш
    подсказки постоянно искать то беспонту!
     
  13. B1t.exe

    B1t.exe Elder - Старейшина

    Joined:
    6 Nov 2006
    Messages:
    1,020
    Likes Received:
    128
    Reputations:
    23
    desTiny
    ммм, вроде да. если хотите - могу вам прислать в личку исходник для полного изучение.