---
# System prepended metadata

title: 第 1 篇：API 攻擊模型與防禦思路
tags: [AppCheck系列]

---

# 第 1 篇：API 攻擊模型與防禦思路

## 前言：從 SMS API 攻擊事件說起

本系列文章源於一個真實的安全威脅：公司 SMS API 遭受異常流量攻擊。攻擊者可能採用暴力攻擊手段或使用模擬器偽造合法裝置環境，大量呼叫 API 端點，造成服務負載過高與成本激增。

這個事件讓我們深刻認識到，傳統的 API 防護機制（如 API Key、Rate Limiting）已不足以應對日益精密的攻擊手段。我們需要更深層的防護思路：**裝置驗證**。

## 常見 API 攻擊類型分析

### 1. 暴力攻擊 (Brute Force Attack)

#### 攻擊特徵
```
攻擊手段：
├── 大量並發請求淹沒 API 端點
├── 使用分散式 IP 地址避開封鎖
├── 隨機或字典式參數嘗試
└── 利用雲端服務放大攻擊規模
```

#### 實際攻擊情境

攻擊者針對 SMS API 的常見手法：
- 大量隨機生成電話號碼進行發送
- 使用不同 User-Agent 模擬各種客戶端
- 透過 Proxy Pool 隱藏真實來源 IP
- 在短時間內發送數千至數萬個請求

#### 傳統防禦的局限性

**常見防禦措施：**
- API Key 驗證
- IP 基礎的 Rate Limiting
- 請求頻率限制

**這些措施的問題：**
- API Key 可能被竊取或洩漏
- Rate Limiting 容易被分散式攻擊繞過
- IP 封鎖會影響合法使用者

### 2. 模擬器攻擊 (Emulator Attack)

#### 攻擊特徵
```
模擬器類型：
├── Android 模擬器 (如 BlueStacks、Andy)
├── iOS 模擬器 (Xcode Simulator)
├── 自製模擬環境
└── 雲端模擬器服務
```

#### 攻擊手段
攻擊者使用模擬器的優勢：
1. **完全控制的環境**：可任意修改系統參數、裝置資訊
2. **自動化腳本**：輕鬆執行大量重複操作
3. **成本低廉**：一台電腦可同時運行多個模擬器
4. **難以偵測**：模擬器可模仿真實裝置的特徵

#### 攻擊自動化流程

攻擊者會使用自動化腳本來：
1. **輪換裝置特徵**：隨機 User-Agent、Device ID
2. **模擬真實行為**：調整請求間隔避免被偵測
3. **大量並發執行**：一台電腦同時運行多個模擬器
4. **持續性攻擊**：24/7 不間斷執行攻擊腳本

### 3. Token 竊取與重放攻擊

#### 攻擊流程
```
竊取途徑：
├── 中間人攻擊 (MITM)
├── 應用程式逆向工程
├── 記憶體 Dump 分析
├── 網路封包攔截
└── 社交工程攻擊
```

#### 重放攻擊原理

攻擊者在截獲合法請求後：
1. **提取認證資訊**：Bearer Token、Device ID、Session ID
2. **分析請求結構**：了解 API 參數格式
3. **重複使用 Token**：只要 Token 未過期,就能持續攻擊
4. **修改參數值**：保持認證不變,只修改業務參數

## 為何需要「裝置驗證」這一層安全防護

### 傳統防護的根本問題

#### 1. 身份驗證層級不足
```
傳統防護層級：
用戶認證 → API Key 驗證 → 業務邏輯處理

問題：
├── 缺乏裝置層面的驗證
├── 無法區分真實裝置與模擬器
├── 難以防範自動化攻擊
└── 容易被繞過或偽造
```

#### 2. 防護機制的盲點
| 防護機制 | 優點 | 局限性 | 可繞過方式 |
|---------|------|--------|-----------|
| API Key | 實作簡單 | 容易洩漏 | Key 竊取、內部洩漏 |
| Rate Limiting | 限制請求頻率 | 影響合法用戶 | 分散式攻擊、IP 輪換 |
| IP 白名單 | 來源控制 | 不適用移動端 | Proxy、VPN |
| CAPTCHA | 人機識別 | 影響用戶體驗 | 打碼服務、AI 破解 |

### 裝置驗證的核心價值

#### 1. 建立信任根 (Root of Trust)
```
裝置驗證信任鏈：
硬體安全模組 (HSM/TEE/Secure Enclave)
    ↓
裝置密碼學身份
    ↓
應用程式完整性證明
    ↓
API 請求驗證
```

#### 2. 多層防禦架構
```
第一層：人機識別 (reCAPTCHA)
├── 區分人類與機器人
├── 行為模式分析
└── 風險分數評估

第二層：裝置完整性 (Play Integrity / App Attest)
├── 驗證真實物理裝置
├── 檢查應用程式完整性
└── 確認執行環境安全性

第三層：業務邏輯驗證
├── 用戶權限檢查
├── 業務規則驗證
└── 異常行為偵測
```

#### 3. 攻擊成本提升
傳統攻擊成本：
- 取得 API Key：**低**
- 設置 Proxy Pool：**中**
- 編寫攻擊腳本：**低**

加入裝置驗證後：
- 取得真實裝置：**高**
- 破解硬體安全模組：**極高**
- 偽造裝置完整性證明：**幾乎不可能**

## 防禦思路演進

### 階段一：被動防禦

**傳統被動防禦的核心邏輯：**
1. 檢查 API Key 有效性
2. 基於 IP 的 Rate Limiting
3. 基本參數格式驗證

**特點：**
- 反應式防護,攻擊發生後才能偵測
- 容易被繞過
- 可能影響正常用戶體驗

### 階段二：主動防禦

**現代主動防禦的核心邏輯：**
1. **人機驗證**：reCAPTCHA 風險評分
2. **裝置完整性**：驗證請求來自真實裝置
3. **行為分析**：偵測異常使用模式

**特點：**
- 預防式防護,在攻擊前建立防線
- 多層次驗證機制
- 動態風險評估

## 實際部署考量

### 1. 段階式實施策略
```
階段 1：基礎防護 (立即實施)
├── 部署 reCAPTCHA Enterprise
├── 強化 Rate Limiting
└── 加強 API Key 管理

階段 2：裝置驗證 (中期目標)
├── Android: Google Play Integrity
├── iOS: Apple App Attest
└── Web: Enhanced reCAPTCHA

階段 3：智慧防禦 (長期規劃)
├── 機器學習風險模型
├── 行為分析引擎
└── 自動化響應機制
```

### 2. 成本效益分析
| 防護機制 | 實施成本 | 維護成本 | 防護效果 | ROI |
|---------|---------|---------|---------|-----|
| reCAPTCHA | 低 | 低 | 中 | 高 |
| Play Integrity | 中 | 中 | 高 | 中 |
| App Attest | 高 | 中 | 極高 | 中 |
| 智慧防禦 | 極高 | 高 | 極高 | 低 |

### 3. 用戶體驗平衡
```
防護強度 vs 用戶體驗：
高風險操作 (轉帳、登入) → 高防護強度，可接受較複雜驗證
中風險操作 (註冊、發送 SMS) → 中等防護，平衡安全與便利性
低風險操作 (查詢、瀏覽) → 輕量防護，優先考慮用戶體驗
```

## 小結

API 安全威脅不斷演進，從簡單的暴力攻擊到精密的模擬器攻擊，攻擊者的手段日益複雜。傳統的防護機制雖然有其價值，但已無法單獨應對現代威脅。

**裝置驗證**代表了 API 安全防護的新思維：
1. **從被動到主動**：不再等待攻擊發生，而是主動驗證請求來源的可信度
2. **從單點到多層**：建立多層次的防禦體系，提高攻擊難度
3. **從靜態到動態**：根據威脅情況動態調整防護策略

在下一篇文章中，我們將深入探討 reCAPTCHA、Play Integrity 和 App Attest 這三大驗證機制的定位與差異，以及它們如何共同構建完整的安全防護體系。

---

**系列**: API 安全背景與驗證框架 (1/5)
**關鍵詞**: API 安全, 攻擊模型, 裝置驗證, 防禦思路