macOS Kernel & System Extensions

Reading time: 5 minutes

tip

AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ

XNU Kernel

macOS рдХрд╛ рдореВрд▓ XNU рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ "X is Not Unix"ред рдпрд╣ рдХрд░реНрдиреЗрд▓ рдореВрд▓ рд░реВрдк рд╕реЗ Mach рдорд╛рдЗрдХреНрд░реЛрдХрд░реНрдиреЗрд▓ (рдЬрд┐рд╕ рдкрд░ рдмрд╛рдж рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреА) рдФрд░ Berkeley Software Distribution (BSD) рдХреЗ рддрддреНрд╡реЛрдВ рд╕реЗ рдмрдирд╛ рд╣реИред XNU I/O Kit рдирд╛рдордХ рдПрдХ рдкреНрд░рдгрд╛рд▓реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд░реНрдиреЗрд▓ рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рднреА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред XNU рдХрд░реНрдиреЗрд▓ рдбрд╛рд░реНрд╡рд┐рди рдУрдкрди-рд╕реЛрд░реНрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЗрд╕рдХрд╛ рд╕реНрд░реЛрдд рдХреЛрдб рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред

рдПрдХ рд╕реБрд░рдХреНрд╖рд╛ рд╢реЛрдзрдХрд░реНрддрд╛ рдпрд╛ Unix рдбреЗрд╡рд▓рдкрд░ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, macOS рдПрдХ FreeBSD рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рдорд╛рди рдорд╣рд╕реВрд╕ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реБрдВрджрд░ GUI рдФрд░ рдХрдИ рдХрд╕реНрдЯрдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╣реИрдВред BSD рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд╕рд┐рдд рдЕрдзрд┐рдХрд╛рдВрд╢ рдПрдкреНрд▓рд┐рдХреЗрд╢рди macOS рдкрд░ рдмрд┐рдирд╛ рдХрд┐рд╕реА рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рдВрдХрд▓рд┐рдд рдФрд░ рдЪрд▓рд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ Unix рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкрд░рд┐рдЪрд┐рдд рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЙрдкрдХрд░рдг macOS рдореЗрдВ рд╕рднреА рдореМрдЬреВрдж рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЪреВрдВрдХрд┐ XNU рдХрд░реНрдиреЗрд▓ Mach рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкрд╛рд░рдВрдкрд░рд┐рдХ Unix-рд╕рдорд╛рди рдкреНрд░рдгрд╛рд▓реА рдФрд░ macOS рдХреЗ рдмреАрдЪ рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЕрдВрддрд░ рд╣реИрдВ, рдФрд░ рдпреЗ рдЕрдВрддрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдБ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдЕрджреНрд╡рд┐рддреАрдп рд▓рд╛рдн рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

XNU рдХрд╛ рдУрдкрди-рд╕реЛрд░реНрд╕ рд╕рдВрд╕реНрдХрд░рдг: https://opensource.apple.com/source/xnu/

Mach

Mach рдПрдХ рдорд╛рдЗрдХреНрд░реЛрдХрд░реНрдиреЗрд▓ рд╣реИ рдЬрд┐рд╕реЗ UNIX-рд╕рдВрдЧрдд рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЗрд╕рдХреЗ рдкреНрд░рдореБрдЦ рдбрд┐рдЬрд╝рд╛рдЗрди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛ рдХрд░реНрдиреЗрд▓ рд╕реНрдерд╛рди рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдирд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдХрдИ рд╕рд╛рдорд╛рдиреНрдп рдХрд░реНрдиреЗрд▓ рдХрд╛рд░реНрдпреЛрдВ, рдЬреИрд╕реЗ рдлрд╝рд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА, рдиреЗрдЯрд╡рд░реНрдХрд┐рдВрдЧ, рдФрд░ I/O рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рд╕реНрддрд░реАрдп рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ред

XNU рдореЗрдВ, Mach рдХрд░реНрдиреЗрд▓ рджреНрд╡рд╛рд░рд╛ рд╕рд╛рдорд╛рдиреНрдпрддрдГ рд╕рдВрднрд╛рд▓реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдХрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕рдВрдЪрд╛рд▓рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдЬреИрд╕реЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рд╢реЗрдбреНрдпреВрд▓рд┐рдВрдЧ, рдорд▓реНрдЯреАрдЯрд╛рд╕реНрдХрд┐рдВрдЧ, рдФрд░ рд╡рд░реНрдЪреБрдЕрд▓ рдореЗрдореЛрд░реА рдкреНрд░рдмрдВрдзрдиред

BSD

XNU рдХрд░реНрдиреЗрд▓ рдореЗрдВ FreeBSD рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ рд╡реНрдпреБрддреНрдкрдиреНрди рдХреЛрдб рдХреА рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рддреНрд░рд╛ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдХреЛрдб Mach рдХреЗ рд╕рд╛рде рдХрд░реНрдиреЗрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИ, рдПрдХ рд╣реА рдкрддреЗ рдХреА рдЬрдЧрд╣ рдореЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, XNU рдХреЗ рднреАрддрд░ FreeBSD рдХреЛрдб рдореВрд▓ FreeBSD рдХреЛрдб рд╕реЗ рдХрд╛рдлреА рднрд┐рдиреНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Mach рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рд╕рдВрдЧрддрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдВрд╢реЛрдзрди рдЖрд╡рд╢реНрдпрдХ рдереЗред 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 рдЕрдкрдиреЗ рдХрд░реНрдиреЗрд▓рдХреИрд╢ рдХреЗ рднреАрддрд░ .kext рдХреЛ рдХреИрд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ:

macOS Kernel Extensions & Debugging

macOS System Extensions

рдХрд░реНрдиреЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, macOS рдиреЗ рд╕рд┐рд╕реНрдЯрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдП, рдЬреЛ рдХрд░реНрдиреЗрд▓ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрддрд░ рдХреЗ APIs рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рддрд░рд╣, рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХрд░реНрдиреЗрд▓ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рд╕рдХрддреЗ рд╣реИрдВред

macOS System Extensions

References

tip

AWS рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ:HackTricks Training AWS Red Team Expert (ARTE)
GCP рд╣реИрдХрд┐рдВрдЧ рд╕реАрдЦреЗрдВ рдФрд░ рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks рдХрд╛ рд╕рдорд░реНрдерди рдХрд░реЗрдВ