Нужно организовать мониторинг открытия всех сайтов любыми процессами, желательно получать записи вида: имя пользователя/имя процесса/имя сайта
Я так мыслю, что это можно сделать следующими путями (только как, пока не знаю):
1)мониторить DNS запросы (вроде как самый верный вариант)
2)мониторить web порты
3)мониторить журналы браузеров (но тут отпадают все остальные процессы, да и ведение истории посещения в браузере можно отключить)
MAS>Подскажите куда двигаться MAS>Нужно организовать мониторинг открытия всех сайтов любыми процессами, желательно получать записи вида: имя пользователя/имя процесса/имя сайта
Что подразумевается под "открытием сайтов"? HTTP-запросы? HTTPS? FTP? SMTP? ICMP?
В конце концов процесс может просто вызвать:
Будет проще советовать, если будет понятна конечная цель мониторинга. MAS>Я так мыслю, что это можно сделать следующими путями (только как, пока не знаю): MAS>1)мониторить DNS запросы (вроде как самый верный вариант)
Минусы варианта:
DNS запросы кэшируются (не на каждое открытие URL'а будет запрос)
нужно учесть, что часть процессов сами резолвят домены сокетами (имея, например, на борту c-ares), а другая часть делает RPC-вызов в svchost.exe (отдельный сервис), который и делает DNS-запрос
доменные имена резолвят не только для "открытия сайтов"
"открытие сайта" можно делать и по IP
MAS>2)мониторить web порты
Насколько критично внесение лага в работу системы?
Какие порты (все или набор)? В URL может быть указан нестандартный порт, например. А по стандартному 443 порту могут идти просто сырые зашифрованные данные (не HTTPS).
Как сопоставлять IP и домены, с учетом SHARED-хостингов?
Как именно будет реализован мониторинг (возможность написания драйвера, поддерживаемые версии ОС)?
MAS>3)мониторить журналы браузеров (но тут отпадают все остальные процессы, да и ведение истории посещения в браузере можно отключить)
Если допустимы приведенные оговорки, то может это тот самый верный вариант? Придется, правда, постоянно обновлять работу с браузерами — версии выходят часто. Так же возможны конфликты с работающими копиями браузеров (открытые без разделяемого доступа файлы, например).
MAS>Хочу знать кто куда лазит в сетке в рабочее время, готовые проги не хочу, хочу свою MAS>А какие еще есть варианты?
Навскидку:
перехватить сокетное API во всех процессах
написать свою библиотеку LSP (Layered Service Provider)
Но тут говорят, что технология уже умрает:
Layered Service Providers are deprecated. Starting with Windows 8 and Windows Server 2012, use Windows Filtering Platform.
собственно, Windows Filtering Platform
Технология появилась на Vista и с каждым релизом Windows ее возможности сильно увеличивались (читай: чем моложе система, тем больше шанс отсутсвия нужного функционала). Имеет как user mod'ную часть, так и kernel mod'ную, но насколько мне известно (я не изучал грубоко user mod'ную часть) без драйвера организовать мониторинг не получится.
На системах до Vista для мониторинга сетевой активности писались TDI драйвера.
Соотвественно, последний вариант влечет написание дарйвера. Ошибка драйвера — BSOD всей системы. Плюс на 64-х битных платформах, начиная с Vista, нужен или купленный сертификат для пописи или перевод системы в режим тестовой подписи.
Здравствуйте, MASReady, Вы писали:
MAS>Этот вариант я думал, но как правильно сказано — нужно с драйвером заморачиваться, а очень не хочется.
Если есть деньги и не хочется заморачиваться с драйвером — можно попробовать продукы Komodia — http://www.komodia.com/, посмотрите у них там в разделе LSP, они сначала расписывают технологию, а потом рассказывают, как это без геморроя можно заменить их продуктами.) Вам, похоже, нужен http://www.komodia.com/products/komodias-interceptor
Здравствуйте, MASReady, Вы писали:
MAS>... MAS>Нужно организовать мониторинг открытия всех сайтов любыми процессами, желательно получать записи вида: имя пользователя/имя процесса/имя сайта
Был опыт разработки нескольких программ такого типа.
Самые большие проблемы — это совместимость с антивирусами, фаерволами и т.п. софтом, а
также поддержка HTTPS (сейчас очень много сайтов работают по шифрованному соединению).
Я бы советовал не лезть в это дело, если опыта в таких делах нет, потому что
будет долго, сложно и будете в сотый раз набивать свои шишки на чужих граблях.
Если есть возможность, лучше купить готовое или заказать разработку у знающих людей.
Самому писать такое в 99% нет смысла.
Здравствуйте, jahr, Вы писали:
J>Здравствуйте, MASReady, Вы писали:
MAS>>Этот вариант я думал, но как правильно сказано — нужно с драйвером заморачиваться, а очень не хочется. J>Если есть деньги и не хочется заморачиваться с драйвером — можно попробовать продукы Komodia — http://www.komodia.com/, посмотрите у них там в разделе LSP, они сначала расписывают технологию, а потом рассказывают, как это без геморроя можно заменить их продуктами.) Вам, похоже, нужен http://www.komodia.com/products/komodias-interceptor
Здравствуйте, MASReady, Вы писали:
MAS>Хочу знать кто куда лазит в сетке в рабочее время, готовые проги не хочу, хочу свою
MAS>А какие еще есть варианты?
Прокси, в т.ч. прозрачные. Но это если важен результат, а не процесс, тебе не подойдет.
Здравствуйте, MASReady, Вы писали:
MAS>Доброго времени суток!
MAS>Подскажите куда двигаться
MAS>Нужно организовать мониторинг открытия всех сайтов любыми процессами, желательно получать записи вида: имя пользователя/имя процесса/имя сайта
MAS>Я так мыслю, что это можно сделать следующими путями (только как, пока не знаю): MAS>1)мониторить DNS запросы (вроде как самый верный вариант) MAS>2)мониторить web порты MAS>3)мониторить журналы браузеров (но тут отпадают все остальные процессы, да и ведение истории посещения в браузере можно отключить)
MAS>помогите люди добрые
Написать TDI драйвер , это бвло в Win2000, win XP , начиная с Win Vista TDI Кажись не работает.