Introdução ao Facebook osquery
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