Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
hashr — 从磁盘镜像、软件包和归档文件中构建取证文件哈希集,支持跨 GCP、AWS 和本地来源,具备去重功能,并可导出至 PostgreSQL/Spanner,适用于 DFIR 工作流。 | Kitploit
工具/GitHubGitHub/google/hashr
磁盘取证哈希分析取证分析数字取证事件响应
GitHubgoogle/hashr

hashr

从磁盘镜像、软件包和归档文件中构建取证文件哈希集,支持跨 GCP、AWS 和本地来源,具备去重功能,并可导出至 PostgreSQL/Spanner,适用于 DFIR 工作流。

查看仓库
1309387个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

HashR:生成你自己的哈希集合



目录

  • HashR:生成你自己的哈希集合
    • 目录
    • 关于
    • 要求
    • 构建 HashR 二进制并运行测试
    • 设置 HashR
      • 使用 docker 运行 HashR
      • 操作系统配置与所需第三方工具
      • 为处理任务设置存储
        • 设置 PostgreSQL 存储
        • 设置 Cloud Spanner
      • 设置导入器
        • GCP(谷歌云平台)
        • AWS(亚马逊云服务)
        • GCR(谷歌容器镜像仓库)
        • Windows
        • WSUS
        • TarGz
        • Deb
        • RPM
        • Zip(以及类似 zip 的格式)
        • ISO 9660
      • 设置导出器
        • 设置 Postgres 导出器
        • 设置 GCP 导出器
      • 附加标志

关于

HashR 允许你基于自己的数据源构建哈希集合。它是一款从输入源(例如原始磁盘镜像、GCE 磁盘镜像、ISO 文件、Windows 更新包、.tar.gz 文件等)中提取文件和哈希的工具。

HashR 由以下组件组成:

  1. 导入器,负责将源复制到本地存储并执行任何必要的预处理。
  2. 核心,负责使用 image_export.py(Plaso)从源中提取内容、进行缓存和仓库级去重,并为导出器准备提取出的文件。
  3. 导出器,负责将文件、元数据和哈希导出到指定的数据接收端。

当前已实现的导入器:

  1. GCP,从 GCP 基础磁盘镜像中提取文件。
  2. Windows,从 ISO-13346 格式的 Windows 安装介质中提取文件。
  3. WSUS,从 Windows 更新包中提取文件。
  4. GCR,从 Google Container Registry 中存储的容器镜像中提取文件。
  5. TarGz,从 .tar.gz 归档中提取文件。
  6. Deb,从 Debian 软件包中提取文件。
  7. RPM,从 RPM 软件包中提取文件。
  8. Zip,从 .zip(及类似 zip)归档中提取文件。

文件被提取并计算哈希后,结果将传递给导出器。当前已实现的导出器:

  1. PostgreSQL,将数据上传到 PostgreSQL 实例。
  2. Cloud Spanner,将数据上传到 GCP Spanner 实例。

你可以选择要运行的导入器,每个导入器有不同的要求。更多相关信息请参阅以下章节。

要求

HashR 需要 Linux 操作系统才能运行,可以是物理机、虚拟机或云主机。以下是推荐的硬件配置要求:

  1. 8-16 核
  2. 128GB 内存
  3. 2TB 快速本地存储(首选 SSD)

HashR 或许可以在配置较低的机器上运行,但未经全面测试。

构建 HashR 二进制并运行测试

要构建 hashr 二进制文件,请运行以下命令:``` shell env GOOS=linux GOARCH=amd64 go build hashr.go

要运行核心 hashR 包的测试,你需要运行 Spanner 模拟器:``` shell
gcloud emulators spanner start

然后,要执行所有测试,请运行以下命令:``` shell go test -timeout 2m ./...

## 设置 HashR

### OSDFIR 基础设施中的 HashR

您可以将 HashR 部署为 [OSDFIR 基础设施项目](https://github.com/google/osdfir-infrastructure/tree/main/charts/hashr)。
此部署将以 kubernetes cronjobs 方式运行 HashR,并可轻松
与 Timesketch 集成。

### 使用 docker 运行 HashR

要在 docker 容器中运行 HashR,请参阅 [docker 专属指南](https://github.com/google/hashr/blob/main/docker/README.md)

### 操作系统配置及所需的第三方工具

HashR 通过使用 Plaso 来处理繁重的工作(解析磁盘镜像、卷、文件系统)。您需要使用以下命令拉取 Plaso docker 容器:``` shell
docker pull log2timeline/plaso

我们还需要在运行 HashR 的机器上安装 7z,WSUS 导入器使用它来递归提取 Windows Update 包:``` shell sudo apt install p7zip-full

你需要允许运行 HashR 的用户通过 sudo 执行某些命令。假设你的用户是 `hashr`,请创建文件 `/etc/sudoers.d/hashr` 并写入:``` shell
hashr ALL = (root) NOPASSWD: /bin/mount,/bin/umount,/sbin/losetup,/bin/rm

运行 HashR 的用户还需要能够运行 docker。假设你的用户是 hashr,请将其添加到 docker 组,如下所示:``` shell sudo usermod -aG docker hashr

### 为处理任务设置存储

HashR 需要存储有关已处理来源的信息。它还会存储有关处理任务的额外遥测数据:处理时间、提取的文件数等。你可以选择使用:

1. PostgreSQL
1. 云 (GCP) Spanner

#### 设置 PostgreSQL 存储

运行和维护 PostgreSQL 实例的方法有很多,最简单的方法之一是在 Docker 容器中运行它。按照以下步骤设置 PostgreSQL Docker 容器。

步骤 1:拉取 PostgreSQL Docker 镜像。``` shell
docker pull postgres

步骤 2:在后台初始化并运行 PostgreSQL 容器。确保调整密码。``` shell docker run -itd -e POSTGRES_DB=hashr -e POSTGRES_USER=hashr -e POSTGRES_PASSWORD=hashr -p 5432:5432 -v /data:/var/lib/postgresql/data --name hashr_postgresql postgres

步骤 3:创建一个用于存储处理作业的表。``` shell
cat scripts/CreateJobsTable.sql | docker exec -i hashr_postgresql psql -U hashr -d hashr

为了使用 PostgreSQL 存储处理任务的信息,你需要指定以下标志:-storage postgres -postgres_host <host> -postgres_port <port> -postgres_user <user> -postgres_password <pass> -postgres_db <db_name>

设置 Cloud Spanner

你可以选择将处理作业的数据存储在 Cloud Spanner 中。为此,你需要一个 Google Cloud 项目。这种设置的主要优势是,你可以使用 Google Data Studio 轻松创建仪表盘,并直接连接到 Cloud Spanner 实例,以便监控和调试,而无需针对 PostgreSQL 实例运行查询。

假设你的 gcloud 工具已针对目标 hashr GCP 项目完成配置,你需要按照以下步骤启用 Cloud Spanner。

创建 HashR 服务账号:``` shell gcloud iam service-accounts create hashr --description="HashR SA key." --display-name="hashr"

创建服务账号密钥并将其存储在你的主目录中。将 *<project_name>* 设置为你的项目名称。``` shell
gcloud iam service-accounts keys create ~/hashr-sa-private-key.json --iam-account=hashr-sa@<project_name>.iam.gserviceaccount.com

将 GOOGLE_APPLICATION_CREDENTIALS 环境变量指向您的服务账号密钥:``` shell export GOOGLE_APPLICATION_CREDENTIALS=/home/hashr/hashr-sa-private-key.json

创建 Spanner 实例,如有需要,请调整 config 和 processing-units 的值:``` shell
gcloud spanner instances create hashr --config=regional-us-central1 --description="hashr" --processing-units=100

创建 Spanner 数据库:``` shell gcloud spanner databases create hashr --instance=hashr

允许服务账号使用 Spanner 数据库,将 *<project_name>* 设置为你的项目名称:``` shell
gcloud spanner databases add-iam-policy-binding hashr --instance hashr --member="serviceAccount:hashr-sa@<project_name>.iam.gserviceaccount.com" --role="roles/spanner.databaseUser"

更新 Spanner 数据库架构:``` shell gcloud spanner databases ddl update hashr --instance=hashr --ddl-file=scripts/CreateJobsTable.ddl

为了使用 Cloud Spanner 存储有关处理任务的信息,你需要指定以下标志:`-jobStorage cloudspanner -spannerDBPath <spanner_db_path>`

### 设置导入器

要指定要运行的导入器,应使用 `-importers` 标志。可选值:`GCP,targz,windows,wsus,deb,rpm,zip,gcr,iso9660`

#### GCP (Google Cloud Platform)```shell
-importers GCP

此导入器可从 GCP 磁盘映像中提取文件。具体步骤如下:

  1. 检查目标项目(例如 ubuntu-os-cloud)中是否有新映像
  2. 将新的/未处理的映像复制到 hashR GCP 项目
  3. 运行 Cloud Build,它会创建一个临时 VM,在复制的映像上运行 dd,并将输出保存为 .tar.gz 文件。
  4. 将 raw_disk.tar.gz 导出到 hashR GCP 项目中的 GCS 存储桶
  5. 将 raw_disk.tar.gz 从 GCS 复制到本地 hashR 存储
  6. 解压 raw_disk.tar.gz 并将磁盘映像传递给 Plaso

包含公共 GCP 映像的 GCP 项目列表可在此处找到。要使用此导入器,您需要拥有一个 GCP 项目并执行以下步骤:

下载工具