И снова инжект кода в процесс

Тема в разделе "WASM.NT.KERNEL", создана пользователем xssww2, 11 ноя 2009.

  1. xssww2

    xssww2 New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    84
    никогда такого не было, и вот опять, что это баг или фича?

    Делаю инжект кода из ядра через APC
    на Windows XP, 2003 работает нормально
    а на Viste, Window 7 выдает ошибку при выполении ring3 кода, при этом ring0 отрабатывает нормально
    куда копать? кто сталкивался?

    *** An Access Violation occurred in C:\Windows\system32\services.exe:

    The instruction at 000C0A22 tried to write to an invalid address, 000C0A22

    Мой код:
    kd> u 000C0A22
    000c0a22 nop
    000c0a23 nop
    000c0a24 nop
    000c0a25 int 3
    000c0a27 pushad
    000c0a28 mov eax,dword ptr fs:[00000030h]

    kd> kb
    ChildEBP RetAddr Args to Child
    0095f430 77439bd8 77d0866a 001b467a 75cdfffc ntdll!DbgBreakPoint+0x1
    0095f468 77439c3b 0095f55c 773daf66 0095f500 ntdll!RtlUnhandledExceptionFilter2+0x2a4
    0095f478 75cafebe 0095f55c 2c42e733 7744ddc0 ntdll!RtlUnhandledExceptionFilter+0x12
    0095f500 7744dc59 0095f55c 00000000 0095f55c kernel32!UnhandledExceptionFilter+0x127
    0095f518 7744e213 0095f55c 00000000 00000000 ntdll!TppExceptionFilter+0x59
    0095f52c 7741aa49 0095f55c 77399bdc 00000000 ntdll!TppWaiterpOuterExceptionFilter+0x11
    0095f534 77399bdc 00000000 0095fdbc 773e5f68 ntdll!TppWaiterpThread+0x702
    0095f548 77394067 00000000 00000000 00000000 ntdll!_EH4_CallFilterFunc+0x12
    0095f570 773f5f79 fffffffe 0095fdac 0095f678 ntdll!_except_handler4+0x8e
    0095f594 773f5f4b 0095f65c 0095fdac 0095f678 ntdll!ExecuteHandler2+0x26
    0095f644 773f5dd7 0095f65c 0095f678 0095f65c ntdll!ExecuteHandler+0x24
    0095f644 000c0a22 0095f65c 0095f678 0095f65c ntdll!KiUserExceptionDispatcher+0xf
    WARNING: Frame IP not in any known module. Following frames may be wrong.
    0095f940 773f5d3d 00000000 00000000 00000000 0xc0a22
    0095fdbc 75c5d0e9 00000000 0095fe08 773d19bb ntdll!KiUserApcDispatcher+0x25
    0095fdc8 773d19bb 003fbfa8 77d08c0a 00000000 kernel32!BaseThreadInitThunk+0xe
    0095fe08 773d198e 773d2808 003fbfa8 00000000 ntdll!__RtlUserThreadStart+0x23
    0095fe20 00000000 773d2808 003fbfa8 00000000 ntdll!_RtlUserThreadStart+0x1b
     
  2. xssww2

    xssww2 New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    84
    Кажеца все таки эта фича

    для Vista
    kd> !pte 000800D7
    VA 000800d7
    PDE at 00000000C0600000 PTE at 00000000C0000400
    contains 00000000282DD867 contains 800000003F7F8867
    pfn 282dd ---DA--UWEV pfn 3f7f8 ---DA--UW-V <----------- страница не выполняема

    для XP
    kd> !pte 007f0244
    VA 007f0244
    PDE at 00000000C0600018 PTE at 00000000C0003F80
    contains 0000000008B3B067 contains 00000000016F1067
    pfn 8b3b ---DA--UWEV pfn 16f1 ---DA--UWEV <--------- страница выполняема

    у кого какие предложения?
     
  3. xssww2

    xssww2 New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    84
    Мои соображения:
    - получить хэндл целевого процесса - ObOpenObjectByPointer
    - используя хэндл выделить в этом процессе исполняемую память - ZwAllocateVirtualMemory
    - выделенную память передаем - MmMapLockedPagesSpecifyCache, которая мэпит мой код на исполняемую память

    в чем могут быть траблы?
     
  4. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Во-первых, покажи код, как внедряешь. Во-вторых, не помешает изучить вот эту статью.
     
  5. xssww2

    xssww2 New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    84
    Ну мой метод не сработал
    пришлось идти обходным путем - отключить DEP
     
  6. xssww2

    xssww2 New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    84
    Кто-нибудь сталкивался с проблемами:
    - после инжекта в процессы services.exe, winlogon.exe для Windows Vista туда невозможно подгрузить библиотеку urlmon.dll всегда возвращает 0, тогда как в explorer.exe можно
    - после инжекта в процессы services.exe, explorer.exe для Windows 7 и вызова функции: urlmon!UrlDownloadToFileA процесс завершаеца с ошибкой в ntdll.dll, тогда как остальные функции из kernel32.dll работают нормально

    Что это, новомодная защита?
     
  7. comrade

    comrade Константин Ёпрст

    Публикаций:
    0
    Регистрация:
    16 сен 2002
    Сообщения:
    232
    Адрес:
    Russian Federation
    Что возвращает GetLastError () ? Возможно что urlmon не хочит грузится в серверный процесс.

    Сделай .dmp файл при этой ошибки и выложу куда нибудь. Посмотрим и разберёмся.
     
  8. sl0n

    sl0n Мамонт дзена **

    Публикаций:
    0
    Регистрация:
    26 сен 2003
    Сообщения:
    703
    урлмон тесно завязано на СОМе вазможно из-за этого пахать не хочет
     
  9. xssww2

    xssww2 New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    84
    http://www.wasm.ru/forum/viewtopic.php?id=26103
     
  10. xssww2

    xssww2 New Member

    Публикаций:
    0
    Регистрация:
    11 апр 2009
    Сообщения:
    84
    а ну да отпишусь здесь
    не знаю почему некоторые не любят инъекцию через APC но ее можно зделать универсальной без всякого шаманства с недокументированными структурами стабильно работает на всей линейке Windows
    правда придеца немного поебаца с превращением native потока в win32 и все такое
     
  11. dendi

    dendi New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2007
    Сообщения:
    233
    > UrlDownloadToFileA
    Перед вызовом этой функции лучше вызывать CoInitialize.