simple, but advanced procviewer

Тема в разделе "WASM.WIN32", создана пользователем Saint German, 29 сен 2004.

  1. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Хотелось бы узнать Ваше мнение, о этом методе,

    возможности его обхода из user mod'a, при условии невозможности перехвата createfile и других функций, использованых в функции fill_proc_buffer, а также

    использовании не 5 и более байт функции, а всего тела функции, полученной из dll. Здесь уже немного обсуждалась данная проблема : www.rootkit.com. посмотреть исходный код можно тут : www.coders.zp.ua.
     
  2. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Так simple или advanced? С первого взгляда, похоже на sim... simplest ;)
     
  3. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    По функциональности simple, но как посмотреть код, так advanced :)
     
  4. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Неужели здесь никому не интересна тема антиотладки и антихукинга?
     
  5. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    После столь страстной фразы посмотрел. И что я увидел? Да вообще ничего особенного. Или ты думаешь, что твоя NtQuery - это последний писк моды? Молодец. Хорошая игрушка. Но пока - не более того.
     
  6. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Согласен, что америку не открыл, но критика должна быть конструктивной. Этот пост не способ похвастаться или еще чего. Как обойти такой метод? Я пока не придумал ничего путного, поэтому и спрашиваю более опытных людей.

    Володя! дайте же ответ, что с этим делать и моя душа успокоиться.
     
  7. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    Скажи в чём основная фича и где её в исходнике искать, а то времени всё внимательно смотреть нету. Может я и посмотрю.
     
  8. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Да простой ответ. Берешь, и хукаешь эту твою NtQuery. И летит твой дампер плача...
     
  9. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Володя! Может я тебя не понял, а может Вам стоит выражаться яснее! "Берешь, и хукаешь эту твою NtQuery"

    как хукаешь? методом Когсвелла и Руссиновича, методом подменны некоторых членов SERVICE_DESCRIPTOR_TABLE, а имеено адресов обработчиков вызовов? Конечно получится, но написано USER MODE ANTIHOOKING! весь вопрос в том, как из режима пользователя обмануть. Ставим hook, записываю

    int 3 и обрабатывая исключения или записываем jmp XXX или

    другие инструкции перехода. Вызываю NtQuery покупаемся за 3 копейки, а моя хрень читает файл ntdll и находя тело функции NtQuery дизасмит и копирует инструкции >= 5 байт

    Дальше вызывает свои функцию NtQuery которая выполняет эти "правильные" байты и дальше jmp

    на адрес функции (+ >= 5)NtQuery в ntdll. Таким макаром и не удаеться перехватить наш вызов, при том, что установленные хуки так и остаються установленными.

    Если интересно поиграйся с зомбиным stealth'om и посмотри выдит ли procviewer его процесс, и видит ли его например proccess explorer или taskmgr, а под 9x дурим и invisibility by yoda. А что если записать jmp или int 3 не в начало, а где-то в середине? Так можно тогда восстанавливать не >= 5 байт, а всю функцию.

    Метод мне кажеться хорошим, так как такие финты можно и в ring0 крутить. еще поиграться... (main.exe для MS Windows 2000) поставь SICE'ом bpx GetWindowTextW и запускай main.exe. Поймал? :)







    [​IMG] _1543307979__sources.zip
     
  10. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Теперь уже я не очень понимаю... Видимо, мы говорили на разных языках. Итак, вопрос.

    В чем проблема-то? В том, чтобы увидеть процесс, несмотря на все проблемы? Или в том, чтобы любой ценой не дать себя увидеть?
     
  11. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Этот procviewer демонстрация антидебаг и антихукинг метода. Зашибись метод, но это прошлый шаг. Новый шаг, это как его обмануть, этого я не придумал, и это мне не дает покоя, и никто ничего толкового не предлагает, (это я так сужу из постов на rootkit'e). Хотя мне кажеться что так могут вызывать функции и упаковщики, хотя не уверен, так как с упаковщиками я не на "ты".

    З.Ы. Я думаю уже есть и такие, кто в ring0 перехватывают вызовы не методом Руссиновича(это уже попса), а вставляя в ntoskrnl.sys

    инструкции типа jmp и прочие счастья, будет нехило и их выводить на чистую воду, но это уже в будущем, а procviewer(он же для юзер мода, но метод получения "правильных байт тот же") это предтеча.
     
  12. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    [ Saint German: <font color="indigo]а моя хрень читает файл ntdll и находя тело функции NtQuery дизасмит и копирует инструкции >= 5 байт</font><!--color--> ]



    Если не ошибаюсь, именно так поступают многие протекторы и уже очень давно.
     
  13. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    "Если не ошибаюсь, именно так поступают многие протекторы и уже очень давно." Вот мне и интересно какие, и как, а Володя инфой делиться не хочет или не понимает, о чем это я.

    to Four-F : А что ты думаешь про ring0, попадались уже тебе такие хуки типа jmp in ntoskrnl.sys?
     
  14. Four-F

    Four-F New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2002
    Сообщения:
    1.237
    [ Saint German: <font color="indigo]попадались уже тебе такие хуки типа jmp in ntoskrnl.sys?</font><!--color--> ]



    Конечно. Например, DbgView так делает.
     
  15. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    Вот! а как же их обойти, но при этом не убирать их? Читая, теперь только, не из ntdll, а из ntoskrnl.sys.

    А теперь вопрос( в который раз уже:) ) : как обмануть

    обход хуков?
     
  16. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    Кажется, я понял, о чем ты. Ты совершенно прав, утверждая, что можно хитрым образом передавать управление на код нужной API-функции. Минуя пролог, допустим, или как-нибудь еще. Поэтому можно спуститься ниже - на уровень ntdll.dll и хватать функции там. Правда и программа может быть написана кем-нибудь обезбашенным и передавать управление тут же в ntdll.dll, опять таки, минуя пролог. Или, вообще, напрямую задавать sysenter/int 2e. Ну и как ты это отслеживать собрался? В юзермоде-то?
     
  17. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    "Минуя пролог, допустим, или как-нибудь еще" (хе-хе) - исполняя все тело, зная число передаваемых параметров, например messageboxa/w - 4*4, дизасмить, искать retn 16.

    и исполнять от push ebp - до retn 16, тогда как :)?

    "программа может быть написана кем-нибудь обезбашенным и передавать управление тут же в ntdll.dll, опять таки, минуя пролог. Или, вообще, напрямую задавать sysenter/int 2e" - согласен в user mod'e отдыхает, но так кто мешает

    дизасмить ntoskrnl и исполнять тело нужной функции.

    Я все больше убеждаюсь, что нет общего решения, как не давать обходить хуки.
     
  18. 90210

    90210 New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2002
    Сообщения:
    16
    Адрес:
    somewhere from Russia


    Хорошо ты пошутил. Это в юзермоде-то? :)







    Если какой-нибудь r0 хук подменяет содержимое ntdll.dll при чтении, то хуки ты не сможешь обойти.



    Вот мой пост про ядровый антихукинг, где все более серьезно:

    Kernel mode antihooking by building our own kernel
     
  19. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    "Хорошо ты пошутил. Это в юзермоде-то?"

    нет естесвенно :)



    "Если какой-нибудь r0 хук подменяет содержимое ntdll.dll при чтении, то хуки ты не сможешь обойти. "

    Нет факт, что поймает при чтении файла, а почему бы не определить тела нужных функций (для разных версий win понятное дело), а потом зашить их, и исполнять:) и не надо читать, ntdll (в user mode )

    или ntoskrnl.sys (понятно где :)) Согласен, что это не очень красиво, зато возможно.

    А пост ядренный, это я сразу скажу, даже не читая :)
     
  20. Saint German

    Saint German New Member

    Публикаций:
    0
    Регистрация:
    13 сен 2003
    Сообщения:
    222
    прочитал, подумал, идей по обходу нет. Вопрос остаеться открытым.