Hoje vou ensinar os passos para instalar o rekall no Debian e no Ubuntu, este guia de instalação foi feito porque apesar de termos o rekall como pacote disponível no repositório oficial do Debian, nem todas as versões tanto do Ubuntu quanto do Debian podem possuir o pacote disponível para instalação ou ter a versão mais recente disponível.
Para fazer a instalação do rekall vamos seguir a documentação oficial do projecto. Resumindo, os passos serão os seguintes:
1º Instalar as dependências necessárias
2º Criar um ambiente virtual em python (a instalação não avança caso não detecte um ambiente virtual activo)
3º Instalar o rekall
4º (opcional) criar atalhos para activar o ambiente virtual e chamar o rekall
Vamos então começar com a nossa instalação.
Para instalar o rekall precisamos da seguinte dependencia “pip”, o pip é um gestor de pacote python que precisamos para criar um ambiente virtual e fazer a instalação do rekall.
Para instalar as dependências vamos usar o seguinte comando
$ sudo apt-get install -y python-pip python-dev
Agora vamos criar um diretório para criar o nosso ambiente virtual e começar com a instalação do rekall.
$ mkdir virtual-env # criar directório $ virtualenv virtual-env # criar ambiente virtual (virtual-env) $ source virtual-env/bin/activate # activar ambiente virtual (virtual-env) $ pip install --upgrade pip setuptools wheel # actualizar as ferramentas do ambiente virtual (virtual-env) $ pip install rekall-agent rekall # instalar o rekall e o agente
Com estes passos acabamos de instalar o rekall dentro de um ambiente virtual, no entanto devo salientar que a execução do rekall somente funcionará se o ambiente virtual estiver activo ou se a execução do mesmo for feita usando o caminho absoluto do executável. Por exemplo:
(virtual-env) $ rekall -p perfil.json -f memory-dump.mem # executar o programa rekall usando o perfil perfil.json e o dump de memoria memory-dump.mem $ /home/<USER>/virtual-env/bin/rekall -p perfil.json -f memory-dump.mem # executar o programa com os mesmos parametros usando o caminho absoluto
Para evitar de ter que activar o ambiente virtual sempre que quisermos utilizar o rekall ou termos que digital sempre o caminho absoluto, podemos criar um alias para quando digitarmos o comando rekall o terminal interpretar como o caminho absoluto sem a necessidade de nós termos que digitar sempre o comando completo. Para isso podemos executar o seguinte comando que cria um alias dentro do ficheiro “bashrc” que é carregado sempre que o utilizador faz login.
$ echo "alias rekall=/home/<USER>/virtual-env/bin/rekall" >> ~/.bashrc
Desta forma podemos simplesmente executar o comendo rekall que ele será interpretado com o atalho acima criado.
Para desactivar o ambiente virtual podemos simplesmente executar o comando “deactivate”.
(virtual-env) $ deactivate
Para analisar um dump de memória de uma máquina com o kernel Linux o rekall precisa de criar um perfil especifico. Por causa das grande variedade de distribuições e de configurações de kernel, é virtualmente impossível manter um repositorio actualizado com todas as possiveis versões de kernel e todas as configurações de kernel, felizmente o rekall possui uma forma facil de criar perfis especificos para linux.
Para a criação de perfil devemos instalar o código fonte do kernel actualmente instalado na máquina e instalar a biblioteca “ncurses” e o programa “make” para nos permitir compilar o perfil. Para isso usamos o seguinte comando.
$ sudo apt-get install -y linux-headers-$(uname -r) libncurses5-dev build-essential
Após a instalação das dependências devemos entrar no directório de instalação do rekall e compilar o perfil.
$ cd /home/<USER>/virtual-env/tools/linux/ $ sudo make profile
Isto vai criar um ficheiro com o nome de versão do kernel e com a extensão zip, agora vamos usar o rekall para transformar este arquivo zip em um arquivo do tipo JSON para sr utilizado com o rekall. NO meu caso o nome do arquivo é o 4.13.0-1-amd64.zip.
(virtual-env) $ rekall convert_profile 4.13.0-1-amd64.zip 4.13.0-1-amd64.json
Assim agora temos o arquivo 4.13.0-1-amd64.json que podemos usar como perfil para analisar a memória da máquina. Também podemos usar o rekall para colectar o dump de memória no formato aff4. Para recolher a memória o rekall precisa de acesso root a máquina, isso pode ser feito chamando o rekall com o seu caminho absoluto.
$ /home/<USER>/virtual-env/bin/rekall aff4acquire memory-dump.aff4
Com o comando acima o rekall começa a recolher os dados em memória e a gravar os mesmos no arquivo “memory-dump.aff4” que depois poderá ser analisado usando o próprio rekall e o perfil criado anteriormente.
Como complemento recomendo a leitura do artigo que fala sobre aquisição de memoria para mais informações. Por hoje ficamos por aqui.
Até a próxima…