TDI фильтр. проблема с антивирусами.

Тема в разделе "WASM.NT.KERNEL", создана пользователем pinya, 26 ноя 2009.

  1. pinya

    pinya New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    30
    Нужно получать информацию о соединениях с локального компа. Т.е. имя процесса и сид пользователя.
    Сделал TDI фильтр. Все хорошо работает без антивирусов.

    У всех антивирусов (которые я смотрел), Web Shield реализован как прокси. Т.е. у них есть TDI редиректор который направляет все запросы на их локальный прокси.

    Соотв. я в своем фильтре получаю 2 соединения
    1. На прокси антивируса с правильным именем процесса и сидом, но IP назначения локальный.
    2. На реальный IP и порт, но пользователь система и процесс прокси.

    получается что связать эти два соединения невозможно.

    что можно придумать??

    пытался загрузить свой фильтр перед антивирусом, не помогает.
     
  2. pinya

    pinya New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    30
    н..да.. затупил:)
    нужно грузится и до и после. потом связывать.
     
  3. Killer

    Killer New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2008
    Сообщения:
    316
    Это и не поможет.

    Под какую ось все? Интерфейс NPI пробовал заюзать?
     
  4. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Чисто теоретически - да, это поможет на 99%, но абсолютной стабильности всё равно не добьёшься. Я бы на твоём месте смирился, ничего с этим не поделаешь. По крайне мере одним TDI-фильтром проблему точно не решишь, NDIS-фильтр здесь также не поможет. Если только посмотреть в сторону ядерных околотисипиайпишных технологий, но на вскидку ничего не придумывается. Да и к тому же, если проблема была бы легкорешаемой, то антивирусы не писали бы в требованиях отсутствие установленных security-продуктов третьих сторон. Однако ж пишут, и скорее всего именно из-за сетевых фильтров. Например, файловый фильтр можно написать так, что он не будет конфликтовать с другими грамотно написанными файловыми фильтрами, а вот в сетевой части с этим сложнее.
     
  5. pinya

    pinya New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    30
    ОС Windows.
    Кто такой NPI?

    Ну тут не один TDI фильтр, а получается два.

    Несовместимость может возникать, но как правило это происходит с запретами доступа и т.п. мониторинг, по идее, не должен ничего делать плохого.....
    Буду пробовать.
     
  6. pinya

    pinya New Member

    Публикаций:
    0
    Регистрация:
    31 авг 2007
    Сообщения:
    30
    ОС Windows XP и выше.
     
  7. Killer

    Killer New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2008
    Сообщения:
    316
    http://www.wasm.ru/article.php?article=npi_subvert
     
  8. luckysundog

    luckysundog New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2008
    Сообщения:
    106
    если я правильно понимаю проблему, то вот идея... можно ли как-либо заморозить фильтр антивируса, пока процесс прокси не попытался соединиться?
     
  9. luckysundog

    luckysundog New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2008
    Сообщения:
    106
    и объясните пожалуйста, как тут второй фильтр поможет? понять не могу.
     
  10. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    а зачем второй?
     
  11. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Можно, при чём это делается относительно (тут ещё NDIS-уровень будет играть роль в некоторых случаях) легко для практически любого антивируса (отсоединение фильтра от стека), проблема в том, что сделать такое решение на 100% стабильно не получится.
     
  12. x64

    x64 New Member

    Публикаций:
    0
    Регистрация:
    29 июл 2008
    Сообщения:
    1.370
    Адрес:
    Россия
    Я так понимаю, что автор имел в виду следующую схему. Вешается фильтр один сверху антивируса, другой снизу. Фильтр сверху запоминает в каком-нибудь своём списке появление запроса на адрес X (например, 77.88.21.8:80), далее антивирус либо завершает этот запрос и отправляет новый либо отправляет этот же с новыми параметрами, но так или иначе новый запрос, связанный с X, уходит ниже уже с другим адресом Y (например, 127.0.0.1:3128). Далее запрос приходит в локальный прокси, там он обрабатывается, после чего исходный запрос посылается уже второй раз из прокси, фильтр антивируса создаёт для этого запрос с адресом X и отправляет его аккурат нашему нижнему фильтру (это в лучшем случае), при этом процесс-инициатор уже System. В этот момент мы смотрим наш список запросов, которые зафиксировал фильтр сверху, при этом ключом является адрес X, а искомым значением может быть что угодно - путь к файлу-образу процесса-инициатора, SID пользователя или что там ещё сверху сохранили.

    В этой схеме есть ряд очевидных проблем (навскидку):

    1. Необходимо ухитриться встать ровно до и после фильтра антивируса. Этого возможно добиться только не совсем документированными методами (на 64-битных системах, скорее всего, работать не будет).
    2. Непонятно, как сопоставить запрос, который видит нижний фильтр, запросу, который ранее был виден верхнему фильтру. Одного адреса X для этого недостаточно.
     
  13. luckysundog

    luckysundog New Member

    Публикаций:
    0
    Регистрация:
    28 окт 2008
    Сообщения:
    106
    я если честно имел в виду заморозку при помощи объектов синхронизации но потом когда начал думать над этим всем, в голову полезли всякие дедлоки и т.д. :)
     
  14. x64

    x64 New Member

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