Выбор метода фильтрации

Тема в разделе "WASM.NETWORKS", создана пользователем Marik, 7 авг 2011.

  1. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    Доброе время суток, уважаемые форумчане.
    Есть задача контроля трафика, в частности контроль отправки почты: smtp/http/https (в дальнейшем расширить до контроля icq), соответственно с возможностью разрешить\запретить\иметь копию отправленного. ОС интересуют WinXP и выше (х32\х64).
    Собственно задача ясна, дело за выбором архитектуры и методов исполнения.
    Почитав литературу, остановился на двух технологиях:
    LSP – из минусов большая трудоемкость в написании, глючность, мало документации, ну и трафик можно отправить мимо.
    Из плюсов: режим пользователя, хотя если будет кривая работа все равно весь сетевой стек рухнет и система не будет работоспособной
    TDI – плюсы: гораздо меньше кода по сравнению с первым методом, контроль всего трафика, стабильная работа (при наличии головы)
    минусы: не совсем понятно пока как реализовать запрет на основании содержимого письма(вложенных файлов). Как вариант перенаправлять все на локальный прокси-сервер и там уже разбирать, но опять же вопрос как антивирусы отнесутся к таким делам :)
    *опыт разработки драйверов имеется, так что ring0 не пугает
    Вопрос: какая технология для этой задачи предпочтительней, желательно с вескими аргументами? :)
     
  2. h0t

    h0t Member

    Публикаций:
    0
    Регистрация:
    3 апр 2011
    Сообщения:
    735
    я в свое время ndis писал для похожей задачи, но сейчас похоже это не совсем удачная идея в 7, например)
     
  3. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Да ладно?
    При желании нормальный LSP-фильтр пишется гораздо легче, проще и быстрей, нежели TDI-фильтр
     
  4. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    Что нужно запрещать? Письмо можно пропустить, а приложенные файлы файлы нет, или нужно не пропускать письмо с приложенными файлами вообще? Что если приложенный файл зашифрован? Тоже не пропускать письмо? Не пропускать письма на определенный адрес? Короче говоря очень много вопросов. Если нужно автоматов задерживать письмо с вложенными файлами, то нужно курить протокол smtp, в нем есть инфа о том содержит
    ли письмо вложения. Поэтому промежуточный драйвер, может придерживать
    отправку письма, пока не станет понятно, есть ли вложенные файлы.
    Если хотите проверять вложенные файлы на вирусность, то это мне кажется скорее решать через фильтр файловой системы. В общем можно решать на разных уровнях, это можно делать в IM драйвере возможны фильтра более
    высокого уровня.
     
  5. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    Я не претендую на полноту и правильность предположения. Я написал это судя по многочисленным топикам на эту тему, где люди очень много времени тратят на него и потом в конце концов меняют технологию.
    Например http://rsdn.ru/forum/network/3901740.aspx

    Запрещать на основании адресата, на основании содержания письма, на основании содержания вложения. Шифрование и заархивированные вложения с паролем опустим пока. Вирусы пусть ловят антивирусы :)
     
  6. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Marik
    "Network Programming for Microsoft Windows " (http://flylib.com/books/en/1.403.1.1/1/), там очень даже неплохо описано создание LSP-провайдеров. Вообще, по непонятной для меня причине, тема LSP покрыта неким "ореолом недоступности", мол бытует мнение, что создавать LSP-фильтры очень геморно. Не знаю, ничего сложного и таинственного в теме не увидел.
    По моему имху, написать качественный TDI-фильтр довольно сложно, там немало подводных камней. Если ранее с TDI не сталкивался, то с наскоку решить требуемые тебе задачи будет проблематично. И тем более что чтение https-трафика для TDI-фильтра будет недоступно.
     
  7. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    steelfactor
    Спасибо за литературу почитаю еще. Чтение HTTPS трафика будет необходимо обязательно.
     
  8. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    steelfactor
    Можете порекомендовать рабочий пример LSP, который будет дружить с IE (если таковой имеется конечно)? :)

    Связка TDI фильтр(перенаправляет все на прокси) + локальный прокси, в котором уже проводить необходимую фильтрацию будет работать с антивирусами? есть ли у кого то подобный опыт реализации?!
     
  9. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Marik
    Лови - http://rghost.ru/17434051. Это наиболее полноценная реализация LSP, насколько я могу судить.
     
  10. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    steelfactor
    Есть у меня такой пример. а так же куча других из инета. но ни один не работает с IE :dntknw:

    устанавливаю с помощью утилиты из примера SDK.
    install -i -a -n "Foobar" -d путь\lsp.dll

    после этого IE перестает открывать сайты.
    причем команда ping возвращает
    Обмен пакетами с www.ru [°я♠] по 32 байт:

    Ответ от 194.87.0.50: число байт=32 время=19мс TTL=55
    Ответ от 194.87.0.50: число байт=32 время=19мс TTL=55

    обратите внимание на кракозябру вместо ip адреса.

    Но надо отдать должное это единственный пример который в AVZ не выделяется красным цветом в списке LSP
     
  11. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Marik
    Хм, странно, у меня этот пример работает нормально под IE/FF, правда нужна перезагрузка
     
  12. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    после перезагрузки dns имена перестают еще разрешаться. т.е. nslookup не преобразует в ip адреса.
    dll сам не компилировал взял уже готовую из вашего архива
    ОС виртуальная WinXP SP2 далеко не со всеми обновлениями :)
     
  13. steelfactor

    steelfactor New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    501
    Хз, ничего путного не могу сказать.
    LSP загружаю (и выгружаю) на живой системе через inst_lsp.exe из архива, сама lsp.dll лежит в папке system32, все нормально работает после перезагрузки, никаких видимых проблем.
     
  14. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    steelfactor
    Заработало, скопировал dll в system32 и установил той утилитой что идет в комплекте, IE по крайней мере работает.
    При установке через утилиту от примера MS (instlsp) все перестает работать.

    Большое спасибо за пример
     
  15. 100gold

    100gold New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2010
    Сообщения:
    165
    А не проще плагины к IE и OUTLOOK написать?
    Всяко проще будет чем MITM для https организовывать.
     
  16. Marik

    Marik New Member

    Публикаций:
    0
    Регистрация:
    21 июн 2006
    Сообщения:
    166
    Адрес:
    Russia
    100gold
    IE как и outlook всего лишь клиенты, которые могут быть и другие. например Chrom и Bat
     
  17. 100gold

    100gold New Member

    Публикаций:
    0
    Регистрация:
    26 фев 2010
    Сообщения:
    165
    Ну а кроме прямого http\smtp соединения, может быть ещё различных видов VPN и proxy. Как их учитывать в LSP\TDI\WFP фильтрах?