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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2020-0796-BOF — CVE-2020-0796 SMBGhost 로컬 권한 상승을 구현한 Cobalt Strike Beacon Object File로, 토큰 탈취와 세션 상승을 위한 이중 무기화 경로를 제공합니다. | Kitploit
도구/GitHubGitHub/rsmudge/cve-2020-0796-bof
Privilege EscalationExploit FrameworksExploitationShellcodePost-ExploitationPenetration TestingRed TeamingPayload DevelopmentBinary Exploitation
GitHubrsmudge/cve-2020-0796-bof

CVE-2020-0796-BOF

CVE-2020-0796 SMBGhost 로컬 권한 상승을 구현한 Cobalt Strike Beacon Object File로, 토큰 탈취와 세션 상승을 위한 이중 무기화 경로를 제공합니다.

701955년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기

이것은 Raphael이 SMBGhost LPE를 가지고 놀아본 내용입니다.

Metasploit Framework의 소스 코드로 시작했습니다:

cve-2020-0796: SMBv3 압축 버퍼 오버플로우 (SMBGhost) (CVE 2020-0796) https://github.com/rapid7/metasploit-framework/tree/master/external/source/exploits/CVE-2020-0796 [BSD 라이선스]

그리고 제가 한 작업은 다음과 같습니다:

  1. Reflective DLL을 Cobalt Strike 4.1 Beacon Object File로 변환했습니다.

이를 위해 여러 Win32 API를 Dynamic Function Resolution MODULE$Function 형식으로 선언해야 했습니다. 좋은 점은 DFR이 처리를 대신해 주기 때문에 NTDLL에서 호출하는 코드 중 일부가 줄어들었다는 것입니다. :)

get_handle_addr에서 사용되지 않는 1,000개 항목의 ptr 배열을 제거했습니다. 이 배열은 지역 변수가 8KB 제한을 초과하여 cl.exe가 __chkstk 함수를 삽입하게 했습니다. BOF는 이 함수를 사용할 수 없습니다.

그런 다음 Beacon 고유의 API(예: BeaconPrintf, BeaconInjectProcess 등) 몇 개를 가져와 Beacon 네이티브 방식으로 작업을 수행했습니다.

libc 관련 기능(때문에 BOF)이 없어서 일부 함수를 직접 작성해야 했습니다.

  1. 코드를 두 가지 무기화 경로로 분할했습니다:

Beacon에서 'smbghost' 별칭을 인수 없이 사용하여 이 익스플로잇을 실행하고 Beacon 프로세스 토큰에만 영향을 줍니다. 익스플로잇이 성공하면 현재 프로세스 토큰은 이전에 없던 슈퍼 파워를 갖게 됩니다. 예를 들어, 이제 다른 프로세스(다른 데스크톱 세션에서도)에 인젝션하거나 winlogon.exe 하위에 자식 프로세스를 생성할 수 있습니다. 익스플로잇이 첫 번째 실행에서 항상 성공하는 것은 아니므로 smbghost를 여러 번 실행해야 할 수도 있습니다.

선택적으로 'elevate smbghost'를 사용하여 Cobalt Strike의 Aggressor Script에서 제공하는 권한 상승 API를 통해 새 Beacon 세션을 얻을 수 있습니다. 빠른 데모에는 괜찮고, 제품 워크플로에도 맞지만... winlogon.exe에 인젝션합니다. winlogon.exe에 인젝션하는 것은 이 특정 권한 상승의 불변 조건이 아닙니다. 공개된 모든 POC가 그렇게 하는 이유는 CreateRemoteThread가 프로세스 경계를 넘어 작동하지 않고, 부모 프로세스 스푸핑을 위한 추가 보일러플레이트를 작성하고 싶은 사람이 없기 때문이라고 생각합니다. winlogon.exe는 권한이 상승되었음을 증명하기 위해 쉽게 따낼 수 있는 과일입니다.

Visual Studio로 컴파일하려면:

x64 Cross Tools 명령 프롬프트에서 make.bat를 사용하세요.

그러면 expot.x64.o가 dist/에 출력됩니다.

Visual Studio 2013을 사용했습니다. 다른 컴파일러/버전은 테스트하지 않았습니다. x86은 시도/테스트하지 않았습니다.

도구 다운로드