Предотвратить инъекции McAfee Dlls

У меня есть процесс, который делает несколько встроенных хуков на модуле WinSock (функции отправки и получения).
На машине с McAfee я вижу, что в мой процесс внедряются две DLL:

  • hipi.dll
  • hipqa.dll

Оба также, вероятно, выполняют встроенные подключения к этим функциям, и я получаю коллизии и нежелательное поведение. Есть ли возможность предотвратить / разгрузить эти библиотеки, чтобы они не мешали?

10x,
парень

2

Решение

Есть много сценариев для внедрения DLL (Hooking), кстати, вы должны узнать больше о том, как работает каждый метод, наиболее распространенным является использование API-функции CreateRemoteThread (), а затем вы должны внедрить свою DLL безопасности в каждый процесс. и перехватить / перенаправить / отклонить любой вызов CreateRemoteThread () или любой «опасный» вызов API.

PS: НО имейте в виду:

перехват режима пользователя НИКОГДА не может быть опцией применения дополнительной безопасности
проверяет любым безопасным способом. Если вы только хотите
«песочница» выделенного процесса, о котором вы хорошо знаете, а процесс фактически не знает
EasyHook, это может быть успешным! Но никогда не пытайтесь написать какое-либо программное обеспечение безопасности на основе пользователя
режим перехвата. Это не сработает, я обещаю тебе …

1

Другие решения

Я предполагаю, что McAfee выполняет инъекцию DLL из режима ядра. Вероятно, они находят адрес KeServiceDescriptorTable (экспортируется NTOSKRNL в 32-разрядных системах, а адрес к нему просачивается в 64-разрядных средах KiSystemServiceRepeat -> рядом с KiSystemCall64, найденным регистром, зависящим от модели IA32_LSTAR), а затем находит NtCreateThreadEx из служебная таблица, или они используют KeInitializeApc и KeInsertQueueApc (оба экспортируемые NTOSKRNL) для внедрения APC (пользовательская оболочка NtQueueApcThread). Это было бы логично, если учесть, что они являются поставщиком систем безопасности с большим количеством ресурсов, я сомневаюсь, что они будут вводить данные из пользовательского режима.

Вероятность заключается в том, что они используют PsSetCreateProcessNotifyRoutineEx или PsSetLoadImageNotifyRoutineEx для обнаружения создания нового процесса. Первый не так хорош, как последний, последний лучше подходит для фильтрации NTDLL.DLL, поскольку он является первым модулем, загруженным в каждый отдельный процесс, и означает, что процесс действительно запущен должным образом и почти готов к выполнению своего собственный код (после загрузки модуля Windows и потому, что McAfee нужно будет ждать загрузки модулей Win32, таких как kernel32.dll, в противном случае они потерпят крах процесса, если вообще используют API Win32 в своих внедренных модулях).

Вы можете попытаться перехватить LdrInitializeThunk или KiUserApcDispatcher, но, честно говоря, вы мало что можете сделать. McAfee найдет способ внедрить в ваш процесс независимо от того, что вы делаете, потому что они имеют контроль из режима ядра. Если вы разрабатываете защиту процесса с помощью различных обратных вызовов режима ядра от драйвера, они обойдут ее, используя неэкспортированные подпрограммы, расположенные в результате сканирования совпадений по шаблону ntoskrnl.exe, или экспортированные подпрограммы, которые не вызывают API-интерфейсы уведомлений об обратном вызове. Если вы локально исправляете подпрограммы, вызванные для создания потока / APC локально в вашем собственном процессе, когда они выполняются удаленным злоумышленником, они найдут способы предотвратить это и обойти это (например, исправят исправленные подпрограммы в адресном пространстве вашего процесса обратно в оригинал, внедрить, затем перепатчить байты обратно).

Вы играете с огнем, если хотите остановить программное обеспечение безопасности с привилегиями, которые есть у McAfee. Это похоже на то, как Anti-Cheat не может остановить хакеров, которые имеют доступ в режиме ядра, и предпринять решительные меры, даже отметив, что режим отладки / тестовый режим включен в настоящее время.

1

У вас есть 2 варианта.

  1. Добавьте исключение для вашего процесса, чтобы McAfee не пытался его сканировать. Я не использую продукты McAfee, но я предполагаю, что это будет относительно простой процесс.
  2. Удалить McAfee
0

Самое простое решение — просто отцепить затронутые функции. Мне пришлось сделать то же самое, чтобы обойтись с каким-то дерьмом Dell. Это не слишком сложно, хотя и требует некоторого понимания сборки x86. Вы должны отключить DEP, сделать исправленный код доступным для записи, найти оригинальные инструкции и скопировать их обратно. Поиск оригинальной инструкции, вероятно, означает разборку патча.

0

Другой вариант — просто зацепить его в другом месте. Например, вместо этого подключите IAT, а затем, когда вы закончите с тем, что хотите, перенаправьте выполнение обратно в реальную функцию, где оно затем пройдет через ловушку McAfee.

0

Мне приходилось иметь дело с чем-то похожим однажды. Прочитайте их собственную заглушку для сборки крюка, чтобы вы могли понять, как зацепить их цепью за крючок.

0
По вопросам рекламы [email protected]