Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
vfs-hook-impersonate — VFS for Git ab95cf51 - 높음 - 로컬 - 권한 잔여 - 후크 CreateFileW SecurityImpersonation | Kitploit
도구/GitHubGitHub/abraxas/vfs-hook-impersonate
Privilege EscalationVulnerability AnalysisExploitationPenetration TestingPapers & ResearchRed TeamingLabs & Practice
GitHubabraxas/vfs-hook-impersonate

vfs-hook-impersonate

VFS for Git ab95cf51 - 높음 - 로컬 - 권한 잔여 - 후크 CreateFileW SecurityImpersonation

저장소 보기
54일 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Abraxas Labs - vfs-hook-impersonate

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  vfs-hook-impersonate

vfs-hook-impersonate

분류: 권한 잔여물 도달 범위: 로컬

VFS for Git master ab95cf51 (태그 v2.0.26259.1) - Microsoft

네이티브 git 훅(read-object, virtual-filesystem, post-index-changed)은 CreateFileW와 dwFlagsAndAttributes = 0으로 enlistment별 마운트 파이프를 연다. 이는 SECURITY_SQOS_PRESENT를 생략하므로, Windows는 클라이언트를 기본적으로 SecurityImpersonation으로 설정한다. 잔여물 #2가 사용하는 것과 동일한 파이프 ACL이 BUILTIN\Users에게 ReadWrite | CreateNewInstance를 부여한다.

두 번째 로컬 사용자가 \\.\pipe\GVFS_<ENLISTMENT>를 추가 인스턴스로 만들거나 점거하고, ImpersonateNamedPipeClient를 호출하여 피해자로서 쓸 수 있다.

ID아직 CVE 없음
분류권한 잔여물 (named-pipe impersonation)
도달 범위로컬
CWECWE-284, CWE-300
CVSSHigh: 7.1 CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N
제품VFS for Git
영향 받음master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a (릴리스 v2.0.26259.1 대비 현재도 해당). Windows 전용.
인증로컬. 피해자는 GVFS enlistment를 보유. 공격자는 임의의 BUILTIN\Users 주체. 피해자는 이후 git을 실행.
라이선스GNU Affero GPL v3.0
랩127.0.0.1 전용. how=gadget (실제 Windows VM / 설치된 VFS for Git 없음).

이것은 로컬이다. SYSTEM이 아니다. 잔여물 #4의 Automount는 다른 파이프(GVFS.Service.pipe)이다. 동일한 마운트 파이프에서의 Dehydrate/unmount는 잔여물 #2이다.

공격자가 할 수 있는 것

피해자는 GVFS enlistment를 보유. 공격자는 임의의 BUILTIN\Users 주체. 피해자는 이후 git을 실행(VFS 훅을 발동시키는 status, checkout 등 무엇이든).

권한메서드 / 싱크부여하는 것정찰 / 무결성 / 가용성랩 입증 또는 추론
피해자를 임퍼소네이트하여 그들의 프로필에 쓰기추가 인스턴스 / 점거 \\.\pipe\GVFS_C_\REPOS\FOO; 훅 CreateFileW flags=0; ImpersonateNamedPipeClient; %USERPROFILE%\VFS-HOOK-IMPERSONATE-WITNESS 생성피해자 UID로서 쓰기무결성가젯에서 랩 입증. Witness 소유자는 피해자 uid. 기본 플래그는 SecurityImpersonation. 공격자 uid는 임퍼소네이션 없이 해당 홈에 쓸 수 없음
점거 후에도 git이 계속 작동하게 유지MPL|1에 S|\x03 응답하여 GVFS.VirtualFileSystemHook이 멈추지 않게 함Git 계속 진행피해자 git의 가용성랩 입증. 취약 및 패치 경로 모두에서 훅 reply_ok
enlistment 루트에서 파이프 이름 추측GetGVFSPipeName이 CWD에서 .gvfs까지 탐색, CharUpper, : -> _, 접두사 \\.\pipe\GVFS_추측 가능한 IPC 이름정찰랩 입증. C:\Repos\Foo\src -> \\.\pipe\GVFS_C_\REPOS\FOO
라이브 인스턴스를 차지하지 않고 파이프 재지정추적되는 src\.gvfs 디렉터리를 심어 walk-up이 다른 이름에 바인딩되게 함마운트와 경쟁하지 않고 점거무결성common.windows.cpp walk-up에서 추론. 랩은 실제 enlistment .gvfs를 사용
MPL뿐 아니라 DLO / PICN에도 응답동일 파이프, ReadObjectHook / PostIndexChangedHook객체에 대해 거짓말 / skip-worktree무결성추론. 랩은 MPL|1만 전송
2바이트 S\x03로 훅 크래시VirtualFileSystemHook messageLength -= 2 후 -= 1 언더플로우 및 fwrite ~4GiB크래시 / OOB 읽기가용성main.cpp 69-90에서 추론. 오라클 아님. 그 크래시를 배포하지 말 것

여기서 배제: SYSTEM (마운트는 enlistment 사용자). 원격 비인증 RCE. 실제 Windows VM / 설치된 VFS for Git (이 랩은 복사된 함수들의 가젯).

동일 핀 잔여물: vfs-quote-breakout, vfs-mount-dehydrate, vfs-clone-acl, vfs-service-sid, vfs-install-cwd.

어떻게 발견했는가

2026-09-28 머지 후 VFSForGit master ab95cf51을 핀했다. 네이티브 훅은 flags 0으로 CreateFileW를 호출한다. 그러면 Windows는 기본적으로 SecurityImpersonation으로 설정한다. 마운트 파이프는 이미 Users가 추가 인스턴스를 만들 수 있게 한다. 그것이 잔여물이다.

이미 기록된 잘못된 방향: 이것을 잔여물 #2 dehydrate로 취급(동일 ACL, 다른 싱크: MoveDirectory가 아닌 토큰); SYSTEM 주장; 4GiB 언더플로우를 오라클로 배포. 연극. 네이티브 Windows가 없었으므로 랩은 그 함수들의 가젯이다. Unix 소켓이 named pipe를 대신한다.

랩

python3 vfs-hook-impersonate-Abraxas-Labs.py

또는

cd lab
./run.sh

127.0.0.1:19670에서 가젯 HTTP. GetGVFSPipeName, CreatePipeToGVFS 플래그, Users CreateNewInstance ACL, MPL|1 / S| 훅 프로토콜을 복사한다. SQOS identification이 적용된 패치된 클라이언트는 witness를 쓰지 않는다. 마지막 줄은 how=gadget을 사용한다.

SUCCESS vfs-hook-impersonate how=gadget createfile-flags=0 impersonation=SecurityImpersonation extra-instance=yes owner=victim patched-sqos-ident-no-write=yes VFS-HOOK-IMPERSONATE-WITNESS

수정

훅 CreateFileW에서 SECURITY_SQOS_PRESENT | SECURITY_IDENTIFICATION을 전달하라. CreatePipeByName을 enlistment 소유자 SID와 LocalSystem으로 제한하라. Users에 대한 CreateNewInstance를 제거하라. 훅 응답 길이를 경계 검사하라.

참고

  • github.com/microsoft/VFSForGit master ab95cf51d6ffd0ee0e2feae7180078fe9ecbbb3a
  • common.windows.cpp CreatePipeToGVFS
  • WindowsPlatform.cs CreatePipeByName
  • CWE-284 · CWE-300

라이선스

GNU Affero GPL v3.0. LICENSE 참조. 루프백 랩 전용. 보증 없음.

도구 다운로드