OSQuery – capturar informações e eventos do sistema em tempo real através de consultas SQL

osquery

Ferramenta multiplataforma que permite, através de uma base de dados relacional, atualizada em tempo real, capturar informações e eventos do sistema usando sintaxe SQL. Conheça o OSQuery, um projeto de código aberto do Facebook que faz a “varredura” do sistema para capturar informações, eventos e, até, descobrir problemas de segurança, por exemplo. Tudo através de consultas SQL.

AUMENTE SUA PRODUTIVIDADE!
Crie e administre aplicações entre ambientes diferentes. Tenha agilidade e padronização na entrega dos serviços de TI. E, assim, ganhe tempo e seja eficiente na entrega desses serviços. Saiba como

OSQuery

Na prática, o framework OSQuery “reproduz” o sistema operacional como um banco de dados relacional de alto desempenho. O OSQuery permite que você faça, facilmente, consultas sobre seu sistema (Linux, Windows, OS X e FreeBSD). Tendo como objetivo capturar informações e eventos do sistema em tempo real. Além disso, foca na busca por processos maliciosos, vulnerabilidades de software e outros problemas no sistema:

osquery

De acordo com o sistema, o OSQuery cria várias tabelas contendo informações do sistema operacional, processos em execução, módulos de kernel carregados, conexões de rede abertas, plugins de navegador, eventos de hardware, alterações de senha, dispositivos USB, regras de firewall e muito mais; por exemplo. E a forma de consulta é semelhante a consultas SQL; realizadas em base de dados relacionais \o/

Segundo o Facebook, esta ferramenta poderá ajudar a comunidade de segurança a ter um sistema de monitoramento satisfatório para monitorar sua infraestrutura. Além disso, ao disponibilizar o OSQuery como código aberto, o Facebook pretende que programadores de todo o mundo criem novos componentes para que o framework se torne mais robusto, completo e personalizável.

Capturar informações do sistema em tempo real

Os pacotes específicos do OSQuery são construídos para cada sistema operacional suportado. As distribuições Linux suportadas para instalações de pacotes são:

– Ubuntu Xenial 16,04 LTS, Trusty 14,04 LTS, Precise 12,04 LTS
– CentOS 6.6, 7.1

CentOS/RHEL 7.0

sudo rpm -ivh https://osquery-packages.s3.amazonaws.com/centos6/noarch/osquery-s3-centos6-repo-1-0.0.noarch.rpm
sudo yum install osquery

CentOS/RHEL 6.6

sudo rpm -ivh https://osquery-packages.s3.amazonaws.com/centos7/noarch/osquery-s3-centos7-repo-1-0.0.noarch.rpm
sudo yum install osquery

Ubuntu 16.04 (xenial), 14.04 (trusty), 12.04 (precise)

Altere DISTRO por “xenial”, “trusty” ou “precise”, conforme sua distribuição.

sudo apt-key adv –keyserver keyserver.ubuntu.com –recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo add-apt-repository “deb [arch=amd64] https://osquery-packages.s3.amazonaws.com/DISTRO DISTRO main”
sudo apt-get update
sudo apt-get install osquery

Pronto!! Depois de instalado, você pode iniciar o console interativo executando:

osqueryi

O console de consulta interativo, osqueryi, oferece uma interface SQL para testar novas consultas e explorar seu sistema operacional. Com o poder do SQL e dezenas de tabelas úteis incorporadas, o osqueryi é uma ferramenta disponível para inciar o console interativo.

Assim, como dito, o OSQuery “reproduz” um sistema operacional como um banco de dados relacional. Isso permite que você escreva consultas baseadas em SQL para explorar os dados do sistema. Com o osquery, as tabelas SQL representam conceitos abstratos, como processos em execução, módulos de kernel carregados, conexões de rede abertas, plugins de navegador ou eventos de hardware.

As tabelas SQL são implementadas através de um simples plugin e API de extensões. Uma variedade de tabelas já existem e mais estão sendo escritas: https://osquery.io/tables.

Para melhor compreensão, considere as seguintes consultas SQL:

1. Listagem de usuários do sistema:

SELECT * FROM users;

2. Listar todos os processos do sistema, como PID, nome e caminho absoluto

SELECT pid, name, path FROM processes;

3. Capturar todos os processos (nome, porta e PID) que escutam em todas as interfaces:

SELECT DISTINCT processes.name, listening_ports.port, processes.pid
  FROM listening_ports JOIN processes USING (pid)
  WHERE listening_ports.address = '0.0.0.0';

4. Localizar todos os processos que estão escutando nas portas de rede

SELECT DISTINCT process.name, listening.port, listening.address, process.pid 
   FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid;
AVISO
Para sair do console interativo, execute “.exit”

Existem muitas tabelas incluídas no osquery e cada dia são criadas mais. Para visualizar as tabelas disponíveis no sistema, execute no console interativo:

.table

Para visualizar todos os “schemas” disponíveis no sistema, execute no console interativo:

AVISO
Schemas são modelos com todos os “CREATE” feitos no sistema. Por exemplo, “schema users” ou “schema process”. Eles são úteis, pois mostram como as tabelas foram criadas e quais parâmetros podem ser consultados 😉
.schema
.schema users

Por fim, para saber e aprender quais consultas SQL você poderá criar e executar, consulte o guia oficial AQUI. E obtenha ajuda executando, no console interativo:

.help
Ricardo Ferreira

Ricardo Ferreira

Fundador do Linux Descomplicado - LD.

Sempre em busca de novos conhecimentos, preza por conteúdo de qualidade e auto-explicativo. Por isso, persiste em criar um site com artigos relevantes para todos os leitores do Linux Descomplicado!
Ricardo Ferreira

Comentários

comentários


VOCÊ TAMBÉM PODERÁ LER...