Preparando um Pentest

Até mesmo o teste de segurança mais bem planejado pode falhar se o testador não possuir as ferramentas certas para o trabalho. Eu, não raro, passo 3, 4 ou 5 dias me preparando para uma tarefa tecnicamente desafiadora; por isso, me atrevo a dar conselhos sobre como se preparar para um teste de segurança, sobre como capturar tráfego de rede, como manter a confidencialidade dos relatórios, como documentar o passo-a-passo do teste de segurança, e muito mais.

O Hacker Ético é um termo usados para descrever o indivíduo que ajuda a identificar possíveis brechas em um computador ou rede. Um hacker ético tenta ignorar a segurança do sistema e procura por pontos fracos que possam ser explorados por hackers maliciosos. Estas informações são então utilizadas para melhorar a segurança de um sistema, num esforço para minimizar ou eliminar quaisquer potenciais ataques por parte de hackers maliciosos.

Coletando o tráfego da rede

Algumas vulnerabilidades de segurança podem ser encontradas capturando e examinando o tráfego de uma rede. A maioria dos testes de segurança, consiste em capturar o tráfego enviado do sistema do testador para o sistema de destino e vice-versa.

Ao fazer a captura, esse fluxo de dados passa pela(s) máquina(s) do testador de segurança que deve ficar fora de problemas legais no caso de algo der errado. A captura de Tráfego de rede inclui “carimbos” de data/hora, que podem servir como prova de quem fez o quê para quem.

Durante um teste de segurança, o testador geralmente pode coletar os dados desejados de duas maneiras: baseada em software ou baseado hardware. Neste cenário, a captura baseada em software significa que os dados são geralmente capturados na(s) própria(s) do testador, enquanto uma captura de rede baseada em hardware é feita usando um dispositivo externo.

Captura de Trafego Baseada em Software

Uma alternativa de cross-platform para capturar e apresentar dados visualmente de uma maneira agradável é Wireshark

Originalmente chamado Ethereal, o Wireshark tornou-se, mais ou menos, o padrão GUI de Analisador de Protocolos de Rede (Sniffer). Instaladores para OS X e Microsoft Windows podem ser baixados do site Wireshark. Como o aplicativo é de código aberto, os mantenedores dos repositórios Linux fornecem suas próprias versões, fácil de instalar dentro de cada ecossistema.

Outro Sniffer de qualidade é o Microsoft Message Analyzer. Uma das vantagens deste é ser a única aplicação do Windows que pode dissecar as implementações de protocolos proprietários da Microsoft, que a maioria dos outros analisadores de pacotes de rede não podem.

Além disso, o Microsoft Message Analyzer tem suporte para descriptografar segurança de camada de transporte (TLS) e tráfego na camada de sockets seguros (SSL), como solicitações de navegador da Web criptografadas.

O Tcpdump é sem dúvida a alternativa de captura de pacotes mais bem estabelecida para sistemas operacionais nix como Linux e Solaris. Este aplicativo, de código aberto, vem pré-instalado com muitos sabores dos Sistemas nix. Tcpdump tem uma interface de linha de comando, mas seus dados de pacotes de rede capturados são salvos em um formato adequado para importação em outras aplicações, como Wireshark, para uma inspeção mais visualmente agradável. A instrução Tcpdump para salvar o tráfego de rede capturado em um formato adequado para visualização subsequente no Wireshark é:

tcpdump -i en0 -n -s 65535 -C 10 -w capturedTraffic.dump

O argumento mais importante ou o comando tcpdump ilustrado acima é a opção -C 10; esta opção instrui Tcpdump para girar os arquivos de saída, quando atingem um determinado tamanho. Ajustando o valor para 10 garante que o tcpdump criará um novo arquivo de saída de tráfego de rede capturado a cada 10 MegaBytes. A figura abaixo mostra a GUI do Wireshark exibindo dados capturados

Wireshrk.jpg

Captura de Trafego Baseada em Hardware

Uma abordagem de captura de pacotes de rede baseada em hardware pode assumir várias formas. Uma alternativa Faça Você Mesmo é construir e configurar um pequeno dispositivo que permite que o tráfego de rede passe por suas interfaces de rede: por exemplo, um Raspberry PI.

O Raspberry PI pode ser configurado para escrever qualquer tráfego de rede, que venha em sua direção, no disco. Isto pode ser feito sem qualquer adulteração desnecessária dos pacotes de rede à medida que eles se dirigem ao destino final.

Hoje em dia, está na moda o “Wifi Pineapple“, um hardware que se pode compra, no Brasil, por cerca R$500,00.

Configuração do software do Security Tester

Assim como um pintor, que não pode trabalhar sem tinta, um testador de segurança é de pouca utilidade sem suas ferramentas. As ferramentas necessárias para um teste de segurança dependem em grande parte das circunstâncias do teste. Se o sistema a ser testado for um Servidor, então o intruso deverá usar um conjunto de ferramentas diferente do que usaria para testar um sistema de Controle Industrial.

Embora muitos sistemas e redes atuais sejam semelhantes, alguns testes de segurança exigem o desenvolvimento de softwares e processos personalizados para que o teste seja eficiente.

Para muitos testadores, a maneira mais eficiente, para não dizer rápida, para executar um processo de teste é usar uma imagem de máquina virtual pré-configurada contendo várias ferramentas de segurança padrão.

Uma Máquina Virtual pré-configurada poupará o testador de segurança da frustração de tentar obter todas as ferramentas necessárias para instalar e harmonizar o sistema antes do teste.

No entanto, existe uma desvantagem em usar máquinas virtuais construídas por terceiros: é que o próprio software da máquina virtual adiciona uma camada de abstração entre o testador e o sistema a ser testado; alguns softwares de máquinas virtuais, também são notoriamente difíceis de configurar em relação as configurações de interface de rede do host.

Não seja volátil

Qualquer especialista forense de computador tentará extrair as provas de um dispositivo pela ordem de volatilidade. Por exemplo, os dados que residem na memória são mais voláteis do que os dados armazenados em um disco rígido, que por sua vez são mais voláteis do que os dados gravados em um CD-R.

Inspirado no mundo da computação forense e na ordem da volatilidade, enquanto realizo um teste de segurança, admito que a plataforma do testador de segurança pode ser implacavelmente volátil. Um exemplo de tal situação volátil é quando uso uma Máquina Virtual para realizar os testes – uma queda súbita do software de virtualização implica na perda de todos os dados, e para sempre. O único antídoto é uma rotina sólida de backup, juntamente com anotações do que está aconteceu fora do contêiner virtual.

Listas de verificação de fim de dia

Como eu facilmente esqueço as coisas simples quando se trabalho em um projeto de teste, uma lista de verificação de fim de dia (no meu caso, fim de noite) é uma boa maneira de me certificar de que não esqueci o que foi feito.

A lista a seguir é um resumo do que faço já ao amanhecer:

  • Salvar o trabalho (incluindo estados de máquina virtual).
  • Armazenar o notebook em um local seguro.
  • Destruir as notas de papel.
  • Fazer backup dos dados.
  • Criptografar os dados de backup e armazena-los em um local seguro.
  • Relatar o progresso do teste de segurança, se necessário.
  • Fazer anotações de onde parei para que eu saiba por onde começar no dia seguinte.

Mantenha os segredos seguros

O(s) sistema(s) no âmbito do pentest provavelmente conterá dados sensíveis. Isso significa que, como testador de segurança, devo tomar decisões cuidadosas sobre como processar e armazenar dados relacionados ao teste segurança segura.

Também preciso garantir que todos os dados relacionados ao teste sejam armazenados com segurança, ou apagados, depois do teste terminado. Isso é importante porque a última coisa que eu quero é que o meu relatório final, contendo descrições detalhadas das vulnerabilidades encontradas, acabem em mãos erradas.

Dados sensíveis, durante um teste de segurança, vêm em todas as formas e tamanhos. Podem ser dados de desenvolvimento de um produto, informações de folha de pagamento, relatórios médicos e assim por diante. Todos os dados com os quais o testador de segurança interage devem ser protegidos da melhor maneira possível. Isto é especialmente verdadeiro para informações como senhas, Informações pessoais e dados relacionados a patentes.

Uma maneira rápida e confiável de configurar seu computador para armazenar dados de forma segura é incorporar uma criptografia de disco.

Se você estiver usando o Windows como sua plataforma de teste de segurança, você deve ativar a Criptografia da Unidade de Disco BitLocker, uma ferramenta padrão desse sistema operacional que muitos desconhecem.

Para o Linux, existem diversas ferramentas que protegem o sistema e arquivos criado pelo usuário. Tal qual o gpg, o ccrypt, etc…

Recomendo, enfim, como ponto de partida, este Tutorial, do Bruno Borin, sobre diversos programas e ferramentas para criptografar seus arquivos nas plataformas Windows, Mac OS X e no Linux.

Meu Skill

O propósito desse post é esclarecer a alguns leitores e amigos têm me perguntado se eu sou um Hacker e se podem ser perigosas estas publicações; espero ter esclarecido com este post que, aliás, ficou mais longo do que eu pretendia. Finalizo com uma breve exposição da minha trajetória de “Escovador de Bits”.

A segurança é uma grande árvore!! Existem muitos ramos secundários; por exemplo, eu estou interessado em exploração de sistemas operacionais (Exploits) e malwares porque tenho uma expertise em sistemas e em redes; não pratico Engenharia Social. Dizem alguns amigos que eu sou um Dinossauro por ser do tempo das Válvulas, das mídias perfuradas onde cada instrução em Fortran ou Cobol era um cartão; do Telex, que utilizava fitas perfuradas com um código baseado no Código Morse, o FIVE UNIT CODE (Código de Cinco Unidades) – PROTOCOLO -, para mim tudo é PROTOCOLO.  Linguagem? C pode ser usada para a escrever vírus, mas Python é minha alternativa atual por ser fácil. Abandonei Assembly (fui Instrutor da saudosa Telebrás no tempo da arquitetura 8085 e Z80) na época em que apareceu o Pentium – adoro linguagem de baixo nível, mas surgiram arquiteturas muito variadas e complexas -, coisa para especialistas. O 8085 era um microprocessador com apenas 74 operações, tais como: MOV, ADD, SUB, JMP, etc., mas sei consultar o Instruction Set dos processadores atuais. Um aprendizado básico foi fundamental!

Não invisto muito em criptografia por exigir muita dedicação ao ter a matemática como base para os seus conceitos; me limito ao entendimento das chaves e dos protocolos envolvidos.

Para Você

Você deve aprender networking. O mais importante é o modelo OSI, o modelo TCP / IP, o ARP, o IP (v4, v6), TCP, UDP, NetBios, SOCKS, firewalls, HTTP, FTP, DNS, SMTP e praticamente tudo na camada de Aplicação.

Tente manter-se atualizado. Saiba o que está acontecendo no mundo. Visite sites como http://thehackernews.com/, https://www.owasp.org e muitos outros (você deve encontrá-los por si mesmo) para obter as últimas notícias. O mais importante de tudo que você precisa saber aplicar o que aprendeu no momento certo. Ah, seguir caras como Adrián Lamo no https://www.quora.com/

Boa sorte e divirtam-se!

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s