לדלג לתוכן

חלק ב\': מדריך העברה למרצה – שיעור 13

1. שרשרת האתחול: מ-Boot ROM דרך LLB ועד הקרנל במחשבי Apple Silicon

Objective: להסביר את השלבים שמערכת Apple Silicon עוברת מרגע הלחיצה על כפתור ההדלקה ועד לעליית הקרנל, בדגש על שרשרת האמון (Chain of Trust).

Discussion - Script:

  • "חברים, כשלוחצים על כפתור ההדלקה במק מבוסס Apple Silicon – זה כבר לא ה-Boot של אינטל."
  • כל הפעלה נבדקת מול שרשרת אבטחה שלמה:
  • המטרה: לוודא ששום תוכנה זדונית לא השתלטה לפני עליית המערכת.
  • התהליך:
  • Boot ROM: מתחיל את התהליך (צרוב על החומרה).
  • LLB (Low-Level Bootloader): נקרא על ידי ה-Boot ROM, עושה בדיקות חומרה בסיסיות.
  • iBoot: מקבל את השרביט מה-LLB, תפקידו להעלות את הקרנל.
  • Kernel (קרנל): נטען על ידי iBoot וטוען את מערכת ההפעלה (SSV).
  • כל שלב מוודא את הבא בתור באמצעות חתימות קריפטוגרפיות.
  • חוליה אחת לא מתאימה? המק פשוט יעצור ולא יעלה.

Demonstration:

  • הצג תרשים זרימה של השלבים (אפשר לצייר על הלוח): Boot ROM -> LLB -> iBoot -> Kernel -> macOS.
  • הסבר על השינויים ב-Apple Silicon:
  • אין SMC נפרד.
  • אין NVRAM מסורתי.
  • הכל מובנה בתוך ה-SoC.
  • פתח System Information:
  • נווט לאזור ה-Hardware.
  • הצג את ה-System Firmware Version.
Instructor Deep-Dive * **Boot ROM:** * Hardware-based, read-only memory inside the SoC. * Holds the Apple Root Certificate Public Key. * Verifies the LLB. * **Low-Level Bootloader (LLB):** * Initializes basic hardware (e.g., Unified Memory). * Verifies the iBoot stage. * Maintains basic security properties. * **iBoot (Main Bootloader):** * Verifies the kernel cache (kernel + essential kexts). * Parses the DeviceTree. * Responsible for the boot logo and loading bar. * **Local Policy:** * Each Apple Silicon Volume has its own Local Policy (Full/Reduced Security). * iBoot reads this to determine if older macOS versions or third-party kexts can be loaded.

2. Startup Security Utility: שינוי רמות האבטחה (Full Security מול Reduced Security) ולמה שנרצה להוריד אבטחה

Objective: להדגים כיצד פועל מנגנון ה-Startup Security Utility ב-Recovery Mode ואת המשמעויות של שינוי מדיניות האבטחה (Security Policy).

Discussion - Script:

  • "זוכרים שכל Volume ב-Apple Silicon נבדק בנפרד?"
  • כניסה ל-Recovery Mode פותחת את ה-Startup Security Utility:
  • מאפשר לנהל Security Policy נפרד לכל ווליום.
  • (פרט טריוויה למדריך מתוך ה-DeepDive: בעשור הראשון של Mac OS X בכלל לא הייתה מחיצת Recovery! רק ב-2011 (Lion) היא הוצגה לראשונה. היום ב-Apple Silicon קיימת מערכת 1TR (One True Recovery) שעולה ישירות מהחומרה ומייתרת את אינספור קיצורי המקלדת של העבר).
  • Full Security (ברירת מחדל):
  • מבטיח הרצת מערכת הפעלה נוכחית/לגיטימית בלבד.
  • דורש אינטרנט לאימות מול שרתי אפל.
  • מתי נשתמש ב-Reduced Security?
  • כמפתחים (להתקנת מערכת הפעלה ישנה).
  • כמוזיקאים (לדרייבר של כרטיס קול).
  • משמעות המצב:
  • מאפשר הרצת גרסאות ישנות.
  • מאפשר ניהול משתמש של הרחבות קרנל (Kernel Extensions).
  • לא מבטל אבטחה לחלוטין – אלא מעביר את ההחלטה למשתמש המקומי (Admin).

Demonstration:

  • הפעל מק ל-Recovery Mode (לחיצה ארוכה על כפתור ההפעלה עד ל-Options).
  • פתח Startup Security Utility מתוך תפריט Utilities.
  • בחר ווליום רלוונטי ולחץ על Security Policy.
  • השווה ויזואלית וטקסטואלית בין Full Security ל-Reduced Security.
  • הצג את שתי תיבות הסימון של Reduced Security:
  • User Management של Kexts.
  • Remote Management.
Instructor Deep-Dive * **Full Security:** * Requires network to reach Apple’s TSS (Tatsu Signing Server) during installation/updates. * Retrieves a personalized signature (APTicket) based on the Mac's ECID. * Prevents rollback attacks (downgrading to vulnerable OS). * **Reduced Security:** * Allows running any signed macOS version (even if revoked). * Disables online TSS checks for older OS boots. * Enables checkboxes for: * `Allow user management of kernel extensions from identified developers` * `Allow remote management of kernel extensions and automatic software updates` * **Permissive Security (Advanced/Hidden):** * Used by developers for unauthenticated custom kernels. * Requires boot-args configuration via `csrutil`.

3. הרחבות קרנל (Kexts): למה אפל הורגת אותן ואיך מתקינים אותן בכל זאת במק מודרני

Objective: להסביר את המעבר מ-Kernel Extensions ל-System Extensions ואיך מאשרים Kext כשהמערכת דורשת זאת.

Discussion - Script:

  • "למה אפל 'הורגת' את דרייברי הקרנל (Kexts)?"
  • בעבר, תוכנות (אודיו, אנטי-וירוס) רצו ברמת הקרנל.
  • הבעיה: הקרנל הוא לב המערכת.
  • דרייבר קורס = Kernel Panic והמחשב קורס.
  • דרייבר בקרנל = גישה להכל (סיוט אבטחתי).
  • הפתרון: System Extensions.
  • רצות ב-User Space ולא בקרנל.
  • קורסות? המחשב ממשיך לעבוד.
  • (אנלוגיה היסטורית למדריך: אפשר להשוות את זה למצב שלפני Mac OS X, בו לא היה קרנל מוגן וקריסה קטנה הייתה מקפיאה את כל המחשב. המעבר ל-System Extensions הוא אותו מהלך של 'בידוד תהליכים' (Sandboxing) שעשו פעם לאפליקציות, רק שעכשיו עושים אותו לדרייברים עצמם כדי למנוע Kernel Panics).
  • למה עדיין צריכים Kexts?
  • יצרני אודיו או וירטואליזציה ישנים שטרם עודכנו.
  • איך מתקינים Kext במק מודרני? הכאב ראש המכוון של אפל:
  • ירידה ל-Reduced Security.
  • סימון ניהול הרחבות קרנל ב-Startup Security Utility.
  • אישור מפתח היצרן ב-System Settings > Privacy & Security.
  • אתחול המערכת (כדי ש-iBoot יבנה את ה-AKC מחדש).

Demonstration:

  • פתח System Information -> Software -> Extensions:
  • הצג הרחבות שנטענו בפועל (Loaded: Yes).
  • פתח Finder:
  • נווט לספרייה /Library/Extensions.
  • הראה היכן קבצי ה-Kext (צד שלישי) יושבים פיזית.
  • סימולציה של חסימה:
  • הראה את החלון ב-System Settings > Privacy & Security (System Extension Blocked).
  • הסבר שנדרש אישור ואתחול.
Instructor Deep-Dive * **Kernel Extensions (Kexts):** * Run in ring 0 (kernel space). * Unrestricted access to memory and hardware. * Easy cause for Kernel Panics (KP). * **System Extensions:** * Run in user space. * Categories: Network Extensions, Endpoint Security Extensions, Driver Extensions (DriverKit). * **Auxiliary Kernel Collection (AKC):** * On Apple Silicon, third-party Kexts are NOT injected directly into memory. * They are pre-compiled and linked into an AKC file during boot. * OS verifies AKC signature before loading. * **kmutil:** * Modern CLI tool replacing `kextstat` and `kextutil`. * Instructor tip: Run `kmutil showloaded` in Terminal to show active extensions.

4. תיבול ארגוני: אבטחת ה-Firmware, ניהול מפתחות שחזור מוסדיים במצב Boot, והגבלת משתמשים מלשנות רמת אבטחה

Objective: להבין את הכלים שיש ל-IT כדי לנעול את תהליך האתחול, למנוע שינויי אבטחה ולנהל גישה ל-Recovery באמצעות מפתחות שחזור.

Discussion - Script:

  • "בעולם הארגוני – המטרה שלנו היא למנוע מ-Admin מקומי לשחק ברמות האבטחה ולהתקין דרייברים."
  • תפקיד ה-MDM:
  • מחשב מנוהל (במיוחד ב-ADE/Zero-Touch) יכול להפעיל מפתח שחזור מוסדי (IRK/PRK).
  • יחד עם FileVault, המשתמש לא יכול לשנות הגדרות ב-Recovery ללא המפתח.
  • איש ה-IT חייב לאשר זאת.
  • הגבלת אישור Kexts:
  • פרופילי MDM יכולים לדרוס לחלוטין את יכולת המשתמש לאשר Kexts.
  • נדרש Payload ייעודי ב-MDM עם ה-Team ID המדויק.
  • מבטיח שאף תוכנה לא מאושרת ללא בקרת הארגון.

Demonstration:

  • הצג תרשים/Payload מתוך מערכת MDM (Jamf/Intune):
  • פוליסת Kernel Extension Policy.
  • הראה איפה מזינים את ה-Team ID.
  • פרופיל System Extensions:
  • הסבר שהוא מתנהג דומה.
  • מאפשר הפעלה שקטה בלי לערב משתמש.
  • אבטחת Firmware ב-Apple Silicon:
  • אין יותר Firmware Password (כמו באינטל).
  • במקומה: משתמשים ב-FileVault וב-MDM Bootstrap Token לאבטחת הגישה ל-Recovery.
Instructor Deep-Dive * **Firmware Password:** * Dead on Apple Silicon. * Protected by FileVault instead. * Recovery requires volume owner password or Recovery Key (PRK/IRK) if FileVault is ON. * **MDM Limitations on Security Level:** * MDM can force Full Security boot. * Overrides local Admin policy changes in Recovery. * **Kext Policy Payload:** * Silently approves Kexts using developer's Team ID. * Changing to Reduced Security STILL requires manual user reboot into Recovery (unless pre-provisioned via ADE and downgraded remotely using Bootstrap Token). * **CLI Validation:** * Verify SIP status: `csrutil status`. * Verify Kext consent status: `spctl kext-consent status`.