В последние несколько лет вредоносное ПО (и некоторые инструменты для проверки пера, такие как полезная нагрузка метапроцессора Metasploit) начали использовать рефлексивная инъекция DLL (PDF) загрузить DLL в память процесса. Преимущество в том, что файл никогда не записывается на диск и его трудно обнаружить. Многие примеры, которые я видел, основаны на Joachim Bauch work.
Тем не менее, в DEF CON 20 Эндрю Кинг продемонстрировал, что он смог обнаружить DLL-инъекцию с использованием рефлексивной DLL-инъекции. Его презентация называлась " Обнаружение рефлексивной инъекции". К сожалению, он не выпустил исходный код (которого он, безусловно, не обязан делать).
UPDATE: По-видимому, я пропустил это, но Андрей сделал эту работу пару лет назад: https://github.com/aking1012/dc20
Кроме того, инструмент, называемый Antimeter, может обнаруживать двигатель измерителя при загрузке с использованием рефлексивной dll-инъекции. Опять же, закрытый источник.
Я понимаю, что инструмент Andrew King и Antimeter написаны на Python и используют pydbg/pydasm для перечисления памяти на выполнение исполняемых файлов.
Есть ли у кого-нибудь общий исходный код (в Python, C, Delphi или иначе), который они готовы поделиться, что демонстрирует, как обнаружить рефлексивную DLL-инъекцию? Существуют средства судебной экспертизы памяти, которые могут анализировать дамп памяти и находить это, но я ищу для запуска приложения на работающей системе (например, с помощью антиметра) и поиска процессов с отраженными впрысками DLL.
Если вы заинтересованы в понимании того, как работает рефлексивная DLL-инъекция, существует некоторый открытый код, написанный в Delphi, который показывает, как это сделать это.
UPDATE: Я тестировал, и я могу отражать DLL без прав администратора (и как обычный пользователь), но, конечно, как ПОЛЬЗОВАТЕЛЬ, я могу только вводить в процессы, выполняющиеся на одном уровне целостности (и в моей сессии)... но это все еще охватывает приложения, такие как Office, Internet Explorer и т.д.