Introdução ao Facebook osquery

Rodrigo "Sp0oKeR" Montoro
BlueOps
Published in
4 min readNov 4, 2018

Muitas vezes precisamos responder algumas perguntas sobre o que está acontecendo em nosso Sistema Operacional, seja Linux, Mac, Windows, tanto para análise de performance, softwares rodando ou instalados, bem como uma resposta e análise de um incidente. Pensando em ter "Todas as respostas" através de um formato simples, o Facebook criou a ferramenta osquery em 2014 e disponibilizou o mesmo no formato open source.

Osquery basicamente consiste de tabelas (algumas estão em todos sistemas e outras são específicas) onde através da linguagem SQL você consegue a resposta que quiser em um único local, sem a necessidade de agrupar info de diferentes locais, que muitas vezes são complexos de extrair as informações.

Atualmente existem 226 tabelas que podem ser analisadas em https://osquery.io/schema/

A combinação das queries e tabelas te proporciona centenas de perguntas simples que poderão serem monitoradas continuamente utilizando (scheduled queries) e alertando em caso mudanças. Entre os monitoramentos podemos citar alguns exemplos entre as centenas de possibilidades:

  • Adição ao crontab linux ou scheduler Windows
  • Novos programas instalados (Win/Mac/Linux)
  • Binários com suidbit
  • Usuários criados
  • Eventos de processos e socket
  • File Integrity Monitoring (FIM)
  • Portas em listening
  • Processos no startup da máquina
  • Binários rodando somente em memória sem arquivo disco
  • Configurações do sistema

Após instalar o osquery via seu método preferido que pode ser encontrado em https://osquery.io/downloads/official/ , você basicamente instalará o osqueryi e o osqueryd. Nesse artigo introdutório basicamente vamos falar do osqueryi.

Para utilizar o osqueryi basta digitar na shell e um .show para mostrar as informações básicas

Para listar parte das tabelas, digitamos .tables (no caso Linux)

Aqui um exemplo básico executado um select * from users ;

Para entender o formato da tabela, basta digitar .schema nome_tabela e com isso pegar somente os campos que tem interesse

A partir do que vimos acima, podemos pensar e perguntar/consultar o que quisermos aos nossos sistemas, entender em quais tabelas estão as informações e criarmos nossas próprias queries.

Ou algo "mais complexo" fazendo JOIN entre tabelas

Um exemplo legal também seria encontrar chaves sem senha em seus ambientes no diretório padrão, no caso ~/.ssh

Lembrando que para gerenciamento centralizado precisaremos usar o osqueryd e algum fleet, no caso na BlueOps gostamos muito do Kolide. Porém este assunto será abordado em coberturas e posts futuros.

Dicas para tirar maior proveito osquery:

  • Boas perguntas geram boas respostas, ou seja, pense nas ameaças ou problemas e o que precisa saber para encontrá-las.
  • Aprenda SQL, pois com maior conhecimento nessa linguagem, maior o potencial das suas perguntas
  • Correlacione as informações extraídas possivelmente com outras fontes de dados em especial de rede

Temos mais informações e demo de uma palestra ministrada em alguns eventos no nosso blog threat hunter

Sobre a BlueOps

A BlueOps oferece treinamentos em segurança defensiva, focando na ciência e no mindset, independente de software e tecnologia. Lançaremos um curso sobre osquery em português que deverá ser iniciado em Janeiro/2019. Caso tenha interesse entre em contato com contato@blueops.com.br

Happy Detection!

Blue Team Operations

--

--

Rodrigo "Sp0oKeR" Montoro
BlueOps
Editor for

Detection Engineer, Blue Team Operations, Log Analysis, Incident Detection & Response and Beers . BlueOps https://blueops.com.br