28 Mayıs 2020

OSQuery Nedir ve Kurulumu

Nedir?

Osquery, uzaktaki veya yereldeki işletim sistemlerinizi SQL sorguları yazarak izlemenizi, yönetmenizi ve analitik olarak yönetebilmenizi sağlayan bir araçtır. Çoğunlukla sistemi en alt seviyede izleyebilmeyi, devops süreçlerini yönetebilmeyi ve güvenlik sorunlarını tespit etmek üzere kullanılmaktadır. Facebook tarafından geliştirilmeye başlanan bu proje, Linux Foundation Projects çatısı altındadır.

Osquery bir çok işletim sistemini ve dağıtımını (Linux, macOS, BSD, Windows) desteklemektedir. Osquery her işletim sistemi için ayrı SQL tabloları -sorgu nesneleri- desteklemektedir. Tüm listeyi şuradan inceleyebilirsiniz.

Osquery her ne kadar sistem yönetimi ve devops aracı gibi görünse de, bilgi güvenliği uzmanları tarafından da tercih edilmektedir.

Örneğin, bir bilgi güvenliği uzmanı veri merkezinde bulunan apache yüklü sunucuların CVE'si yayınlanmış bir versiyonunu sorgulayabilir ve raporlayabilir. Bu çoğu zaman ilgili personeller için büyük kolaylık sağlamakta ve operasyonel bir çözüm sağlamaktadır.

Daha spesifik bir örnek vermek gerekirse, Microsoft Windows işletim sistemlerini hedef alan MITRE ATT&CK Matrix ataklarını çok kolay bir şekilde yakalayabilir ve analiz edebilirsiniz. https://github.com/teoseller/osquery-attck {.is-info}

Osquery Bileşenleri

Osquery temelde 2 alt yazılımdan oluşmaktadır.

Osquery Daemon (osqueryd)

Osquery daemon yazılımı sorgulanmak istenen işletim sistemi üzerinde kurulu bir servistir. Osqueryi veya 3. parti araçlarla istenen veriler bu servise ulaşır ve yorumlanır.

screen_shot_2020-05-28_at_03.16.37.png

Osquery Interface (osqueryi)

Osqueryi sorgulama yapılan işletim sistemi üzerinde veya uzaktan çalışan bir interaktif CLI(Command-line-interface) aracıdır. Temel olarak SQL sorguları bu arayüzde yazılır ve iletilir.

screen_shot_2020-05-28_at_03.15.41.png

Kurulum

Osquery için bir çok işletim sistemi özelinde resmi deposu veya yükleyici(installer) imkanı bulunmaktadır.

Debian Aşamaları

Aşağıdaki komutlar ile osquery'nin resmi deposundan yüklemeyi yapıyoruz.

export OSQUERY_KEY=1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys $OSQUERY_KEY
sudo add-apt-repository 'deb [arch=amd64] https://pkg.osquery.io/deb deb main'
sudo apt-get update
sudo apt-get install osquery

Örnek Sorgular

Sorguları çalıştırmak için terminalde osqueryi yazmanız yeterli.

Bağlı diskler

osquery> SELECT * FROM block_devices;
+-----------+----------+--------+---------------+----------+------------+--------------------------------------+------+-------+
| name      | parent   | vendor | model         | size     | block_size | uuid                                 | type | label |
+-----------+----------+--------+---------------+----------+------------+--------------------------------------+------+-------+
| /dev/sda  |          | ATA    | QEMU HARDDISK | 33554432 | 512        |                                      |      |       |
| /dev/sda1 | /dev/sda | ATA    | QEMU HARDDISK | 33552351 |            | 680cd43b-8429-4088-a019-c0514bb057ee | ext4 |       |
| /dev/sr0  |          | QEMU   | QEMU DVD-ROM  | 2097151  | 512        |                                      |      |       |
+-----------+----------+--------+---------------+----------+------------+--------------------------------------+------+-------+

Varsayılan kabuk birimi bash olan kullanıcılar

osquery> SELECT * FROM users WHERE shell="/bin/bash";
+------+------+------------+------------+----------+-----------------------------+---------------------+-----------+------+
| uid  | gid  | uid_signed | gid_signed | username | description                 | directory           | shell     | uuid |
+------+------+------------+------------+----------+-----------------------------+---------------------+-----------+------+
| 0    | 0    | 0          | 0          | root     | root                        | /root               | /bin/bash |      |
| 1000 | 1000 | 1000       | 1000       | debian   | Cloud-init-user,,,          | /home/debian        | /bin/bash |      |
| 1002 | 1002 | 1002       | 1002       | halid    | ,,,                         | /home/halid         | /bin/bash |      |
| 113  | 119  | 113        | 119        | postgres | PostgreSQL administrator,,, | /var/lib/postgresql | /bin/bash |      |
+------+------+------------+------------+----------+-----------------------------+---------------------+-----------+------+

UID'si 1002 olan kullanıcının başlattığı işlemler

osquery> SELECT pid,name,path,cmdline FROM processes WHERE uid=1002;
+-------+----------+----------------------+-----------------------------+
| pid   | name     | path                 | cmdline                     |
+-------+----------+----------------------+-----------------------------+
| 28486 | systemd  | /lib/systemd/systemd | /lib/systemd/systemd --user |
| 28487 | (sd-pam) | /lib/systemd/systemd | (sd-pam)                    |
| 28493 | sshd     | /usr/sbin/sshd       | sshd: halid@pts/0           |
| 28495 | bash     | /bin/bash            | -bash                       |
+-------+----------+----------------------+-----------------------------+

Merkezi Yönetim (Kolide Fleet)

https://github.com/kolide/fleet Birden çok osquery yüklü uzak işletim sistemini tek merkezden yönetmek için Kolide Fleet adında bir araç bulunmaktadır. Kolide Fleet osquery'nin aksine yönetim kolaylığı sağlamak için bir arayüz de sağlamaktadır.

dashboard-screenshot.png

En büyük avantajlardan birisi ise, tek bir sorguyu bir çok uzak noktadaki işletim sistemine sorup, gelen cevapları karşılaştırma ve bu bilgiler üzerinden analiz yapabilmek.

query-screenshot.png

Vue.js Unit ve e2e Testler

Chrome Performans Metrikleri