
Génère des ensembles de hachages de fichiers forensiques à partir d'images disque, de paquets et d'archives provenant de sources GCP, AWS et locales, avec déduplication et export PostgreSQL/Spanner pour les flux de travail DFIR.
HashR vous permet de créer vos propres ensembles de hachages à partir de vos sources de données. C'est un outil qui extrait des fichiers et des hachages de sources d'entrée (par exemple, image de disque brute, image de disque GCE, fichier ISO, package de mise à jour Windows, fichier .tar.gz, etc.).
HashR se compose des composants suivants :
Importeurs actuellement implémentés :
Une fois les fichiers extraits et hachés, les résultats sont transmis aux exportateurs ; exportateurs actuellement implémentés :
Vous pouvez choisir les importeurs que vous souhaitez exécuter ; chacun a des exigences différentes. Vous trouverez plus de détails dans les sections ci-dessous.
HashR nécessite un système d'exploitation Linux pour fonctionner ; il peut s'agir d'une machine physique, virtuelle ou cloud. Voici les exigences matérielles optimales :
HashR peut probablement fonctionner sur des machines avec des spécifications inférieures, mais cela n'a pas été testé en profondeur.
Pour compiler le binaire hashr, exécutez la commande suivante :``` shell env GOOS=linux GOARCH=amd64 go build hashr.go
Pour exécuter les tests du package hashR principal, vous devez exécuter l'émulateur Spanner :``` shell
gcloud emulators spanner start
Ensuite, pour exécuter tous les tests, lancez la commande suivante :``` shell go test -timeout 2m ./...
## Configuration de HashR
### HashR dans l'infrastructure OSDFIR
Vous pouvez déployer HashR dans le cadre du [projet OSDFIR Infrastructure](https://github.com/google/osdfir-infrastructure/tree/main/charts/hashr)
Ce déploiement exécutera HashR sous forme de cronjobs Kubernetes et permet une intégration facile avec Timesketch.
### HashR avec Docker
Pour exécuter HashR dans un conteneur Docker, consultez le [guide spécifique à Docker](https://github.com/google/hashr/blob/main/docker/README.md)
### Configuration du système d'exploitation et outils tiers requis
HashR s'occupe du gros du travail (analyse d'images disque, de volumes, de systèmes de fichiers) en utilisant Plaso. Vous devez récupérer le conteneur Docker Plaso à l'aide de la commande suivante :``` shell
docker pull log2timeline/plaso
Nous avons également besoin que 7z, qui est utilisé par l'importateur WSUS pour l'extraction récursive des paquets Windows Update, soit installé sur la machine exécutant HashR :``` shell sudo apt install p7zip-full
Vous devez autoriser l'utilisateur sous lequel HashR s'exécutera à exécuter certaines commandes via sudo. En supposant que votre utilisateur est `hashr`, créez un fichier `/etc/sudoers.d/hashr` et insérez-y :``` shell
hashr ALL = (root) NOPASSWD: /bin/mount,/bin/umount,/sbin/losetup,/bin/rm
L'utilisateur sous lequel HashR sera exécuté devra également être en mesure d'exécuter docker. En supposant que votre utilisateur est hashr, ajoutez-le au groupe docker comme ceci :``` shell
sudo usermod -aG docker hashr
### Configuration du stockage pour les tâches de traitement
HashR doit stocker des informations sur les sources traitées. Il stocke également des données de télémétrie supplémentaires sur les tâches de traitement : temps de traitement, nombre de fichiers extraits, etc. Vous pouvez choisir entre :
1. PostgreSQL
1. Cloud (GCP) Spanner
#### Configuration du stockage PostgreSQL
Il existe de nombreuses façons d'exécuter et de maintenir votre instance PostgreSQL. L'une des façons les plus simples serait de l'exécuter dans un conteneur Docker. Suivez les étapes ci-dessous pour configurer un conteneur Docker PostgreSQL.
Étape 1 : Tirez l'image Docker de PostgreSQL.``` shell
docker pull postgres
Étape 2 : Initialisez et exécutez le conteneur PostgreSQL en arrière-plan. Assurez-vous de modifier le mot de passe.``` 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
Étape 3: Créez une table qui sera utilisée pour stocker les tâches de traitement.``` shell
cat scripts/CreateJobsTable.sql | docker exec -i hashr_postgresql psql -U hashr -d hashr
Afin d'utiliser PostgreSQL pour stocker des informations sur les tâches de traitement, vous devez spécifier les options suivantes : -storage postgres -postgres_host <host> -postgres_port <port> -postgres_user <user> -postgres_password <pass> -postgres_db <db_name>
Vous pouvez choisir de stocker les données concernant les tâches de traitement dans Cloud Spanner. Vous aurez besoin d'un projet Google Cloud pour cela. Le principal avantage de cette configuration est que vous pouvez facilement créer des tableaux de bord à l'aide de Google Data Studio et vous connecter directement à l'instance Cloud Spanner, ce qui permet la surveillance et le débogage sans exécuter de requêtes sur votre instance PostgreSQL.