اعرف اللي قصادك. احمي أرضك.

osquery

أداة تحول نظام التشغيل إلى قاعدة بيانات علائقية، مما يتيح استعلام نشاط الأجهزة والخدمات والشبكة باستخدام لغة SQL.

دفاعمفتوحة المصدرLinuxmacOSWindows
osquery.io

osquery — الدليل الكامل

تقوم أداة osquery بتمثيل نظام التشغيل كقاعدة بيانات SQL علائقية (Relational Database). يتيح لك ذلك الاستعلام عن العمليات الجارية، ونماذج النواة (Kernel Modules)، ومقابس الشبكة (Network Sockets)، والمهام المجدولة، وإضافات المتصفح، وأجهزة USB — كل ذلك عبر عبارات SELECT القياسية. تُعد الأداة خياراً ممتازاً لعمليات التدقيق الشاملة للأنظمة (Fleet-wide audits) وكعنصر أساسي في بناء أنظمة EDR مخصصة.

التثبيت (Install)

$ brew install osquery
$ apt install osquery
$ choco install osquery

تعمل الأداة بثلاثة أنماط أساسية:

  • osqueryi — واجهة تفاعلية (Interactive REPL) لا تتطلب تشغيل خلفية برمجية.
  • osqueryd — خلفية برمجية (Daemon) تعمل بشكل مستمر لتنفيذ الاستعلامات المجدولة.
  • osqueryctl — أداة تحكم لإدارة الخدمة.

الجداول — نموذج البيانات (The Data Model)

توفر osquery مئات الجداول. لاستعراضها:

$ osqueryi
$ osquery> .tables
$ osquery> .schema processes
$ osquery> SELECT name, version FROM osquery_info;
الجدولالوصف
processesالعمليات الجارية حالياً
process_open_socketsخريطة الربط بين العمليات والمقابس الشبكية
process_open_filesالملفات المفتوحة بواسطة كل عملية
users / groups / logged_in_usersبيانات الهوية والمستخدمين
etc_hosts / etc_passwd / shell_historyملفات النظام (خاص بـ Linux)
routes / interface_addresses / arp_cacheبيانات الشبكة والتوجيه
listening_portsالمنافذ المفتوحة للاستماع
kernel_modulesنماذج النواة (Linux)
usb_devicesالأجهزة المتصلة عبر USB
chrome_extensions / firefox_addons / safari_extensionsإضافات المتصفحات
crontab / launchd / systemd_units / scheduled_tasksآليات البقاء والديمومة (Persistence)
file (مع استخدام WHERE path = ...)البيانات الوصفية للملفات
hash (مع استخدام WHERE path = ...)حساب قيم الهاش للملفات
mounts / disk_encryption / iptables / dns_resolversإعدادات النظام وتشفير الأقراص
certificatesمخزن الشهادات في نظام التشغيل
windows_security_productsاكتشاف برامج مكافحة الفيروسات و EDR
windows_optional_featuresمميزات ويندوز الاختيارية (Telnet, IIS, إلخ)

استعلامات شائعة (Common queries)

sql
-- الديمومة: المهام المجدولة التي تم إنشاؤها في آخر 7 أيام
SELECT name, action, last_run_time, hidden, enabled
FROM scheduled_tasks
WHERE last_modified_time > (strftime('%s','now') - 86400*7);

-- منافذ الاستماع المشبوهة
SELECT pid, name, port, address
FROM listening_ports lp JOIN processes p USING(pid)
WHERE port NOT IN (22, 80, 443, 53);

-- نماذج النواة المحملة غير الموقعة (للبحث عن Linux rootkits)
SELECT * FROM kernel_modules WHERE state != 'live';

-- مراجعة إضافات المتصفح
SELECT name, version, identifier, install_time, path
FROM chrome_extensions WHERE persistent = 1;

-- ملفات تنفيذية مشبوهة تعمل من مجلد Temp (Windows)
SELECT p.pid, p.name, p.path, p.cmdline, p.start_time, h.sha256
FROM processes p
JOIN hash h ON p.path = h.path
WHERE p.path LIKE 'C:\\Users\\%AppData\\Local\\Temp\\%';

الاستعلامات المجدولة (osqueryd)

ملف التكوين في /etc/osquery/osquery.conf:

json
{
  "schedule": {
    "running_processes": {
      "query": "SELECT pid, name, path, cmdline FROM processes;",
      "interval": 600,
      "removed": false
    },
    "listening_ports": {
      "query": "SELECT * FROM listening_ports;",
      "interval": 300
    },
    "etc_hosts_changes": {
      "query": "SELECT * FROM etc_hosts;",
      "interval": 60,
      "removed": true
    }
  },
  "options": {
    "logger_plugin": "filesystem",
    "logger_path": "/var/log/osquery/"
  }
}

الخيار removed: false يعني إرسال الفروقات فقط (Differential results)، وهو مثالي لإرسال البيانات إلى أنظمة SIEM.

إدارة الأسطول (Fleet — central management)

لا تحتوي osquery على واجهة إدارة مركزية افتراضية. أشهر الأدوات المستخدمة للإدارة:

الأداةملاحظات
Fleet (FleetDM)واجهة كاملة، استعلامات فورية، وإدارة موزعة
Kolide K2جمع بيانات النقاط الطرفية وتفاعل المستخدمين
Doormanمدير مفتوح المصدر (إصدار قديم)
Custom TLS APIبناء واجهة برمجية خاصة باستخدام إضافة tls
$ docker run -p 1337:1337 fleetdm/fleet
# يتم إضافة الأجهزة عبر الواجهة ← ستعطيك "enroll secret" الخاص بـ osquery

سير العمل (Workflows)

البحث المباشر (Live Hunt) عبر الأجهزة

من خلال واجهة Fleet: استعلام جديد ← لصق SQL ← تشغيل مباشر ← تتدفق النتائج من كل جهاز في نفس اللحظة.

لقطات الفروقات (Differential snapshots) إلى SIEM

قم بتكوين osqueryd لإخراج ملفات JSON؛ استخدم Filebeat لنقلها إلى ElasticSearch؛ ثم اعرضها في لوحات Kibana.

الكشف عن أول تشغيل لملف تنفيذي

sql
SELECT path, sha256
FROM file
JOIN hash USING(path)
WHERE path = '/tmp/.evil'

بالاقتران مع ميزة "first seen" في FleetDM، يمكن التنبيه عند ظهور ملفات جديدة تماماً في الشبكة.

مشاكل وحلول تقنية

العرضالحل
الاستعلام يستغرق وقتاً طويلاًبعض الجداول (مثل file و hash) تقوم بمسح شامل؛ استخدم دائماً WHERE path = ...
أخطاء في الصلاحياتقم بالتشغيل بصلاحيات root أو Administrator
جداول مفقودة في macOSبسبب قيود SIP — قم بتثبيت حزمة osquery.pkg الرسمية ومنح "Full Disk Access"
استهلاك عالٍ للمعالج في Daemonالفواصل الزمنية (Intervals) قصيرة جداً؛ قم بزيادتها
ضجيج في مخرجات الفروقاتنمط Diff حساس؛ استخدم نمط "snapshot" للجداول المستقرة

منظور المدافع (Defender perspective)

تعتبر osquery حجر الأساس لبناء نظام EDR خاص بك. حالات الاستخدام تشمل:

  • الامتثال (Compliance): تدقيق مستمر وفق معايير CIS.
  • البحث (Hunting): البحث الشامل في كامل الأجهزة عن أي تطابق لنمط معين.
  • الاستجابة للحوادث (IR): استعلامات في الوقت الفعلي أثناء وقوع حادث أمني.

يُنصح بربطها مع Sysmon في بيئات Windows للحصول على تفاصيل إنشاء العمليات وتحميل DLLs التي لا تغطيها osquery وحدها.

الأمن العملياتي (OPSEC)

  • الـ "enroll secret" هو مفتاح الثقة؛ يجب تدويره (rotate) بانتظام.
  • الاستعلامات قد تكون مرئية لمن يملك حق الوصول للمدير؛ صمم استعلاماتك بناءً على مبدأ "الحاجة للمعرفة" (need-to-know).

أدوات ذات صلة

الأداةالتخصص
Velociraptorشبيهة بـ osquery ولكنها أكثر تركيزاً على التحليل الجنائي (DFIR)
GRR Rapid Responseأداة من جوجل للتحليل والاستجابة
EDR-X / Wazuhحزم SIEM كاملة مع عملاء (Agents)
Auditbeatبديل خفيف لنظام Linux لبعض الجداول