cclgroupltd/mister-skinnylegs

GitHub: cclgroupltd/mister-skinnylegs

一个开放的浏览器取证插件框架,通过 CLI 从 Chrome/Chromium 和 Firefox 的 Profile 中自动解析和恢复各类 Web 应用的用户活动数据。

Stars: 20 | Forks: 3

``` ╔╦╗┬┌─┐┌┬┐┌─┐┬─┐ ║║║│└─┐ │ ├┤ ├┬┘ ╩ ╩┴└─┘ ┴ └─┘┴└─ ╔═╗┬┌─┬┌┐┌┌┐┌┬ ┬┬ ┌─┐┌─┐┌─┐ ╚═╗├┴┐│││││││└┬┘│ ├┤ │ ┬└─┐ ╚═╝┴ ┴┴┘└┘┘└┘ ┴ ┴─┘└─┘└─┘└─┘ ``` mister-skinnylegs 是一个开放的插件框架,用于解析浏览器数据中的网站/Web 应用 artifacts。 它目前提供了一个命令行界面(CLI),可用于针对 Chrome、Chromium 或 Mozilla Firefox 的 Profile Folder 运行插件。 ## 当前插件 | 插件文件 | 服务 | Artifact | 版本 | 描述 | |---------------------------|-----------------|---------------------------------------|--------|-----------------------------------------------------------------------------------------------------------| | binance_plugin.py | Binance | Binance User Details | 0.1 | 从 Cache 中恢复 Binance User Details 记录 | | binance_plugin.py | Binance | Binance Balances | 0.1 | 从 Cache 中恢复 Binance Balance 记录 | | bing_plugin.py | Bing | Bing searches | 0.2 | 从历史记录和 Cache 中的 URL 恢复 Bing 搜索记录 | | chatgpt_plugin.py | ChatGPT | ChatGPT Chat Information | 0.1 | 从 History 和 Cache 中恢复 ChatGPT 聊天信息 | | chatgpt_plugin.py | ChatGPT | ChatGPT User Information | 0.1 | 从 Cache 中恢复 ChatGPT 用户信息 | | coinbase_plugin.py | Coinbase | Coinbase Payment Methods | 0.1 | 从 Cache 中恢复 Coinbase Payment Methods 记录 | | coinbase_plugin.py | Coinbase | Coinbase User Details | 0.1 | 从 Cache 中恢复 Coinbase User Details 记录 | | coinbase_plugin.py | Coinbase | Coinbase Balances | 0.1 | 从 Cache 中恢复 Coinbase Balances 记录 | | coinbase_plugin.py | Coinbase | Coinbase Transactions | 0.1 | 从 Cache 中恢复 Coinbase Transactions 记录 | | deepseek_plugin.py | DeepSeek | DeepSeek User Information | 0.1 | 从 Cache 中恢复 DeepSeek 用户信息 | | deepseek_plugin.py | DeepSeek | DeepSeek Chat Sessions | 0.1 | 从 Cache 和 History 中恢复 DeepSeek Chat Sessions 记录 | | deepseek_plugin.py | DeepSeek | DeepSeek Chat Messages | 0.1 | 从 Cache 中恢复 DeepSeek 聊天消息 | | discord_plugin.py | Discord | Discord Chat Messages | 0.1 | 从 Cache 中恢复 Discord 聊天消息 | | dropbox_plugin.py | Dropbox | Dropbox Session Storage User Activity | 0.3 | 从 Session Storage 的 'uxa' 记录中恢复用户活动 | | dropbox_plugin.py | Dropbox | Dropbox File System | 0.2 | 从历史记录中的 URL 恢复部分文件系统 | | dropbox_plugin.py | Dropbox | Dropbox Thumbnails | 0.4 | 恢复存储在 Dropbox 中的文件缩略图 | | duckduckgo_plugin.py | Duckduckgo | Duckduckgo searches | 0.2 | 从历史记录和 Cache 中的 URL 恢复 Duckduckgo 搜索记录 | | google_drive_plugin.py | Google Drive | Google Drive Files and Folders | 0.2 | 从历史记录中恢复 Google Drive 和 Docs 文件夹及文件名称(和 URL) | | google_drive_plugin.py | Google Drive | Google Drive Thumbnails | 0.2 | 从 Cache 中恢复 Google Drive 缩略图 | | google_drive_plugin.py | Google Drive | Google Drive Usage | 0.2 | 恢复 Google Drive 使用情况的迹象 | | google_plugin.py | Google | Google searches | 0.5 | 从历史记录、Session Storage 和 Cache 中的 URL 恢复 Google 搜索记录 | | o365_sharepoint_plugin.py | O365-Sharepoint | O365-Sharepoint recent files | 0.2 | 从 Sharepoint 和 O365 在 Cache 中的 API 响应中恢复最近文件列表及任何缩略图 | | o365_sharepoint_plugin.py | O365-Sharepoint | O365-Sharepoint user activity | 0.2 | 恢复与 Sharepoint 和 O365 用户活动(查看、编辑、下载等)相关的 artifacts | | reddit_plugin.py | Reddit | Reddit Chat Messages | 0.2 | 从 Cache 和 IndexedDB 中恢复 Reddit 聊天消息 | | storage_dump_plugin.py | Data Dump | History | 0.2 | 转储 History Records | | storage_dump_plugin.py | Data Dump | Downloads | 0.2 | 转储 Download Records | | storage_dump_plugin.py | Data Dump | Localstorage | 0.2 | 转储 Localstorage Records | | storage_dump_plugin.py | Data Dump | Sessionstorage | 0.1 | 转储 Sessionstorage Records | ## CLI 工具 ### 设置 CLI 工具 该工具需要 [Python](https://python.org) 3.12 或更高版本。安装完成后,从该代码库下载代码并将其放入一个文件夹中。 该工具需要下载一些依赖项。我们建议为此使用 Python venv(虚拟环境)。 在包含源代码的文件夹的 shell 中,你可以执行以下操作(如果不在 Windows 上,请将“py”替换为“python”): ``` py -m venv .venv ./.venv/Scripts/activate pip install -r requirements.txt ``` 逐行说明如下: 1. 初始化一个新的 venv 2. 激活 venv 3. 安装 requirements.txt 文件中列出的依赖项 第一步和最后一步在每次安装时只需执行一次。中间步骤在你每次打开新 shell 运行该工具时都需要执行。 ### PowerShell 问题? 如果你使用的是 PowerShell 并在第二步收到错误消息,这通常是由于执行策略违规引起的。通常可以通过在上述操作之前执行以下命令来解决此问题: ``` Set-ExecutionPolicy -Scope Process -ExecutionPolicy Unrestricted ``` 并且为了安全起见,一旦你完成了操作,请将策略恢复为默认值: ``` Set-ExecutionPolicy -Scope Process -ExecutionPolicy Default ``` ### 使用 CLI 工具设置完成后,即可从命令行运行。命令行界面以要处理的浏览器类型开始,后跟特定于该浏览器的选项。该工具目前支持的浏览器类型有: * `chromium` * `mozilla` 要查看特定浏览器类型的命令行帮助,你可以使用 `--help` 命令行选项,例如: ``` py .\mister-skinnylegs.py chromium --help ``` 默认情况下,使用该工具将针对 profile folder 运行 `plugins` 文件夹中找到的所有插件,并在 output 文件夹中生成输出。所有插件至少会为每个 artifact 生成一个 JSON 文件,但也可能会根据插件创建其他输出。在当前版本中,如果你想从流程中省略某个插件,则需要将其从 `plugins` 文件夹中移除。 #### chromium 此模式旨在用于处理来自 Chrome 以及其他基于 Chromium 且紧密遵循 Chrome 关键 artifacts 实现的浏览器(例如 Edge)的数据。 它需要两个参数: * `-p ` * `-o ` *(注意:输出路径的文件夹应该尚不存在)。* 它还可以选择使用以下参数: * `-c ` cache folder 参数用于当你需要将工具指向位于 profile folder 之外的 Cache 文件夹时(例如在 Android 情况下)。 示例: ``` py .\mister-skinnylegs.py chromium -p "c:\Users\you\AppData\Local\Google\Chrome\User Data\Profile 1" -o .\output_folder ``` #### mozilla 此模式旨在用于处理来自 Mozilla Firefox 浏览器或基于 Firefox 且紧密遵循 Firefox 数据布局的其他浏览器的数据。 它需要三个参数: * `-p ` * `-c ` * `-o ` *(注意:输出路径的文件夹应该尚不存在)。* 示例: ``` py .\mister-skinnylegs.py mozilla -p "C:\Users\you\AppData\Roaming\Mozilla\Firefox\Profiles\a4pugz09.default-release" -c "C:\Users\you\AppData\Local\Mozilla\Firefox\Profiles\a4pugz09.default-release\cache2" -o .\output_folder ``` ### 插件 Mister Skinnylegs 插件由放置在 `plugins` 文件夹中的 Python 模块表示。插件的文件名应以 `_plugin.py` 结尾,例如 `cool_website_plugin.py`。每个插件都可以包含用于处理多个 *artifacts* 的功能。 每个插件文件都必须包含一个名为 `__artifacts__` 的模块级变量。该变量应指向一个由 `ArtifactSpec` 对象组成的可迭代对象(建议使用元组)。例如: ``` __artifacts__ = ( ArtifactSpec( "Example Service", "Example artifact 1", "Description of this artifact goes here", "0.1.0", example_artifact1_func, ReportPresentation.table ), ArtifactSpec( "Example Service", "Example artifact 2", "Example which returns all hosts for local storage", "0.1.0", example_artifact2_func, ReportPresentation.table ) ) ``` `ArtifactSpec` 对象描述了可以由插件处理的 artifact,并指向为该 artifact 提供处理功能的函数。 插件函数需要具有以下签名: ``` def example_artifact1(profile: BrowserProfileProtocol, log_func: LogFunction, storage: ArtifactStorage) -> ArtifactResult: ... ``` * 第一个参数是由宿主传递给函数的 `ChromiumProfileFolder`,用于访问浏览器存储的数据。 有关此类的更多信息,请访问 [ccl_chromium_reader 包](https://github.com/cclgroupltd/ccl_chromium_reader) * 第二个参数是供插件使用的日志记录回调函数,它应该是一个接受单个字符串参数(即要记录的消息)的函数。 * 一个实现了 `ArtifactStorage` 抽象基类的对象。插件可以使用此对象创建可用于存储与输出相关的数据的可写流。 该函数应返回一个 `ArtifactResult`,其中包含要传递回宿主的处理后数据。返回对象所包含的结果应该是可以由宿主转换为 JSON 的 Python 数据结构。在当前版本中,宿主将使用 `json.dump` 并采用扩展编码器,这意味着结果可以包含 `datetime.datetime` 对象以及字典、列表、字符串、浮点数、整数、布尔值和 `None`(在未来的版本中,这可能会发生变化,其他常见的数据类型(如 `datetime.datetime`)将以标准方式进行编码)。 可以在 [example_plugin_.py](mister_skinnylegs/plugins/example_plugin_.py) 中找到插件的最小示例 #### chrome-profile-view 我们发布了另一个项目,可能有助于研究新的浏览器 artifacts,你可以在这里找到: https://github.com/cclgroupltd/chrome-profile-view/
标签:HTTP工具, Python, 代码示例, 数字取证, 数据分析, 文档结构分析, 无后门, 浏览器取证, 痕迹恢复, 自动化脚本, 逆向工具