# Performing Mobile Device Forensics With Cellebrite

> 使用 Cellebrite UFED 和开源工具获取和分析移动设备数据，提取通信记录、位置数据和应用程序制品。

- Skill: `killvxk/performing-mobile-device-forensics-with-cellebrite` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add killvxk/performing-mobile-device-forensics-with-cellebrite`
- Raw SKILL.md: https://api.skillmd.com/api/skills/killvxk/performing-mobile-device-forensics-with-cellebrite/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: Apache-2.0
- Author: killvxk (https://skillmd.com/u/killvxk)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/killvxk/performing-mobile-device-forensics-with-cellebrite

---


# 使用 Cellebrite 执行移动设备取证

## 适用场景
- 在调查期间从智能手机或平板电脑中提取证据时
- 需要从移动设备中恢复已删除的消息、通话记录和位置数据时
- 在涉及即时通讯应用通信的调查中
- 分析移动应用数据以寻找犯罪活动证据时
- 涉及员工移动设备滥用的企业调查中

## 前置条件
- Cellebrite UFED Touch/4PC 或 UFED Physical Analyzer（需授权）
- 替代开源工具：ALEAPP、iLEAPP、MEAT、libimobiledevice
- 目标设备适用的线缆和转接头
- 法拉第袋（Faraday bag）用于隔离设备网络信号
- 法律授权（搜查令、当事人同意或企业政策）
- 了解 iOS 和 Android 文件系统结构

## 工作流程

### 步骤 1：准备设备并隔离

```bash
# 关键：立即将设备置于飞行模式或法拉第袋中
# 防止远程擦除命令和额外数据变更

# 获取前记录设备状态
# 记录：品牌、型号、IMEI、序列号、操作系统版本、屏幕锁定状态
# 从各角度拍摄设备照片

# 对于 Android - 如可访问则启用 USB 调试
# 设置 > 开发者选项 > USB 调试 > 启用

# 对于 iOS - 信任取证工作站
# 设备提示时点击"信任此电脑"

# 若设备已锁定，记录锁定类型（PIN、图案、生物识别）
# Cellebrite UFED 可根据设备型号绕过某些锁定类型

# 安装开源工具作为替代方案
pip install aleapp    # Android 日志事件和 Protobuf 解析器（Android Logs Events And Protobuf Parser）
pip install ileapp    # iOS 日志事件和属性解析器（iOS Logs Events And Properties Parser）
sudo apt-get install libimobiledevice-utils  # Linux 上的 iOS 获取工具
```

### 步骤 2：执行设备获取

```bash
# === Cellebrite UFED 获取 ===
# 1. 启动 UFED 4PC 或连接 UFED Touch
# 2. 选择设备 > 自动识别设备型号
# 3. 选择提取类型：
#    - 逻辑提取（Logical）：应用数据、联系人、消息、通话记录（最快，数据最少）
#    - 文件系统提取（File System）：完整文件系统访问，包含数据库
#    - 物理提取（Physical）：包含已删除和未分配数据的逐位镜像（最完整）
#    - 高级模式（Checkm8/GrayKey）：针对已锁定 iOS 设备（特定型号）
# 4. 选择输出格式和目标位置
# 5. 开始提取

# === 使用 libimobiledevice 进行开源 iOS 获取 ===
# 列出已连接的 iOS 设备
idevice_id -l

# 获取设备信息
ideviceinfo -u <UDID>

# 创建 iOS 备份（逻辑获取）
idevicebackup2 backup --full /cases/case-2024-001/mobile/ios_backup/

# 加密备份（包含更多数据，如密码）
idevicebackup2 backup --full --password /cases/case-2024-001/mobile/ios_backup/

# === 使用 ADB 进行 Android 获取 ===
# 列出已连接设备
adb devices

# 完整备份（需要解锁屏幕）
adb backup -apk -shared -all -f /cases/case-2024-001/mobile/android_backup.ab

# 提取特定应用数据
adb shell pm list packages | grep -i "whatsapp\|telegram\|signal"
adb pull /data/data/com.whatsapp/ /cases/case-2024-001/mobile/whatsapp/

# 对于已 root 的 Android 设备 - 完整文件系统
adb shell "su -c 'dd if=/dev/block/mmcblk0 bs=4096'" | \
   dd of=/cases/case-2024-001/mobile/android_physical.dd

# 对获取结果进行哈希验证
sha256sum /cases/case-2024-001/mobile/*.dd > /cases/case-2024-001/mobile/acquisition_hashes.txt
```

### 步骤 3：使用 ALEAPP（Android）或 iLEAPP（iOS）分析

```bash
# === 使用 ALEAPP 分析 Android ===
# ALEAPP 处理 Android 文件系统提取结果
python3 -m aleapp \
   -t fs \
   -i /cases/case-2024-001/mobile/android_extraction/ \
   -o /cases/case-2024-001/analysis/aleapp_report/

# ALEAPP 提取并报告的内容：
# - 通话记录、短信/彩信消息
# - Chrome 浏览历史和搜索记录
# - WiFi 连接历史
# - 已安装应用程序
# - Google 账户活动
# - 位置数据（Google 地图、照片）
# - WhatsApp、Telegram、Signal 消息
# - 应用使用统计
# - 设备设置和账户

# === 使用 iLEAPP 分析 iOS ===
python3 -m ileapp \
   -t tar \
   -i /cases/case-2024-001/mobile/ios_backup.tar \
   -o /cases/case-2024-001/analysis/ileapp_report/

# iLEAPP 提取并报告的内容：
# - iMessage 和短信消息
# - Safari 浏览历史
# - WiFi 和蓝牙连接
# - 健康数据和位置历史
# - 应用使用情况（KnowledgeC）
# - 含 EXIF/GPS 数据的照片
# - 备忘录、日历、提醒事项
# - 钥匙串数据（如可解密）
# - 屏幕时间数据
```

### 步骤 4：提取通信和即时消息数据

```bash
# 从 Android 提取 WhatsApp 消息
python3 << 'PYEOF'
import sqlite3
import os

# WhatsApp 数据库位置
db_path = "/cases/case-2024-001/mobile/android_extraction/data/data/com.whatsapp/databases/msgstore.db"

if os.path.exists(db_path):
    conn = sqlite3.connect(db_path)
    cursor = conn.cursor()

    # 提取消息
    cursor.execute("""
        SELECT
            key_remote_jid AS contact,
            CASE WHEN key_from_me = 1 THEN 'SENT' ELSE 'RECEIVED' END AS direction,
            data AS message_text,
            datetime(timestamp/1000, 'unixepoch') AS msg_time,
            media_mime_type,
            media_size
        FROM messages
        WHERE data IS NOT NULL
        ORDER BY timestamp DESC
        LIMIT 1000
    """)

    with open('/cases/case-2024-001/analysis/whatsapp_messages.csv', 'w') as f:
        f.write("contact,direction,message,timestamp,media_type,media_size\n")
        for row in cursor.fetchall():
            f.write(','.join(str(x) for x in row) + '\n')

    conn.close()
    print("WhatsApp messages extracted successfully")
PYEOF

# 从 iOS sms.db 提取 iMessage/SMS
python3 << 'PYEOF'
import sqlite3

db_path = "/cases/case-2024-001/mobile/ios_extraction/HomeDomain/Library/SMS/sms.db"

conn = sqlite3.connect(db_path)
cursor = conn.cursor()

cursor.execute("""
    SELECT
        h.id AS phone_number,
        CASE WHEN m.is_from_me = 1 THEN 'SENT' ELSE 'RECEIVED' END AS direction,
        m.text,
        datetime(m.date/1000000000 + 978307200, 'unixepoch') AS msg_time,
        m.service
    FROM message m
    JOIN handle h ON m.handle_id = h.ROWID
    ORDER BY m.date DESC
""")

with open('/cases/case-2024-001/analysis/imessage_sms.csv', 'w') as f:
    f.write("phone,direction,text,timestamp,service\n")
    for row in cursor.fetchall():
        f.write(','.join(str(x) for x in row) + '\n')

conn.close()
PYEOF
```

### 步骤 5：提取位置数据并生成报告

```bash
# 从照片提取 GPS 数据
pip install pillow
python3 << 'PYEOF'
from PIL import Image
from PIL.ExifTags import TAGS, GPSTAGS
import os, json

def get_gps(exif_data):
    gps_info = {}
    for key, val in exif_data.items():
        decoded = GPSTAGS.get(key, key)
        gps_info[decoded] = val

    if 'GPSLatitude' in gps_info and 'GPSLongitude' in gps_info:
        lat = gps_info['GPSLatitude']
        lon = gps_info['GPSLongitude']
        lat_val = lat[0] + lat[1]/60 + lat[2]/3600
        lon_val = lon[0] + lon[1]/60 + lon[2]/3600
        if gps_info.get('GPSLatitudeRef') == 'S': lat_val = -lat_val
        if gps_info.get('GPSLongitudeRef') == 'W': lon_val = -lon_val
        return lat_val, lon_val
    return None

locations = []
photo_dir = "/cases/case-2024-001/mobile/ios_extraction/CameraRollDomain/Media/DCIM/"
for root, dirs, files in os.walk(photo_dir):
    for fname in files:
        if fname.lower().endswith(('.jpg', '.jpeg', '.heic')):
            try:
                img = Image.open(os.path.join(root, fname))
                exif = img._getexif()
                if exif and 34853 in exif:
                    coords = get_gps(exif[34853])
                    if coords:
                        locations.append({'file': fname, 'lat': coords[0], 'lon': coords[1]})
            except Exception:
                pass

with open('/cases/case-2024-001/analysis/photo_locations.json', 'w') as f:
    json.dump(locations, f, indent=2)
print(f"找到 {len(locations)} 张带地理标记的照片")
PYEOF

# 从 Android 提取位置历史（Google 位置历史）
# 文件：/data/data/com.google.android.gms/databases/lbs.db
# 或导出的 Google Takeout 位置数据
```

## 关键概念

| 概念 | 描述 |
|------|------|
| 逻辑提取（Logical extraction） | 通过设备 API 提取可访问的用户数据（联系人、消息、照片） |
| 文件系统提取（File system extraction） | 完整访问设备文件系统，包括应用数据库 |
| 物理提取（Physical extraction） | 包含已删除和未分配数据的设备存储逐位复制 |
| UFED | 通用取证提取设备（Universal Forensic Extraction Device）—— Cellebrite 的旗舰获取平台 |
| ADB | Android 调试桥（Android Debug Bridge），用于与 Android 设备通信 |
| KnowledgeC | iOS 数据库，记录详细的应用程序和设备使用模式 |
| SQLite 数据库 | 移动应用数据的主要存储格式（消息、联系人、历史记录） |
| Checkm8 | 基于硬件的 iOS 漏洞利用，可对 A5-A11 设备执行提取 |

## 工具与系统

| 工具 | 用途 |
|------|------|
| Cellebrite UFED | 商业移动设备获取和分析平台 |
| Cellebrite Physical Analyzer | 移动设备提取结果深度分析 |
| ALEAPP | 开源 Android 制品解析器和报告生成器 |
| iLEAPP | 开源 iOS 制品解析器和报告生成器 |
| libimobiledevice | 开源 iOS 通信库 |
| Magnet AXIOM | 商业移动端和计算机取证平台 |
| MEAT | 移动证据获取工具包（Mobile Evidence Acquisition Toolkit） |
| ADB | Android 调试桥，用于设备交互和数据提取 |

## 常见场景

**场景 1：刑事通信调查**
使用 UFED 物理提取获取设备，解密即时通讯数据库，提取 WhatsApp/Telegram/Signal 对话，从 WAL 文件中恢复已删除消息，建立通信时间线，导出供法律诉讼使用。

**场景 2：员工通过私人手机窃取数据**
在员工同意下执行逻辑提取，分析企业邮件和云存储应用数据，检查机密文件截图，审查文件传输应用活动，查看浏览器历史中的云上传记录。

**场景 3：失踪人员位置追踪**
提取 Google 位置历史中的位置数据，解析照片中的 GPS 数据，分析 WiFi 连接历史以确定最后已知位置，检查健身应用数据获取移动轨迹，查看即时通讯应用中的最后通信记录。

**场景 4：儿童剥削调查**
物理提取保留所有数据，包括已删除内容；对所有图像与 NCMEC/ICSE 数据库进行哈希比对；提取通信记录；从未分配空间恢复已删除媒体；严格记录证据保管链以备起诉。

## 输出格式

```
移动取证摘要：
  设备：          Samsung Galaxy S23 Ultra（SM-S918B）
  操作系统：      Android 14，One UI 6.0
  IMEI：          353456789012345
  提取方式：      物理提取（通过 Cellebrite UFED）
  耗时：          45 分钟

  已提取数据：
    联系人：        1,234 条
    通话记录：      5,678 条
    短信/彩信：     3,456 条
    WhatsApp 消息： 12,345 条（234 条已删除已恢复）
    Telegram 消息： 2,345 条
    照片/视频：     4,567 个（345 个含地理标记）
    浏览历史：      2,345 条 URL
    WiFi 网络：     67 个已保存连接
    已安装应用：    145 个

  关键发现：
    - 已恢复与嫌疑人的已删除 WhatsApp 对话
    - 23 张在案发现场拍摄的含地理标记照片
    - 与调查对象相关的浏览器搜索记录
    - 事件期间使用了 Signal 应用（已加密，部分恢复）

  报告：
    ALEAPP 报告：  /analysis/aleapp_report/index.html
    消息导出：     /analysis/whatsapp_messages.csv
    位置数据：     /analysis/photo_locations.json
```

