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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
LocalPotato_CVE-2023-21746 — Windows 로컬 권한 상승 (CVE-2023-21746)에 대한 개념 증명 익스플로잇으로, NTLM 로컬 인증을 악용하여 SMB 공유 액세스 및 DLL 하이재킹을 통해 SYSTEM 권한을 획득합니다. | Kitploit
도구/GitHubGitHub/muhammad-ali007/localpotato_cve-2023-21746
Privilege EscalationVulnerability AnalysisExploitationLateral MovementPost-ExploitationPenetration TestingPayload DevelopmentBinary Exploitation

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
muhammad-ali007/localpotato_cve-2023-21746

LocalPotato_CVE-2023-21746

Windows 로컬 권한 상승 (CVE-2023-21746)에 대한 개념 증명 익스플로잇으로, NTLM 로컬 인증을 악용하여 SMB 공유 액세스 및 DLL 하이재킹을 통해 SYSTEM 권한을 획득합니다.

저장소 보기
3223년 전아직 검토되지 않음

Windows에서 로컬 권한 상승(LPE) 취약점이 2022년 9월 9일 Andrea Pierini(@decoder_it)와 Antonio Cocomazzi(@splinter_code)에 의해 Microsoft에 보고되었습니다. 이 취약점은 호스트에 낮은 권한 계정을 가진 공격자가 SYSTEM 권한으로 임의 파일을 읽고 쓸 수 있게 합니다.

취약점 자체만으로는 SYSTEM으로 명령을 직접 실행할 수 없지만, 여러 벡터를 결합하여 이를 달성할 수 있습니다. 편리하게도, 2023년 2월 13일 BlackArrowSec이 StorSvc 서비스를 남용하는 또 다른 권한 상승 PoC를 발표했습니다. 이는 공격자가 PATH 내 디렉토리에 DLL 파일을 쓸 수만 있다면 SYSTEM으로 코드를 실행할 수 있게 합니다.

LocalPotato PoC는 NTLM 로컬 인증이라는 NTLM 인증의 특별한 경우의 결함을 이용하여, 권한 있는 프로세스가 공격자가 로컬 SMB 서버에 대해 시작한 세션을 인증하도록 속입니다. 결과적으로 공격자는 속은 프로세스의 권한으로 모든 공유(특수 공유인 C$ 또는 ADMIN$ 포함)에 접근할 수 있는 연결을 갖게 됩니다.

익스플로잇이 따르는 과정은 다음과 같습니다:

  • 공격자는 권한 있는 프로세스를 트리거하여 자신이 제어하는 악성 서버에 연결하도록 합니다. 이는 이전 Potato 익스플로잇과 유사하게 작동하며, 권한 없는 사용자가 운영 체제가 권한 있는 사용자(보통 SYSTEM)를 사용하는 연결을 생성하도록 강제할 수 있습니다.
  • 악성 서버는 권한 있는 연결을 위한 보안 컨텍스트 A를 인스턴스화하지만 즉시 다시 보내지 않습니다. 대신 공격자는 현재의 권한 없는 자격 증명으로 로컬 SMB 서버(Windows 파일 공유)에 대한 연결을 동시에 시작하는 악성 클라이언트를 실행합니다. 클라이언트는 Type1 메시지를 보내 연결을 시작하고, 서버는 새 보안 컨텍스트 B의 ID와 함께 Type2 메시지로 응답합니다.
  • 공격자는 두 연결의 컨텍스트 ID를 교체하여, 권한 있는 프로세스가 자신의 컨텍스트 대신 SMB 서버 연결의 컨텍스트를 받도록 합니다. 결과적으로 권한 있는 클라이언트는 자신의 사용자(SYSTEM)를 공격자가 생성한 SMB 연결의 보안 컨텍스트 B와 연결합니다. 따라서 공격자의 클라이언트는 이제 SYSTEM 권한으로 모든 네트워크 공유에 접근할 수 있습니다!

SMB 공유에 대한 권한 있는 연결을 통해 공격자는 대상 머신의 모든 위치에서 파일을 읽거나 쓸 수 있습니다. 이것만으로는 취약한 머신에 대해 명령을 직접 실행할 수 없지만, 다른 공격 벡터와 결합하여 그 목적을 달성할 것입니다.

이 취약점은 SMB 서버보다는 NTLM 프로토콜에 있으므로, 이론적으로는 NTLM을 통한 인증을 활용하는 모든 서비스에 동일한 공격 벡터를 사용할 수 있습니다. 그러나 실제로는 공격할 프로토콜을 선택할 때 몇 가지 주의 사항을 처리해야 합니다. PoC는 유사한 공격 벡터에 대한 다른 프로토콜의 추가 보호를 피하기 위해 SMB 서버를 사용하며, 심지어 SMB 서버에 대해 익스플로잇이 작동하도록 빠른 우회를 구현합니다. 원본 익스플로잇 작성자의 게시물 - (https://decoder.cloud/2023/02/13/localpotato-when-swapping-the-context-leads-you-to-system/)

지금까지 LocalPotato를 사용하여 대상 머신에 임의의 파일을 썼습니다. 권한 있는 셸을 얻으려면, 임의 쓰기를 사용하여 명령을 실행하는 방법을 알아내야 합니다.

최근에 또 다른 권한 상승 벡터가 발견되었는데, 공격자가 누락된 DLL을 하이재킹하여 SYSTEM 권한으로 임의의 명령을 실행할 수 있습니다. 이 벡터의 유일한 문제는 공격자가 DLL을 시스템 PATH에 써야 트리거할 수 있다는 것입니다. 기본적으로 Windows PATH에는 권한 있는 계정만 쓸 수 있는 디렉토리만 포함됩니다. 특정 애플리케이션의 설치로 PATH 변수가 변경되어 머신이 취약해진 경우를 찾을 수 있지만, 이 공격 벡터는 특정 시나리오에만 적용됩니다. 이 공격을 LocalPotato와 결합하면 이러한 제한을 극복하고 완전히 작동하는 권한 상승 익스플로잇을 얻을 수 있습니다.

StorSvc 및 DLL 하이재킹 BlackArrowSec (https://github.com/blackarrowsec/redteam-research/tree/26e6fc0c0d30d364758fa11c2922064a9a7fd309/LPE via StorSvc)이 발견한 바에 따르면, 공격자는 "StorSvc" 서비스가 제공하는 "SvcRebootToFlashingMode" 메서드에 RPC 호출을 보낼 수 있으며, 이는 결국 "SprintCSP.dll"이라는 누락된 DLL을 로드하려는 시도를 트리거합니다. RPC에 익숙하지 않다면, 원격으로 사용할 수 있는 함수를 노출하는 API라고 생각하면 됩니다. 이 경우 StorSvc 서비스는 SvcRebootToFlashingMode 메서드를 노출하며, 머신에 접근 권한이 있는 모든 사람이 호출할 수 있습니다. StorSvc는 SYSTEM 권한으로 실행되므로 PATH 어딘가에 SprintCSP.dll을 생성하면 SvcRebootToFlashingMode 호출이 있을 때마다 로드됩니다.

익스플로잇 컴파일 익스플로잇 링크 - (https://github.com/decoder-it/LocalPotato) 이 익스플로잇을 사용하려면 먼저 제공된 두 파일을 컴파일해야 합니다:

  • SprintCSP.dll: 하이재킹할 누락된 DLL입니다. 리버스 셸을 실행하도록 명령을 변경해야 합니다.
  • RpcClient.exe: 이 프로그램은 SvcRebootToFlashingMode에 대한 RPC 호출을 트리거합니다. 대상 Windows 버전에 따라 다른 Windows 버전이 SvcRebootToFlashingMode를 노출하는 데 다른 인터페이스 식별자를 사용하므로 익스플로잇 코드를 약간 편집해야 할 수 있습니다. 두 파일의 프로젝트는 "LPE via StorSvc" 디렉토리에 있습니다.

"RpcClient.exe"부터 처리해 보겠습니다. 앞서 언급했듯이 대상 머신의 Windows 버전에 따라 익스플로잇을 변경해야 합니다. 이를 위해 "LPE via StorSvc\RpcClient\RpcClient\storsvc_c.c"의 첫 번째 줄을 변경하여 올바른 운영 체제를 선택해야 합니다. 이렇게 하면 익스플로잇이 올바른 RPC 인터페이스 식별자를 사용하도록 설정됩니다. 이제 코드가 수정되었으므로 개발자 명령 프롬프트를 열고 다음 명령을 실행하여 프로젝트를 빌드해 보겠습니다: 명령: C:\LPE via StorSvc\RpcClient> msbuild RpcClient.sln C:\LPE via StorSvc\RpcClient> move x64\Debug\RpcClient.exe C:\Users\user\Desktop\ (컴파일된 실행 파일이 바탕 화면에 있습니다.)

이제 "SprintCSP.dll"을 컴파일하려면 "C:\LPE via StorSvc\SprintCSP\SprintCSP\main.c"의 "DoStuff()" 함수만 수정하여 머신에 대한 권한 있는 접근을 부여하는 명령을 실행하도록 하면 됩니다. 간단히 하기 위해 DLL이 현재 사용자를 Administrators 그룹에 추가하도록 만들겠습니다. 또한 대상에서 우리 머신으로 리버스 셸을 얻을 수도 있습니다. 이제 다음 명령을 실행하여 DLL을 컴파일하고 결과를 바탕 화면으로 이동합니다: 명령: C:\LPE via StorSvc\SprintCSP> msbuild SprintCSP.sln C:\LPE via StorSvc\SprintCSP> move x64\Debug\SprintCSP.dll C:\Users\user\Desktop\

이제 익스플로잇을 실행할 준비가 되었습니다. "LocalPotato.exe" 익스플로잇, "RpcClient.exe" 및 "SprintCSP.dll" 파일이 있는지 확인하십시오.

  • 먼저 현재 사용자가 Administrators 그룹에 속하지 않은지 확인합니다.
  • "StorSvc"를 성공적으로 익스플로잇하려면 "SprintCSP.dll"을 현재 PATH의 디렉토리에 복사해야 합니다. 다음 명령을 실행하여 PATH를 확인할 수 있습니다: C:> reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v Path
  • %SystemRoot%\system32 디렉토리를 대상으로 하겠습니다. 이는 "C:\windows\system32"로 확장됩니다. 다른 디렉토리를 사용할 수도 있습니다.
  • LocalPotato를 사용하면 권한 없는 사용자라도 system32에 SprintCSP.dll을 복사할 수 있습니다: C:\Users\user\Desktop> LocalPotato.exe -i SprintCSP.dll -o \Windows\System32\SprintCSP.dll
  • DLL이 준비되면 "RpcClient.exe"를 실행하여 "SvcRebootToFlashingMode" 호출을 트리거하고, DLL의 페이로드를 효과적으로 실행합니다. C:\Users\user\Desktop> RpcClient.exe
  • 익스플로잇이 예상대로 작동했는지 확인하려면 사용자가 이제 Administrators 그룹에 속하는지 확인합니다. C:> net user user

탐지 및 완화

탐지 이제 localpotato 익스플로잇이 어떻게 작동하는지, 그리고 StorSrv 서비스와 체인으로 연결되어 SYSTEM으로 코드를 실행하는 방법을 이해했으므로, 시스템 내에서 이를 탐지하고 이러한 공격을 예방하는 방법을 살펴보겠습니다.

YARA 규칙: 이 공격은 명령줄 터미널에서 인수와 함께 실행 파일을 실행하는 것을 포함하므로, 이 활동을 탐지하는 일반적인 두 가지 방법은 패턴 일치 도구 YARA를 사용하여 파일 패턴을 탐지하고, 이 해킹 도구 localpotato.exe의 실행으로 생성된 이벤트를 검사하는 것입니다. 이 공격은 localpotato.exe로 알려진 해킹 도구를 사용하므로, YARA 또는 THOR와 같은 다른 탐지 도구를 사용하여 시스템 내에서 이 도구의 존재를 탐지하는 YARA 규칙을 만들 수 있습니다. (YARA 규칙은 이 저장소에 첨부되어 있습니다. 이 최소 규칙은 localpotato 실행 파일에서 일반적인 문자열 패턴을 찾습니다.)

Sigma 규칙: SIGMA는 이벤트 로그에서 발견된 패턴을 기반으로 탐지 규칙을 작성하는 데 사용되는 일반 시그니처 언어입니다. 네트워크에서 localpotato를 탐지하려면 중앙 집중식 로그 모니터링이 활성화되어 있어야 합니다. 다음 SIGMA 규칙은 SIGMA 공식 저장소 (https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_hktl_localpotato.yml)에서 가져왔습니다.

  • LocalPotato 탐지 (규칙은 저장소에 첨부되어 있습니다.)
  • Storsvc 및 SprintCSP.dll 하이재킹 탐지 localpotato 취약점이 Storsvc와 결합되어 SprintCSP.dll을 하이재킹하고 SYSTEM으로 실행된다는 것을 배웠습니다. 다음 첨부된 SIGMA 규칙(공식 GitHub에서 가져옴)은 이 활동을 탐지하는 데 사용할 수 있습니다.

이러한 sigma 규칙을 사용하여 해당 환경의 탐지/모니터링 도구로 변환하고 이벤트 로그를 검색하여 잠재적인 공격을 사냥할 수 있습니다.

완화

  • 패치 업데이트: localpotato 익스플로잇은 Windows 운영 체제의 취약점을 대상으로 합니다. 모든 시스템이 최신 보안 패치로 업데이트되어 공격자가 이 취약점을 악용하지 못하도록 하십시오. 이 취약점은 패치된 OS에는 영향을 미치지 않습니다.
  • 최소 권한 원칙: localpotato 익스플로잇의 악용을 방지하는 한 가지 방법은 최소 권한 원칙을 구현하는 것입니다. 이는 사용자 액세스를 업무 기능을 수행하는 데 필요한 리소스로만 제한하는 것을 의미합니다. 이렇게 하면 공격자가 익스플로잇을 실행하는 데 필요한 상승된 권한을 얻을 가능성이 줄어듭니다.
  • 의심스러운 활동 모니터링: "Splunk"와 같은 도구를 사용하여 네트워크의 의심스러운 활동을 모니터링하십시오. 비정상적인 프로세스 활동이나 악성 코드 실행 시도와 같은 localpotato 공격의 징후를 찾으십시오.
도구 다운로드