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. 02UFEDによるデータ取得
  3. 03ALEAPPまたは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 を通じてアクセス可能なユーザーデータ(連絡先、メッセージ、写真)を抽出します
ファイルシステム抽出アプリのデータベースを含む、デバイスのファイルシステム全体にアクセスします
物理抽出削除済みデータや未割り当てデータを含む、デバイスストレージのビット単位のコピーです
UFEDUniversal Forensic Extraction Device — Cellebrite の主力データ取得プラットフォームです
ADBAndroid デバイスとの通信に使用する Android Debug Bridge です
KnowledgeCアプリやデバイスの詳細な使用パターンを記録する iOS データベースです
SQLite データベースモバイルアプリデータ(メッセージ、連絡先、履歴)の主な保存形式です
Checkm8A5~A11 デバイスでのデータ抽出を可能にするハードウェアベースの iOS エクスプロイトです

ツールとシステム

ツール用途
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 ロケーション履歴から位置情報を抽出し、写真の GPS データを解析します。既知の最終位置を特定するため Wi-Fi 接続履歴を分析し、移動パターンを調べるためフィットネスアプリのデータを確認して、最後の通信を調べるためメッセージングアプリを確認します。

シナリオ 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

コメント