Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
dtrace-memaccess_cve-2020-27949 — CVE-2020-27949에 대한 개념 증명 익스플로잇으로, 상승된 권한 없이 DTrace fasttrap ioctl을 통해 macOS 프로세스에서 임의 메모리 읽기/쓰기를 시연합니다. | Kitploit
도구/GitHubGitHub/seemoo-lab/dtrace-memaccess_cve-2020-27949
Privilege EscalationMemory ForensicsVulnerability AnalysisExploitationRed TeamingBinary Exploitation
GitHubseemoo-lab/dtrace-memaccess_cve-2020-27949

dtrace-memaccess_cve-2020-27949

CVE-2020-27949에 대한 개념 증명 익스플로잇으로, 상승된 권한 없이 DTrace fasttrap ioctl을 통해 macOS 프로세스에서 임의 메모리 읽기/쓰기를 시연합니다.

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
저장소 보기
33915년 전Kitploit 검토 완료

fasttrap을 사용한 다른 프로세스 메모리 읽기 및 쓰기

/dev/fasttrap 장치는 사용자 공간 프로세스에서 pid 및 objc 프로바이더를 위한 트랩 노드를 생성하는 데 사용되며 권한이 666입니다. 또한 666 권한을 가진 /dev/dtrace와 달리 fasttrap에는 권한 확인이 없습니다. 이를 통해 모든 프로세스가 FASTTRAPIOC_MAKEPROBE 또는 FASTTRAPIOC_GETINSTR ioctl을 실행할 수 있습니다.
공격자는 FASTTRAPIOC_MAKEPROBE를 사용하여 다른 프로세스의 모든 메모리 위치에 프로브를 생성할 수 있습니다. 이 프로브가 활성화되면 지정된 메모리 위치의 값이 트랩 명령(x86의 경우 0xCC)으로 대체되고 원래 값은 섀도 메모리에 저장됩니다. FASTTRAPIOC_GETINSTR ioctl을 사용하여 원래 값을 검색할 수 있습니다. 이를 통해 공격자는 여러 트랩을 배치하여 다른 프로세스의 임의 메모리를 읽을 수 있습니다.

이 취약점은 CVE-2020-27949로 추적되며, macOS Big Sur 11.1, Security Update 2020-001 Catalina, Security Update 2020-007 Mojave에서 수정되었습니다.

공개 타임라인

  • 2020-07-07 -> Apple 제품 보안에 최초 공개.
  • 2020-07-08 <- 조사 확인.
  • 2020-10-28 -> 상태 업데이트 요청.
  • 2020-12-07 <- 문제를 해결하는 업데이트 예정 알림.
  • 2020-12-14 <- 업데이트 출시.

요구 사항

  • 공격자는 일반 사용자 권한(비상승)으로 코드를 실행할 수 있음
  • 피해자 프로세스의 프로브가 활성화되어야 함 (즉, 피해자가 DTrace에서 실행되어야 함)

테스트된 시스템 구성

  • SIP 켜짐 (예외 없음)
  • 2012년 후반 iMac의 10.15.5
  • 2020년 MacBook Pro의 10.15.5

영향

  • 공격자는 상승된 권한 없이 DTrace에서 실행되는 다른 프로세스의 메모리를 읽을 수 있습니다. 루트로 실행되는 프로세스의 메모리도 읽을 수 있습니다.
  • 공격자는 상승된 권한 없이 DTrace에서 실행되는 다른 프로세스의 모든 메모리 위치에 트랩 명령 값(x86의 경우 0xCC)을 쓸 수 있습니다. 루트로 실행되는 프로세스의 메모리에도 쓸 수 있습니다. 다른 명령어나 점프 주소의 일부로서 피해자의 제어 흐름이 변경되어 권한 상승이 가능합니다.

기대 사항

사용자로서, DTrace를 활성화하면 루트 권한이 있는 프로세스만 다른 프로세스를 추적, 계측 또는 수정할 수 있기를 기대합니다. DTrace는 dtruss, iotop 등의 도구를 제공하는 관리 작업에 유용한 도구입니다.

익스플로잇 상세 정보

피해자(target)는 루트로 실행되는 실행 파일입니다. 공격자(memaccess)는 일반 사용자 권한으로 실행되는 실행 파일입니다. 추적 스크립트 libc_monitor.d는 libsystem_c.dylib 공유 객체의 함수 호출 횟수를 기록합니다(이는 기기 소유자가 실행할 수 있는 관리 스크립트의 간단한 예일 뿐입니다).

  1. 피해자 실행
  2. 공격자가 피해자의 PID와 관심 있는 메모리 위치를 사용하여 프로브 생성
  3. 공격자가 DTrace가 피해자 프로세스를 추적할 때까지 기다립니다. 이는 기기 소유자가 피해자 프로세스의 함수를 추적하려는 관리 작업(예: libc_monitor.d)의 일부로 발생할 수 있습니다.
  4. DTrace가 피해자 추적을 시작하면 이전에 생성된 프로브가 활성화되어 원래 메모리 값을 대체합니다.
  5. 공격자가 FASTTRAPIOC_GETINSTR을 사용하여 생성된 프로브의 메모리 값을 읽습니다.

4단계는 피해자 프로세스의 메모리를 트랩 명령 값으로 대체합니다. 애플리케이션에 따라 공격자는 이를 사용하여 중요한 메모리 위치에 미리 알려진 값을 쓸 수 있습니다. 예를 들어, 공격자는 RNG의 시드를 제어하거나 프로세스의 암호화 키를 교체할 수 있습니다.

참고: 공격자는 상승된 권한이나 루트 권한이 필요하지 않습니다.
참고 2: 자체 작성 DTrace 스크립트가 필요하지 않습니다. 예를 들어, dapptrace도 pid 프로바이더를 사용하여 모든 함수를 추적합니다.

제안된 수정 사항

/dev/dtrace와 같이 /dev/fasttrap에 권한 검사를 구현하거나 전역 쓰기 가능 권한을 제거합니다.

참고: 출시된 수정 사항을 확인하지 않았습니다.

지침

  1. DTrace를 사용할 수 있고 올바르게 작동하는지 확인합니다.
  2. target을 실행하고 화면의 지침을 따릅니다.
도구 다운로드