
Kit de ferramentas de hooking de named pipes do Windows
Projeto baseado em Frida para interceptar a comunicação de named pipes do Windows
Este projeto tem como objetivo interceptar comunicações IPC por meio de hooks em funções específicas da WinAPI e encaminhá-las para um proxy HTTP usando um websocket.
A leitura e a escrita em um named pipe podem ocorrer em diferentes funções. Nesta seção, WriteFile representa uma escrita em um named pipe e ReadFile representa uma leitura de um named pipe.
Quando interceptados, os dados a serem escritos seguem este esquema.
WriteFile --> frida hook --> python process --> websocket client --> HTTP Proxy --> websocket server --> python process --> frida hook --> WriteFile
Por outro lado, os dados a serem lidos pelo processo seguem este esquema.
ReadFile --> frida hook --> python process --> websocket server --> HTTP Proxy --> websocket client --> python process --> frida hook --> ReadFile
O proxy HTTP receberá uma mensagem "para o servidor" quando a ação for uma escrita em um named pipe, e uma mensagem "para o cliente" quando a ação for a leitura de um named pipe.
Adicione um proxy na porta 8090, escutando em todas as interfaces
Compile o script do agente Frida usando make build; o agente estará em agent/dist/
backend/*.py e backend/requirements.txt (backend) e agent/dist/agent.js (agente) para o host 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 INFOOs dados enviados ao proxy HTTP seguem um formato específico definido em docs/format.md; ferramentas para manipular esse formato personalizado são fornecidas em tools/.
Modificar os metadados pode resultar na incapacidade do projeto de reconhecer e encaminhar corretamente a mensagem para o named pipe correto.
O script do Frida aguarda indefinidamente por uma resposta; portanto, o processo pode travar indefinidamente se você decidir descartar a mensagem.
Atualmente, o projeto não suporta a injeção de novas mensagens.
O Frida fornece bindings de TypeScript para desenvolver o agente. Depois que as devDependencies forem instaladas, o VSCode deve reconhecer os tipos automaticamente.
É fornecido um target de Makefile make dev-env para configurar facilmente um ambiente de desenvolvimento.