Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Обнаружение отражённой загрузки DLL: методы и примеры кода на Delphi

Delphi , Синтаксис , Справочник по API-функциям

Введение

Вопрос, заданный пользователем, касается обнаружения отражённой загрузки DLL в память процессов. Это метод, используемый вредоносным ПО и некоторыми инструментами для пентестинга, который позволяет загрузить библиотеку в память процесса без записи на диск, что затрудняет обнаружение. Подход основан на работе Джоахима Бауха, и хотя Андрю Кинг на DEF CON 20 продемонстрировал возможность обнаружения таких инъекций, его исходный код не был опубликован. Существует инструмент Antimeter, который может обнаружить инжектированный модуль meterpreter, но он также закрыт.

Отзыв на статью и комментарии

В представленной информации нет прямого пересказа, так как статьи "Detecting Reflective Injection" от Андрю Кинга не существует в открытом доступе. Вместо этого, внимание акцентируется на обсуждении технологий обнаружения отражённой загрузки DLL в сообществе. В качестве альтернативного ответа предложено рассмотреть возможность перехвата функции VirtualProtect, что позволит отслеживать запросы на изменение прав доступа к памяти, включая разрешение выполнения кода, что может быть характерно для загружаемых модулей.

Основная часть

Обнаружение отражённой загрузки DLL на платформе Delphi

Чтобы продемонстрировать основные концепции обнаружения отражённой загрузки DLL, можно использовать следующий подход:

  1. Перехват функции VirtualProtect: Эта функция используется для изменения прав доступа к блокам памяти. Перехватив её, можно отслеживать попытки изменить права доступа на выполнение кода, что может указывать на загрузку DLL.

    ```pascal type ZwProtectVirtualMemory = function(ProcessHandle: THandle; BaseAddress: PPointer; NumberOfBytesToProtect: PInt64; NewAccessProtection: DWORD; OldAccessProtection: PDWORD): NTSTATUS; stdcall;

    function IsMZSignature(Buffer: PByte): Boolean; begin Result := Buffer[0] = $4D and Buffer[1] = $5A; end;

    function OnVirtualProtect(ProcessHandle, BaseAddress, NumberOfBytesToProtect, NewAccessProtection, OldAccessProtection: Pointer): NTSTATUS; stdcall; var PEHeader: PByte; begin if (NewAccessProtection and (PAGE_READWRITE or PAGE_EXECUTE_READWRITE or PAGE_EXECUTE)) then begin PEHeader := Pointer(BaseAddress).PByte - 0x1000; if IsMZSignature(PEHeader) then begin // Здесь можно выполнить дополнительные проверки end; end; ZwProtectVirtualMemory(ProcessHandle, BaseAddress, NumberOfBytesToProtect, NewAccessProtection, OldAccessProtection); end; ```

  2. Дополнительные проверки: После обнаружения потенциальной загрузки DLL следует провести дополнительные проверки, такие как анализ заголовка PE (Portable Executable), чтобы подтвердить, что это действительно загружаемый модуль.

  3. Использование других перехватов: Можно рассмотреть возможность перехвата функции FlushInstructionCache, которая может использоваться в античитовых системах, но на архитектуре x86 её вызов не обязателен.

Заключение

Представленный пример кода на языке Object Pascal (Delphi) демонстрирует, как можно начать разработку инструмента для обнаружения отражённой загрузки DLL. Важно помнить, что это лишь пример начальной точки, и для реального применения потребуется более глубокий анализ и дополнительные исследования.

Примечание

Этот ответ написан на основе информации, предоставленной пользователем, и предполагает, что исходный код Андрю Кинга и инструмент Antimeter могут служить источником вдохновения для создания собственного решения, но не являются прямыми примерами кода для использования.

Создано по материалам из источника по ссылке.

Вопрос касается методов обнаружения отражённой загрузки DLL в память процессов, что является техникой, используемой как вредоносными программами, так и инструментами для пентестинга, и предполагает обсуждение возможностей перехвата фу


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Справочник по API-функциям ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-13 19:10:11/0.0055150985717773/1