Драйвер, запускающий процессы от имени указанного пользователя

Тема в разделе "WASM.NT.KERNEL", создана пользователем Gradiz, 1 июл 2007.

  1. Gradiz

    Gradiz New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    2
    Доброго времени суток.
    Пишу драйвер, который должен работать на WinXP SP2 не зависимо от того, какие обновления установлены на сам SP2. Желательно чтобы он также работал на WinXP SP0 и WinXP SP1.
    Сам драйвер должен при запуске каждого процесса в системе сначала проверять наличие етого процесса, в том числе и откуда именно он запускается, в текстовом файле. Текстовый файл C:\needrun.txt имеет следующий формат:

    C:\WINDOWS\system32\calc.exe;user2;pass2
    C:\WINDOWS\system32\notepad.exe;user3;pass3

    При наличии процесса, что запускается, в текстовом файле, етот процесс нужно запустить под указаным пользователем. Имена пользователей и их пароли известны.
    Если же процесс, что запускается, отсутствует в текстовом файле, никакие действия не предпринимаются.
    Для реализации такой функциональности драйвера он сначала при запуске каждого процесса проверяет его наличие в текстовом файле. Если он существует, то драйвер убивает процесс. После етого убитый процесс нужно запустить из драйвера от имени указанного пользователя.
    Отслеживать и убивать нужные процессы получается.
    Как запускать нужные процессы из режима ядра под именем указанного пользователя?
    Искал и читал статьи. Но там сам запуск процесса очень зависим от версии обновления системных файлов Windows. К тому же имперсонация возможна только из пользовательского режима.
    Хотел бы подробнее почитать про возможность подобного запуска процесса. Желательно с рабочими исходниками, где ето можно посмотреть.
    Зарание благодарен за ответ.
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Посмотри как в юзермоде реализованы соотв. функции, через какие ядерные
     
  3. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    Great
    так и не нашел нормального решения? )
    я вообще забил..
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    В FuTo есть SetSID, SetAuthID.
     
  5. Gradiz

    Gradiz New Member

    Публикаций:
    0
    Регистрация:
    1 июл 2007
    Сообщения:
    2
    Можете, пожалуйста, подробнее по поводу реализации такой функциональности в драйвере.
     
  6. Deyton

    Deyton Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    94
    Gradiz Вначале почитай у Руссиновича про ACCESS_TOKEN ;)
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Gradiz
    Можно зайти на rootkit.com и скачать исходник FUTo. Там будет по-подробнее =)
     
  8. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    а зачем перезапускать процесс ?
    можно просто сменить его токен на нужный
    NtOpenProcessToken
    NtSetInformationToken
     
  9. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    kropalik
    ты не знаешь как получить имя пользователя по его SID ? я кроме метода с реестром ничего не смог найти, поделись если в курсе.
     
  10. Cr4sh

    Cr4sh New Member

    Публикаций:
    0
    Регистрация:
    17 апр 2006
    Сообщения:
    668
    мсдн наше всё
     
  11. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    Cr4sh
    мне в ядре