Контроль над IDT.

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

  1. qman

    qman New Member

    Публикаций:
    0
    Регистрация:
    4 дек 2008
    Сообщения:
    14
    У меня возникает вот такой вопрос, можно как-то отследить перезапись idt? У меня есть идея проверки значения регистра при каждом переключении задач. Таким образом я могу отследить какой процесс изменил значение в регистре и завершить его. Но перед тем как я буду реализовывать данный метод, какие подводные камни меня могут сподкать, сможет ли процесс за выделенный интервал процессорного времени перезаписать idt и заменить деспечера задач на свой собственный, такой, который не будет возобновлять значения idt, или иным способом мог бы обойти данную проверку? Мне важно знать как можно обойти эту проверку и что нужно сделать, что это не произошло? Если у кого есть другие идеи относительно контроля idt, я буду очень благодарным если ими поделитесь!
     
  2. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    обойти проверку конкретно всегда можно просто подправив код, в котором у тебя эта проверка осуществляется. кроме того необязательно для перехвата идт нужно менять саму таблицу когда можно например сделать jump в начале функций-обработчиков
     
  3. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    аа ты вообще хочешь смотреть не изменилось ли содержание регистра ну это вообще твой мониторинг тогда ничего не узнает что с прерываниями в системе творится
     
  4. qman

    qman New Member

    Публикаций:
    0
    Регистрация:
    4 дек 2008
    Сообщения:
    14
    Да, я только хочу проверять или не изменилось значение в регистре. Саму же таблица можно бросить на страницу памяти с установленными флагами только на чтение, а на запись о данной странице в каталоге страниц можно поставить отладку при записи в данную ячейку памяти. А вот за перезапись самих обработчиков прерываний я не подумал.
    Здесь у меня возник вопрос, возможно не по теме, но можно ли отделить сигмент кода функции и записать его на отдельную страницу памяти и вообще ли это возможно и с чем мне придется иметь дело если это возможно?
     
  5. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    Про перехват в idt много интересного в последнем phrack'e написано.
     
  6. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    Все эти костыли снимаются точно в обратной для их установки последовательности: снять брекпоинт на запись атрибута страницы, сбросить атрибут страницы, выправить идт, вернуть все на место, к чему все эти телодвижения? Понятно было бы если б это были какие-то каверзные трюки которые еще не отгадаешь как работают, тут-то ненадо ничего отгадывать
    Все эти антиперехваты в известной степени костыли потому что трамплин можно вставить и в другой функции которая вызывается внутри обработчика например или внутри функции внутри функции, а можно не трамплин а например подменить импорт какой-то функции ну и т.д. т.е. защититься от перехвата idt расставив везде костыли - зачем это нужно?
     
  7. qman

    qman New Member

    Публикаций:
    0
    Регистрация:
    4 дек 2008
    Сообщения:
    14
    С этим мне все ясно, а как на счет аппаратной виртуализации, на этом уровне можно что-то сделать. Я читал только о синей пилюле, в google я не нашел нужную мне информацию о аппаратной виртуализации, правда искал только на русском с английским у меня не очень.
     
  8. SashaTalakin

    SashaTalakin New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2008
    Сообщения:
    261
    Здесь к сожалению все что я могу сейчас сказать, это то что твоя программа не пойдет на моем ноутбуке, если ты решишь использовать аппаратную виртуализацию :-(
     
  9. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Да, можно. Более подробно - в документации от Intel и AMD соответственно. Пример продукта можно посмотреть здесь - Hypersight Rootkit Detector.