Introdução

Um dos passos iniciais importantes em ataques bem sucedidos (ou em pentests profissionais) é a enumeração do alvo.  Em poucas palavras para os que ainda não conhecem o termo, este processo é responsável por corretamente reconhecer e levantar informações acerca dos dados relativos ao alvo.  Outros sinônimos são:  footprinting (ou fingerprinting) e profiling.  Os Google dorks também são outra forma muito famosa de fazer isso.

Uma boa ferramenta de enumeração, assim como a técnica relacionada, são valiosas e podem economizar muito tempo nos esforços subsequentes do ataque.  Uma abordagem ou metodologia corretas devem ser preferencialmente seguidas para se obterem resultados efetivos.

Para este artigo, trago a discussão sobre o Maltego CE (Community Edition), cujo fabricante é a Paterva.  Este artigo está no formato de tutorial.  Convido você a manter contato para trocar experiências no uso de qualquer versão deste software, enviar algumas dicas ou mesmo comentar meu artigo.  Vamos lá!

 

Contato Inicial

Vou evitar perda de tempo mostrando procedimentos de download ou passos de instalação.  Isso já é muito bem coberto pela documentação oficial no site do produto.  Assim, se você acreditar que precisa se inteirar com relação a esta parte básica, dê uma pausa aqui, verifique o site e volte em seguida.

Como a ideia principal dos meus artigos é permitir a todos a chance de usar um bom software, minha escolha é pelo Maltego CE, pois ele é gratuito, apesar de restrito em algumas características, como no número de resultados (apenas 12).  É possível encontrar uma comparação completa entre as edições aqui.  Um ponto que deve ser esclarecido antes de qualquer coisa é que o Maltego não é open source.  Em vez disso, ele é OSINT (Open Source Intelligence).  Significa que os dados coletados em suas operações são obtidos de fontes disponíveis publicamente.  Em outras palavras, o Maltego não acessa qualquer informação privada/confidencial para apresentar seus resultados.

E agora, minha primeira opinião a respeito dele:  uma desvantagem é que depende do Java (JRE) para funcionar.  Se você já está familiarizado com meus artigos, pode já ter lido meu texto sobre o ZAP (Zed Attack Proxy).  Ele também possui esta dependência.  Independente de qualquer discussão inútil sobre flexibilidade, facilidade (ou dificuldade) de programação, alcance da linguagem ou algo assim, Java adora (realmente adora) memória RAM.  E isto é informado na documentação.  Então, para experimentar o Maltego, instale o JRE da Oracle e deixe-o usar sua memória.  Os documentos dizem que um bom ponto de partida são 2 GB, mas isso pode não ser suficiente para suas necessidades.

 

Teste 1 – Explorando Manualmente

Para garantir um ambiente controlado, criei um laboratório.  Se você ainda não sabe, tenho preferência pela Ubuntu Desktop para meus testes.  A máquina virtual tem 4 GB de RAM e está rodando num host com 16 GB.  Quando você inicia o Maltego, ele procura pelo JRE no PATH.  Na primeira vez em que é carregado, o Maltego se configure para usar os melhores parâmetros possíveis do JRE, respeitando os limites do seu sistema.  No meu caso, por exemplo, ele alocou 2.640 GB (ou seja, 64% da memória).  Estou usando a última versão do Maltego (quando escrevi este artigo, a 4.1.1).

Há alguns conceitos iniciais que precisam ser apresentados primeiro:  Entities, Transforms e Machines.  É melhor entender isso antes de iniciar suas aventuras.  Então, rapidamente explicando:

  • Entities são objetos com os quais você interage.  Você inicia o trabalho por eles, escolhendo um ou mais.  Alguns exemplos são:  domínio Internet, endereço de e-mail, registro MX;
  • Transforms são operações (ou métodos) que podem ocorrer com os objetos.  Eles executam tarefas e constróem gráficos.  Alguns exemplos são:  resolver host para endereço IP, encontrar a pessoa responsável por um endereço de e-mail ou obter mais informações sobre o servidor de correio eletrônico;
  • Machines são conjuntos (grupos) de transforms que automatizam algumas tarefas repetitivas, como consultas recursivas.  Existem algumas entities que não suportam machines.

Poderíamos iniciar os trabalhos com qualquer Entity, mas eu escolhi testar a ferramenta no website do SANS.  Então, vejamos o que conseguimos encontrar.  A tela apresentada quanto se carrega o Maltego pela primeira vez é algo parecido com a imagem a seguir.

Tela Inicial do Maltego

Volte para o shell (prompt de comando) de onde o programa foi carregado (para iniciar o Maltego, basta digitar “maltego_community”) e verifique se existe alguma atualização disponível.  No meu caso, não há mais, pois já apliquei todas (ignore o aviso):

$ maltego_community
Java HotSpot(TM) 64-Bit Server VM warning:  ignoring option MaxPermSize=128m; support was removed in 8.0
Checking for updates Fri Oct 06 10:00:00 2017
Found 0 updates

Na tela, do lado esquerdo, há um quadrado com os ícones de redes sociais da Paterva e, do lado direito, é possível encontrar todos os transforms disponíveis para serem instalados.  O Paterva CTAS é o único que já vem embarcado no Maltego CE, mas também é possível instalar outros.  No entanto, a versão community não permite instalar todos os transforms, sendo alguns restritos para edições comerciais do produto.  Para usar o Maltego CE, é preciso registrar uma conta na Paterva.  Basta fornecer e-mail e escolher uma senha.  Isto permitirá a você requisitar uma chave de API para usar com o software.

Inicie seu trabalho com um gráfico em branco.  Para fazer isto, simplesmente clique no ícone + no canto superior esquerdo ().  Uma nova janela em branco com o título “New Graph (1)” será aberta.  As entities são mostradas na coluna do lado esquerdo.  Gaste algum tempo navegando por elas.

Como vamos verificar o site do SANS, a entity correta é “Website”.  Para usá-la, selecione-a e arraste-a na janela de gráfico em branco.  Por default, quase toda entity que você usa vem com um valor já preenchido.  No caso desta, é “www.paterva.com”. Para alterá-lo, simplesmente clique duas vezes sobre o mesmo e digite o valor desejado.

Agora, clique com o botão direito sobre a Entity.  Você verá uma lista de transforms.  A partir daqui, é possível rodar todos os transforms ou escolhê-los individualmente.  Vamos começar do começo.  Escolha “Resolve to IP” clicando nas duas setas correspondentes.  Isto resolverá o endereço Internet para um IP.  Como resultado, você verá algo como uma interface de rede:

Isto corresponde a uma query simples que poderia ser feita com o “dig” ou “nslookup”, por exemplo.  Então, nenhuma novidade até aqui.  Avançando, clique com o botão direito sobre a entity e escolha “Links in and out of site”.  Agora, o Maltego constrói um gráfico mais complexo e inicia a criar mais entities e fazer conexões entre aquelas que possuem relacionamentos.  É possível que o gráfico não caiba na sua tela e é por isto que a documentação afirma que o Maltego prefere telas grandes. 🙂

Sites a partir de www.sans.org

Observe que há vários outros sites externos, e também alguns internos, relacionados ao site do SANS.  O Maltego constrói isso observando a estrutura do site alvo e todas as referências que ele faz a outros sites web.  Podemos seguir adiante e rodar o próximo transform “Convert to Domain”.  Este é o transform mais lento e mais complexo desta entity.  Ele vai o mais profundo possível para extrair todo e qualquer aspecto detectável do website e os resultados incluem servidores DNS, nomes de domínio, meta tags de SEO, endereços de e-mail e códigos de rastreamento.  Até mesmo uma miniatura do site é apresentada (ícone mais à esquerda).  Não coube em minha tela.  Assim, tive que exportar o gráfico para um formato comum (escolhi PNG).  Obtive isto:

Website do SANS

Agora, você tem um bocado de informação para manusear.  Cada uma das entities podem ser posteriormente exploradas para mostrar mais informação, como nomes de pessoas.  Vamos fazer uma tentativa com o endereço IP do website.  Clique com o botão direito e escolha o transform “IP owner detail”.  Obviamente, você pode escolher rodar todos os transforms, mas este em particular vai lhe retornar informação suficiente.

Depois de executar este transform, você verá diversas informações reveladoras, como as que são apresentadas na próxima figura.  Há também uma pessoa (Bronstein), a primeira de nossa busca.  Observe as localizações, o número de telefone e algumas phrases.  As últimas entities são desenhadas como balões, como aqueles que vemos em revistas de histórias em quadrinhos.  Você pode avançar mais com a última para procurar por arquivos e documentos.

Mais alguns detalhes

Caso você não saiba, Incapsula é uma solução anti-DDoS fabricada pela Imperva.  Assim, como nossa análise rápida, um dos resultados que encontramos é que o site do SANS emprega o Incapsula para se proteger contra DDoS.  Muito justo! 😉

Perceba que, à medida que o gráfico cresce, pode tornar-se impossível representá-lo como uma figura única na tela. Quando é bastante grande, depois de salvar o projeto e abri-lo de novo, você pode obter uma imagem como esta (observe a legenda):

Visão Geral do Projeto

Voltando aos nossos testes, vamos explorar o balão Incapsula rodando o transform “Files and Documents from Phrase”.  Ele apresenta uma janela pedindo que você faça login no Twitter antes de continuar.  Após clicar em “Sign In”, uma janela do browser é aberta e é preciso fazer login na conta do Twitter para autorizar o Maltego a ler seus tweets e saber quem o segue.  É um pouco estranho pedir isso, uma vez que apenas solicitamos procurar arquivos e documentos que foram originados pelo entity phrase (Incapsula).  Deveria pedir apenas para ser capaz de ler tweets de uma forma geral.  A janela de autorização se parece com esta:

Autorização do Twitter

Assim que você o autorizar, pode voltar à janela da aplicação e executar o transform.  Para minha surpresa, isto apresentou apenas alguns retweets mencionando o produto da Imperva.  Retweets são interessantes, mas não muito úteis para nosso teste.  Pelo menos, não neste caso.  Entretanto, você pode explorá-los e encontrar quem enviou os retweets do tópico ou mesmo quem o criou.  Clique com o botão direito sobre o retweet e escolha “To Twitter Affiliation (who said this)”.  E voilà!  Encontramos alguém:  Peter Collins.  Quando você o seleciona, pode obter detalhes a respeito desta pessoa no painel do lado direito (perfil do Twitter).

Mesmo que possa parecer uma pouco invasivo, isto é tudo informação pública.  Portanto, não houve qualquer comprometimento de privacidade aqui.  Sempre lembre que, para cada análise posterior feita com transforms, os resultados serão limitados a 12 ocorrências, pois é a community edition.  Finalizarei este teste aqui, já que encontramos uma pessoa. 🙂 À proporção que seu gráfico cresce, você pode conseguir mais espaço para ele reduzindo a barra de ferramentas.  Para isto, clique na seta para baixo, localizada do lado da aba Investigate.

 

Teste 2 – Machines

A outra possibilidade com o Maltego é trabalhar com machines.  Isto executará muito trabalho por você.  O Maltego possui um conjunto bem interessante de machines.  Para evitar misturar os testes, crie um novo gráfico.  Depois, clique na aba Machines e dê uma olhada.  Você pode não apenas usá-las, mas também construir sua própria machine, combinando com transforms embarcados ou seu próprio código.  Tudo isso pode ser gerenciado através do botão “Manage Machines”, mas não é possível alterar nada nos códigos embarcados.  Também é possível rodar uma machine em um gráfico novo simplesmente clicando o botão correspondente na barra de ferramentas mais à esquerda.  Está localizado no canto direito desta barra.

Então, vamos lá.  A primeira machine disponível é Company Stalker.  Quando você a executa, receberá uma lista de endereços de e-mail do domínio desejado.  Se testar com o sans.org, chegará alguma coisa como isto (apresentado aqui na forma de lista):

  • ballen@sans.org;
  • bmccormik@sans.org;
  • bmyrtil@sans.org;
  • ddiloreto@sans.org;
  • dshires@sans.org;
  • dwilliams@sans.org;
  • jchan@sans.org;
  • jmonaghan@sans.org;
  • mstratmann@sans.org;
  • mstueck@sans.org;
  • murbano@sans.org;
  • scasana@sans.org.

Indo além, você conseguirá todos os nomes executando transforms sobre os endereços de e-mail.  Por exemplo, o primeiro cavalheiro da lista acima se chama Ben Allen.  Você pode também encontrar aliases de e-mails.  Portanto, você não conhecia ninguém no SANS e, de repente, conhece 12 pessoas (13.  Não esqueça Peter Collins)…  Há algumas machines chamadas de “Footprints”.  Suas tarefas são ir em níveis mais fundos (1, 2, 3 e XXL).  O último é um verdadeiro monstro!  Ele minera o domínio para encontrar toda informação possível que possa ajudar em sua análise posterior.  Se você estiver usando uma versão comercial do Maltego, dê uma pausa para o café, porque isto pode demorar bastante.  Há também algumas machines do tipo Twitter (duas escavadoras e uma monitora) e uma última para encontrar endereços de e-mail de alguém, dado um nome completo.

Quando rodei o “monstro” apontando para o domínio do SANS, recebi esta figura:

Machine no domínio do SANS

Por conta da limitação, não pude ir muito além com a versão community de uma maneira automática.  Entretanto, é possível ver a lista de hostnames, endereços IP e blocos de rede e isso lhe dá a possibilidade de explorar individualmente cada entity.  Eu particularmente só uso machines com alvos muito grandes (sites muito complexos ou com muitas derivações), para poupar esforço e tempo.  Como elas executam uma série de tarefas automáticas, algumas podem não ser exatamente úteis para mim e terei de esperar pelo término para começar a trabalhar nos resultados.

 

Transforms Externos

Para conseguir ainda mais sobre determinado alvo, instalei o transform Shodan e avaliei o que ele me trouxe.  Se você ainda não tiver uma conta no Shodan, terá que criá-la, pois é necessária, uma vez que o transform irá solicitar a chave de API.  Sim, vivemos num mundo de APIs. 😉

Este transform precisa de um endereço IP para trabalhar sobre ele.  Você pode escolher qualquer entity que apresente um endereço em qualquer um dos gráficos abertos na dashboard do Maltego e clicar com o botão direito do mouse sobre ela.  O transform do Shodan traz informações bem curiosas, incluindo número do Sistema Autônomo, localização física do endereço (no caso do SANS, é Bethesda, Estados Unidos), hostnames com endereços IP reversos e muito mais.  Este transform trouxe-me a coordenada GPS do servidor!  É um playground incrível…

Assim, recomendo que você a gastar algum tempo instalando e testando outros transforms para ver SE e COMO eles podem lhe ajudar.  A Kaspersky tem um código muito bom que recebe feeds de inteligência contra ameaças.  O VirusTotal tem um também.  Você pode buscar a base de dados dele, verificando se o endereço IP alvo tem algum malware relatado, amostras descarregadas, entre outras coisas.  Novamente, você precisará de uma chave de API.  Meus testes com a infraestrutura do SANS não me trouxeram nada no VirusTotal.  Ainda bem.

Esta ligação entre código externo e o Maltego trabalha como uma infraestrutura de plugins:  muito fácil de instalar, usar e desinstalar.  Versões comerciais permitem ir ainda além, com investigação de redes sociais, inteligência da Palo Alto e Busca de Telefones, só para citar alguns exemplos.

 

Palavras Finais

O Maltego é uma grande ferramenta.  Para os propósitos de enumeração/descoberta e footprinting, faz um trabalho muito bom, economizando tempo com Google dorks, queries no whois ou mesmo engenharia social.  E isto pode servir como um alerta para as empresas e pessoas prestarem mais atenção aos que elas publicam na Internet.  Com praticamente nenhum esforço, pude encontrar nomes de pessoas, endereços de e-mail e coordenadas GPS.  Obviamente que não tenho qualquer má intenção com isso, mas nunca se sabe quem está do outro lado do teclado usando programas assim.

Considere ainda a geração de relatório.  Esta característica cria um arquivo PDF com todas as informações detalhadas do seu gráfico.  Isto pode ser bem útil para incluir no seu relatório final de pentest.

Versões comerciais podem ser cotadas (obter os preços) no site da Paterva.  A licença do cliente clássico custa aproximadamente US$ 760,00 por ano.  Você começa a ganhar descontos à medida que a quantidade de licenças aumenta (cotei 5 clientes e isto reduziu o preço individual para US$ 646,00).  A licença de cliente XL custa cerca de US$ 1.800,00.  Novamente, descontos são aplicados quando se aumenta a quantidade de licenças.  O preço reduziu para US$ 1.530,00 em minha simulação.  Você também pode comprar servidores Maltego para realizar seus testes on-premises, sem a necessidade de sempre se conectar aos servidores da Paterva para cada trabalho.  Há três tipos de servidores e você consegue mais informações sobre eles aqui.  Um adendo:  não trabalho para a Paterva. 🙂

O Maltego CE também é parte do Kali Linux.  Se o Kali faz parte do seu toolbox de pentest, você já deve estar com o software.  Use e abuse.

Até o próximo artigo.

Compartilhe:
Categorias: Segurança

Maurício Harley

Olá! Meu nome é Maurício Harley. Tenho mais de 20 anos de experiência em Tecnologia da Informação. Durante minha carreira, trabalhei em setores diversos, como suporte a usuário final, manutenção de hardware, instalação e suporte a redes de computadores, programação, projetos avançados em Data Center, Cloud Computing, Cyber Security e Redes, incluindo Service Providers.

3 comentários

Ronald · 2017-10-11 às 11:19

Artigo muito bom ..

Parabéns !

    Maurício Harley · 2017-10-11 às 18:29

    Muito obrigado, Ronald!

OSINT com o Recon-NG - Parte 1 de 3 | Blog itHarley · 2018-01-11 às 21:00

[…] você já leu meu artigo sobre o Maltego, você já sabe algo sobre os passos iniciais de um pentest.  Sim, é exatamente o que você está […]

Deixe um comentário

Avatar placeholder

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

Translate

You cannot copy content of this page.