
Erstellt forensische Datei-Hash-Sets aus Datenträger-Images, Paketen und Archiven aus GCP, AWS und lokalen Quellen, mit Deduplizierung und PostgreSQL/Spanner-Export für DFIR-Workflows.
HashR ermöglicht es dir, eigene Hash-Sets basierend auf deinen Datenquellen zu erstellen. Es ist ein Tool, das Dateien und Hashes aus Eingabequellen extrahiert (z. B. rohes Festplatten-Image, GCE-Festplatten-Image, ISO-Datei, Windows-Update-Paket, .tar.gz-Datei usw.).
HashR besteht aus den folgenden Komponenten:
Derzeit implementierte Importeure:
Sobald Dateien extrahiert und gehasht wurden, werden die Ergebnisse an die Exporteure übergeben. Derzeit implementierte Exporteure:
Du kannst auswählen, welche Importeure du ausführen möchtest; jeder hat unterschiedliche Anforderungen. Mehr dazu findest du in den folgenden Abschnitten.
HashR benötigt ein Linux-Betriebssystem, um ausgeführt zu werden. Dies kann eine physische, virtuelle oder Cloud-Maschine sein. Im Folgenden sind die optimalen Hardware-Anforderungen aufgeführt:
HashR läuft wahrscheinlich auch auf Maschinen mit geringeren Spezifikationen, dies wurde jedoch nicht gründlich getestet.
Um eine HashR-Binary zu erstellen, führe den folgenden Befehl aus:``` shell env GOOS=linux GOARCH=amd64 go build hashr.go
Um Tests für das Kernpaket hashR auszuführen, müssen Sie den Spanner-Emulator starten:``` shell
gcloud emulators spanner start
Um dann alle Tests auszuführen, führen Sie den folgenden Befehl aus:``` shell go test -timeout 2m ./...
## HashR einrichten
### HashR in OSDFIR Infrastructure
Sie können HashR als Teil des [OSDFIR-Infrastructure-Projekts](https://github.com/google/osdfir-infrastructure/tree/main/charts/hashr) bereitstellen. Diese Bereitstellung führt HashR als Kubernetes-Cronjobs aus und ermöglicht eine einfache
Integration mit Timesketch.
### HashR mit Docker
Um HashR in einem Docker-Container auszuführen, besuchen Sie den [Docker-spezifischen Leitfaden](https://github.com/google/hashr/blob/main/docker/README.md).
### OS-Konfiguration und erforderliche Drittanbieter-Tools
HashR übernimmt die schwere Arbeit (Parsen von Datenträger-Images, Volumes, Dateisystemen) mithilfe von Plaso. Sie müssen den Plaso-Docker-Container mit dem folgenden Befehl abrufen:``` shell
docker pull log2timeline/plaso
Zudem muss 7z, das vom WSUS importer für die rekursive Extraktion von Windows-Update-Paketen verwendet wird, auf dem Rechner installiert sein, auf dem HashR läuft:``` shell sudo apt install p7zip-full
Sie müssen dem Benutzer, unter dem HashR ausgeführt wird, erlauben, bestimmte Befehle über sudo auszuführen. Angenommen, Ihr Benutzer ist `hashr`, erstellen Sie eine Datei `/etc/sudoers.d/hashr` und fügen Sie Folgendes ein:``` shell
hashr ALL = (root) NOPASSWD: /bin/mount,/bin/umount,/sbin/losetup,/bin/rm
Der Benutzer, unter dem HashR ausgeführt wird, muss auch in der Lage sein, Docker auszuführen. Angenommen, Ihr Benutzer ist hashr, fügen Sie ihn wie folgt zur Docker-Gruppe hinzu:``` shell
sudo usermod -aG docker hashr
### Einrichtung des Speichers für Verarbeitungsaufgaben
HashR muss Informationen über verarbeitete Quellen speichern. Außerdem speichert es zusätzliche Telemetriedaten zu Verarbeitungsaufgaben: Verarbeitungszeiten, Anzahl der extrahierten Dateien usw. Sie können zwischen folgenden Optionen wählen:
1. PostgreSQL
1. Cloud (GCP) Spanner
#### Einrichten des PostgreSQL-Speichers
Es gibt viele Möglichkeiten, Ihre PostgreSQL-Instanz zu betreiben und zu warten. Eine der einfachsten Möglichkeiten ist der Betrieb in einem Docker-Container. Befolgen Sie die folgenden Schritte, um einen PostgreSQL-Docker-Container einzurichten.
Schritt 1: Ziehen Sie das PostgreSQL-Docker-Image.``` shell
docker pull postgres
Schritt 2: Initialisieren und starten Sie den PostgreSQL-Container im Hintergrund. Achten Sie darauf, das Passwort anzupassen.``` 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
Schritt 3: Erstellen Sie eine Tabelle, die zum Speichern von Verarbeitungsaufträgen verwendet wird.``` shell
cat scripts/CreateJobsTable.sql | docker exec -i hashr_postgresql psql -U hashr -d hashr
Um PostgreSQL zum Speichern von Informationen über Verarbeitungsaufgaben zu verwenden, müssen Sie die folgenden Flags angeben: -storage postgres -postgres_host <host> -postgres_port <port> -postgres_user <user> -postgres_password <pass> -postgres_db <db_name>
Sie können wählen, die Daten über Verarbeitungsaufträge in Cloud Spanner zu speichern. Dazu benötigen Sie ein Google Cloud-Projekt. Der Hauptvorteil dieser Einrichtung ist, dass Sie mithilfe von Google Data Studio problemlos Dashboards erstellen und direkt eine Verbindung zur Cloud-Spanner-Instanz herstellen können, was Überwachung und Debugging ermöglicht, ohne Abfragen gegen Ihre PostgreSQL-Instanz ausführen zu müssen.