Série de penetração na intranet: dns2tcp do túnel da intranet

prefácio

Este artigo estuda uma ferramenta para tunelamento DNS, dns2tcp

github:https://github.com/alex-sector/dns2tcp

I. Visão geral

1. Introdução

Última atualização em 2017, escrita em C

TCP sobre DNS, ou seja, encaminhando conexões TCP através de túneis DNS sem criptografia. A conexão direta é adotada, mas a velocidade não é particularmente otimista. A vantagem é que o kali integra diretamente esta ferramenta, e algumas distribuições linux também podem ser baixadas diretamente pela ferramenta de pacotes, o que é relativamente conveniente

  • Tunelamento de DNS usando servidores DNS legais
  • Estrutura C/S (dns2tcpc/dns2tcpd)
  • Por padrão, os dados são transmitidos por meio de criptografia de registro TXT (base64) (um registro tem um comprimento limitado)
  • Depois que o túnel é estabelecido, a conexão é mantida e um pacote de dados é enviado em cerca de 0,6s, e o máximo é 3s.
  • Precisa cooperar com outras ferramentas de proxy

2. Princípio

Veja o princípio do DNS: Um artigo para entender o DNS e a resolução de nomes de domínio

Esta ferramenta é para colocar os dados no registro TXT base64 transmissão criptografada, pacotes de dados DNS através do registro NS e um registro fornecido pelo servidor DNS autoritativo para o servidor DNS do servidor para completar o proxy de tráfego

3. Uso

Comandos comuns:

-c   大流量压缩
-F   前台运行
-f   指定配置文件
-r   指定使用的资源
-z   指定DNS域名
-k   设置传输密码
-l   侦听本地端口
-d   编译水平(1 | 2 |3 )   

(1) Servidor

Modifique o /etc/dns2tcpd.confarquivo de configuração
e estabeleça um túneldns2tcpd -F -d 1 -f /etc/dns2tcpd.conf

(2) Cliente

Teste se ele pode ser conectado: dns2tcpc -z xxx.xx.xxx
estabeleça um túnel e use o serviço ssh: dns2tcpc -c -k password -d 1 -l 7002 -r ssh -z xxx.xx.xxx
então jogue o serviço correspondente na porta definida localmente

2. Prática

1. Cenário de teste

(1) Aeronave de ataque

Kali2021 192.168.10.128

(2) servidor DNS

servidor windows 2008: 192.168.10.200

Defina o IP estático, consulte https://blog.csdn.net/pockeyfan/article/details/42063683

Crie um novo registro A, aponte para o servidor kali
insira a descrição da imagem aqui
Crie um novo delegado (ou seja, registro NS) para apontar para o nome de domínio do registro A que acabou de definir
insira a descrição da imagem aqui
Crie outro registro A para apontar para o próprio servidor Windows
insira a descrição da imagem aqui

(3) Máquina alvo

Ubuntu 18.04 192.168.10.129

Como o servidor DNS simulado é um servidor autoritativo real, ou seja, a máquina de destino deve ser capaz de resolver o DNS para o servidor DNS, portanto, a resolução do DNS da máquina de destino deve ser alterada.

insira a descrição da imagem aqui
detecção de nslookup

insira a descrição da imagem aqui

2. Estabeleça um túnel

(1) Servidor

iniciar o serviço apache

insira a descrição da imagem aqui

Modifique o arquivo de configuração
insira a descrição da imagem aqui
após a modificação
insira a descrição da imagem aqui

começar a escutar
insira a descrição da imagem aqui

(2) Cliente

teste de conectividade
insira a descrição da imagem aqui

comece

insira a descrição da imagem aqui

Então você pode acessar o serviço http

insira a descrição da imagem aqui
Da mesma forma, existem vários métodos de proxy, como ssh, nc e smtp, que podem ser proxy através do túnel
. Nota: ssh ocasionalmente solicitará a reinicialização do peer, e pode demorar mais algumas tentativas.

3. Dê uma olhada no pacote

Na fase de handshake
insira a descrição da imagem aqui
, os pacotes de pulsação são todos nomes de domínio legítimos
insira a descrição da imagem aqui
. Ao usar o túnel, um grande número de pacotes de registro TXT é armazenado no nome de domínio após a criptografia base64.
insira a descrição da imagem aqui

3. Explorar

1. Código-fonte e análise

TODO

2. Detecção e desvio

(1) O número de pacotes DNS anormais

Conforme mostrado na figura acima, ao usar o túnel DNS, haverá cerca de 200 pacotes DNS em 1s, e todos eles vêm do mesmo servidor DNS

Método de desvio: adicione intervalo no meio, mas isso levará a uma velocidade muito lenta

(2) Tipo de registro especial TXT

Normalmente, apenas o servidor de e-mail/gateway enviará registros TXT e não haverá um número tão grande. No tráfego de rede DNS normal, a proporção de registros TXT pode ser de apenas 1% a 2%

Método de bypass: uso misto de A, AAAA, TXT, MX, CNAME e outros registros

(3) Nome de domínio anormal

Existem strings semelhantes a base64 no nome de domínio, que podem ser detectadas por métodos como entropia de informações

Método de desvio: mantenha um dicionário de nomes de domínio comuns e depois divida, mas isso aumentará muito o número de pacotes

比如现在要把一个文件名 finalexamanswer.doc 传出去
base64 一下 -> ZmluYWxleGFtYW5zd2VyLmRvYw
然后编码常用域名,变成 Zm -> zone.music.domain,lu -> login.user.domain,YW``yun.web.domain …

(4) Pacote de batimentos cardíacos

O intervalo e o número de pacotes de pulsação são problemas

Método de desvio: o intervalo pode ser ajustado para ser mais longo, ou mesmo aleatório, e o número pode ser alterado para o soquete UDP para restabelecer o túnel

(5) Recursos de comando

Algumas seqüências características de comandos

Método de bypass: altere a string

Epílogo

Os pacotes Heartbeat são bons para solicitações normais de nomes de domínio, mas ainda há espaço para melhorias

Acho que você gosta

Origin blog.csdn.net/weixin_44604541/article/details/119139443
Recomendado
Clasificación