Coleta de informações em um Pentest

A coleta de informações é o primeiro passo de uma invasão a um sistema, onde devemos aprender o máximo sobre  escopo de nossa análise. Pensar fora da caixa é importante, como:

  • Quais os sistemas que o nosso alvo utiliza?
  • Eles estão devidamente atualizados com as versões?
  • Existe algum firewall ou proxy na rede?
  • Como é estruturação da rede de servidores e dos usuários?
  • Quais sites costumam visitar?
  • Quais os parceiros de negócios deles?
  • Existe algum diretor da organização viajando?
  • Tem servidores de e-mail, web, ftp, etc. na empresa?
  • Qual é o IP dos servidores?

A intenção aqui é simplesmente obter informações de vários modos, sem ao menos atacá-los de fato (coleta passiva), pois elas servirão de base para as próximas etapas da análise. Com estas informações, partiremos para a fase de modelagem das ameaças, onde pensaremos como um invasor e elaborar as estratégias de ataque. Mais a frente, iremos coletar mais informações que não conseguimos obter utilizando alguns scanners de vulnerabilidades, onde passa a ser uma coleta ativa.

OSINT – Open Source Intelligence

É possível obter informações sobre a empresa e a infraestrutura dela sem ao menos enviar qualquer pacote de dados para eles. Existe um momento é que será difícil separar o que é importante da sua coleção de informações. Alguma informação coletada sobre a vida de um diretor pode trazer o benefício de ser útil para identificar a senha do e-mail dele, como por exemplo a sua data de nascimento, nome da esposa, filhos, time de futebol, etc., mas ao mesmo pode não ser útil. Agora imagina você achar o perfil do LinkedIn ou o currículo dele com informações relevantes onde ele se diz ser expert em alguma ferramenta ou software específico. Isto pode indicar que ele a utilize em sua infraestrutura.

Ao contrário da coleta de informações de fontes secretas, o modo OSINT de obter informações é utilizando fontes públicas, como redes sociais. O sucesso de um pentest depende das informações coletadas.

Através das ferramentas OSINT podemos pegar algumas informações, como:

  • E-mails
  • Telefones
  • Sistemas Operacionais
  • Informações de IP
  • Versões de softwares
  • Geolocalização
  • Detalhes pessoais

Netcraft

As vezes, as informações que os servidores web ou empresas de hospedagens de sites coletam e tornam públicas podem te dizer muito sobre um site. Por exemplo, uma empresa chamada Netcraft armazena informações sobre o uptime e faz algumas consultas sobre os softwares básicos nos sites. Netcraft também provê outros serviços, como o serviço de antiphishing.

Resultado no Netcraft de uma consulta do site g1.com.br

Resultado no Netcraft de uma consulta do site g1.com.br

Veja que o resultado da consulta diz quando o site foi visto pela primeira vez (Janeiro de 1998). Tem um IP 186.192.90.5.

Com estas informações, quando se realiza um penteste em um site, podemos começar listando as vulnerabilidades que afetam somente os sistema operacional do site alvo. O site do G1 é apenas um exemplo da consulta no Netcraft. Não tente nada em nenhum sistema que não tenha permissão para realizar testes!

Estas informações auxiliam nas tentativas de ataques de engenharia social para pegar algumas credenciais do site, onde podemos enviar um e-mail para algum funcionário sendo de alguma empresa que seja parceira deles, pedindo para o administrador logar e checar algumas configurações de segurança.

Pesquisas de Whois

Todos os registradores de domínios mantém os registros dos domínios que hospedagem. Esses registros contém informações sobre o dono, incluindo informações de contato. Por exemplo, se nós executamos um comando de Whois no Kali para consultar informações sobre qualquer site, nós obteremos estas informações. Existem também alguns sites que fazem este tipo de consulta, como: Ping.EU e Whois.Net.

Whois do site r7.com.br no Ping.EU

Whois do site r7.com.br no Ping.EU

Algumas empresas fornecem o registro de domínio de forma privada, onde escondem as informações do dono do domínio, utilizando informações de um proxy.

Reconhecimento de DNS

Nós podemos também usar o servidor Domain Name System (DNS) para aprener um pouco mais sobre o domínio. Servidores DNS traduzem a URL que é legível para humanos, como www.google.com em um endereço IP.

nslookup

Ao utilizarmos o comando nslookup no CMD do Windows com o site www.google.com.br, temos o seguinte resultado:

nslookup - www.google.com.br

nslookup – www.google.com.br

O comando retornou o endereço IP “216.58.202.35” embaixo de “Addresses”. Podemos dizer para o nslookup achar os servidores de e-mail no mesmo site, olhando os registros MX. Basta executar a sequência de comandos abaixo:

nslookup - MX - r7.com.br

Resultado dos registros MX no nslookup para o domínio r7.com.br

Host

Outra utilidade das consultas DNS é o comando Host. Nós perguntamos através do Host os nomes dos name servers de um domínio através do comando host -t ns domínio. Veja o exemplo abaixo:

Comando host -t ns ibm.com

Comando host -t ns ibm.com

Este resultado mostra todos os servidores DNS para o domínio ibm.com.

Transferência de Zona (Zone Transfer)

Transferência de zona permite os name servers a replicarem todas as entradas de um domínio. Quando se está configurando os servidores DNS, você normalmente tem um name server primário e um servidor backup. Uma boa forma de popular todas as entradas em um servidor secundário de DNS é fazendo uma consulta no servidor primário para todas as entradas?

Infelizmente, muitos administradores de sistemas configuram as transferências de zona DNS de forma insegura, assim qualquer um pode transferir os registros DNS para um domínio. Você pode tentar com o comando a seguir para fazer o download de todos os registros DNS do domínio zoneedit.com. Utilize o comando com a opção -l para especificar a transferência de zona e escolha um name server do exemplo anterior.

root@kali:~# host -l zoneedit.com ns2.zoneedit.com
Using domain server:
Name: ns2.zoneedit.com
Address: 69.72.158.226#53
Aliases:
zoneedit.com name server ns4.zoneedit.com.
zoneedit.com name server ns3.zoneedit.com.
zoneedit.com name server ns15.zoneedit.com.
zoneedit.com name server ns8.zoneedit.com.
zoneedit.com name server ns2.zoneedit.com.
zoneedit.com has address 64.85.73.107
www1.zoneedit.com has address 64.85.73.41
dynamic.zoneedit.com has address 64.85.73.112
bounce.zoneedit.com has address 64.85.73.100
--snip--
mail2.zoneedit.com has address 67.15.232.182
--snip--

Existem diversas páginas de entradas de DNS para zoneedit.com, o que dá uma boa ideia de onde começar a olhar por vulnerabilidades para um pentest. Por exemplo, mx-caprica.easydns.com é provavelmente um servidor de e-mail, então podemos procurar por potenciais vulnerabilidades no software que está rodando nas portas padrões, como 25 (SMTP) e 110 (POP3). Se conseguimos achar o servidor de webmail, qualquer usuário que acharmos podem nos levar a direção correta, assim podemos tentar adivinhar a senha e ganhar acesso aos e-mails da empresa.

Garimpando endereços de e-mail

Testes de invasão externos sempre encontram poucos serviços expostos em comparação aos testes internos. Uma boa prática de segurança é expor somente os serviços necessários que precisam ser acessíveis remotamente, como servidores web, de e-mails, VPN, FTP e SSH, e qualquer um outro que seja crítico para o objetivo da empresa. Serviços como estes são superfícies de ataques comuns, e ao menos que os empregados utilizem segundo fator de autenticação, acessar o webmail da empresa pode ser simples para um atacante começar tentar adivinhar alguma credencial válida.

Uma excelente maneira de achar usuários é procurando por endereços de e-mails na internet. Você pode se surpreender ao achar endereços de e-mails corporativos publicados.

Existe uma ferramenta em Python chamada theHarvester para vasculhar centenas de resultados de sistemas de busca por possíveis endereços de e-mail. Este software pode automatizar buscas por endereços de e-mails no Google, Bing, PGP, LinkedIn e outros. Por exemplo, veja o que acontece se executarmos ele no sites da cisco.com utilizando apenas como critério o Google:

Resultado do theHarvester no site cisco.com

Resultado do theHarvester no site cisco.com

Maltego

Maltego é uma ferramenta de data-mining designada para coleta de informações do tipo Open Source Intelligence (OSINT). Ele tem uma versão gratuita e outra paga. O Kali, limita o resultado retornado, mas podemos utilizar para coletar algumas informações interessante de forma bem rápida. A versão paga oferece mais resultados e funcionalidades, e para utilizar em seus pentestes, você precisará ter a versão paga.

Para usar o Maltego, vá até a linha de comando do Kali e digite maltego. A interface gráfica será lançada. Você será questionado para criar uma conta grátis no site da Paterva e logar. Uma vez logado, escolha a opção “Open a blank graph and let me play around“, e finalmente clique em “Finish“.

Maltego - Startup wizard

Maltego – Startup wizard

Agora selecione a opção Palette do lado esquerdo. Como você pode ver, nós podemos coletar informações sobre todos os tipos de entidades. Clique em Domain e digite um endereço que deseja obter informações.

Maltego - Domain

Maltego – Domain

 

Expanda a opção Infrastructure da Palette, clique e arraste a opção Domain para o novo gráfico. Por padrão, o domínio é paterva.com. Para trocar, dê um clique duplo para digitar e mudar no campo de texto do lado direito da tela.

Uma vez o domínio configurado, você pode rodar o transforms (a forma que o Maltego realiza as consultas) nele, fazendo com que ele colete informações interessantes. Clique com o botão direito sobre o ícone do domínio e escolhar a opção Run Transform. Você verá que existem diversos transforms disponíveis para a entidade utilizada. Vamos procurar pelos registros MX de um site, que é onde estão os servidores de e-mail. Em All Tranforms selecione a opção To DNS Name – MX (mail server) transform.

Maltego - All Transforms - DNS MX

Maltego – All Transforms – DNS MX

Se você executar no mesmo domínio que fizemos o teste anteriormente (zoneedit.com), você achará o servidor mx-caprica.easydns.com.

Existem outros comandos interessantes que podem ser utilizados, como ToServerTechnologiesWebsite para ver quais software está rodando aquele site.

Você pode achar informações adicionais e tutoriais sobre o Maltego em seu site oficial. Se você aprender bem como utiliza-lo, você conseguirá obter informações que levariam horas, em apenas alguns minutos.

Escaneando portas

Quando você começa um pentest, o escopo potencial é praticamente sem limite. O cliente poderia estar rodando diversos programas com problemas de segurança. Eles podem estar configurados incorretamente na infraestrutura e que poderiam levar a um comprometimento, senhas fracas ou padrão poderia deixar um atacante entrar de forma fácil. Os pentests são apontados para um escopo particular de um range de IP e nada mais. Precisamos descobrir quais os sistemas estão ativos e quais se comunicam um com os outros. Para isto fazemos um escaneamento de portas, ou também chamado de port scanning.

Escaneando porta manualmente

Nós podemos ter uma boa ideia sobre um ataque em uma rede mapeando algum range e consultando as portas que estão escutando em cada sistema. Nós podemos fazer isto manualmente através de uma ferramenta de conexão para a porta específica, como o telnet ou Netcat e gravar o resultado obtido. Vamos utilizar o telnet para se conectar na porta 25 (padrão SMTP) de um host qualquer e verificar se está disponível para conexão.

Consultando um host e uma porta com telnet

Consultando um host e uma porta com telnet

 

Resultado de uma conexão bem sucedida com telnet

Resultado de uma conexão bem sucedida com telnet

Veja que ao se conectar no endereço, ele exibe o banner do servidor “Nemesis ESMTP Service”. Tenha em mente que os administradores de sistemas podem alterar o banner para qualquer texto que queiram, inclusive enviando os atacantes e pentesters a perseguirem algo que não existe de fato, como pesquisar vulnerabilidades de um sistema que não está implementado. Na maioria das vezes, as versões dos banners exibidos estarão corretos, e simplesmente conectando na porta e vendo o banner, dispõe um caminho para iniciarmos a nossa pesquisa para o pentest. Se você pesquisar pelo serviço exposto no banner, você pode achar algumas coisas interessantes, mas por outro lado, conectar em cada porta TCP e UDP de uma única máquina poderá ser uma perda de tempo. Felizmente, computadores podem realizar tarefas repetitivas, e para isto podemos utilizar uma ferramenta de port scanning como o Nmap e achar as portas que estão escutando.

Escaneando porta automatizada com Nmap

Nmap é uma ferramenta conhecida no mercado para escaneamento de portas. Livros inteiros foram escritos somente sobre o Nmap e a página do manual pode ser assustadora pela quantidade de informação. Veremos com mais detalhes em outra postagem.

Firewall com IDS e IPS podem detectar e bloquear tráfego de escaneamentos, então você pode rodar o Nmap e não obter nenhum resultado. Você pode ser contratado para realizar um pentest externo e não encontrar nenhum host respondendo, mas isto pode ser provavelmente o firewall te bloqueando. Por outro lado, seu Nmap pode informar que os hosts estão ativos e estará escutando em cada porta que você escaneou e foram detectadas.

Sou bacharel em Sistemas de Informação pela Estácio de Sá (Alagoas), especialista em Gestão Estratégica da Tecnologia da Informação pela Univ. Gama Filho (UGF) e pós-graduando em Gestão da Segurança da Informação pela Univ. do Sul de Santa Catarina (UNISUL). Certificações que possuo: EC-Council CEH, CompTIA (Security+, CySA+ e Pentest+), EXIN (EHF e ISO 27001), MCSO, MCRM, ITIL v3. Tenho interesse por todas as áreas da informática, mas em especial em Gestão e Governança de TI, Segurança da Informação e Ethical Hacking.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *