
Kit de herramientas de hooking de named pipes de Windows
Proyecto basado en Frida para interceptar la comunicación por named pipes de Windows
Este proyecto tiene como objetivo interceptar comunicaciones IPC mediante el hooking de funciones WinAPI específicas y reenviarlas a un proxy HTTP utilizando un websocket.
La lectura y escritura de un named pipe puede ocurrir en diferentes funciones. En esta sección, WriteFile representa una escritura a un named pipe y ReadFile representa una lectura de un named pipe.
Cuando se intercepta, los datos que se van a escribir siguen este esquema.
WriteFile --> frida hook --> python process --> websocket client --> HTTP Proxy --> websocket server --> python process --> frida hook --> WriteFile
Por otro lado, los datos que el proceso va a leer siguen este esquema.
ReadFile --> frida hook --> python process --> websocket server --> HTTP Proxy --> websocket client --> python process --> frida hook --> ReadFile
El proxy HTTP recibirá un mensaje "to the server" cuando la acción sea una escritura a un named pipe, y un mensaje "to the client" cuando la acción sea la lectura de un named pipe.
Añade un proxy en el puerto 8090 que escuche en todas las interfaces
Compila el script del agente de Frida usando make build; el agente estará en agent/dist/
backend/*.py y backend/requirements.txt (backend) y agent/dist/agent.js (agente) al host de Windowspy -m pip install -r requirements.txtpy .\main.py <pid_of_target> .\agent.js --ws-port 9090 --ws-host <ip_of_windows> --http-proxy-port 8090 --http-proxy-host <ip_of_burp> --handle-regexes '.*' --log-level INFOLos datos enviados al proxy HTTP siguen un formato específico definido en docs/format.md; en tools/ se proporcionan herramientas para manipular este formato personalizado.
Modificar los metadatos puede provocar que el proyecto no reconozca ni enrute correctamente el mensaje al named pipe correcto.
El script de Frida espera una respuesta indefinidamente, por lo que el proceso puede bloquearse indefinidamente si decides descartar el mensaje.
Actualmente, el proyecto no admite la inyección de nuevos mensajes.
Frida proporciona bindings de TypeScript para desarrollar el agente. Una vez instaladas las devDependencies, VSCode debería reconocer los tipos automágicamente.
Se proporciona un target de Makefile make dev-env para configurar fácilmente un entorno de desarrollo.