
Прокси Memory API через подписанную mozglue.dll
Исследовательский PoC для детектирования: проксирование операций с памятью (отображение памяти, локальное выделение памяти) через подписанный компанией Mozilla mozglue.dll, чтобы колбэки ядра приписывали конечный пользовательский модуль доверенной DLL вендора (подписанной Mozilla) вместо неподписанного или недоверенного модуля.
Обе являются экспортами MFBT_API из mozglue.dll (требуется установка Firefox):
| Режим | Экспорт | Исходный код Mozilla |
|---|---|---|
inject | mozilla::MapRemoteViewOfFile | WindowsMapRemoteView.cpp · заголовочный файл |
alloc | MozVirtualAlloc | mozjemalloc.cpp · mozmemory_wrap.h |
Декорированные имена x64 MSVC:
?MapRemoteViewOfFile@mozilla@@YAPEAXPEAX0_K01KK@Z
MozVirtualAlloc
MSYS2 mingw-w64:
./build.sh
./build.sh shellcode # optional: rebuild shellcode/msgbox.bin
Готовый mozglue_gate.exe включён в репозиторий для быстрых тестов детектирования (64-бит, требует установленного Firefox).
# Cross-process map + APC (MapRemoteViewOfFile)
.\mozglue_gate.exe inject <pid> shellcode\msgbox.bin
# Local RWX alloc (MozVirtualAlloc)
.\mozglue_gate.exe alloc --size 10240
shellcode/msgbox.bin выводит "Hello from Mozglue" / заголовок gluegate (без дочернего процесса).
Требуется классический Firefox: C:\Program Files\Mozilla Firefox\mozglue.dll (или --mozglue / MOZGLUE_DLL).
Конечный пользовательский модуль подписан/доверен Mozilla Corporation
MapViewOfFile
VirtualAlloc
mozglue.dll!MozVirtualAlloc или mozglue.dll!?MapRemoteViewOfFile в стеке вызовов из процесса без подписи или не подписанного Mozilla.mozilla.dll (особенно уже установленную в programfiles).Только для авторизованных исследований в области безопасности и тестирования средств обнаружения.