macOS Kernel & 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 μ§€μ›ν•˜κΈ°

XNU Kernel

macOS의 핡심은 XNU둜, β€œXλŠ” μœ λ‹‰μŠ€κ°€ μ•„λ‹ˆλ‹€β€œλ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. 이 컀널은 기본적으둜 Mach λ§ˆμ΄ν¬λ‘œμ»€λ„(후에 λ…Όμ˜λ  μ˜ˆμ •)κ³Ό **버클리 μ†Œν”„νŠΈμ›¨μ–΄ 배포(BSD)**의 μš”μ†Œλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€. XNUλŠ” I/O Kitμ΄λΌλŠ” μ‹œμŠ€ν…œμ„ 톡해 컀널 λ“œλΌμ΄λ²„λ₯Ό μœ„ν•œ ν”Œλž«νΌμ„ μ œκ³΅ν•©λ‹ˆλ‹€. XNU 컀널은 λ‹€μœˆ μ˜€ν”ˆ μ†ŒμŠ€ ν”„λ‘œμ νŠΈμ˜ μΌλΆ€λ‘œ, μ†ŒμŠ€ μ½”λ“œλŠ” 자유둭게 μ ‘κ·Όν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ³΄μ•ˆ μ—°κ΅¬μžλ‚˜ μœ λ‹‰μŠ€ 개발자의 κ΄€μ μ—μ„œ macOSλŠ” μš°μ•„ν•œ GUI와 λ‹€μ–‘ν•œ λ§žμΆ€ν˜• μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ κ°–μΆ˜ FreeBSD μ‹œμŠ€ν…œκ³Ό 맀우 μœ μ‚¬ν•˜κ²Œ 느껴질 수 μžˆμŠ΅λ‹ˆλ‹€. BSD용으둜 개발된 λŒ€λΆ€λΆ„μ˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ μˆ˜μ • 없이 macOSμ—μ„œ 컴파일되고 싀행될 수 있으며, μœ λ‹‰μŠ€ μ‚¬μš©μžμ—κ²Œ μΉœμˆ™ν•œ λͺ…령쀄 도ꡬ가 λͺ¨λ‘ macOS에 μ‘΄μž¬ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ XNU 컀널이 Mach을 ν†΅ν•©ν•˜κ³  있기 λ•Œλ¬Έμ— 전톡적인 μœ λ‹‰μŠ€ μœ μ‚¬ μ‹œμŠ€ν…œκ³Ό macOS κ°„μ—λŠ” λͺ‡ κ°€μ§€ μ€‘μš”ν•œ 차이점이 있으며, μ΄λŸ¬ν•œ 차이점은 잠재적인 문제λ₯Ό μΌμœΌν‚€κ±°λ‚˜ λ…νŠΉν•œ 이점을 μ œκ³΅ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

XNU의 μ˜€ν”ˆ μ†ŒμŠ€ 버전: https://opensource.apple.com/source/xnu/

Mach

MachλŠ” UNIX ν˜Έν™˜μ„±μ„ μœ„ν•΄ μ„€κ³„λœ λ§ˆμ΄ν¬λ‘œμ»€λ„μž…λ‹ˆλ‹€. κ·Έ μ£Όμš” 섀계 원칙 쀑 ν•˜λ‚˜λŠ” 컀널 κ³΅κ°„μ—μ„œ μ‹€ν–‰λ˜λŠ” μ½”λ“œμ˜ 양을 μ΅œμ†Œν™”ν•˜κ³  λŒ€μ‹  파일 μ‹œμŠ€ν…œ, λ„€νŠΈμ›Œν‚Ή 및 I/O와 같은 λ§Žμ€ μ „ν˜•μ μΈ 컀널 κΈ°λŠ₯이 μ‚¬μš©μž μˆ˜μ€€ μž‘μ—…μœΌλ‘œ μ‹€ν–‰λ˜λ„λ‘ ν—ˆμš©ν•˜λŠ” κ²ƒμ΄μ—ˆμŠ΅λ‹ˆλ‹€.

XNUμ—μ„œ MachλŠ” 컀널이 일반적으둜 μ²˜λ¦¬ν•˜λŠ” λ§Žμ€ μ€‘μš”ν•œ μ €μˆ˜μ€€ μž‘μ—…, 즉 ν”„λ‘œμ„Έμ„œ μŠ€μΌ€μ€„λ§, λ©€ν‹°νƒœμŠ€ν‚Ή 및 가상 λ©”λͺ¨λ¦¬ 관리 등을 μ±…μž„μ§‘λ‹ˆλ‹€.

BSD

XNU 컀널은 λ˜ν•œ FreeBSD ν”„λ‘œμ νŠΈμ—μ„œ νŒŒμƒλœ μƒλ‹ΉλŸ‰μ˜ μ½”λ“œλ₯Ό ν¬ν•¨ν•©λ‹ˆλ‹€. 이 μ½”λ“œλŠ” Mach와 ν•¨κ»˜ μ»€λ„μ˜ μΌλΆ€λ‘œ 같은 μ£Όμ†Œ κ³΅κ°„μ—μ„œ μ‹€ν–‰λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ XNU λ‚΄μ˜ FreeBSD μ½”λ“œλŠ” Mach과의 ν˜Έν™˜μ„±μ„ 보μž₯ν•˜κΈ° μœ„ν•΄ μˆ˜μ •μ΄ ν•„μš”ν–ˆκΈ° λ•Œλ¬Έμ— μ›λž˜ FreeBSD μ½”λ“œμ™€ μƒλ‹Ήνžˆ λ‹€λ₯Ό 수 μžˆμŠ΅λ‹ˆλ‹€. FreeBSDλŠ” λ‹€μŒμ„ ν¬ν•¨ν•œ λ§Žμ€ 컀널 μž‘μ—…μ— κΈ°μ—¬ν•©λ‹ˆλ‹€:

  • ν”„λ‘œμ„ΈμŠ€ 관리
  • μ‹ ν˜Έ 처리
  • μ‚¬μš©μž 및 κ·Έλ£Ή 관리 λ“± κΈ°λ³Έ λ³΄μ•ˆ λ©”μ»€λ‹ˆμ¦˜
  • μ‹œμŠ€ν…œ 호좜 인프라
  • TCP/IP μŠ€νƒ 및 μ†ŒμΌ“
  • λ°©ν™”λ²½ 및 νŒ¨ν‚· 필터링

BSD와 Mach κ°„μ˜ μƒν˜Έμž‘μš©μ„ μ΄ν•΄ν•˜λŠ” 것은 κ·Έλ“€μ˜ μ„œλ‘œ λ‹€λ₯Έ κ°œλ…μ  ν”„λ ˆμž„μ›Œν¬ λ•Œλ¬Έμ— λ³΅μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, BSDλŠ” ν”„λ‘œμ„ΈμŠ€λ₯Ό κΈ°λ³Έ μ‹€ν–‰ λ‹¨μœ„λ‘œ μ‚¬μš©ν•˜μ§€λ§Œ Mach은 μŠ€λ ˆλ“œλ₯Ό 기반으둜 μž‘λ™ν•©λ‹ˆλ‹€. 이 λΆˆμΌμΉ˜λŠ” XNUμ—μ„œ 각 BSD ν”„λ‘œμ„ΈμŠ€λ₯Ό ν•˜λ‚˜μ˜ Mach μŠ€λ ˆλ“œλ₯Ό ν¬ν•¨ν•˜λŠ” Mach μž‘μ—…κ³Ό μ—°κ²°ν•˜μ—¬ μ‘°μ •λ©λ‹ˆλ‹€. BSD의 fork() μ‹œμŠ€ν…œ 호좜이 μ‚¬μš©λ  λ•Œ, 컀널 λ‚΄μ˜ BSD μ½”λ“œλŠ” Mach ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ—… 및 μŠ€λ ˆλ“œ ꡬ쑰λ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

κ²Œλ‹€κ°€, Machκ³Ό BSDλŠ” 각각 λ‹€λ₯Έ λ³΄μ•ˆ λͺ¨λΈμ„ μœ μ§€ν•©λ‹ˆλ‹€: Mach의 λ³΄μ•ˆ λͺ¨λΈμ€ 포트 κΆŒν•œμ— κΈ°λ°˜ν•˜κ³ , BSD의 λ³΄μ•ˆ λͺ¨λΈμ€ ν”„λ‘œμ„ΈμŠ€ μ†Œμœ κΆŒμ— κΈ°λ°˜ν•©λ‹ˆλ‹€. 이 두 λͺ¨λΈ κ°„μ˜ 차이둜 인해 λ•Œλ•Œλ‘œ 둜컬 κΆŒν•œ μƒμŠΉ 취약점이 λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. 일반적인 μ‹œμŠ€ν…œ 호좜 외에도 μ‚¬μš©μž 곡간 ν”„λ‘œκ·Έλž¨μ΄ 컀널과 μƒν˜Έμž‘μš©ν•  수 μžˆλ„λ‘ ν•˜λŠ” Mach νŠΈλž©λ„ μžˆμŠ΅λ‹ˆλ‹€. μ΄λŸ¬ν•œ λ‹€μ–‘ν•œ μš”μ†Œλ“€μ΄ ν•¨κ»˜ macOS μ»€λ„μ˜ 닀면적이고 ν•˜μ΄λΈŒλ¦¬λ“œ μ•„ν‚€ν…μ²˜λ₯Ό ν˜•μ„±ν•©λ‹ˆλ‹€.

I/O Kit - Drivers

I/O Kit은 XNU 컀널 λ‚΄μ˜ μ˜€ν”ˆ μ†ŒμŠ€ 객체 μ§€ν–₯ μž₯치 λ“œλΌμ΄λ²„ ν”„λ ˆμž„μ›Œν¬λ‘œ, λ™μ μœΌλ‘œ λ‘œλ“œλœ μž₯치 λ“œλΌμ΄λ²„λ₯Ό μ²˜λ¦¬ν•©λ‹ˆλ‹€. μ΄λŠ” λ‹€μ–‘ν•œ ν•˜λ“œμ›¨μ–΄λ₯Ό μ§€μ›ν•˜λ©° 컀널에 λͺ¨λ“ˆμ‹ μ½”λ“œλ₯Ό μ¦‰μ‹œ μΆ”κ°€ν•  수 있게 ν•΄μ€λ‹ˆλ‹€.

macOS IOKit

IPC - Inter Process Communication

macOS IPC - Inter Process Communication

macOS Kernel Extensions

macOSλŠ” 컀널 ν™•μž₯(.kext)을 λ‘œλ“œν•˜λŠ” 데 맀우 μ œν•œμ μž…λ‹ˆλ‹€. μ΄λŠ” μ½”λ“œκ°€ 높은 κΆŒν•œμœΌλ‘œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. μ‹€μ œλ‘œ 기본적으둜 우회 방법이 λ°œκ²¬λ˜μ§€ μ•ŠλŠ” ν•œ 사싀상 λΆˆκ°€λŠ₯ν•©λ‹ˆλ‹€.

λ‹€μŒ νŽ˜μ΄μ§€μ—μ„œλŠ” macOSκ°€ kernelcache λ‚΄μ—μ„œ λ‘œλ“œν•˜λŠ” .kextλ₯Ό λ³΅κ΅¬ν•˜λŠ” 방법도 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€:

macOS Kernel Extensions & Kernelcache

macOS System Extensions

컀널 ν™•μž₯을 μ‚¬μš©ν•˜λŠ” λŒ€μ‹  macOSλŠ” 컀널과 μƒν˜Έμž‘μš©ν•˜κΈ° μœ„ν•œ μ‚¬μš©μž μˆ˜μ€€ APIλ₯Ό μ œκ³΅ν•˜λŠ” μ‹œμŠ€ν…œ ν™•μž₯을 λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 κ°œλ°œμžλŠ” 컀널 ν™•μž₯을 μ‚¬μš©ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€.

macOS System Extensions

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 μ§€μ›ν•˜κΈ°