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/phillipmartin/gopassivedns
Sniffing e Análise de PacotesColeta de InformaçõesSegurança de RedeInteligência de AmeaçasAnálise de DNS
GitHubphillipmartin/gopassivedns

gopassivedns

Registrador DNS passivo baseado em rede que captura e registra consultas DNS de tráfego ao vivo ou arquivos pcap, gerando saída em JSON para integração com plataformas SIEM e de inteligência de ameaças.

Ver Repositório
12624há 6 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

Coverage Status Build Status

gopassivedns

Registro de DNS baseado em rede em Go

Resumo

Um registrador de DNS baseado em captura de rede, inspirado por https://github.com/gamelinux/passivedns. Ele usa gopacket para lidar com libpcap e processamento de pacotes. Ele gera logs em JSON. Ele é projetado para lidar com captura de consultas de alto volume em ambientes com de um a centenas de resolvedores DNS.

Por que não usar o PassiveDNS do gamelinux?

É uma boa escolha. Construí isso porque acredito que tarefas que envolvem processar grandes quantidades de dados não confiáveis com muitos casos extremos mal documentados devem ser tratadas por um runtime gerenciado para evitar ataques de corrupção de memória. Implantei o PassiveDNS em várias organizações, e construí o gopassivedns para resolver alguns pontos específicos de dor que observei: precisava instrumentar muitos locais, precisava escalar a camada de armazenamento para lidar com MUITAS consultas e queria um conjunto de testes com boa cobertura em torno de todos os casos extremos de DNS.

Por que não usar o Bro (ou inserir outro IDS de registro de DNS aqui)?

Também uma boa escolha. Sistemas como Bro são geralmente implantados nas saídas de rede, o que tem a consequência de mascarar a fonte real da consulta atrás dos seus resolvedores recursivos. Isso significa que você geralmente precisa implantar o Bro e fazer o registro de consultas do resolvedor (assumindo que você possa), e integrar os logs de ambos em um sistema de registro central para rastrear uma consulta de volta a um cliente. O gopassivedns foi projetado para ser implantado nos seus resolvedores sem alterações de configuração do resolvedor e/ou nas suas saídas de rede, registrar centralmente via um protocolo confiável e analisar simplesmente em qualquer sistema de log.

Por que não usar apenas o registro de consultas do resolvedor?

O suporte do resolvedor para registro de consultas, incluindo tanto a pergunta quanto a resposta, é irregular na melhor das hipóteses. Um dos servidores DNS mais implantados, o BIND, não suporta isso de forma alguma. Outros, como o DNS do Windows, têm formatos de log realmente horríveis. Além disso, o registro baseado em rede capturará consultas enviadas diretamente a servidores remotos (ex.: Google DNS) a partir dos seus clientes.

Uso

As opções de configuração podem ser especificadas como variáveis de ambiente, em um arquivo .env ou na linha de comando. A prioridade é flags de linha de comando, arquivo .env e, finalmente, variáveis já definidas no ambiente. As opções de configuração são as seguintes

  • -dev [device] dispositivo de rede para captura (ENV: PDNS_DEV)
  • -fluentd_socket [socket] Caminho para o socket unix do Fluentd usado para registro no formato messagepack (ENV: PDNS_FLUENTD_SOCKET)
  • -bpf [bpf filter] Filtro BPF para captura (padrão: porta 53) (ENV: PDNS_BPF)
  • -pcap [file] arquivo pcap para processar (ENV: PDNS_PCAP_FILE)
  • -logfile [file] arquivo de log para consultas DNS (sugerido apenas para implantação pequena ou depuração) (ENV: PDNS_LOG_FILE)
  • -logMaxAge idade máxima de um arquivo de log antes da rotação, em dias (padrão: 28) (ENV: PDNS_LOG_AGE)
  • -logMaxBackups número máximo de arquivos mantidos após a rotação (padrão: 3) (ENV: PDNS_LOG_BACKUP)
  • -logMaxSize tamanho máximo do arquivo de log antes da rotação, em MB (padrão: 100) (ENV: PDNS_LOG_SIZE)
  • -quiet não registrar consultas DNS no STDOUT (ENV: PDNS_QUIET)
  • -debug habilitar registro de depuração no STDOUT (ENV: PDNS_DEBUG)
  • -gc_age [num] idade na qual conexões incompletas devem ser coletadas pelo lixo (padrão: -1m) (ENV: PDNS_GC_AGE)
  • -gc_interval [num] intervalo no qual o GC deve rodar na tabela de conexões (padrão: 3m) (ENV: PDNS_GC_INTERVAL)
  • -kafka_brokers [brokers] lista separada por vírgulas de brokers kafka (ENV: PDNS_KAFKA_PEERS)
  • -kafka_topic [topic] tópico kafka para registro (ENV: PDNS_KAFKA_TOPIC)
  • -cpuprofile [file] habilitar perfilamento de CPU (ENV: PDNS_PROFILE_FILE)
  • -numprocs [num] número de goroutines a usar para analisar dados de pacotes (padrão: 8) (ENV: PDNS_THREADS)
  • -pfring usar PF_RING para captura de pacotes (ENV: PDNS_PFRING)
  • -statsd_host host e porta do seu servidor statsd (ex.: localhost:8125) (ENV: PDNS_STATSD_HOST)
  • -statsd_interval o intervalo, em segundos, entre envios para statsd (ENV: PDNS_STATSD_INTERVAL)
  • -statsd_prefix o prefixo do nome da métrica a usar (por padrão, gopassivedns) (ENV: PDNS_STATSD_PREFIX)
  • -snaplen [int] o snaplen usado para o buffer pcap
  • -name o nome deste sensor para uso em estatísticas e mensagens de log (padrão é o nome do host) (ENV: PDNS_NAME)
  • -syslog_facility facilidade syslog (ENV: PDNS_SYSLOG_FACILITY)
  • -syslog_priority prioridade syslog (ENV: PDNS_SYSLOG_PRIORITY)

Você deve fornecer -dev ou -pcap.

Existem problemas conhecidos com goroutines e o processo padrão de daemonização (https://github.com/golang/go/issues/227), então recomendo fortemente que você use um dos métodos detalhados aqui: http://stackoverflow.com/questions/10067295/how-to-start-a-go-program-as-a-daemon-in-ubuntu para executar este processo como um daemon usando ferramentas do sistema.

Se você escolher usar registro syslog, usamos o "log/syslog" do golang que requer um socket unix usado para comunicar com syslog em um dos seguintes: /dev/log, /var/run/log ou /var/run/syslog.

Guia de Implantação

Onde devo implantar isso?

Você tem 3 opções: implantá-lo no(s) seu(s) resolvedor(es) ou implantá-lo no(s) seu(s) gateway(s) ou ambos. Implantar nos seus resolvedores é bom porque você obterá o endereço IP do cliente que enviou a solicitação original. Você também pode ver a etapa upstream da solicitação (do resolvedor para o próximo resolvedor na cadeia), a menos que ajuste seu filtro BPF para ignorar essa etapa. Implantar nos seus gateways significa que você não vê a etapa cliente -> resolvedor interno, então pode ser difícil associar uma solicitação a um cliente específico. Por outro lado, você verá solicitações que ignoram seus resolvedores internos. Você também verá, é claro, as consultas vindas do resolvedor para qualquer resolvedor upstream que ele use. Em um mundo ideal, eu implantaria esta ferramenta em cada um dos meus resolvedores internos e em um tap nos meus gateways. Os resolvedores internos teriam um filtro BPF que ignora a etapa upstream da consulta, e o gateway não ignoraria nada.

O que devo fazer com os resultados?

No momento, recomendo usar o logstash para enviar os logs para um cluster elasticsearch. Todos os logs são JSON, então isso deve ser bem fácil. Sugiro também usar algo como HDFS para armazenamento de longo prazo e análise em massa. Consultas DNS são uma fonte incrível de dados internos!

Construir e instalar

  • clone este repositório
  • instale libpcap, libpcap-dev
  • 'go get'
  • 'go build -o gopassivedns' (o -o é realmente apenas por precaução, assumindo que você clonou o repositório você não deve precisar dele)
  • 'cp gopassivedns /some/path/to/gopassivedns'
Baixar ferramenta