macOS System Extensions

Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks μ§€μ›ν•˜κΈ°

System Extensions / Endpoint Security Framework

Kernel Extensions와 달리, System ExtensionsλŠ” μ‚¬μš©μž κ³΅κ°„μ—μ„œ μ‹€ν–‰λ˜μ–΄ ν™•μž₯ κΈ°λŠ₯ μ˜€μž‘λ™μœΌλ‘œ μΈν•œ μ‹œμŠ€ν…œ 좩돌 μœ„ν—˜μ„ μ€„μž…λ‹ˆλ‹€.

https://knight.sc/images/system-extension-internals-1.png

System Extensionsμ—λŠ” DriverKit Extensions, Network Extensions, 및 Endpoint Security Extensions의 μ„Έ κ°€μ§€ μœ ν˜•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

DriverKit Extensions

DriverKit은 ν•˜λ“œμ›¨μ–΄ 지원을 μ œκ³΅ν•˜λŠ” 컀널 ν™•μž₯의 λŒ€μ²΄λ¬Όμž…λ‹ˆλ‹€. USB, Serial, NIC 및 HID λ“œλΌμ΄λ²„μ™€ 같은 μž₯치 λ“œλΌμ΄λ²„κ°€ 컀널 곡간이 μ•„λ‹Œ μ‚¬μš©μž κ³΅κ°„μ—μ„œ 싀행될 수 μžˆλ„λ‘ ν•©λ‹ˆλ‹€. DriverKit ν”„λ ˆμž„μ›Œν¬λŠ” νŠΉμ • I/O Kit 클래슀의 μ‚¬μš©μž 곡간 버전을 ν¬ν•¨ν•˜λ©°, 컀널은 일반 I/O Kit 이벀트λ₯Ό μ‚¬μš©μž κ³΅κ°„μœΌλ‘œ μ „λ‹¬ν•˜μ—¬ μ΄λŸ¬ν•œ λ“œλΌμ΄λ²„κ°€ 싀행될 수 μžˆλŠ” 더 μ•ˆμ „ν•œ ν™˜κ²½μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

Network Extensions

Network ExtensionsλŠ” λ„€νŠΈμ›Œν¬ λ™μž‘μ„ μ‚¬μš©μž μ •μ˜ν•  수 μžˆλŠ” κΈ°λŠ₯을 μ œκ³΅ν•©λ‹ˆλ‹€. μ—¬λŸ¬ μœ ν˜•μ˜ Network Extensionsκ°€ μžˆμŠ΅λ‹ˆλ‹€:

  • App Proxy: 흐름 μ§€ν–₯의 μ‚¬μš©μž μ •μ˜ VPN ν”„λ‘œν† μ½œμ„ κ΅¬ν˜„ν•˜λŠ” VPN ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. μ΄λŠ” κ°œλ³„ νŒ¨ν‚·μ΄ μ•„λ‹Œ μ—°κ²°(λ˜λŠ” 흐름)을 기반으둜 λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½μ„ μ²˜λ¦¬ν•¨μ„ μ˜λ―Έν•©λ‹ˆλ‹€.
  • Packet Tunnel: νŒ¨ν‚· μ§€ν–₯의 μ‚¬μš©μž μ •μ˜ VPN ν”„λ‘œν† μ½œμ„ κ΅¬ν˜„ν•˜λŠ” VPN ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. μ΄λŠ” κ°œλ³„ νŒ¨ν‚·μ„ 기반으둜 λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½μ„ μ²˜λ¦¬ν•¨μ„ μ˜λ―Έν•©λ‹ˆλ‹€.
  • Filter Data: λ„€νŠΈμ›Œν¬ β€œνλ¦„β€œμ„ ν•„ν„°λ§ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 흐름 μˆ˜μ€€μ—μ„œ λ„€νŠΈμ›Œν¬ 데이터λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • Filter Packet: κ°œλ³„ λ„€νŠΈμ›Œν¬ νŒ¨ν‚·μ„ ν•„ν„°λ§ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. νŒ¨ν‚· μˆ˜μ€€μ—μ„œ λ„€νŠΈμ›Œν¬ 데이터λ₯Ό λͺ¨λ‹ˆν„°λ§ν•˜κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • DNS Proxy: μ‚¬μš©μž μ •μ˜ DNS 제곡자λ₯Ό μƒμ„±ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. DNS μš”μ²­ 및 응닡을 λͺ¨λ‹ˆν„°λ§ν•˜κ±°λ‚˜ μˆ˜μ •ν•˜λŠ” 데 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

Endpoint Security Framework

Endpoint SecurityλŠ” μ‹œμŠ€ν…œ λ³΄μ•ˆμ„ μœ„ν•œ API 집합을 μ œκ³΅ν•˜λŠ” Apple의 macOS ν”„λ ˆμž„μ›Œν¬μž…λ‹ˆλ‹€. μ΄λŠ” λ³΄μ•ˆ 곡급업체와 κ°œλ°œμžκ°€ μ‹œμŠ€ν…œ ν™œλ™μ„ λͺ¨λ‹ˆν„°λ§ν•˜κ³  μ œμ–΄ν•˜μ—¬ μ•…μ˜μ μΈ ν™œλ™μ„ μ‹λ³„ν•˜κ³  λ³΄ν˜Έν•  수 μžˆλŠ” μ œν’ˆμ„ κ΅¬μΆ•ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€.

이 ν”„λ ˆμž„μ›Œν¬λŠ” ν”„λ‘œμ„ΈμŠ€ μ‹€ν–‰, 파일 μ‹œμŠ€ν…œ 이벀트, λ„€νŠΈμ›Œν¬ 및 컀널 μ΄λ²€νŠΈμ™€ 같은 μ‹œμŠ€ν…œ ν™œλ™μ„ λͺ¨λ‹ˆν„°λ§ν•˜κ³  μ œμ–΄ν•˜κΈ° μœ„ν•œ API λͺ¨μŒμ„ μ œκ³΅ν•©λ‹ˆλ‹€.

이 ν”„λ ˆμž„μ›Œν¬μ˜ 핡심은 컀널에 κ΅¬ν˜„λ˜μ–΄ 있으며, **/System/Library/Extensions/EndpointSecurity.kext**에 μœ„μΉ˜ν•œ 컀널 ν™•μž₯(KEXT)μž…λ‹ˆλ‹€. 이 KEXTλŠ” μ—¬λŸ¬ μ£Όμš” ꡬ성 μš”μ†Œλ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€:

  • EndpointSecurityDriver: 컀널 ν™•μž₯의 β€œμ§„μž…μ β€ 역할을 ν•©λ‹ˆλ‹€. OS와 Endpoint Security ν”„λ ˆμž„μ›Œν¬ κ°„μ˜ μ£Όμš” μƒν˜Έμž‘μš© μ§€μ μž…λ‹ˆλ‹€.
  • EndpointSecurityEventManager: 컀널 후크λ₯Ό κ΅¬ν˜„ν•˜λŠ” μ±…μž„μ΄ μžˆλŠ” ꡬ성 μš”μ†Œμž…λ‹ˆλ‹€. 컀널 ν›„ν¬λŠ” μ‹œμŠ€ν…œ ν˜ΈμΆœμ„ κ°€λ‘œμ±„μ–΄ μ‹œμŠ€ν…œ 이벀트λ₯Ό λͺ¨λ‹ˆν„°λ§ν•  수 있게 ν•©λ‹ˆλ‹€.
  • EndpointSecurityClientManager: μ‚¬μš©μž 곡간 ν΄λΌμ΄μ–ΈνŠΈμ™€μ˜ 톡신을 κ΄€λ¦¬ν•˜λ©°, μ–΄λ–€ ν΄λΌμ΄μ–ΈνŠΈκ°€ μ—°κ²°λ˜μ–΄ 있고 이벀트 μ•Œλ¦Όμ„ λ°›μ•„μ•Ό ν•˜λŠ”μ§€λ₯Ό μΆ”μ ν•©λ‹ˆλ‹€.
  • EndpointSecurityMessageManager: μ‚¬μš©μž 곡간 ν΄λΌμ΄μ–ΈνŠΈμ— λ©”μ‹œμ§€μ™€ 이벀트 μ•Œλ¦Όμ„ μ „μ†‘ν•©λ‹ˆλ‹€.

Endpoint Security ν”„λ ˆμž„μ›Œν¬κ°€ λͺ¨λ‹ˆν„°λ§ν•  수 μžˆλŠ” μ΄λ²€νŠΈλŠ” λ‹€μŒκ³Ό 같이 λΆ„λ₯˜λ©λ‹ˆλ‹€:

  • 파일 이벀트
  • ν”„λ‘œμ„ΈμŠ€ 이벀트
  • μ†ŒμΌ“ 이벀트
  • 컀널 이벀트 (예: 컀널 ν™•μž₯ λ‘œλ“œ/μ–Έλ‘œλ“œ λ˜λŠ” I/O Kit μž₯치 μ—΄κΈ°)

Endpoint Security Framework Architecture

https://www.youtube.com/watch?v=jaVkpM1UqOs

μ‚¬μš©μž 곡간 톡신은 IOUserClient 클래슀λ₯Ό 톡해 Endpoint Security ν”„λ ˆμž„μ›Œν¬μ™€ μ΄λ£¨μ–΄μ§‘λ‹ˆλ‹€. 호좜자 μœ ν˜•μ— 따라 두 κ°€μ§€ λ‹€λ₯Έ ν•˜μœ„ ν΄λž˜μŠ€κ°€ μ‚¬μš©λ©λ‹ˆλ‹€:

  • EndpointSecurityDriverClient: com.apple.private.endpoint-security.manager κΆŒν•œμ΄ ν•„μš”ν•˜λ©°, μ΄λŠ” μ‹œμŠ€ν…œ ν”„λ‘œμ„ΈμŠ€ endpointsecurityd만 λ³΄μœ ν•©λ‹ˆλ‹€.
  • EndpointSecurityExternalClient: com.apple.developer.endpoint-security.client κΆŒν•œμ΄ ν•„μš”ν•©λ‹ˆλ‹€. μ΄λŠ” 일반적으둜 Endpoint Security ν”„λ ˆμž„μ›Œν¬μ™€ μƒν˜Έμž‘μš©ν•΄μ•Ό ν•˜λŠ” 타사 λ³΄μ•ˆ μ†Œν”„νŠΈμ›¨μ–΄μ—μ„œ μ‚¬μš©λ©λ‹ˆλ‹€.

Endpoint Security Extensions:**libEndpointSecurity.dylib**λŠ” μ‹œμŠ€ν…œ ν™•μž₯이 컀널과 ν†΅μ‹ ν•˜λŠ” 데 μ‚¬μš©ν•˜λŠ” C λΌμ΄λΈŒλŸ¬λ¦¬μž…λ‹ˆλ‹€. 이 λΌμ΄λΈŒλŸ¬λ¦¬λŠ” I/O Kit(IOKit)을 μ‚¬μš©ν•˜μ—¬ Endpoint Security KEXT와 ν†΅μ‹ ν•©λ‹ˆλ‹€.

**endpointsecurityd**λŠ” μ—”λ“œν¬μΈνŠΈ λ³΄μ•ˆ μ‹œμŠ€ν…œ ν™•μž₯을 κ΄€λ¦¬ν•˜κ³  μ‹œμž‘ν•˜λŠ” 데 κ΄€μ—¬ν•˜λŠ” μ£Όμš” μ‹œμŠ€ν…œ 데λͺ¬μœΌλ‘œ, 특히 초기 λΆ€νŒ… κ³Όμ •μ—μ„œ μ€‘μš”ν•©λ‹ˆλ‹€. Info.plist νŒŒμΌμ— **NSEndpointSecurityEarlyBoot**둜 ν‘œμ‹œλœ μ‹œμŠ€ν…œ ν™•μž₯만 이 초기 λΆ€νŒ… 처리λ₯Ό λ°›μŠ΅λ‹ˆλ‹€.

또 λ‹€λ₯Έ μ‹œμŠ€ν…œ 데λͺ¬μΈ **sysextd**λŠ” μ‹œμŠ€ν…œ ν™•μž₯을 κ²€μ¦ν•˜κ³  이λ₯Ό μ μ ˆν•œ μ‹œμŠ€ν…œ μœ„μΉ˜λ‘œ μ΄λ™ν•©λ‹ˆλ‹€. 그런 λ‹€μŒ κ΄€λ ¨ 데λͺ¬μ— ν™•μž₯을 λ‘œλ“œν•˜λ„λ‘ μš”μ²­ν•©λ‹ˆλ‹€. **SystemExtensions.framework**λŠ” μ‹œμŠ€ν…œ ν™•μž₯을 ν™œμ„±ν™”ν•˜κ³  λΉ„ν™œμ„±ν™”ν•˜λŠ” μ±…μž„μ΄ μžˆμŠ΅λ‹ˆλ‹€.

Bypassing ESF

ESFλŠ” λ ˆλ“œ νŒ€μ›μ„ κ°μ§€ν•˜λ €κ³  ν•˜λŠ” λ³΄μ•ˆ λ„κ΅¬μ—μ„œ μ‚¬μš©λ˜λ―€λ‘œ, 이λ₯Ό ν”Όν•  수 μžˆλŠ” 방법에 λŒ€ν•œ μ •λ³΄λŠ” ν₯λ―Έλ‘­μŠ΅λ‹ˆλ‹€.

CVE-2021-30965

λ¬Έμ œλŠ” λ³΄μ•ˆ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄ 전체 λ””μŠ€ν¬ μ ‘κ·Ό κΆŒν•œμ„ κ°€μ Έμ•Ό ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ”°λΌμ„œ κ³΅κ²©μžκ°€ 이λ₯Ό μ œκ±°ν•  수 μžˆλ‹€λ©΄ μ†Œν”„νŠΈμ›¨μ–΄κ°€ μ‹€ν–‰λ˜λŠ” 것을 λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€:

tccutil reset All

더 λ§Žμ€ μ •λ³΄λŠ” 이 우회 및 κ΄€λ ¨λœ λ‚΄μš©μ— λŒ€ν•΄ #OBTS v5.0: β€œThe Achilles Heel of EndpointSecurity” - Fitzl Csaba κ°•μ˜λ₯Ό ν™•μΈν•˜μ„Έμš”.

κ²°κ΅­, μ΄λŠ” **tccd**κ°€ κ΄€λ¦¬ν•˜λŠ” λ³΄μ•ˆ 앱에 μƒˆλ‘œμš΄ κΆŒν•œ **kTCCServiceEndpointSecurityClient**λ₯Ό λΆ€μ—¬ν•˜μ—¬ μˆ˜μ •λ˜μ—ˆμœΌλ©°, 이둜 인해 tccutil이 ν•΄λ‹Ή κΆŒν•œμ„ μ§€μš°μ§€ μ•Šμ•„ 싀행을 λ°©μ§€ν•˜μ§€ μ•Šκ²Œ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

References

Tip

AWS ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°:HackTricks Training AWS Red Team Expert (ARTE)
GCP ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training GCP Red Team Expert (GRTE) Azure ν•΄ν‚Ή 배우기 및 μ—°μŠ΅ν•˜κΈ°: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks μ§€μ›ν•˜κΈ°