
Outil de hooking de tubes nommés Windows
Projet basé sur Frida pour intercepter les communications par named pipe Windows
Ce projet vise à intercepter les communications IPC en hookant des fonctions WinAPI spécifiques et en les transférant à un proxy HTTP via un websocket.
La lecture et l'écriture sur un named pipe peuvent se produire dans différentes fonctions. Dans cette section, WriteFile représente une écriture sur un named pipe et ReadFile représente une lecture d'un named pipe.
Lors de l'interception, les données à écrire suivent ce schéma.
WriteFile --> frida hook --> python process --> websocket client --> HTTP Proxy --> websocket server --> python process --> frida hook --> WriteFile
De l'autre côté, les données à lire par le processus suivent ce schéma.
ReadFile --> frida hook --> python process --> websocket server --> HTTP Proxy --> websocket client --> python process --> frida hook --> ReadFile
Le proxy HTTP recevra un message "to the server" lorsque l'action est une écriture sur un named pipe, et un message "to the client" lorsque l'action est une lecture d'un named pipe.
Ajoutez un proxy sur le port 8090, en écoute sur toutes les interfaces
Construisez le script agent Frida à l'aide de make build, l'agent se trouvera dans agent/dist/
backend/*.py et backend/requirements.txt (backend) ainsi que agent/dist/agent.js (agent) vers l'hôte 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 INFOLes données envoyées au proxy HTTP suivent un format spécifique défini dans docs/format.md ; des outils pour manipuler ce format personnalisé sont fournis dans tools/.
La modification des métadonnées peut rendre le projet incapable de reconnaître et d'acheminer correctement le message vers le bon named pipe.
Le script Frida attend indéfiniment une réponse ; par conséquent, le processus peut se bloquer indéfiniment si vous décidez de laisser tomber le message.
L'injection de nouveaux messages n'est actuellement pas prise en charge par le projet.
Frida fournit des bindings typescript pour développer l'agent. Une fois les devDependencies installées, VSCode devrait reconnaître les types automatiquement.
Une cible Makefile make dev-env est fournie pour configurer facilement un environnement de développement.