
Gera conjuntos de hashes forenses de arquivos a partir de imagens de disco, pacotes e arquivos em GCP, AWS e fontes locais, com deduplicação e exportação para PostgreSQL/Spanner para fluxos de trabalho de DFIR.
O HashR permite que você crie seus próprios conjuntos de hashes com base nas suas fontes de dados. É uma ferramenta que extrai arquivos e hashes de fontes de entrada (por exemplo, imagem de disco bruta, imagem de disco do GCE, arquivo ISO, pacote de atualização do Windows, arquivo .tar.gz, etc.).
O HashR consiste nos seguintes componentes:
Importadores atualmente implementados:
Depois que os arquivos são extraídos e o hash é calculado, os resultados são passados aos exportadores, atualmente implementados:
Você pode escolher quais importadores deseja executar; cada um tem requisitos diferentes. Mais informações sobre isso podem ser encontradas nas seções abaixo.
O HashR requer Linux para ser executado, podendo ser uma máquina física, virtual ou na nuvem. Abaixo estão os requisitos de hardware ideais:
O HashR provavelmente pode rodar em máquinas com especificações inferiores, porém isso não foi testado de forma completa.
Para compilar um binário hashr, execute o seguinte comando:``` shell env GOOS=linux GOARCH=amd64 go build hashr.go
Para executar testes para o pacote hashR principal, você precisa executar o emulador do Spanner:``` shell
gcloud emulators spanner start
Em seguida, para executar todos os testes, execute o seguinte comando:``` shell go test -timeout 2m ./...
## Configurando o HashR
### HashR na infraestrutura OSDFIR
Você pode implantar o HashR como parte do [projeto OSDFIR Infrastructure](https://github.com/google/osdfir-infrastructure/tree/main/charts/hashr)
Essa implantação executará o HashR como cronjobs do Kubernetes e permite uma fácil
integração com o Timesketch.
### HashR usando docker
Para executar o HashR em um contêiner docker, visite o [guia específico do docker](https://github.com/google/hashr/blob/main/docker/README.md)
### Configuração do SO e ferramentas de terceiros necessárias
O HashR cuida do trabalho pesado (análise de imagens de disco, volumes, sistemas de arquivos) usando o Plaso. Você precisa baixar o contêiner docker do Plaso usando o seguinte comando:``` shell
docker pull log2timeline/plaso
Também precisamos que o 7z, usado pelo importador WSUS para extração recursiva de pacotes do Windows Update, esteja instalado na máquina que executa o HashR:``` shell sudo apt install p7zip-full
Você precisa permitir que o usuário, sob o qual o HashR será executado, execute determinados comandos via sudo. Supondo que seu usuário seja `hashr`, crie um arquivo `/etc/sudoers.d/hashr` e coloque:``` shell
hashr ALL = (root) NOPASSWD: /bin/mount,/bin/umount,/sbin/losetup,/bin/rm
O usuário sob o qual o HashR será executado também precisará conseguir executar o docker. Supondo que seu usuário seja hashr, adicione-o ao grupo docker assim:``` shell
sudo usermod -aG docker hashr
### Configurando armazenamento para tarefas de processamento
O HashR precisa armazenar informações sobre fontes processadas. Ele também armazena telemetria adicional sobre tarefas de processamento: tempos de processamento, número de arquivos extraídos, etc. Você pode escolher entre usar:
1. PostgreSQL
1. Cloud (GCP) Spanner
#### Configurando armazenamento PostgreSQL
Existem muitas maneiras de executar e manter sua instância PostgreSQL; uma das mais simples seria executá-la em um contêiner Docker. Siga as etapas abaixo para configurar um contêiner Docker PostgreSQL.
Etapa 1: Baixe a imagem Docker do PostgreSQL.``` shell
docker pull postgres
Passo 2: Inicialize e execute o contêiner PostgreSQL em segundo plano. Certifique-se de ajustar a senha.``` 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
Passo 3: Crie uma tabela que será usada para armazenar tarefas de processamento.``` shell
cat scripts/CreateJobsTable.sql | docker exec -i hashr_postgresql psql -U hashr -d hashr
Para usar o PostgreSQL para armazenar informações sobre tarefas de processamento, você precisa especificar as seguintes flags: -storage postgres -postgres_host <host> -postgres_port <port> -postgres_user <user> -postgres_password <pass> -postgres_db <db_name>
Você pode optar por armazenar os dados sobre os trabalhos de processamento no Cloud Spanner. Você precisará de um projeto do Google Cloud para isso. A principal vantagem dessa configuração é que você pode criar facilmente painéis (dashboards) usando o Google Data Studio e conectar-se diretamente à instância do Cloud Spanner, o que permite monitoramento e depuração sem executar consultas na sua instância do PostgreSQL.
Supondo que a ferramenta gcloud esteja configurada com o seu projeto GCP hashr de destino, você precisará seguir as etapas abaixo para habilitar o Cloud Spanner.