Chrome Forensic - CVE-2024-0044 安卓浏览器取证分析工具

3 阅读6分钟

🔍 Chrome Forensic - CVE-2024-0044

一款专业的安卓Chrome浏览器数字取证工具 | 基于CVE-2024-0044漏洞实现非Root设备数据提取

Version转存失败,建议直接上传图片文件 Author转存失败,建议直接上传图片文件 Platform转存失败,建议直接上传图片文件

📋 项目概述

本项目是一个专为数字取证调查设计的专业工具,利用 CVE-2024-0044 (Run-as) 漏洞,绕过安卓12/13设备的权限限制,实现对Google Chrome浏览器数据的深度提取与分析。该工具无需Root权限,即可完整解析Chrome的SQLite数据库,生成详细的取证报告,帮助安全专家快速定位关键证据和可疑行为。

✨ 功能特性

  • 深度数据提取:自动扫描并提取 Chrome 的多个核心数据库文件,包括历史记录、Cookie、登录凭证和自动填充数据。
  • 智能报告生成:将所有提取的数据整合至一个结构化的 Excel 报告 (result_chrome_forensic.xlsx) 中,包含多个数据表,便于查阅和分析。
  • 可疑行为标记:内置敏感关键词库(如 hacktorbank),自动对URL进行匹配,并在报告中生成“警报”页,高亮潜在的可疑活动。
  • 自动化取证流程:从递归扫描数据库文件到数据解析和报告输出,实现全流程自动化。
  • 非Root设备支持:利用 CVE-2024-0044 漏洞,解决了传统取证在较新安卓版本上需要Root权限的痛点。
  • 多维度分析
    • 📖 浏览历史:详细的时间线,包含访问时间、URL、页面标题。
    • 📈 站点分析:统计并排序最常访问的域名。
    • ⚠️ 安全警报:自动标记与恶意软件、敏感内容相关的访问记录。
    • 📥 下载记录:提取下载文件的名称、路径和大小。
    • 🔍 搜索词条:获取用户在地址栏或搜索引擎中输入的查询词。
    • 🍪 会话数据:提取Cookie信息,包括会话令牌(十六进制加密)。
    • ✍️ 自动填充:恢复浏览器保存的表单数据,如姓名、地址等。

🔧 安装指南

系统要求

  • 操作系统:Windows / Linux / macOS
  • 目标设备:已开启USB调试的Android 12/13手机
  • Python版本:3.6 或更高

分步安装

  1. 克隆仓库

    git clone https://github.com/JackTekno/Chrome-Forensic_CVE-2024-0044.git
    cd Chrome-Forensic_CVE-2024-0044
    
  2. 安装依赖 项目依赖 pandascoloramaopenpyxl (通常由pandas调用) 等库。使用以下命令一键安装:

    pip install -r requirements.txt
    

    如果项目未提供 requirements.txt,请手动安装核心依赖:

    pip install pandas colorama openpyxl
    

📖 使用说明

数据采集指南

  1. 连接设备:通过USB数据线将目标安卓手机连接到电脑,并确保已在手机上 启用“USB调试”模式
  2. 获取数据库文件:利用CVE-2024-0044漏洞,将Chrome的数据库文件从手机复制到您的电脑工作目录。具体命令可参考作者仓库的详细指南。
  3. 运行工具:将工具脚本放置在与数据库文件相同的目录下,或在运行前确保数据库文件位于当前目录或其子目录中。在终端执行:
    python chrome_forensic.py
    
  4. 查看报告:程序运行完毕后,会在当前目录生成 result_chrome_forensic.xlsx 文件。打开此文件即可查看所有解析后的数据。

代码示例

以下是如何快速开始取证的示例:

# 这仅仅是示意工具的内部工作流程,用户通常只需运行主脚本

# 1. 自动扫描当前目录下的所有Chrome数据库文件
found_dbs = find_database_files() 
print(f"找到数据库: {found_dbs}")

# 2. 解析History数据库
history_df = parse_history(found_dbs.get('History'))

# 3. 根据关键词标记可疑记录
suspicious_df = flag_suspicious_urls(history_df, SUSPICIOUS_KEYWORDS)

# 4. 将所有数据写入Excel报告
with pd.ExcelWriter('result_chrome_forensic.xlsx') as writer:
    history_df.to_excel(writer, sheet_name='Browsing History', index=False)
    suspicious_df.to_excel(writer, sheet_name='ALERTS - Suspicious', index=False)
    # ... 写入其他数据表

API 概览

核心脚本 chrome_forensic.py 提供了以下主要函数:

  • find_database_files(): 自动递归查找 History, Cookies, Web Data, Login Data 等目标数据库。
  • print_status(): 美化控制台输出,显示不同级别的日志信息。
  • (parse_*): 一系列内部函数(如解析History、Cookies)用于处理SQLite数据并将其转换为Pandas DataFrame,便于后续分析和导出。

💻 核心代码

1. 数据库自动发现器

此函数是取证的第一步,它通过递归遍历目录,智能定位Chrome的各类SQLite数据库文件,为后续的数据解析奠定基础。

# === CORE: 数据库自动发现器 ===
def find_database_files():
    """
    自动在当目录及所有子目录中搜索Chrome的数据库文件。
    例如:在模拟的安卓数据分区内查找 data/data/com.android.chrome/...
    """
    found_files = {}
    print_status("正在扫描目录,查找Chrome数据库...", "INFO")
    
    for root, dirs, files in os.walk("."):
        for key, target_name in TARGET_DB_NAMES.items():
            if target_name in files:
                # 构建文件的完整路径
                full_path = os.path.join(root, target_name)
                # 简单策略:优先选择包含'Default'路径的配置文件,否则使用第一个找到的
                if key not in found_files or 'Default' in root:
                    found_files[key] = full_path
                    print_status(f"找到 {key} 数据库: {full_path}", "SUCCESS")
    return found_files

2. 可疑URL标记器

此函数体现了工具的智能分析能力。它通过预定义的关键词库对提取出的URL进行匹配,自动筛选出高风险记录,极大提升了调查员的审查效率。

# === CORE: 可疑URL标记器 ===
# 全局定义的关键词库
SUSPICIOUS_KEYWORDS = [
    'hack', 'admin', 'login', 'password', 'tor', 'onion', 
    'shell', 'root', 'porn', 'bokep', 'bank', 'transfer', 
    'weapon', 'senjata', 'narkoba', 'drug', 'wa.me', 't.me'
]

def flag_suspicious_urls(history_df):
    """
    基于预定义的关键词列表,自动标记历史记录中的可疑URL。
    
    Args:
        history_df (pd.DataFrame): 包含 'url' 列的浏览历史DataFrame。
    
    Returns:
        pd.DataFrame: 仅包含被标记为可疑的URL的记录。
    """
    if history_df is None or history_df.empty:
        return pd.DataFrame()
    
    suspicious_records = []
    for index, row in history_df.iterrows():
        url = row.get('url', '')
        # 检查URL中是否包含任何可疑关键词
        if any(keyword in url.lower() for keyword in SUSPICIOUS_KEYWORDS):
            suspicious_records.append(row)
    
    return pd.DataFrame(suspicious_records)

3. 美观的控制台输出

该函数通过使用 colorama 库,为不同级别的日志信息(信息、成功、警告、错误)提供彩色输出,使得取证过程的可读性大大增强,方便用户实时监控工具状态。

# === CORE: 彩色控制台输出 ===
from colorama import init, Fore, Style
init(autoreset=True)

def print_status(msg, status='INFO'):
    """
    根据状态类型,打印带有颜色前缀的状态消息。
    
    Args:
        msg (str): 要打印的消息内容。
        status (str): 消息类型 ('INFO', 'SUCCESS', 'WARN', 'ERROR')。
    """
    if status == 'INFO':
        print(f"{Fore.CYAN}[*] {msg}")
    elif status == 'SUCCESS':
        print(f"{Fore.GREEN}[+] {msg}")
    elif status == 'WARN':
        print(f"{Fore.YELLOW}[!] {msg}")
    elif status == 'ERROR':
        print(f"{Fore.RED}[-] {msg}")
```FINISHED
6HFtX5dABrKlqXeO5PUv/0kuC9tuyONaib4sAXa62IUgNqEgqzCq+2sIyyTFI4kJ