ZwOpenProcess

Тема в разделе "WASM.NT.KERNEL", создана пользователем movdqu, 19 дек 2010.

  1. movdqu

    movdqu New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2009
    Сообщения:
    33
    Всем привет.

    Ситуация такая
    хук ssdt ZwOpenProcess. все отлично.

    запускаю некий процесс запускающий и изменяющий себя же,
    в логах открытие этого процесса на запись идет от процесс id 4 System. Почему ?
    Можно ли как-то узнать id реального процесса вызвавшего функцию?

    Спасибо.
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    1. Где этот лог смотришь?
    2. Может быть, действительно ядро тот процесс открывает, не?
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Может быть ты его из драйвер ентри открываешь?
     
  4. krabz

    krabz New Member

    Публикаций:
    0
    Регистрация:
    26 май 2010
    Сообщения:
    135
    не понятно это id 4 system относится к открывающему или открываемому процессу?
     
  5. movdqu

    movdqu New Member

    Публикаций:
    0
    Регистрация:
    16 сен 2009
    Сообщения:
    33
    Открывает его сторонний процесс, я лишь логирую его активность.

    Открывающему.

    Код (Text):
    1. NTSTATUS NTAPI NewZwOpenProcess(
    2.     PHANDLE ProcessHandle,
    3.     ACCESS_MASK DesiredAccess,
    4.     POBJECT_ATTRIBUTES ObjectAttributes,
    5.     PCLIENT_ID ClientId
    6. )
    7. {
    8.       // бла бла бла
    9.  
    10.       WriteLog( PsGetCurrentProcessId( ), DesiredAccess, ClientId );
    11.  
    12.       // вызываем оригинал
    13.       status = OriginalZwOpenProcess( ProcessHandle, DesiredAccess, ObjectAttributes, ClientId );
    14.      
    15.       // бла бла бла
    16.  
    17. };
    Получается следующее, скажем процессы открываемые Process Explorer'ом для получения информации, чтения и т.д PsGetCurrentProcessId( ) возвращает идентификатор Process Explorer'ом что отображается в логах, но вот стоит (не буду греха тоить) запустить какой-то зловред который запускает себя же и модифицирует память, как в логах получается что открытие его с правами на запись идет от контекста системного потока...

    Скорее всего так и есть, например загрузка драйвера из пользовательского режима приведет к тому что ZwLoadDriver будет выполнятся в контексте services.exe. Но ситуация с ZwOpenProcess не совсем мне понятна. И может все-таки есть способ узнать откуда пришел вызов на самом деле?

    ps. система Windows xp sp2, sp3
     
  6. karabas_barabas

    karabas_barabas Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    168
    скорей всего запускает себя через ShellExecuteEx - в этом случае все логично
     
  7. ntkernelspawn

    ntkernelspawn New Member

    Публикаций:
    0
    Регистрация:
    17 дек 2010
    Сообщения:
    61
    movdqu
    Может можно взять отладчик и посмотреть откуда пришел вызов , тогда можно будет о чем то говорить ...