
TCC Bypass
학생인 저는 이 취약점을 테스트할 수 있는 장치에 제한적인 접근 권한이 있습니다. 현재까지 테스트한 버전은 MacOS 12.3.1, MacOS 12.3, MacOS 12.0, MacOS 10.15.7, MacOS 11.6.1입니다. 이 취약점은 테스트한 모든 버전에서 작동합니다.
영향: 악성 애플리케이션이 특정 개인정보 보호 설정을 우회할 수 있습니다.
설명: 실행 중인 실행 파일이 삭제되면, 해당 프로세스가 화면 녹화 및 특정 접근성 설정(특히 metasploit을 이용한 키 입력 주입)에 대한 제한을 우회할 수 있습니다.
가능한 이유: macOS가 프로세스의 부모 실행 파일의 권한을 찾을 수 없기 때문에 화면 녹화를 차단하지 않습니다. 그러나 카메라와 마이크는 여전히 제대로 제한된다는 점이 혼란스럽습니다.
세부 사항:
tccutil reset All은 권한 프롬프트가 표시되도록 합니다. -- 카메라 또는 마이크에 접근해도 권한 프롬프트가 표시됩니다.새로 설치된 macOS에서 작동합니다.
src/POC.sh에서 PoC를 실행하면 TCC 프롬프트 없이 스크린샷이 생성되며 사용자에게 보이는 모든 창이 포함됩니다. 스크린샷이 생성되려면 스크립트를 여러 번(최대 3회) 실행해야 할 수도 있습니다.
이 익스플로잇은 Metasploit의 웹 딜리버리를 실험하던 중 처음 발견했습니다. meterpreter 셸이 열린 직후 드롭된 실행 파일을 삭제하면, 셸이 일반적으로 TCC 프롬프트 뒤에 잠겨 있는 기능을 획득한다는 것을 발견했습니다. 이 취약점은 또한 공격자가 키 입력을 주입할 수 있게 합니다. 그러나 저는 Objective-C 개발자가 아니므로 자체 PoC를 만들 수 없었습니다. 이 효과는 여전히 Metasploit을 통해 달성할 수 있습니다.
src/POC.sh -- 셸 스크립트: screenshot을 복사하고 실행한 뒤, 실행 중인 상태에서 삭제합니다.
src/screenshot -- Mach-O 실행 파일: 스크린샷을 찍어 src/screenshot.png에 저장합니다. src/screenshot.m에서 컴파일되었습니다.
src/screenshot.m -- 기본 코드에 대한 크레딧은 theevilbit에게 있습니다. 제가 수정한 유일한 부분은 스크린샷을 찍기 전에 3초 간의 지연을 추가하여 스크린샷이 찍히기 전에 실행 파일을 삭제할 충분한 시간을 확보한 것입니다.