Перехват юзермодных функций

Тема в разделе "WASM.NT.KERNEL", создана пользователем 2FED, 14 май 2010.

  1. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    Возможно ли подменить результаты в ядре для функций ?
    Код (Text):
    1. GetUserName
    2. GetWindowsDirectory
    3. GetComputerName
    Пробовал их трейсить но мало чего понял, похоже что они в ядро вообще не обращяются.
    Но всётаки, может кто сталкивался и чтонить подскажет?
     
  2. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    Функция GetComputerName использует функцию RtlQueryEnvironmentVariable_U для получения имени компьютера с параметром _CLUSTER_NETWORK_NAME_.

    Код (Text):
    1. NTSTATUS
    2. RtlQueryEnvironmentVariable_U(
    3.     IN PVOID Environment OPTIONAL,
    4.     IN PUNICODE_STRING Name,
    5.     IN OUT PUNICODE_STRING Value
    6.     );
    эта функция обращается к Peb->ProcessParameters->Environment.
     
  3. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    Ну и если в Peb->ProcessParameters->Environment не обнаружено, т очитается из реестра.
     
  4. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    gpTermsrvGetComputerName
    gpTermsrvGetWindowsDirectoryA
    gpTermsrvGetWindowsDirectoryW
    -
    GetUserName() и прочие функции связанные с авторизацией это запросы к lsass насколько помню. Тут немеряно способов.
     
  5. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    gpTermsrvGetComputerName
    gpTermsrvGetWindowsDirectoryA
    gpTermsrvGetWindowsDirectoryW

    это службы терминалов адреса, они обнулены обычно. в адвари есть похожий механизм при вызове некоторых функций работы с реестром. Заполняются они в случае определенного флага в KUSER_SHARED_DATA.SuiteMask.
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    lhc645
    Загружается при этом провайдер, для которого устанавливаются эти стабы. Это не важно. Просто нужно найти ссылки и загрузить туда хэндлеры. Хотя всёже я использовал бы исключения :)
     
  7. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    Дада, об этом и было написано в предыдущем моем посте.

    А, вы это имели ввиду (меня сбила фраза про lsass). Нехваток сна сказывается на концентрации внимания
     
  8. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    GetWindowsDirectory() же из пеба читает, не?
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    n0name
    Не, она из переменной читает BaseWindowsDirectory, которая заполняется при коннекте к csrss из его инфы.
     
  10. 2FED

    2FED New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2008
    Сообщения:
    1.002
    А загрузщик откуда значение берёт чтобы заполнить "Peb->ProcessParameters->Environment" ?
    Если из реестра то можно просто перехватить NtQueryValueKey.
     
  11. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    Блок переменных окружения либо при создании процесса из параметра Environment берется или копируется блок процесса-родителя.
     
  12. lhc645

    lhc645 New Member

    Публикаций:
    0
    Регистрация:
    9 авг 2009
    Сообщения:
    106
    GetUserName получает информацию с помощью ZwRequestWaitReplyPort (для LsaAuthenticationPort). В юзермоде можно было бы изменить SecpLsaDispatchFn и получить управление раньше, но вы, как я понимаю, не хотите делать в юзермоде.
     
  13. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    lhc645
    IDP альтернатива, пусть обрабатывают #AV. Это универсальный способ.