
Windows 명명된 파이프 후킹 툴킷
Windows 명명된 파이프 통신을 가로채는 Frida 기반 프로젝트
이 프로젝트는 특정 WinAPI 함수를 후킹하고 이를 웹소켓을 사용하여 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/dist/에 위치합니다.
backend/*.py와 backend/requirements.txt(백엔드) 및 agent/dist/agent.js(에이전트)를 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 INFOHTTP 프록시로 전송되는 데이터는 docs/format.md에 정의된 특정 형식을 따릅니다. 이 사용자 지정 형식을 조작하는 도구는 tools/에서 제공됩니다.
메타데이터를 수정하면 프로젝트가 메시지를 인식하고 올바른 명명된 파이프로 라우팅하지 못할 수 있습니다.
frida 스크립트는 응답을 무기한 대기하므로, 메시지를 드롭하기로 결정하면 프로세스가 무기한 중단될 수 있습니다.
새 메시지 주입은 현재 프로젝트에서 지원되지 않습니다.
Frida는 에이전트 개발을 위한 타입스크립트 바인딩을 제공합니다. devDependencies가 설치되면 VSCode가 유형을 자동으로 인식합니다.
개발 환경을 쉽게 설정할 수 있도록 Makefile 타겟 make dev-env가 제공됩니다.