детектирование VMWare, soft-ice, olly и проч

Тема в разделе "WASM.RESEARCH", создана пользователем kaspersky, 2 июн 2005.

  1. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
  2. Chingachguk

    Chingachguk New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2002
    Сообщения:
    340
    Ну вот в книге ~ Арапетяна про Soft_Ice в конце книги не менее 10 способов детектирования, а тут тока тривиальные CreateFile... Про VM сказать ничего не могу, нерюх.
     
  3. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    soft-ice не распознает только ленивый ;)

    а вот захачить VM-Ware это интересно
     
  4. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    А можно написать прогу которая сможет вылезти из любого современного эмулятора (ex:VirtualPC) в нормальную среду выполнения?
     
  5. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    есть такие способы.

    если VM и host связаны сетью (а это часто так и есть),

    то из-под VM можно атаковать host'а через все дыры,

    на которые только не наложены заплатки.
     
  6. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Код (Text):
    1. function IsVMwarePresent(): LongBool; stdcall;
    2. begin
    3.    Result := False;
    4.    try
    5.      asm
    6.              mov     eax, 564D5868h
    7.              mov     ebx, 00000000h
    8.              mov     ecx, 0000000Ah
    9.              mov     edx, 00005658h
    10.              in      eax, dx
    11.              cmp     ebx, 564D5868h
    12.              jne     @@exit
    13.              mov     Result, True
    14.      @@exit:
    15.      end;
    16.    except
    17.      Result := False;
    18.    end;
    19.  end;



    Код (Text):
    1. function running_inside_vpc: boolean; assembler;
    2.  asm
    3.    push ebp
    4.  
    5.    mov  ecx, offset @@exception_handler
    6.    mov  ebp, esp
    7.  
    8.    push ebx
    9.    push ecx
    10.    push dword ptr fs:[0]
    11.    mov  dword ptr fs:[0], esp
    12.  
    13.    mov  ebx, 0
    14.    mov  eax, 1
    15.  
    16.   db 00Fh, 03Fh, 007h, 00Bh
    17.  
    18.    mov eax, dword ptr ss:[esp]
    19.    mov dword ptr fs:[0], eax
    20.    add esp, 8
    21.  
    22.    test ebx, ebx
    23.    setz al
    24.    lea esp, dword ptr ss:[ebp-4]
    25.    mov ebx, dword ptr ss:[esp]
    26.    mov ebp, dword ptr ss:[esp+4]
    27.    add esp, 8
    28.    jmp @@ret
    29.    @@exception_handler:
    30.    mov ecx, [esp+0Ch]
    31.    mov dword ptr [ecx+0A4h], -1
    32.   add dword ptr [ecx+0B8h], 4
    33.   xor eax, eax
    34.   ret
    35.    @@ret:
    36.  end;




    А про детектинг дебагеров много где написано.
     
  7. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576




    В книге "Crackproof Your Software" от автора SVKP их тоже не мало :derisive:
     
  8. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    kaspersky



    То есть кроме как через сеть никак? По идее если нет никаких различий в выполнении кода в эмуляторе/обычной среде, шансов действительно нуль. Интересно бы узнать как в эмуляторах осуществляется преобразование адресов, может попытка обращения выполняемого в нем процесса за пределы 4Гб, выйдет для эмулятора боком.
     
  9. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    > То есть кроме как через сеть никак?

    универсально - никак.

    в VM Ware 3.x вроде бы был баг,

    позволяющий эмулируемой программе писать

    в секцию данных самого эмулятора,

    но в VM 4.x эту нычку уже прикрыли,

    хотя если поискать, наверное, можно

    нарыть что-то еще...
     
  10. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > function IsVMwarePresent()



    BTW, детект версии вмвары отключается одной строчкой в конфиге, и соответсно ничего не продетектится.
     
  11. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
    Dr.Golova

    > BTW, детект версии вмвары отключается одной строчкой

    > в конфиге, и соответсно ничего не продетектится.

    бак-дор все равно остается...

    и два других способа детеката VMWare тоже -

    по конфигрурации оборудования и MAC-адресам.

    вот падч который решает проблему,

    заткая все три известных сопосба детекта VMWare:

    honeynet.rstack.org/tools/vmpatch.c
     
  12. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Еще довольно надежный способ детекта эмуляторов - замер времени обработки ексцепшена. Для эмулятора он будет на 2 порядка больше, чем для нормальной системы. Тоже самое будет и при работе под юзермодным дебагером.

    Можно также померять число тактов нужное для выполнения привилегированых комманд в ринг0, под эмулятором будет тоже на порядок больше нормы.
     
  13. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > будет тоже на порядок больше нормы



    Критерий "нормы" и как ее узнать в студию!
     
  14. apple

    apple Виктор

    Публикаций:
    0
    Регистрация:
    26 апр 2005
    Сообщения:
    907
    Адрес:
    Russia
    В форуме детектирование VM обсуждалось здесь
     
  15. Stiver

    Stiver Партизан дзена

    Публикаций:
    0
    Регистрация:
    18 дек 2004
    Сообщения:
    812
    Адрес:
    Germany
    Dr.Golova





    В pdfе, который дал в начале темы kaspersky, пункт

    III.D.Timing issues

    это случайно не то?
     
  16. Broken Sword

    Broken Sword Robert

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    433
    Айрапетян их спер из "Crackproof Your Software" :), а сама книга - вообще перевод официального мануала. В печку ее! )
     
  17. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > это случайно не то?



    Сильно сомневаюсь что эмуляторы не умеют эмулить rdtsc и им подобное.
     
  18. Ms Rem

    Ms Rem New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2005
    Сообщения:
    1.057
    Адрес:
    С планеты "Земля"
    Dr.Golova





    Ни WmVare ни VirtualPC не эмулируют команды исполняющиеся в ring3, только привилегированые команды. И при разработке этих эмуляторов не ставилась цель защитится от их обнаружения программами. Так что можно еще кучу способов придумать, например скан оборудования из ринг0 даст результаты специфичные для эмулятора, а не id настоящего оборудования.
     
  19. kaspersky

    kaspersky New Member

    Публикаций:
    0
    Регистрация:
    18 май 2004
    Сообщения:
    3.006
  20. Dr.Golova

    Dr.Golova New Member

    Публикаций:
    0
    Регистрация:
    7 сен 2002
    Сообщения:
    348
    > Ни WmVare ни VirtualPC не эмулируют команды исполняющиеся в ring3



    Да ну? Код сначала распарсивается дизасмом, и выполняются толко безопасные участки, все остальное эмулится, например sidt - выдаст тебе фейковый адрес (так тоже кстати детектят ;) а popfd если я трапфлаг поставлю? Если бы весь ring3 выполнялся без проверок, то уронить всю такую систему было бы намного проще.



    ЗЫ: Пятая версия вмваре недавно вышла, так что не буду утверждать что в какой-нить первой версии код не выполнялся без проверок =)