mcpField
P
performing-mobile-device-forensics-with-cellebrite

performing-mobile-device-forensics-with-cellebrite

github.com/mukul975安全35.2k69 次安装8 周前更新
代码仓库

关于 performing-mobile-device-forensics-with-cellebrite

面向移动设备取证调查人员的 Cellebrite 操作与分析技能,涵盖设备采集、通信和位置数据提取,以及证据报告。

主要功能

  1. 01准备并隔离待检设备
  2. 02使用 UFED 执行数据采集
  3. 03用 ALEAPP 或 iLEAPP 分析提取物
  4. 04提取通信与消息数据
  5. 05解析位置数据并生成报告

适用场景

  1. 01调查手机中的通信记录
  2. 02分析员工设备上的数据活动
  3. 03从设备数据中追踪可能位置
  4. 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 外,安装时一起下载的参考资料和脚本。

LICENSE
references/
api-reference.md
scripts/
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