
Costruisce set di hash forensi di file da immagini disco, pacchetti e archivi su GCP, AWS e sorgenti locali, con deduplicazione ed esportazione verso PostgreSQL/Spanner per i flussi di lavoro DFIR.
HashR ti consente di creare i tuoi set di hash basati sulle tue fonti dati. È uno strumento che estrae file e hash dalle fonti di input (ad es. immagine disco raw, immagine disco GCE, file ISO, pacchetto di aggiornamento Windows, file .tar.gz, ecc.).
HashR è composto dai seguenti componenti:
Importatori attualmente implementati:
Una volta estratti e sottoposti a hashing, i risultati verranno passati agli esportatori. Esportatori attualmente implementati:
Puoi scegliere quali importatori eseguire; ognuno ha requisiti diversi. Maggiori informazioni al riguardo sono disponibili nelle sezioni seguenti.
HashR richiede un sistema operativo Linux per funzionare; può trattarsi di una macchina fisica, virtuale o cloud. Di seguito sono riportati i requisiti hardware ottimali:
HashR può probabilmente funzionare su macchine con specifiche inferiori, ma questo non è stato testato a fondo.
Per compilare un binario hashr, esegui il seguente comando:``` shell env GOOS=linux GOARCH=amd64 go build hashr.go
Per eseguire i test per il pacchetto core hashR è necessario eseguire l'emulatore Spanner:``` shell
gcloud emulators spanner start
Quindi, per eseguire tutti i test, esegui il seguente comando:``` shell go test -timeout 2m ./...
## Configurazione di HashR
### HashR in OSDFIR Infrastructure
Puoi distribuire HashR come parte del [progetto OSDFIR Infrastructure](https://github.com/google/osdfir-infrastructure/tree/main/charts/hashr)
Questa distribuzione eseguirà HashR come cronjob Kubernetes e consente una facile
integrazione con Timesketch.
### HashR usando docker
Per eseguire HashR in un container docker consulta la [guida specifica per docker](https://github.com/google/hashr/blob/main/docker/README.md)
### Configurazione del SO e strumenti di terze parti richiesti
HashR si occupa del lavoro pesante (analisi di immagini disco, volumi, file system) utilizzando Plaso. Devi eseguire il pull del container docker di Plaso usando il seguente comando:``` shell
docker pull log2timeline/plaso
Abbiamo anche bisogno che 7z, che viene utilizzato dall'importatore WSUS per l'estrazione ricorsiva dei pacchetti di Windows Update, sia installato sulla macchina che esegue HashR:``` shell sudo apt install p7zip-full
Devi consentire all'utente con cui HashR verrà eseguito di eseguire determinati comandi tramite sudo. Supponendo che il tuo utente sia `hashr`, crea un file `/etc/sudoers.d/hashr` e inserisci:``` shell
hashr ALL = (root) NOPASSWD: /bin/mount,/bin/umount,/sbin/losetup,/bin/rm
L'utente sotto cui verrà eseguito HashR dovrà anche poter eseguire docker. Supponendo che il tuo utente sia hashr, aggiungilo al gruppo docker in questo modo:``` shell
sudo usermod -aG docker hashr
### Configurazione dello storage per le attività di elaborazione
HashR deve memorizzare informazioni sulle fonti elaborate. Memorizza inoltre telemetria aggiuntiva sulle attività di elaborazione: tempi di elaborazione, numero di file estratti, ecc. Puoi scegliere tra:
1. PostgreSQL
1. Cloud (GCP) Spanner
#### Configurazione dello storage PostgreSQL
Ci sono molti modi per eseguire e mantenere la tua istanza PostgreSQL; uno dei più semplici è eseguirla in un contenitore Docker. Segui i passaggi seguenti per configurare un contenitore Docker PostgreSQL.
Passaggio 1: Esegui il pull dell'immagine docker di PostgreSQL.``` shell
docker pull postgres
Passaggio 2: Inizializza ed esegui il container PostgreSQL in background. Assicurati di modificare la password.``` 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
Fase 3: Creare una tabella che verrà utilizzata per memorizzare i processi di elaborazione.``` shell
cat scripts/CreateJobsTable.sql | docker exec -i hashr_postgresql psql -U hashr -d hashr
Per utilizzare PostgreSQL per memorizzare le informazioni sui task di elaborazione è necessario specificare i seguenti flag: -storage postgres -postgres_host <host> -postgres_port <port> -postgres_user <user> -postgres_password <pass> -postgres_db <db_name>
Puoi scegliere di memorizzare i dati relativi ai job di elaborazione in Cloud Spanner. Avrai bisogno di un progetto Google Cloud per farlo. Il principale vantaggio di questa configurazione è che puoi creare facilmente dashboard utilizzando Google Data Studio e connetterti direttamente all'istanza Cloud Spanner, consentendo monitoraggio e debugging senza eseguire query sulla tua istanza PostgreSQL.
Supponendo che il tuo strumento gcloud sia configurato con il tuo progetto GCP di destinazione di HashR, dovrai seguire i passaggi seguenti per abilitare Cloud Spanner.