Breve Introdução a OSINT

Olá, pessoal!  Chegou a hora de falarmos de um tema muito importante no universo de pentest, ou mesmo de análise digital, num contexto mais abrangente:  OSINT, sigla em Inglês para Inteligência de Fontes Abertas (Open Source Intelligence).  Em poucas palavras, significam dados obtidos publicamente e que, após coleta, processamento e organização, podem apresentar informações relevantes sobre pessoas, sistemas, empresas ou tudo isto.

A Inteligência de Fontes Abertas não é um conceito novo.  Algumas literaturas dizem que o termo foi originado em 2004, quando o Departamento de Defesa dos EUA recomendou a criação de uma agência dedicada a este fim para evitar catástrofes como o 11 de Setembro.  No entanto, alguns acontecimentos anteriores podem nos sugerir que este conceito teria sido aplicado há mais tempo.  Um dos motivos atrativos de seu uso é o baixo custo de acesso aos dados, uma vez que estão amplamente disponíveis, tais como jornais, programas de televisão, redes sociais, blogs, revistas, e demais meios de comunicação.

No entanto, existe alguma polêmica quanto aos resultados apresentados por técnicas que fazem uso de OSINT, uma vez que algumas delas envolvem a aplicação de VPNs para acessar anonimamente as fontes de informação.  Polêmicas e discussões à parte, nesta série de posts (dividida em três episódios), vamos cobrir o Recon-NG, uma ferramenta poderosa, focada em coletar, apresentar e exercitar os conceitos de OSINT.  Ela pode buscar pessoas, empresas, sistemas, vulnerabilidades, portas e muitos outros itens.  Vamos nessa!

 

Introdução

Se 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á pensando:  reconhecimento (ou, em Inglês, reconnaissance).  Uma forma mais elegante de chamar seria enumeração do alvo, como citamos no referido artigo.

Fazendo uma comparação simples e pretensiosa, o que o Maltego faz de uma forma gráfica, o Recon-NG faz na boa e velha linha de comando.  O Maltego parece mais poderoso por conta do requisito de Java e todo aquele conjunto completo de recursos.  Mas, não se deixe enganar.  Você vai perceber que o Recon-NG pode realizar muitas ações, inclusive verificar vulnerabilidades no alvo.

Assim, para os propósitos de vasculhar a Internet à procura de dados, preencher tabelas internas com os resultados e permitir exportá-los para uma série de formatos, o Recon-NG faz muito bem o trabalho.

 

Familiarizando-se

A instalação é simples e rápida, bastando clonar o repositório localizado no BitBucket e seguir os passos indicados na documentação.  Você pode seguramente esquecer a instalação se já estiver usando o Kali, uma vez que o Recon-NG já está embarcado.  No momento em que escrevi este artigo, a última versão era a 4.9.3, liberada em 05/01/2018, o que mostra que o projeto está bem vivo!

O software foi criado e é primariamente mantido por Tim Tomes.  Felizmente, há um grande número de colaboradores, fazendo pull requests e forks do master source.  Seu trabalho merece honra, uma vez que ele une muitos códigos em torno de uma única plataforma, tornando o uso extremamente simples.

O Recon-NG apresenta um prompt tão logo é carregado.  Se você já usa o Metasploit, perceberá as semelhanças.  Como ele é feito inteiramente em Python, e emprega uma estrutura interna modular, fica intuitivo carregar e trabalhar com os diversos códigos auxiliares.  O Recon-NG, assim como os plugins do Volatility Framework, permitem a carga de códigos particulares para alcançarem objetivos específicos.  Cada código também é escrito em Python e disponibilizado como open source.

Quando você carrega a ferramenta, você receberá uma tela como a que aparece abaixo.  Lembre-se de que todos os requisitos precisam ser instalados antes de usar o software:

   _/_/_/    _/_/_/_/    _/_/_/    _/_/_/    _/      _/            _/      _/    _/_/_/
   _/    _/  _/        _/        _/      _/  _/_/    _/            _/_/    _/  _/       
  _/_/_/    _/_/_/    _/        _/      _/  _/  _/  _/  _/_/_/_/  _/  _/  _/  _/  _/_/_/
 _/    _/  _/        _/        _/      _/  _/    _/_/            _/    _/_/  _/      _/ 
_/    _/  _/_/_/_/    _/_/_/    _/_/_/    _/      _/            _/      _/    _/_/_/    
                                                                                        

                                          /\
                                         / \\ /\
        Sponsored by...           /\  /\/  \\V  \/\
                                 / \\/ // \\\\\ \\ \/\
                                // // BLACK HILLS \/ \\
                               www.blackhillsinfosec.com

                      [recon-ng v4.9.3, Tim Tomes (@LaNMaSteR53)]                       

[77] Recon modules
[8]  Reporting modules
[2]  Import modules
[2]  Exploitation modules
[2]  Discovery modules

[recon-ng][default] >

Antes da tela anterior aparecer, você pode receber mensagens de aviso como “[!] ‘github_api’ key not set. github_miner module will likely fail at runtime. See ‘keys add’.”.  Isto tem a ver com a falta da chave de API correspondente.  Como muitos módulos interagem com serviços web externos que necessitam de uma chave de API, este tipo de mensagem aparecerá até que você obtenha sua própria chave para o módulo de reconhecimento que precisa usar.

Se você ainda não conhece a Web Application Penetration Testing Methodology, é hora de aprender.  Há bastante recursos online disponíveis tratando da mesma.  Basicamente, esta abordagem consiste em cinco passos:  (1) Reconhecimento, (2) Varredura, (3) Ataque, (4) Manutenção do Acesso e (5) Análise.  Como estamos tratando de OSINT, focaremos apenas no primeiro passo.  Ele engloba adquirir dados de fontes abertas, sem consultar diretamente o alvo.  Isto também é conhecido como “reconhecimento passivo” ou “enumeração em sombra”.

Vamos começar do começo.  Um ponto que precisa ser mencionado são as variáveis.  Elas podem ser de dois tipos:  globais ou específicas a algum módulo.  Se uma variável é definida globalmente, você pode usá-la em todos os contextos do software.  Em breve você verá que, uma vez que um módulo é carregado ou você entra num workspace, o prompt muda para refletir a operação.

Então, dois conceitos acabaram de ser mencionados:  variáveis e workspaces.  O primeiro, obviamente, corresponde a um espaço temporário de memória usado para armazenar algum dado.  É possível alterar o valor de um variável com o comando “set”.  Quando você invoca este comando sem passar nenhum parâmetro, as variáveis do contexto em que você se encontra serão mostradas, como na tela abaixo:

[recon-ng][default] > set
Sets module options

Usage: set <option> <value>

  Name        Current Value  Required  Description
  ----------  -------------  --------  -----------
  NAMESERVER                 yes       nameserver for DNS interrogation
  PROXY                      no        proxy server (address:port)
  THREADS     10             yes       number of threads (where applicable)
  TIMEOUT     10             yes       socket timeout (seconds)
  USER-AGENT  Recon-ng/v4    yes       user-agent string
  VERBOSITY   1              yes       verbosity level (0 = minimal, 1 = verbose, 2 = debug)

Observe que alguns campos já estão preenchidos com valores e outros, ainda não.  Para garantir uma boa execução da ferramenta (e não depender de um servidor externo), vou configurar o servidor DNS para o meu interno (neste caso, “192.168.0.1”).  A sintaxe do comando é “set <variável> <valor>” (substitua “192.168.0.1” com um valor mais adequado para você).  O software confirma a definição da variável:

[recon-ng][default] > set nameserver 192.168.0.1
NAMESERVER => 192.168.0.1

Observação:  algumas variáveis podem ser sobrescritas quando você entra num contexto.

Os workspaces também são um recurso interessante.  Com eles, você pode organizar seu trabalho, separar cada projeto (ou alvo) em sua própria área.  Você verá que, durante o uso do Recon-NG, você acabará preenchendo tabelas de um banco de dados.  Se você usar apenas o workspace default para cada trabalho que fizer, os dados serão misturados e a separação posterior será bem complicada.  Assim, a recomendação é criar um workspace para cada alvo.

Outro ponto importante e útil de se lembrar:  o Recon-NG não faz diferença entre maiúsculas e minúsculas.  Portanto, não precisa se preocupar com possíveis erros de digitação causados por isso.  Ótimo, hein?

O comando “help” dá uma lista de comandos disponíveis no contexto em que se encontra, juntamente com uma descrição breve de cada comando.  Você pode passar o comando desejado como argumento para o “help”, como “help show”.  Brinque um pouco com ele antes de seguir adiante.

Outro comando útil é o “back”.  Ele permite retornar um nível no contexto.  Assim, por exemplo, depois de carregar e trabalhar com um módulo, se você quiser retornar um nível, e ficar no contexto do workspace, simplesmente digite “back”.  Não é possível descarregar um módulo uma vez que ele seja carregado.  De qualquer forma, isto não deve ser motivo de preocupação, pois os módulos são muito pequenos e não ocupam tanta memória.  Observe que o prompt do programa muda para refletir o contexto em que você atualmente se encontra, como um caminho de diretório.

Próximo post:  vamos começar a explorar o Recon-NG.

Compartilhe:

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.

2 comentários

OSINT com o Recon-NG - Parte 2 de 3 | Blog itHarley · 2018-01-17 às 12:08

[…] pessoal!  No post anterior, vimos uma introdução aos conceitos de Open Source Intelligence, além de começarmos a cobrir o […]

OSINT com o Recon-NG - Parte 3 de 3 | Blog itHarley · 2018-01-22 às 09:20

[…] Parte 1 – Breve Introdução a OSINT […]

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.