
O OSINT Omnibus (versão beta)
Um Omnibus é definido como "um volume contendo vários romances ou outros itens publicados separadamente antes" e é exatamente isso que o projeto InQuest Omnibus pretende ser para coleta de Inteligência de Fontes Abertas, pesquisa e gerenciamento de artefatos.
Ao fornecer um aplicativo de linha de comando interativo fácil de usar, os usuários podem criar sessões para investigar vários artefatos, como endereços IP, nomes de domínio, endereços de e-mail, nomes de usuário, hashes de arquivos, endereços Bitcoin e muito mais, à medida que continuamos a expandir.
Este projeto buscou inspiração nos grandes nomes que vieram antes, como SpiderFoot, Harpoon e DataSploit. Muito obrigado a esses grandes autores por contribuírem para o mundo do código aberto.
O aplicativo foi escrito com Python 2.7 em mente e foi testado com sucesso em ambientes OSX e Ubuntu 16.04.
Esta é uma versão beta do aplicativo final e, como tal, pode haver alguns bugs ou outras estranhezas durante o uso. Na maior parte, o Omnibus é totalmente funcional e pode ser usado para iniciar investigações de OSINT imediatamente.
O Omnibus é construído de forma modular que permite a fácil adição de módulos de fonte de dados OSINT e módulos de importação/exportação. Cada módulo por categoria é incluído em um único diretório e, adicionando algumas linhas de código, seu módulo pode ser o próximo!
À medida que a Wiki continua a crescer, teremos exemplos completos de como escrever plugins personalizados.
Se você notar algum bug ou outro problema, crie uma Issue e/ou Pull Request. Também adoraríamos o apoio da comunidade na criação de mais módulos e na expansão dos casos de uso do Omnibus. Forks e Pull Requests para novos recursos são mais que bem-vindos!
Este arquivo README serve como uma visão geral rápida do Omnibus e seus recursos. A documentação completa está disponível na pasta 'docs' deste repositório.
Antes de começarmos, precisaremos cobrir alguns termos usados pelo Omnibus.
new ou sendo descoberto através da execução de módulosIniciar o Omnibus para investigação é tão simples quanto clonar este repositório GitHub, instalar os requisitos Python usando pip install -r requirements.txt e executar python omnibus-cli.py.
Shell do Omnibus - Inicialização Principal

Para uma referência visual do CLI, na imagem acima está o console do Omnibus após uma nova sessão ter sido iniciada, 2 artefatos foram adicionados a uma sessão e o menu help é exibido.
Você deve definir todas as chaves de API que deseja usar nos módulos dentro do arquivo omnibus/etc/apikeys.json.
Este arquivo é um documento JSON com espaços reservados para todos os serviços que exigem chaves de API, e é acessado pelo Omnibus apenas por módulo para recuperar a chave de API exata que um módulo precisa para executar.
Vale notar que a maioria dos serviços que exigem chaves de API possui contas gratuitas e chaves de API. Algumas contas gratuitas podem ter limites de recursos mais baixos, mas isso não tem sido um problema durante investigações diárias menores ou testes do aplicativo.
Uma dica útil: Use o comando cat apikeys para visualizar quais chaves você de fato tem armazenadas.
Se os módulos estiverem falhando ou não retornando resultados, verifique aqui primeiro para garantir que sua chave de API esteja salva corretamente.
Quando você executa o CLI pela primeira vez, será recebido por um menu de ajuda com algumas informações básicas.
O Omnibus tenta usar comandos que imitam alguns comandos comuns do Linux para familiaridade e facilidade de uso. Por exemplo, o comando cat para mostrar informações sobre um artefato, rm para remover um artefato do banco de dados, ls para visualizar artefatos da sessão atual e suporte para redirecionamento de saída para qualquer comando usando o caractere >.
Como exemplo de redirecionamento de saída, se você deseja recuperar os detalhes de um artefato chamado "inquest.net" salvos em um arquivo JSON no seu disco local, basta executar o comando:
cat inquest.net > inquest-report.json e pronto!
Este recurso também funciona com caminhos completos de arquivo em vez de caminhos relativos.
Os comandos de alto nível usados mais frequentemente no Omnibus são:
session
new <nome do artefato>
modules
open <caminho do arquivo>
ls
rm
wipe
cat <nome do artefato | id da sessão>
<nome do módulo> <nome do artefato | id da sessão>
Se você precisar de uma referência rápida sobre os diferentes comandos disponíveis para diferentes áreas do aplicativo, existem menus de ajuda secundários para exatamente esse propósito. Usar esses comandos mostrará apenas os comandos disponíveis relevantes para uma área específica:
general
artifacts
sessions
modules
A maioria das investigações cibernéticas começa com um ou mais indicadores técnicos, como um endereço IP, hash de arquivo ou endereço de e-mail. Após pesquisar e analisar, relacionamentos começam a se formar e você pode pivotear através de pontos de dados conectados. Esses pontos de dados são chamados de Artefatos dentro do Omnibus e representam qualquer item que você deseja investigar.
Os artefatos podem ser de um dos seguintes tipos:
O comando "new" seguido de um artefato criará esse artefato dentro da sua sessão do Omnibus e armazenará um registro do artefato no MongoDB. Esse registro contém o nome do artefato, tipo, subtipo, resultados dos módulos, fonte, notas, tags, informações dos filhos (conforme necessário) e hora de criação. Toda vez que você executa um módulo contra um artefato criado ou armazenado, o documento do banco de dados será atualizado para refletir as informações recém-descobertas.
Para criar um novo artefato e adicioná-lo ao MongoDB para rastreamento, execute o comando new <nome do artefato>. Por exemplo, para iniciar a investigação do domínio inquest.net, você executaria new inquest.net.
O Omnibus determinará automaticamente o tipo do artefato e garantirá que apenas módulos para esse tipo sejam executados contra ele. Se você tentar executar um artefato contra um módulo que não suporta o tipo do artefato, será notificado por uma mensagem de aviso que lista os tipos aceitos.
Quando um módulo é criado, novos artefatos podem ser encontrados durante o processo de descoberta. Por exemplo, executar o comando "dnsresolve" pode encontrar novos endereços IPv4 não vistos anteriormente pelo Omnibus. Se for esse o caso, esses artefatos recém-encontrados são automaticamente criados como novos artefatos no Omnibus e vinculados ao seu pai com um campo adicional chamado "source" para identificar de qual módulo eles foram originalmente encontrados. Neste exemplo, a fonte dos artefatos recém-criados seria "dnsresolve".
Os artefatos podem ser removidos do banco de dados usando o comando "rm". Se você não precisar mais de um artefato, basta executar o comando delete e especificar o nome do artefato ou o ID da sessão, se houver.
O Omnibus faz uso de um recurso chamado "sessões". Sessões são caches temporários criados via Redis toda vez que você inicia uma sessão CLI. Toda vez que você cria um artefato, o nome desse artefato é adicionado à Sessão junto com uma chave numérica que facilita a recuperação, pesquisa e ação contra o artefato relacionado.
Por exemplo, se sua sessão contém um item "inquest.net", em vez de precisar executar virustotal inquest.net, você também pode executar virustotal 1 e receberia os mesmos resultados. Na verdade, isso funciona contra qualquer módulo ou comando que use um nome de artefato como primeiro argumento.
Interagindo com IDs de Sessão em vez de Nomes de Artefato

As sessões estão aqui para fácil acesso aos artefatos e serão limpas toda vez que você sair da sessão de linha de comando. Se desejar limpar a sessão antes, execute o comando "wipe" e você terá uma lousa limpa.
O Omnibus atualmente suporta a seguinte lista de módulos. Se você tiver sugestões de módulos ou quiser escrever um próprio, por favor, crie um pull request.
Além disso, dentro do console do Omnibus, digitar o nome do módulo mostrará as informações de Ajuda associadas a esse módulo.
Módulos
Máquinas são uma maneira simples de executar todos os módulos disponíveis para um tipo de artefato contra um determinado artefato. Esta é uma maneira rápida se você deseja reunir o máximo de informações possíveis sobre um alvo usando um único comando.
Para fazer isso, basta executar o comando machine <nome do artefato|ID da sessão> e aguardar alguns minutos até que os módulos terminem de executar.
A única ressalva é que isso pode retornar um grande volume de dados e artefatos filhos, dependendo do tipo de artefato e dos resultados por módulo. Para remediar isso, estamos investigando uma maneira de remover campos específicos de artefatos do documento armazenado no banco de dados para facilitar a poda de dados indesejados pelos usuários.
Alguns comandos rápidos para lembrar são:
session - iniciar um novo cache de artefatoscat <nome do artefato>|apikeys - exibir de forma bonita o documento de um artefato ou visualizar suas chaves de API armazenadasopen <caminho do arquivo> - carregar uma lista de artefatos de um arquivo de texto no Omnibus para investigaçãonew <nome do artefato> - criar um novo artefato e adicioná-lo ao MongoDB e à sua sessãofind <nome do artefato> - verificar se um artefato existe no banco de dados e mostrar os resultadosRelatórios são a saída JSON de um documento de artefato do banco de dados, essencialmente uma versão em arquivo de texto da saída do comando "cat". Mas usando o comando report você pode especificar um artefato e um caminho de arquivo onde deseja salvar a saída:
omnibus >> report inquest.net /home/adam/intel/osint/reports/inq_report.jsonO comando acima substitui o diretório de relatórios padrão omnibus/reports. Por padrão, e se você não especificar um caminho de relatório, todos os relatórios serão salvos nesse local. Além disso, se você não especificar um nome de arquivo, o relatório usará o seguinte formato:
[nome_do_artefato]_[timestamp].jsonA saída de comandos também pode ser salva em arquivos de texto arbitrários usando o caractere padrão do Linux >.
Por exemplo, se você deseja armazenar a saída de uma consulta VirusTotal para um host em um arquivo chamado "vt-lookup.json", basta executar:
virustotal inquest.net > vt-lookup.jsonPor padrão, os arquivos de saída redirecionados são salvos no diretório de trabalho atual, portanto "omnibus/", mas se você especificar um caminho completo como virustotal inquest.net > /home/adam/intel/cases/001/vt-lookup.json, a saída formatada em JSON será salva lá.
<nome da máquina> <nome do artefato | id da sessão>