Защита COMODO от SuspendThread в Win7

Тема в разделе "WASM.WIN32", создана пользователем Fara0n, 8 июл 2010.

  1. Fara0n

    Fara0n New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    10
    Приветствую всех!
    Возникла небольшая проблемка при обходе защиты COMODO.
    Конкретнее не работает API ZwSuspendThread (возвращает 'Access Denied') под Win7
    Код выполняется из UserMode.
    Под XPSP3 и ниже с той же версией COMODO все работает.
    Если под Win7 у комодо отключить Defence то код работает ТАКЖЕ без проблем, т.е. проблема именно с комодо+Win7...

    Код выполняет ZwSuspendThread получая на входе хэндл первого трэда процесса 'explorer.exe'.
    Версия комодо: 4.1.150349.920

    В SSDT NtSuspendThread Comodo НЕ перехватывает. Сплайсов в ядре он также не ставил на эту функцию.
    При трэйсе в дебугере обнаружилось, что Access Denied (С0000022) я подхватываю в функции ObReferenceObjectByHandleWithTag в
    районе:

    Код (Text):
    1. 0008:82a2e31a 8b1d98249382    mov     ebx,dword ptr [nt!ObpAccessProtectCloseBit (82932498)]
    2. 0008:82a2e320 f7d3            not     ebx
    3. 0008:82a2e322 235f04          and     ebx,dword ptr [edi+4]
    4. 0008:82a2e325 8bc3            mov     eax,ebx
    5. 0008:82a2e327 f7d0            not     eax
    6. 0008:82a2e329 85450c          test    dword ptr [ebp+0Ch],eax
    7. 0008:82a2e32c 7410            je      nt!ObReferenceObjectByHandleWithTag+0x1c5 (82a2e33e)
    8. 0008:82a2e32e 807d1400        cmp     byte ptr [ebp+14h],0
    9. 0008:82a2e332 740a            je      nt!ObReferenceObjectByHandleWithTag+0x1c5 (82a2e33e)
    10. 0008:82a2e334 bb220000c0      mov     ebx,0C0000022h
    Общая схема кода такова:
    Код (Text):
    1.     ClientId.UniqueProcess = (HANDLE)dwProcessId;  // explorer.exe
    2.     ClientId.UniqueThread = (HANDLE)dwThreadId;
    3.  
    4. ZwOpenProcess(&hProcess, PROCESS_QUERY_INFORMATION  | PROCESS_VM_OPERATION, &ObjectAttributes, (PCLIENT_ID)&g_ClientId)
    5.    
    6. ZwOpenThread(&hThread, THREAD_QUERY_INFORMATION | THREAD_SUSPEND_RESUME,
    7.                           &ObjectAttributes, &ClientId);
    8.  
    9. //ZwOpenProcess, ZwOpenThread работают независимо от желания или нежелания comodo, как впрочем и других хипсов, эта
    10. //часть кода работает и в Вин7 к счастью..
    11. .....
    12. тут идет УСПЕШНАЯ эксплуатация полученных хэндлов
    13. .....
    14. SuspendThread(hThread);  // проблема здесь, точнее в ObReferenceObjectByHandleWithTag (см выше)
    Вопрос простой... Где COMODO портит мне компот ?


    Заранее благодарен за намек на решение проблемки.
     
  2. Fara0n

    Fara0n New Member

    Публикаций:
    0
    Регистрация:
    27 авг 2007
    Сообщения:
    10
    Проблема оказалась в минифильтрах.
    Как их обходят есть идеи ?
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    не отбирайте хлеб у малварщиков!