Сейчас на форуме: jinoweb (+4 невидимых)

 eXeL@B —› Программирование —› LSP: Почему не работает с службами windows 10?
Посл.ответ Сообщение

Ранг: 3.0 (гость)
Активность: 0.03=0.03
Статус: Участник

Создано: 18 февраля 2020 20:56
· Личное сообщение · #1

Доброго времени суток. Из исходников msdn собрал свой firewall по технологии LSP(Layered Service Provider). Тестил на win 7 (x32,x64) - всё работает прекрасно. Даже системные процессы захватывает, такие как lsass.exe, [System]. Проблемы начались когда тесты перешли на win 10. Библиотека перестала работать с службами windows, только подхватывается обычными процессами(браузеры, игры).
После повторного, долгого и тщательного изучения документации выяснил следующее:

On Windows Vista and later, an LSP can be classified based on how it interacts with Windows Sockets calls and data. An LSP category is an identifiable group of behaviors on a subset of Winsock SPI functions. For example, an HTTP content filter would be categorized as a data inspector (the LSP_INSPECTOR category).
An LSP may belong to more than one category. For example, a firewall/security LSP could belong to both the inspector (LSP_INSPECTOR) and firewall (LSP_FIREWALL) categories.

If an LSP does not have a category set, it is considered to be in the All Other category. This LSP category will not be loaded in services or system processes (for example, lsass, winlogon, and many svchost processes).

Источник: https://docs.microsoft.com/en-us/wi...ng-layered-service-providers-and-applications

Чтобы заставить библиотеку работать с системными службами(services), я добавил следующий код в инсталляторе(после вызова WSCInstallProviderAndChains):
Code:
  1. DWORD lspCategory = 0xFFFFFFFF;
  2.        // DWORD lspCategory = LSP_SYSTEM | LSP_FIREWALL | LSP_INSPECTOR; // | LSP_REDIRECTOR | LSP_PROXY | ;
  3.             //| LSP_INBOUND_MODIFY | LSP_OUTBOUND_MODIFY | LSP_CRYPTO_COMPRESS; // | LSP_LOCAL_CACHE;
  4.  
  5.         fprintf(stderr, "category: %d \n", lspCategory);
  6.         fprintf(stderr, "sizeof: %zd \n", sizeof(lspCategory));
  7.         rc = WSCSetProviderInfo(providerGuid, ProviderInfoLspCategories, (PBYTE)&lspCategory, sizeof(lspCategory), NULL, &error);
  8.         if (rc == SOCKET_ERROR) {
  9.             fprintf(stderr, "InstallProviderVista: %s failed: %d\n",
  10.                 "WSCSetProviderInfo32", error);
  11.             goto cleanup;
  12.         }

Я пробовал значение lspCategory менять на LSP_SYSTEM, LSP_FIREWALL... на 0xFFFFFFFF. Пробовал просто оставить NULL. Но, увы мои попытки не увенчались успехом. Прошу помощи у тех, кто может разбирался в этом и знает в чем проблема?



Ранг: -4.9 (нарушитель), 1thx
Активность: 0.07=0.07
Статус: Участник

Создано: 18 февраля 2020 22:01
· Личное сообщение · #2

А я бы написал в поддержку майкрософт они должны помогать.



Ранг: 3.0 (гость)
Активность: 0.03=0.03
Статус: Участник

Создано: 18 февраля 2020 22:15
· Личное сообщение · #3

SDK-2 Спасибо, попробую как вариант, может еще кто-то что-то подскажет?



Ранг: 43.1 (посетитель), 20thx
Активность: 0.160.29
Статус: Участник

Создано: 18 февраля 2020 23:39
· Личное сообщение · #4

Может быть проблема в подписи dll: винда не хочет подозрительные библиотеки подгружать в некоторые системные процессы?




Ранг: 77.2 (постоянный), 74thx
Активность: 0.190.15
Статус: Участник

Создано: 19 февраля 2020 00:10 · Поправил: sefkrd
· Личное сообщение · #5

Говоря иначе - тебе не дадут писать свой фаер на 10.. Только гуишки..
И вот ответ: "If an LSP does not have a category set, it is considered to be in the All Other category. This LSP category will not be loaded in services or system processes (for example, lsass, winlogon, and many svchost processes)"
Как прогеру - не перевожу ))




Ранг: 71.5 (постоянный), 95thx
Активность: 0.10.38
Статус: Участник

Создано: 19 февраля 2020 08:35
· Личное сообщение · #6

sefkrd пишет:
И вот ответ: "If an LSP does not have a category set, it is considered to be in the All Other category. This LSP category will not be loaded in services or system processes (for example, lsass, winlogon, and many svchost processes)"

Возможно предположу глупость, но если дублировать токен, к примеру lsass и имперсонировать или в PEB замаскировать процесс под winlogon (LdrEnumerateLoadedModules) к примеру или в комплексе?
В зависимости от того, как эту категорию винда проверяет.



Ранг: 3.0 (гость)
Активность: 0.03=0.03
Статус: Участник

Создано: 20 февраля 2020 17:08
· Личное сообщение · #7

Спасибо большое всем кто подкинул варианты, я проверю и отпишусь;)



Ранг: 1.3 (гость)
Активность: 0.04=0.04
Статус: Участник

Создано: 24 февраля 2020 04:41 · Поправил: Storage
· Личное сообщение · #8

// On Windows Vista and later there is a new LSP install function
// (WSCInstallProviderAndChains) that performs all necessary installation
// steps in a single call (instead of multiple WSCInstallProvider calls).
// This function dynamically loads the function and invokes it to install
// the LSP. The function either expects a NULL list of WSAPROTOCOL_INFOW
// structures in which case it installs the LSP over each unique address
// family, socket type, and protocol base provider on the system. Otherwise,
// if the pdwCatalogIdArray specifies exact providers, this function builds
// a list of those provider structures in which case the install API installs
// the LSP over each instance of the address family, socket type and protocol
// specified in the array.



Ранг: 3.0 (гость)
Активность: 0.03=0.03
Статус: Участник

Создано: 29 февраля 2020 18:49
· Личное сообщение · #9

Storage, неа.



Ранг: 145.8 (ветеран), 191thx
Активность: 0.140.36
Статус: Участник

Создано: 01 марта 2020 07:07
· Личное сообщение · #10

Тебе там черным по белому написали что это depricated с вин8 и используй WFP. Что за дурость и упорство достойное барана? Никакие твои длл никуда не подгрузятся ни в какие системные процессы - это by design.


 eXeL@B —› Программирование —› LSP: Почему не работает с службами windows 10?
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати