
Создаёт форензические наборы хэшей файлов из образов дисков, пакетов и архивов в GCP, AWS и локальных источниках, с дедупликацией и экспортом в PostgreSQL/Spanner для рабочих процессов DFIR.
HashR позволяет создавать собственные наборы хэшей на основе ваших источников данных. Это инструмент, который извлекает файлы и хэши из входных источников (например, сырой образ диска, образ диска GCE, ISO-файл, пакет обновления Windows, файл .tar.gz и т. д.).
HashR состоит из следующих компонентов:
Реализованные в настоящее время импортеры:
После извлечения и хэширования файлов результаты передаются экспортерам. Реализованные в настоящее время экспортеры:
Вы можете выбрать, какие импортеры запускать, у каждого из них разные требования. Подробнее об этом можно узнать в разделах ниже.
HashR требует для работы ОС Linux; это может быть физическая, виртуальная или облачная машина. Ниже приведены оптимальные аппаратные требования:
HashR, вероятно, может работать на машинах с более низкими характеристиками, однако это не было тщательно протестировано.
Чтобы собрать бинарный файл hashr, выполните следующую команду:``` shell env GOOS=linux GOARCH=amd64 go build hashr.go
Чтобы запустить тесты для основного пакета hashR, вам необходимо запустить эмулятор Spanner:``` shell
gcloud emulators spanner start
Затем, чтобы запустить все тесты, выполните следующую команду:``` shell go test -timeout 2m ./...
## Setting up HashR
### HashR в инфраструктуре OSDFIR
Вы можете развернуть HashR в составе [проекта OSDFIR Infrastructure](https://github.com/google/osdfir-infrastructure/tree/main/charts/hashr)
Это развёртывание будет запускать HashR как kubernetes cronjobs и обеспечивает лёгкую
интеграцию с Timesketch.
### HashR с использованием docker
Чтобы запустить HashR в docker-контейнере, посетите [руководство по docker](https://github.com/google/hashr/blob/main/docker/README.md)
### Конфигурация ОС и необходимое стороннее ПО
HashR берёт на себя всю сложную работу (разбор образов дисков, томов, файловых систем) с помощью Plaso. Вам необходимо загрузить docker-контейнер Plaso с помощью следующей команды:``` shell
docker pull log2timeline/plaso
Нам также нужно, чтобы 7z, используемый импортером WSUS для рекурсивного извлечения пакетов Windows Update, был установлен на машине, где работает HashR:``` 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. Cloud (GCP) Spanner
#### Настройка хранилища PostgreSQL
Существует множество способов запуска и поддержки вашего экземпляра PostgreSQL, один из самых простых — запустить его в Docker-контейнере. Выполните следующие шаги, чтобы настроить Docker-контейнер PostgreSQL.
Шаг 1: Скачайте Docker-образ PostgreSQL.``` 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. Для этого понадобится проект Google Cloud. Основное преимущество такой настройки в том, что вы можете легко создавать информационные панели (дашборды) с помощью Google Data Studio и напрямую подключаться к экземпляру Cloud Spanner, что позволяет отслеживать и отлаживать работу без выполнения запросов к вашему экземпляру PostgreSQL.
Предполагая, что ваш инструмент gcloud настроен на ваш целевой проект hashr GCP, вам нужно выполнить следующие шаги для включения Cloud Spanner.