CVE-2024-7479 TeamViewer 드라이버 설치의 부적절한 서명 검증
작성자: Marcos Accossatto
데모 목적으로만 제공됩니다. 전체 익스플로잇은 Windows용 TeamViewer의 취약한 버전에서 동작합니다.
소개
이 익스플로잇 PoC는 Pedro Gabaldon의 CVE-2024-7479 PoC를 Python으로 구현한 것입니다.
이 스크립트는 익스플로잇을 위한 IPC 프로토콜을 처리하는 모든 클래스를 포함합니다.
최종 익스플로잇을 위해서는 dbutil_2_3.sys 드라이버와 BYOVDKit 프로젝트에서 컴파일된 실행 파일이 이 스크립트와 동일한 로컬 디렉터리에 있어야 합니다.
이 스크립트는 TeamViewer 15.57.5를 대상으로 테스트되었습니다.
스크립트 익스플로잇 단계
이 스크립트는 취약점을 익스플로잇하기 위해 다음 단계를 수행합니다:
- 127.0.0.1 및 포트 5939에 소켓을 엽니다.
- 드라이버가 이미 설치되어 있는지 확인하기 위해 다음 명령줄로 BYOVDKit.exe를 실행합니다:
BYOVDKit.exe 1 token 4
- getClientAuth 함수를 통해 첫 번째 IPC 요청을 구성하여 서버로 전송합니다.
- getServerChallengeFromResponse 함수를 통해 서버 응답에서 response_challenge를 가져옵니다.
- response_challenge와 "secret" 값을 연결하고, 이에 대한 MD5 해시 값을 계산한 다음 이를 사용해 getClientAuth 함수를 통해 두 번째 IPC 요청을 구성합니다.
- 인증을 완료하기 위해 두 번째 요청을 전송합니다.
- Python 프로세스의 PID를 가져오고, TeamViewer.exe 실행 파일의 버전을 찾아 추출한 다음, getControlRequest 함수를 통해 세 번째 IPC 요청을 구성하여 서버로 전송합니다.
- 동기화 구성이 완료될 때까지 서버에서 IPC 패킷을 읽습니다 (일반적으로 21개 패킷).
- TeamViewer x64 디렉터리에서 TeamViewerVPN.cat 파일을 스크립트 디렉터리로 복사합니다.
- TeamViewer x64 디렉터리에서 TeamViewerVPN.inf 파일을 스크립트 디렉터리로 복사하고 임의의 inf 파일로 이름을 바꿉니다.
- 스크립트 디렉터리의 dbutil_2_3.sys 파일 이름을 TeamViewerVPN.sys로 바꿉니다.
- getInstallDriverRequest 함수를 통해 세 번째 IPC 요청을 구성하여 서버로 전송합니다.
- 사용자가 이 드라이버 소프트웨어를 그래도 설치 버튼을 클릭하여 드라이버 설치를 완료하고 ENTER를 누를 때까지 기다립니다.
- 복사/생성/이름이 변경된 모든 파일(TeamViewerVPN.cat, TeamViewerVPN.sys 및 임의의 .inf 파일)을 삭제합니다.
- cmd를 시스템 권한으로 실행하기 위해 다음 명령줄로 BYOVDKit.exe를 실행합니다:
BYOVDKit.exe 1 token 4
사용법
- 일반 사용자로 cmd.exe를 실행합니다.
- whoami를 사용하여 사용자 이름을 확인합니다.
- python CVE-2024-7479_PoC.py로 스크립트를 실행합니다.
- 드라이버 설치 경고가 나타나면 이 드라이버 소프트웨어를 그래도 설치 메시지를 클릭하여 드라이버를 설치합니다.
- cmd 창으로 돌아가 스크립트 실행을 계속하려면 ENTER를 누릅니다.
- whoami를 사용하여 사용자 이름이 nt authority\system인지 확인합니다.

참고 자료
도움이 되길 바랍니다. 문의 사항이 있으면 [email protected]으로 연락주시기 바랍니다.
즐기세요!