Показать сообщение отдельно
Старый 25.07.2010, 15:08   #24
slesh
 
Аватар для slesh
 
Регистрация: 16.07.2010
Сообщений: 8
Репутация: 7
По умолчанию

Ну вообще перехват трафика с возможностью модификации это дело довольно запустанное, но могу перечислить все известные мне способы.
1) Группа хука сетевых функций. Банальная подгрузка кода в процесс. Код просто хукает сетевые функции типа recv, send, WSASend, WSARecv, InternetRead итд. К таким инжектам можно отнести
- Подгрузка DLL с помощью реестра в каждый процесс
- Внедрение DLL/кода через запись данных и создание удаленного потока
- Внедрение DLL/кода через запись данных и патч IAT процесса или других мест
- Подгрузка модулям на этапе старта процесса по средствам отладчиков конкретных процессов (в реестре прописывается)
2) LSP - Очень хитрая, но сцука малодокументированная и сложная вешь. Т.е. в винде уже предусмотрена поддержка хука WinSock функций (вернее мониторинга их). Т.е. достаточно написать DLL которая будет обрабатывать калбеки определенных функций, затем её зарегать в системе. И готово. Метод довольно мощный. NOD32 и многие другие проги юзают его для мониторинга сети. Там можно что угодно тварить. Вешь очень интересная, но доки очень мало (1-2 сайта с исходниками). Даже MS както скромно говорит про это.
Копаться с этим пока руки не доходили, но как я понял, там достаточно написать DLL которая имеет экспортируемые функции с именами типа WSPSend/WSPRecv т.е. WSP добавляется перед именем функции. Тамже можно и connect обрабатывать. Но фот непосредственна реализация этих функций довольно сложна и если сделать ошибку, то большая вероятность навернуть всю сетевую систему винды.
3) проксирование запросов. т.е. любыми способами (хук, конфиги, итд итп) необходимо заставить работать прогу через собственный прокси сервер, который будет выполнять необходимую фильтрацию.
4) подмена DNS. Любыми способами идет подмена адреса сервера куда коннектится софт. И все данные перенаправляются на твой сервак, который делает перенаправляение на нужный сервак. Попутно фильтрую данных. Для HTTP очень хороший метод, потому что из поля Host можно выбрать адрес кому предназначается пакет
5) TDI фильтры ядра. Довольно просто реализуются, но есть сложность правкой трафика. Зако куча примеров. Но Требует написания драйвера
6) NDIS фильтры ядра. Довольно просто реализуются, но есть сложность правкой трафика и тяжелее писать чем TDI. Примеры тож есть в сети. И способ также требует написания драйвера
slesh вне форума   Ответить с цитированием