
Windows named pipe hooking toolkit
基于 Frida 的项目,用于拦截 Windows 命名管道通信
本项目旨在通过 Hook 特定的 WinAPI 函数,并使用 WebSocket 将其转发到 HTTP 代理,从而拦截 IPC 通信。
对命名管道的读取和写入可能发生在不同的函数中。在本节中,WriteFile 表示对命名管道的写入,ReadFile 表示对命名管道的读取。
被拦截时,待写入的数据遵循以下模式。
WriteFile --> frida hook --> python process --> websocket client --> HTTP Proxy --> websocket server --> python process --> frida hook --> WriteFile
另一方面,进程要读取的数据遵循以下模式。
ReadFile --> frida hook --> python process --> websocket server --> HTTP Proxy --> websocket client --> python process --> frida hook --> ReadFile
当动作是写入命名管道时,HTTP 代理会收到一条“to the server”消息;当动作是读取命名管道时,会收到一条“to the client”消息。
添加一个监听所有接口、端口为 8090 的代理
使用 make build 构建 frida agent 脚本,agent 将位于 agent/dist/
backend/*.py 和 backend/requirements.txt(后端)以及 agent/dist/agent.js(agent)复制到 Windows 主机py -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 INFO发送到 HTTP 代理的数据遵循 docs/format.md 中定义的特定格式,tools/ 中提供了用于操作此自定义格式的工具。
修改元数据可能导致项目无法识别消息,也无法将其正确路由到对应的命名管道。
frida 脚本会无限期等待响应,因此如果你决定丢弃消息,进程可能会无限期挂起。
当前项目不支持注入新消息。
Frida 提供了 TypeScript 绑定,用于开发 agent。安装 devDependencies 后,VSCode 应该会自动识别类型。
提供了一个 Makefile 目标 make dev-env,便于轻松搭建开发环境。