cmd из r0

Тема в разделе "WASM.NT.KERNEL", создана пользователем nabl3, 17 фев 2009.

  1. nabl3

    nabl3 New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    17
    как сделать что-то типа telnet из ring0?
    своего рода бэкдор, скрытый telnet.
     
  2. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Слишком общий вопрос, уточни задачу. В общем случае, пишем обычный драйвер, а по сети общаемся через TDI-интерфейс (или Winsock Kernel, если нужна только Vista и выше).
     
  3. nabl3

    nabl3 New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    17
    Драйвер есть.
    Пакеты отсылает/принимает.
    Как быть с остальным? Думаю, что потребуется создавать потоки в r3.
     
  4. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Ещё раз: уточни задачу.
     
  5. nabl3

    nabl3 New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    17
    Telnet из драйвера с использованием моих функций для работы с сетью.
     
  6. nabl3

    nabl3 New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    17
    Вот известный пример bindshell'а http://www.metasploit.com/data/shellcode/win32_bind.asm
    я же не хочу использовать Winsock. У меня есть свои функции(send, recv). Вопрос в том, можно ли закрутить потоки через них?
     
  7. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Я ведь не просто так спросил про детали задачи. Меня интересует, в частности, будет ли использоваться функциональность подсистемы Win32. Можно обойтись только режимом ядра или нет? Другими словами, тебе нужен Win32/Native поток, или достаточно будет системного?

    Если достаточно будет системного потока, тогда всё просто - по сети, как я уже сказал, общаешься через TDI-интерфейс (пишешь TDI-клиента, если точнее), а поток создаёшь через PsCreateSystemThread. В случае Native создать поток можно через NtCreateThread (её адрес можно взять из SDT), но как ты будешь общаться по сети я не знаю, - на этом уровне сетевых функций нет (WinSock использовать нельзя, а интерфейс, используемый AFD, недокументирован), т.е. тут по-любому придётся писать свой драйвер (TDI-клиент) и интерфейс к нему. Если всё же поток должен быть Win32'шный, тут логика на порядок сложнее будет.

    Вообще, варианта у тебя всего три: Win32, Native или голое ядро. Самый простой вариант в плане реализации - только драйвер режима ядра и системный поток (это который создаётся через функцию PsCreateSystemThread). Native-поток чуть сложнее хотя бы тем, что тут нужен будет либо шел-код, либо своя DLL. Ну и самое сложное - это Win32-поток из ядра, это вообще отдельная тема.

    Если я правильно понял, тебе нужно чистое ядро. Единственное, что меня смущает это "cmd" в названии темы. Как бы cmd.exe и ядро тут мало совместимы. Короче, пока мне лично мало понятно что ты хочешь (вполне возможно, что ты и сам не очень хорошо это понимаешь). Тут, как говорится, есть нюансы.
     
  8. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Прости, но ты на каком языке говоришь? Что есть "закрутить потоки через функции send/recv" ? Я вообще не знаю как закручиваются потоки, и ни я ни мои знакомые-программисты никогда не закручивали потоки. Может я какой-то технологии просто не знаю? Кто может научить меня крутить потоки? Я тоже хочу!
     
  9. deLight

    deLight New Member

    Публикаций:
    0
    Регистрация:
    26 май 2008
    Сообщения:
    879
    это как выкрутить только наоборот .P
     
  10. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    создавай телнет процесс привязанный к cmd, скрывай процесс ( либо пиши свой ring3 ) и создавай в потоке ( скрывай поток ) а вообще ты достиг помоему
     
  11. nabl3

    nabl3 New Member

    Публикаций:
    0
    Регистрация:
    30 янв 2009
    Сообщения:
    17
    Получается так:
    Из моего драйвера создается поток в csrss.exe, который в свою очередь создает процесс cmd.exe (CreateProcess), у которого stdin/out/err стоят на мой, пока еще непонятноый, хэндл, и ждет его завершения (WaitForSingleObject).
    Все правильно пока? :)
    Вместо подмены хэнделов, как в примере выше, думаю воспользоваться пайпами:
    Код (Text):
    1. HANDLE          ReadPipe, WritePipe;
    2. CreatePipe(&si.hStdInput, &WritePipe, &sa, 0);
    3. CreatePipe(&ReadPipe, &si.hStdOutput, &sa, 0);
    но мои функции send и recv находятся в АП драйвера.
     
  12. WIN32

    WIN32 Member

    Публикаций:
    0
    Регистрация:
    20 янв 2007
    Сообщения:
    338
    у тебя непонятки с хендлами? ты его понять не можешь? отсыпь)
    гугли.
     
  13. Guest

    Guest Guest

    Публикаций:
    0
    nabl3
    проверь ЛС.
     
  14. Vladlogg

    Vladlogg New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2009
    Сообщения:
    1
    А зачем его то проверять?
     
  15. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Какая-то нездоровая тема...