PDA

Просмотр полной версии : Методы обхода фаерволов


razzzar
30.06.2007, 01:08
Меня интересует какие есть методы их обхода.

После долгого времени гуглирования и просмотра васма я понял такое:
1. если делать обход через инжект - надо восстанавливать таблицу Sdt
2. если просто создавать соединения, надо снимать хуки с ядерных функций, которые поставил фаервол

мои рассуждения верны?

как восстановить Sdt я более-менее нашел инфу и исходники. сижу разбираюсь. а вот как снять хуки не совсем понял. Sdt - это ж таблица адрессов функций ядра, так? если ее восстановить, то сразу же снимуться и хуки?

P.s.: извините, если вопрос нелепый, я новичек в этой сфере кодинга :)

Ky3bMu4
30.06.2007, 10:52
Sdt - это ж таблица адрессов функций ядра, так? если ее восстановить, то сразу же снимуться и хуки?

Да.


2. если просто создавать соединения, надо снимать хуки с ядерных функций, которые поставил фаервол

Чистим sdt - инжект не палится, инжектируемся в проц, которому есть доступ в инет(svchost) и там уже создавай любое соединение.

razzzar
30.06.2007, 16:34
Чистим sdt - инжект не палится, инжектируемся в проц, которому есть доступ в инет(svchost) и там уже создавай любое соединение.

это я уже сделать могу.

а есть методы, чтобы без инжекта?

Ky3bMu4
30.06.2007, 17:17
80 порт может вроде любая прога юзать(если я не ошибаюсь.).
Или искать окно фаера и нажимать там кнопку "Разрешить".

Но инжектом мы убиваем сразу 2 зайцев: невидимость в диспечере задач + обход фаеров.

razzzar
30.06.2007, 17:40
80 порт может юзать только та прога, которой это можно ;) у него нету оособого статуса.

искать окно и нажимать на кнопку - это не то :)

инжект и так будет, но дело в том, что даже тому же svchost.exe не разрешено ко всем портам доступ на исходящие. а те которым разрешено по умолчанию, я юзать не могу (

Ky3bMu4
30.06.2007, 17:50
Создаём поток, который будет каждые 7сек. будет убивать процессы фаеров/антивирусов.))))))))

Ali_MiX
30.06.2007, 18:16
Смотря какой файер, если оутпост то ето пипец, хотя под его я где то видел сплойт или что то в роде того.

slesh
30.06.2007, 21:08
Я както пытался делать вот такую вешь:
Запускать осла делать ему невидимое окно. После этого управлять этим окном.
Типа передача строки. потом скачевание и сохранение файла.
Но облом в том что фаер может начать возмущаться что типа запускается скрытый процес.

Hellsp@wn
30.06.2007, 21:22
Hа невидимое окно многие фаеры ругаются =) Да и запуск ИЕ, левой прогой, тоже
не айс, попробуй переместить окно за экран.

Самый лучший в этом отношении ZoneAlarm, я не нашёл ещё более-менее простой
способ его обхода =\ может конечно плохо искал...

slesh
30.06.2007, 21:26
Самый действенный способ - ставь свой драйвер уровня ядра. который быдет сидеть сразу над сетевым драйвером. И тогда хрен кто пропалит.
Но его хрен напишишь

slider
30.06.2007, 21:36
эмм.. на днях кой чего накидал... мб кому пригодится...
уровень кодинга у меня неважный.. но вообщем зацените...


#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;
}

Ky3bMu4
30.06.2007, 21:55
Обход Outpost Firewall 3.x и 4.0 в Kernel mode (C) wasm.ru



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
30.06.2007, 23:35
2Кузьмич, этот код ставит свои хуки на уровне ядра?

inSa(Ne)rd
01.07.2007, 00:08
razzzar, а что, можно так сделать в user-mode, да?

что за ебанутый код

PVOID Image = GetModuleHandle("filtnt.sys");


GetModuleHandleA никогда не будет работать в kernel mode

_Great_
01.07.2007, 00:10
Ky3bMu4 лол=) Кернел моде :)) А че там делает GetModuleHandle? )

slider, боян)

slider
01.07.2007, 00:15
_Great_
Есль чесн я боялся что ты на сам код ругаться будешь....
p.s но так... работает же! ))

Ni0x
03.07.2007, 01:28
забыли упомянуть самый простой вариант - реализация своего Tcp/ip стека ;)
также можете юзать Bits, примеров хватает

razzzar
03.07.2007, 01:32
у меня тут вопрос один созрел:
чтобы соединится с сервером обычным connect(); обходя фаервол надо сделать такое:
1. найти адресс ядерных функций, которые перехватывает фаервол
2. найти адресса оригиналов
3. снять хуки
?

или можно сделать вариант с SDT? или СДТ работает толья для инжекта?

Namelles One
03.07.2007, 09:30
Дурдом какой-то.
В теории ведь все фаеры юзают хуки на функции и, посему, снятием их - перестают палить? Или я неправ?

З.Ы. А вообще, ИМХО, на данный момент - Bits это самое перспективное. Тестили мы его - никто вааще пока походу не ловит.

KEZ
03.07.2007, 10:08
у меня тут вопрос один созрел:
чтобы соединится с сервером обычным connect(); обходя фаервол надо сделать такое:
1. найти адресс ядерных функций, которые перехватывает фаервол
2. найти адресса оригиналов
3. снять хуки
?

или можно сделать вариант с SDT? или СДТ работает толья для инжекта?


советую учить делфи. пока ситуация ещё под контролем


В теории ведь все фаеры юзают хуки на функции и, посему, снятием их - перестают палить? Или я неправ?


аналогично

Фаерволы могут использовать огромное количество колец защиты, в том числе NDIS-перехват, хуки на устройства tcp,udp, перехват в usermode всевозможных dns-резольвов, и ещё кучи всего, подгружая dll к вашему процессу, ещё хуки на ядерные ф-ии, на запуск специфичного кода (например, на ZwOpenSection и ZwLoadDriver), что не даст вам даже поставить драйвер или выполнить код в kernel mode через колгейт, ещё они могут детектить всевозможные записи в реестр, даже использовать ipfw, и ещё кучу кучу всего, причем часто - взаимозапутаные)
если вы думаете что разработчики фаерволов полные лохи, которые не знают как их фаервол потом можно будет обойти - вы очень, очень очень глубоко ошибаетесь

так что товарищи, интерисующиеся, если ли в ядре ф-ия connect() и можно ли "снять хук в ядре с функции connect()" и тому подобными вопросами - просто знайте что всё намно-ооооо-го сложнее.

мне как-то посденее время все заморочки с драйверами не особо нравятся. есть способы нормальные. все они основаны в основном на COM который я очень нелюблю.
можно просто заставить IE слать что надо через использование BHO. (для Great : именно H вторая буква а не D!)) Если IE запрещен - тогда хули, неповезло.


_Great_
Есль чесн я боялся что ты на сам код ругаться будешь....
p.s но так... работает же! ))

что у тебя там работает) может на твоем настроеном аутпосте какой-то там версии это и работает. но если надо это запихнуть в троян - ещё придется просить юзера поставить аутпост определенного языка, настроить режим "обучающий", и вообще попросить сделать так чтоб вылазало именно то окошко, в котором кнопочки нажимаем

_Great_
03.07.2007, 10:46
Поехали
как восстановить Sdt я более-менее нашел инфу и исходники. сижу разбираюсь. а вот как снять хуки не совсем понял. Sdt - это ж таблица адрессов функций ядра, так? если ее восстановить, то сразу же снимуться и хуки?
Вряд ли ты быстро разберешься в KERNEL-кодинге.
По поводу вопроса: яблоко стоит на столе. Выбрасываем старый стол и ставим новый. Очевидно, яблока на столе уже не будет. Вопрос твой оч странный даже с точки зрения логики.
Создаём поток, который будет каждые 7сек. будет убивать процессы фаеров/антивирусов.))))))))
Лол, валяй. Я посмотрю
Самый действенный способ - ставь свой драйвер уровня ядра. который быдет сидеть сразу над сетевым драйвером. И тогда хрен кто пропалит.
Но его хрен напишишь
Если не понимаешь, нечего и возникать +) Оч даже и напишешь.
Обход Outpost Firewall 3.x и 4.0 в Kernel mode (C) wasm.ru
Мегажесть код, что тут делает GetModuleHandleA?
2Кузьмич, этот код ставит свои хуки на уровне ядра?
Этот код, если откинуть неточности грубые, ставит хуки на импорт filtnt.sys на функцию IoGetCurrentProcess.
да все любят кернел моде, переписывать там куски кода и тп
ни один не знает вообще что это такое, но хуле, скопипастить то надо чтоб показать "я крутой рингзеро хэкер" )
у меня тут вопрос один созрел:
чтобы соединится с сервером обычным connect(); обходя фаервол надо сделать такое:
1. найти адресс ядерных функций, которые перехватывает фаервол
2. найти адресса оригиналов
3. снять хуки
?

или можно сделать вариант с SDT? или СДТ работает толья для инжекта?
Нет, SDT это таблица локальных функций. Сеть- вообще из другой оперы, там надо с NDIS работать

блин, вы сначала
1) научитесь кодить
2) научитесь кодить под ядро
3) разберитесь с устройством ядра и ядерной части Windows
А уж потом лезьте.
Фаерволы могут использовать огромное количество колец защиты, в том числе NDIS-перехват
Странная терминология у тебя =) Колец защиты в винде используется два - 0 и 3. 1 и 2 не используются изза совместимости (как меня она бесит, если выкинуть лишний код в винде, она станет в н раз меньше и в н раз быстрее)

razzzar
03.07.2007, 19:41
Нет, Sdt это таблица локальных функций. Сеть- вообще из другой оперы, там надо с Ndis работать
Вот это я и хотел услышать :) спс за объяснение.
ПС: про НДИС, кроме васма еще есть хорошие ресурсы, де почитать?

_Great_
03.07.2007, 19:47
Вот это я и хотел услышать :) спс за объяснение.
ПС: про НДИС, кроме васма еще есть хорошие ресурсы, де почитать?
MSDN очень хороший ресурс, рекомендую. Вообще если что, первым делом с вопросом в MSDN. Если там нету - уже надо думать

razzzar
03.07.2007, 19:49
_great_, ну я ж не полный ламер. про мсдн знаю и пользуюсь ;)

Ni0x
03.07.2007, 20:01
>>ПС: про НДИС, кроме васма еще есть хорошие ресурсы, де почитать?
http://rootkits.ru/

_Great_
03.07.2007, 20:46
>>ПС: про НДИС, кроме васма еще есть хорошие ресурсы, де почитать?
http://rootkits.ru/
Хотя это довольно начинающий ресурс, полезная инфа на не все же есть:) чето я забыл про него как-то

Ni0x
03.07.2007, 20:53
на индексе висит
16.02.2007 16:59:35 - Обновление Rootkit Development Pack #4

125 статей, 37 исходников. В основном про NDIS, TDI, разработку и отладку (для новичков)
Новость добавил apple

_Great_
03.07.2007, 20:56
Получение DRIVER_OBJECT Great (4) руткитс
Ну да, это я ) В смысле в этой теме я забыл его упомянуть.

razzzar
03.07.2007, 22:33
ок. спс всем, пойду разбираться :)

KEZ
04.07.2007, 09:34
Странная терминология у тебя =) Колец защиты в винде используется два - 0 и 3. 1 и 2 не используются изза совместимости (как меня она бесит, если выкинуть лишний код в винде, она станет в н раз меньше и в н раз быстрее)


Грит не тупи) Для тебя любое кольцо защиты (даже из американского боевика про роботов) - это обязательно конкретизируется в кольца защиты в микропроцессоре ; )
Ведь тоже с терминологией проблема:


Нет, SDT это таблица локальных функций.


; )

Ni0x
04.07.2007, 13:10
еще одна интересная статья про ndis
http://rootkit.com/newsread.php?newsid=219