performing-mobile-device-forensics-with-cellebrite
使用 Cellebrite UFED 和开源工具获取和分析移动设备数据,提取通信记录、位置数据和应用程序制品。
Best use case
performing-mobile-device-forensics-with-cellebrite is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
使用 Cellebrite UFED 和开源工具获取和分析移动设备数据,提取通信记录、位置数据和应用程序制品。
Teams using performing-mobile-device-forensics-with-cellebrite should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/performing-mobile-device-forensics-with-cellebrite/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How performing-mobile-device-forensics-with-cellebrite Compares
| Feature / Agent | performing-mobile-device-forensics-with-cellebrite | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
使用 Cellebrite UFED 和开源工具获取和分析移动设备数据,提取通信记录、位置数据和应用程序制品。
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# 使用 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
```Related Skills
testing-mobile-api-authentication
测试移动应用 API 的认证与授权机制,识别认证失效、不安全的令牌管理、会话固定、 权限提升和 IDOR 漏洞。适用于对移动应用后端进行 API 安全评估、测试 JWT 实现、 评估 OAuth 流程或评估会话管理的场景。适合涉及移动 API 认证测试、令牌安全评估、 OAuth 移动端流程测试或 API 授权绕过的相关请求。
performing-yara-rule-development-for-detection
通过识别可执行文件中的唯一字节模式、字符串和行为指标,开发精准的 YARA 恶意软件检测规则,同时将误报率降至最低。
performing-wireless-security-assessment-with-kismet
使用 Kismet 通过被动射频监控进行无线网络安全评估,检测流氓接入点(Rogue AP)、隐藏 SSID、弱加密和未授权客户端。
performing-wireless-network-penetration-test
执行无线网络渗透测试,通过捕获握手包、破解 WPA2/WPA3 密钥、检测流氓接入点以及使用 Aircrack-ng 和相关工具测试无线网络分段,评估 WiFi 安全性。
performing-windows-artifact-analysis-with-eric-zimmerman-tools
使用 Eric Zimmerman 的开源 EZ Tools 套件(包括 KAPE、MFTECmd、PECmd、LECmd、JLECmd 和 Timeline Explorer)执行全面的 Windows 取证制品分析,解析注册表 hive、预取文件、事件日志和文件系统元数据。
performing-wifi-password-cracking-with-aircrack
在授权无线安全评估中捕获 WPA/WPA2 握手包,并使用 aircrack-ng、hashcat 和字典攻击进行离线密码破解, 以评估密码短语强度和无线网络安全状况。
performing-web-cache-poisoning-attack
在授权安全测试期间,通过未纳入缓存键的头部和参数毒化缓存响应,利用 Web 缓存机制向其他用户投递恶意内容。
performing-web-cache-deception-attack
通过利用 CDN 缓存层与源服务器之间的路径规范化差异,执行 Web 缓存欺骗攻击,从而缓存并获取敏感的已认证内容。
performing-web-application-vulnerability-triage
使用 OWASP 风险评级方法论对 DAST/SAST 扫描器的 Web 应用程序漏洞发现进行分类,区分真阳性和假阳性,并确定修复优先级。
performing-web-application-scanning-with-nikto
Nikto 是一款开源 Web 服务器和 Web 应用程序扫描器,可针对超过 7,000 个潜在危险文件/程序进行测试,检查超过 1,250 个服务器的过期版本,并识别超过 270 个服务器的版本特定问题。
performing-web-application-penetration-test
遵循 OWASP Web 安全测试指南(WSTG)方法论,对 Web 应用程序执行系统化安全测试,识别认证、授权、 输入验证、会话管理和业务逻辑中的漏洞。测试人员以 Burp Suite 作为主要拦截代理,结合手动测试技术 发现自动化扫描器遗漏的缺陷。适用于 Web 应用渗透测试、OWASP 测试、应用安全评估或 Web 漏洞测试等请求场景。
performing-web-application-firewall-bypass
使用编码技术、HTTP 方法操控、参数污染和载荷混淆绕过 Web 应用防火墙保护,将 SQL 注入、XSS 及其他攻击载荷穿透 WAF 检测规则。