KeyFrame內部研究專用

Black Hat USA 2003 - Locking Down Mac OS X

YouTube Creator·10月7日週一·97 min英文

三句話摘要

macOS 系統全面安全加固指南——從啟動保護到守護進程審計,防止未授權訪問的完整方法論。 macOS 安全加固是多維度工程,需從啟動、守護進程、網絡、權限、自動化等層層深入,才能在高風險環境中有效防御。 啟動安全是第一道防線 — 蘋果默認安全配置(如"不安全"模式)實測無效。需同時實施:開放固件密碼防止引導設備更改、在 rc.boot 中添加密碼檢查脫本保護單用戶模式、禁用 CD 啟動、關閉自動登入、隱藏登入界面的重啟按鈕。任何單一措施都可被繞過,必須多層防御。

重點整理

重點
  • 1

    啟動安全是第一道防線 — 蘋果默認安全配置(如"不安全"模式)實測無效。需同時實施:開放固件密碼防止引導設備更改、在 rc.boot 中添加密碼檢查脫本保護單用戶模式、禁用 CD 啟動、關閉自動登入、隱藏登入界面的重啟按鈕。任何單一措施都可被繞過,必須多層防御。

  • 2

    守護進程審計與禁用 — 通過 /etc/hostconfig 控制系統服務啟動。筆記本可安全關閉:AUTOMOUNT(NFS 自動掛載會有延遲)、CUPS(打印守護進程)、TIMESYNC(時間同步可被網絡攻擊利用)、Rendezvous(mDNS 會主動向整個網絡廣播用戶信息,造成隱私泄露)。需逐一檢查 /System/Library/StartupItems/ 中每個腳本的功能,而非盲目關閉。

  • 3

    網絡暴露面最小化 — 用 netstat 和 lsof 識別所有監聽端口與對應進程。syslog 守護進程 514 端口存在遠程日志注入風險(手冊聲稱需 `-U` 標誌才監聽網絡,但實測仍在監聽),應用防火牆(ipfw)明確阻止。NetInfo 應僅監聽 localhost。每個監聽端口都需正當理由。

  • 4

    權限與 setuid 審計 — 系統上的 mount、ping、sudo 等 setuid 程序可成為權限提升跳板。創建受限用戶組限制特定程序的執行(如禁止 Web 服務器用戶執行 mount),即使服務被攻擊也無法提升權限。並審計全局可寫文件與目錄,防止符號鏈接或替換攻擊。

實用技巧與重點

乾貨
  • 啟動保護工具:
  • 開放固件密碼:按 Option 鍵啟動 → `set-security-mode command` → `reset-all`
  • 單用戶密碼:修改 rc.boot 腳本(第三方 OSX scripts.com/secure 提供 Perl 腳本自動添加)
  • 禁用自動登入:系統偏好設置 > 帳戶 > 登入選項,或編輯 `/Library/Preferences/com.apple.loginwindow.plist`
  • 守護進程配置文件:
  • 主控文件:`/etc/hostconfig`
  • 啟動腳本路徑:`/System/Library/StartupItems/` 和 `/Library/StartupItems/`
  • hostconfig 選項:AUTOMOUNT、CUPS、NETWORKINFOSERVER、TIMESYNC、IPv6(設為 YES/NO/AUTOMATIC)
  • 禁用方法:修改 hostconfig 值或在啟動腳本開頭添加 `exit 0`
  • 重啟服務:`SystemStarter stop <service>` / `start` / `restart`
  • 可關閉的服務(筆記本環境):
  • AUTOMOUNT — NFS 自動掛載(除非使用 NFS 客戶端)
  • CUPS — 打印守護進程(無打印機則關閉)
  • TIMESYNC — 時間同步(防 NTPD 漏洞利用)
  • Rendezvous/mDNS Responder — 文件共享與即時通訊廣播(隱私風險)
  • 網絡審計命令:
  • 監聽端口查詢:`netstat -np TCP` 和 `netstat -np UDP`
  • 進程識別:`lsof -i TCP:port_number` 或 `lsof -i UDP:port_number`
  • 常見端口:NetInfo (1033)、lookup daemon (49227)、syslog (514 UDP)、DHCP (68 UDP)
  • Inetd/Xinetd 審計:
  • inetd 配置:`/etc/inetd.conf` — 檢查未被註釋行
  • xinetd 配置:`/etc/xinetd.d/` — 檢查每個服務的 `disable = yes/no` 設置
  • Setuid 程序查找:
  • 所有 setuid root 程序:`find / -perm -4000 -user root`
  • Setgid 程序:`find / -perm -2000`
  • 風險控制:創建受限用戶組,為特定用戶禁止執行某些 setuid 程序
  • Cron 作業位置:
  • 系統 cron:`/etc/periodic/daily`、`weekly`、`monthly`
  • 自定義 cron:`/etc/periodic/daily.local`、`weekly.local`、`monthly.local`
  • 用戶 cron:`crontab -l` 查看
  • 防火牆與權限:
  • macOS 使用 IP Filter (ipfw) 進行防火牆
  • 權限審計:`find / -perm -002`(全局可寫文件)
  • 加固自動化:編寫腳本在 /etc/rc.local 或系統啟動時運行,確保補丁不覆蓋配置

結論

結論

macOS 安全加固是多維度工程,需從啟動、守護進程、網絡、權限、自動化等層層深入,才能在高風險環境中有效防御。

完整解析

詳細

J Beal 在這場技術演講中,以 Defcon 等高風險環境為背景,完整展示如何加固 macOS 系統。他強調,蘋果系統看起來易用安全,但其底層基於 Unix(類似 FreeBSD),默認配置完全不足以應對威脅。

首先是啟動安全。macOS 使用 Darwin 內核和特殊引導流程:開放固件 → kernel → MachInit → rc.boot 與 rc 腳本。攻擊者可通過多個切入點侵入:按 Option 鍵進入開放固件、直接進入單用戶模式、從啟動 CD 運行密碼恢復工具。蘋果官方文檔推薦的設置經實測無效——修改 /etc/ttys 中的"不安全"選項並不能阻止單用戶訪問。解決方案需多層疊加:在 rc.boot 中插入密碼檢查腳本(標準方法是修改並在需要時提示;錯誤輸入三次則重啟),在開放固件中設置 `security-mode command` 密碼防止設備更改,禁用自動登入,隱藏登入界面的重啟按鈕。

其次是守護進程審計。/etc/hostconfig 是主控文件,決定 AUTOMOUNT、CUPS、TIMESYNC 等服務是否啟動。System Starter 會讀取 /System/Library/StartupItems/ 中各服務的啟動腳本與優先順序設置。講者逐一分析了應該禁用的服務:AUTOMOUNT 在筆記本上無需(NFS 自動掛載會導致延遲),CUPS 除非使用打印機,TIMESYNC 在不信任網絡中會暴露 NTP 漏洞,Rendezvous(mDNS 響應器)最危險——它會主動向整個網絡廣播用戶有文件分享、在即時通訊上,導致陌生人騷擾。講者親身經歷在地鐵上遭此困擾,因此強烈建議禁用。禁用方法可修改 hostconfig 或編輯啟動腳本添加 `exit 0`。

第三是網絡審計。運行 `netstat -np TCP/UDP` 獲取所有監聽端口列表,再用 `lsof -i TCP:port` 確定進程。理想情況下只有必要服務監聽:NetInfo(1033,須限制在 localhost)、lookup daemon(DNS/NIS 緩存)、DHCP(68)。514 端口的 syslog 成為問題——手冊頁聲稱無 `-U` 標誌不會監聽網絡,但實測仍在監聽,暴露遠程日志注入風險。講者建議用防火牆(ipfw)明確阻止。

第四,Inetd/Xinetd 審計。macOS 同時運行兩者但大多已禁用,需檢查 /etc/inetd.conf(未註釋行)和 /etc/xinetd.d/(disable 設置)。第五,Setuid 程序風險。mount、ping、sudo 等 setuid 程序是提權路徑。創建受限用戶組(如"humans"),為這些程序限制執行權限,使 Web 服務器等受限用戶無法執行,即使被攻擊也無法提升權限。第六,Cron 和權限審計——檢查 /etc/periodic/ 下的定期任務,查找 `find / -perm -002` 的全局可寫文件防止符號鏈接攻擊。

最後,講者強調加固自動化的必要性——編寫腳本在系統啟動時重新應用所有加固步驟,防止補丁更新覆蓋配置。他還提及正在進行的 Bastille Linux macOS 移植項目,可自動化許多步驟。

關鍵時刻

Pipeline v2

帶時間戳的重點,會在逐字稿層級分析上線後產生。目前請先透過原始影片觀看。

事實查核

Pipeline v2

說法查證是下一次管線升級的一部分。KeyFrame 只會顯示它真正能驗證的內容。

更多「Web2 安全」的內容

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car
7 min
Web2 安全英文PODCAST8月25日

SANS Stormcast Tuesday, August 25th, 2026: DOUBLECUP PNG; WebAudio Fingerprinting; Expired Domains; Android; Car

SANS Stormcast

  • PNG 容器攻擊的簡易性設計:Double Cup 不依賴複雜的 Exif 或隱寫技術,只用 PNG 副檔名和檔頭來偽裝,核心是利用 findstr 指令的常見可用性讓執行變得無需額外工具。
  • Web Audio API 的隱密指紋識別:音訊於增益零的無聲狀態下播放,使用者完全無感,但錄製波形足以建立裝置特徵,在瀏覽器原生功能層面難以區分是反詐欺還是過度追蹤。
  • 域名過期引發的串聯漏洞:DMARC 報告端點使用過期域名是常見疏漏,允許攻擊者透過簡單的域名註冊取得他人的 SPF/DKIM 錯誤報告,進而收集目標系統配置情報。
Risky Bulletin: Expired credit cards can be used for malicious transactions
5 min
Web2 安全英文PODCAST8月24日

Risky Bulletin: Expired credit cards can be used for malicious transactions

Risky Business

  • 支付安全的非對稱風險:Visa卡利用未加密的卡片資料與NFC通訊,攻擊者可藉由中間人技術竄改過期日期進行交易,但MasterCard、美運卡與Discover的防護更完善,顯示不同發卡機構的安全架構存在明顯差異。
  • 國家級駭客活動的連鎖延伸:北韓Lazarus集團在2月單一事件已累積100名受害者,涵蓋大學、警察部門、媒體與醫療機構,伊朗駭客則針對基礎建設如電力系統發動破壞性攻擊,反映地緣政治在網路戰爭中的升溫。
  • AI加速漏洞生態的雙面刃:AI工具催生近2萬份漏洞概念驗證代碼發布,但同時也導致大量失效漏洞代碼氾濫,增加資安團隊甄別真實威脅的難度;Mayer Protocol遭攻擊事件中,駭客用AI鏈接六個無關的小漏洞完成盜竊170萬美元的攻擊。
SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware
5 min
Web2 安全英文PODCAST8月24日

SANS Stormcast Monday, August 24th, 2026: More Entra Powershell; Entra Vulnerability; GitLab Vuln (and PoC); GTA 6 Leak Malware

SANS Stormcast

  • Microsoft EntraID 的遠端代碼執行漏洞已由微軟修補,初期報告顯示已遭利用但後來更正為未遭利用。這反映 Microsoft 在雲端軟體安全上的透明度提升,對漏洞採用與內部軟體相同的 CVE 編號和公告流程。
  • PowerShell 指令碼可用於驗證 MFA 部署完整性,特別是找出未啟用 MFA 的遺漏帳號。同時可以分析 EntraID 登入日誌中的異常行為,如風險係數評估和地理位置檢測,幫助組織快速識別可疑登入。
  • GitLab 的 GraphQL 代碼注入漏洞允許未認證攻擊者刪除或修改儲存庫,潛在導致供應鏈攻擊。已有公開概念驗證 (PoC) 存在,使用內部部署 GitLab 的組織必須立即修補。