关于 performing-mobile-device-forensics-with-cellebrite
面向移动设备取证调查人员的 Cellebrite 操作与分析技能,涵盖设备采集、通信和位置数据提取,以及证据报告。
主要功能
- 01准备并隔离待检设备
- 02使用 UFED 执行数据采集
- 03用 ALEAPP 或 iLEAPP 分析提取物
- 04提取通信与消息数据
- 05解析位置数据并生成报告
适用场景
- 01调查手机中的通信记录
- 02分析员工设备上的数据活动
- 03从设备数据中追踪可能位置
- 04整理移动设备取证结果
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mukul975/ anthropic-cybersecurity-skills --skill performing-mobile-device-forensics-with-cellebrite安装后在 Claude Code 中输入/performing-mobile-device-forensics-with-cellebrite确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
LICENSEreferences/api-reference.mdscripts/agent.py详细介绍
使用 Cellebrite 进行移动设备取证
适用场景
- 调查期间从智能手机或平板电脑提取证据时
- 从移动设备中恢复已删除的消息、通话记录和位置数据时
- 调查涉及通过即时消息应用进行的通信时
- 分析移动应用数据以寻找犯罪活动证据时
- 开展涉及员工滥用移动设备的企业调查时
前提条件
- Cellebrite UFED Touch/4PC 或 UFED Physical Analyzer(已获许可)
- 可选的开源工具:ALEAPP、iLEAPP、MEAT、libimobiledevice
- 适用于目标设备的线缆和转接头
- 用于隔离设备网络信号的法拉第袋
- 法律授权(搜查令、同意书或企业政策)
- 了解 iOS 和 Android 文件系统结构
工作流
第 1 步:准备设备并进行隔离
# CRITICAL: Immediately place device in airplane mode or Faraday bag
# This prevents remote wipe commands and additional data changes
# Document device state before acquisition
# Record: make, model, IMEI, serial number, OS version, screen lock status
# Photograph the device from all angles
# For Android - Enable USB debugging if accessible
# Settings > Developer Options > USB Debugging > Enable
# For iOS - Trust the forensic workstation
# When prompted on device, tap "Trust This Computer"
# If device is locked, document lock type (PIN, pattern, biometric)
# Cellebrite UFED can bypass certain lock types depending on device model
# Install open-source tools as alternatives
pip install aleapp # Android Logs Events And Protobuf Parser
pip install ileapp # iOS Logs Events And Properties Parser
sudo apt-get install libimobiledevice-utils # iOS acquisition on Linux
第 2 步:执行设备采集
# === Cellebrite UFED Acquisition ===
# 1. Launch UFED 4PC or connect UFED Touch
# 2. Select Device > Identify device model automatically
# 3. Choose extraction type:
# - Logical: App data, contacts, messages, call logs (fastest, least data)
# - File System: Full file system access including databases
# - Physical: Bit-for-bit image including deleted data (most complete)
# - Advanced (Checkm8/GrayKey): For locked iOS devices (specific models)
# 4. Select output format and destination
# 5. Begin extraction
# === Open-source iOS acquisition with libimobiledevice ===
# List connected iOS devices
idevice_id -l
# Get device information
ideviceinfo -u <UDID>
# Create iOS backup (logical acquisition)
idevicebackup2 backup --full /cases/case-2024-001/mobile/ios_backup/
# For encrypted backups (contains more data including passwords)
idevicebackup2 backup --full --password /cases/case-2024-001/mobile/ios_backup/
# === Android acquisition with ADB ===
# List connected devices
adb devices
# Full backup (requires screen unlock)
adb backup -apk -shared -all -f /cases/case-2024-001/mobile/android_backup.ab
# Extract specific app data
adb shell pm list packages | grep -i "whatsapp\|telegram\|signal"
adb pull /data/data/com.whatsapp/ /cases/case-2024-001/mobile/whatsapp/
# For rooted Android devices - full filesystem
adb shell "su -c 'dd if=/dev/block/mmcblk0 bs=4096'" | \
dd of=/cases/case-2024-001/mobile/android_physical.dd
# Hash the acquisition
sha256sum /cases/case-2024-001/mobile/*.dd > /cases/case-2024-001/mobile/acquisition_hashes.txt
第 3 步:使用 ALEAPP(Android)或 iLEAPP(iOS)进行分析
# === Android analysis with ALEAPP ===
# ALEAPP processes Android file system extractions
python3 -m aleapp \
-t fs \
-i /cases/case-2024-001/mobile/android_extraction/ \
-o /cases/case-2024-001/analysis/aleapp_report/
# ALEAPP extracts and reports on:
# - Call logs, SMS/MMS messages
# - Chrome browser history and searches
# - WiFi connection history
# - Installed applications
# - Google account activity
# - Location data (Google Maps, Photos)
# - WhatsApp, Telegram, Signal messages
# - App usage statistics
# - Device settings and accounts
# === iOS analysis with iLEAPP ===
python3 -m ileapp \
-t tar \
-i /cases/case-2024-001/mobile/ios_backup.tar \
-o /cases/case-2024-001/analysis/ileapp_report/
# iLEAPP extracts and reports on:
# - iMessage and SMS messages
# - Safari browsing history
# - WiFi and Bluetooth connections
# - Health data and location history
# - App usage (KnowledgeC)
# - Photos with EXIF/GPS data
# - Notes, Calendar, Reminders
# - Keychain data (if decryptable)
# - Screen time data
第 4 步:提取通信和消息数据
# Extract WhatsApp messages from Android
python3 << 'PYEOF'
import sqlite3
import os
# WhatsApp database location
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()
# Extract messages
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
# Extract iOS iMessage/SMS from sms.db
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 步:提取位置数据并生成报告
# Extract GPS data from photos
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"Found {len(locations)} geotagged photos")
PYEOF
# Extract location history from Google Location History (Android)
# File: /data/data/com.google.android.gms/databases/lbs.db
# or exported Google Takeout location data
关键概念
| 概念 | 描述 |
|---|---|
| 逻辑提取 | 通过设备 API 提取可访问的用户数据(联系人、消息、照片) |
| 文件系统提取 | 完整访问设备文件系统,包括应用数据库 |
| 物理提取 | 对设备存储进行逐位复制,包括已删除和未分配数据 |
| UFED | 通用取证提取设备(Universal Forensic Extraction Device)——Cellebrite 的旗舰采集平台 |
| ADB | 用于与 Android 设备通信的 Android Debug Bridge |
| KnowledgeC | 用于跟踪详细应用和设备使用模式的 iOS 数据库 |
| SQLite 数据库 | 移动应用数据(消息、联系人、历史记录)的主要存储格式 |
| Checkm8 | 基于硬件的 iOS 漏洞利用,可在 A5-A11 设备上进行提取 |
工具和系统
| 工具 | 用途 |
|---|---|
| Cellebrite UFED | 商业移动设备采集和分析平台 |
| Cellebrite Physical Analyzer | 深入分析移动设备提取的数据 |
| ALEAPP | 开源 Android 取证痕迹解析器和报告生成器 |
| iLEAPP | 开源 iOS 取证痕迹解析器和报告生成器 |
| libimobiledevice | 开源 iOS 通信库 |
| Magnet AXIOM | 商业移动设备和计算机取证平台 |
| MEAT | 移动证据采集工具包 |
| ADB | 用于设备交互和数据提取的 Android Debug Bridge |
常见场景
场景 1:刑事通信调查 使用 UFED 执行物理提取以采集设备,解密消息数据库,提取 WhatsApp/Telegram/Signal 对话,从 WAL 文件中恢复已删除的消息,建立通信时间线,并导出以用于法律诉讼。
场景 2:通过个人手机窃取员工数据 征得员工同意后执行逻辑提取,分析企业邮件和云存储应用数据,检查是否存在机密文件的截图,审查文件传输应用活动,并检查浏览器历史记录中的云端上传记录。
场景 3:失踪人员位置追踪 从 Google Location History 提取位置数据,解析照片中的 GPS 数据,分析 WiFi 连接历史以查找最后已知位置,检查健身应用数据中的移动模式,并查看消息应用中的最后通信记录。
场景 4:儿童剥削调查 执行物理提取以保留所有数据,包括已删除内容;将所有图像与 NCMEC/ICSE 数据库进行哈希比对;提取通信记录;从未分配空间恢复已删除媒体;为起诉工作细致记录保管链。
输出格式
Mobile Forensics Summary:
Device: Samsung Galaxy S23 Ultra (SM-S918B)
OS: Android 14, One UI 6.0
IMEI: 353456789012345
Extraction: Physical (via Cellebrite UFED)
Duration: 45 minutes
Extracted Data:
Contacts: 1,234
Call Logs: 5,678
SMS/MMS: 3,456
WhatsApp Msgs: 12,345 (234 deleted, recovered)
Telegram Msgs: 2,345
Photos/Videos: 4,567 (345 geotagged)
Browser History: 2,345 URLs
WiFi Networks: 67 saved connections
Installed Apps: 145
Key Findings:
- Deleted WhatsApp conversation with suspect recovered
- 23 geotagged photos at crime scene location
- Browser searches related to investigation subject
- Signal app used during incident timeframe (encrypted, partial recovery)
Reports:
ALEAPP Report: /analysis/aleapp_report/index.html
Messages Export: /analysis/whatsapp_messages.csv
Locations: /analysis/photo_locations.json
评论
支持 Markdown