Timesketch - تحليل خط زمني أساسي تعاوني
Timesketch هي أداة مفتوحة المصدر (من Google) لـ تحليل خط زمني أساسي تعاوني. يقوم المحققون بتجميع البيانات المختومة بالزمن — قطع أثرية من القرص/التجميع التي يتم تحليلها بواسطة Plaso وسجلات و CSV — في “رسم”، ثم البحث والتصفية والعلامات والتعليق والنجوم للأحداث على خط زمني مشترك. تم بناؤها لعمل فريق DFIR: يعمل محللون متعددون على نفس الحادثة، ويشاركون عمليات البحث المحفوظة، ويشغلون محللي آليين لكشف النشاط المريب. يقترن بشكل طبيعي مع أدوات التجميع مثل Velociraptor.
النشر
| الطريقة | الأمر / الملاحظة |
|---|
| Docker Compose (موصى به) | اتبع نشر docker-compose الرسمي في المستندات |
| تثبيت تطوير سريع | استخدم deploy/docker الخاص بالمشروع |
| إنشاء مستخدم | tsctl create-user <username> |
| إضافة إلى المجموعة | tsctl add-user-to-group ... |
| واجهة الويب | تخدم على المضيف/المنفذ المكون بعد بدء التشغيل |
Timesketch هي تطبيق خادم (Elasticsearch/OpenSearch + PostgreSQL + واجهة ويب)، وليس ملف ثنائي واحد. قم بالنشر مع Docker Compose للحصول على أسلس الإعداد.
تجميع البيانات
| المصدر | كيف |
|---|
| ملف تخزين Plaso | قم بتحميل ملف .plaso المنتج من log2timeline.py |
| CSV / JSONL | تحميل مع الأعمدة المطلوبة datetime، message، timestamp_desc |
| استيراد CLI | timesketch_importer -u user -p pass --host URL data.csv |
| استيراد API | استخدم عميل Python import_streamer |
Plaso → Timesketch
# قم بإنشاء سطر زمني فائق من صورة/تجميع مع Plaso، ثم استيراد
log2timeline.py --storage-file evidence.plaso /mnt/triage
timesketch_importer --host https://ts.example.com \
-u analyst evidence.plaso --sketch_id 1
البحث في الخط الزمني
يستخدم Timesketch بناء جملة استعلام Elasticsearch/Lucene.
| الاستعلام | المطابقات |
|---|
powershell | الأحداث التي تحتوي على المصطلح |
data_type:"windows:evtx:record" | نوع بيانات محلل معين |
message:*mimikatz* | حرف بدل داخل حقل الرسالة |
tag:bad | الأحداث التي وضعت عليها علامة “سيء” |
datetime:[2026-06-01 TO 2026-06-02] | نطاق زمني |
event_identifier:4624 AND username:admin | مجموعات منطقية |
العمل مع الأحداث
| الإجراء | الوصف |
|---|
| النجم | ضع علامة على الأحداث المهمة |
| العلامة | تطبيق التصنيفات (على سبيل المثال bad، suspicious، lateral-movement) |
| التعليق | إضافة ملاحظات المحقق إلى حدث |
| البحث المحفوظ | تخزين استعلام لإعادة الاستخدام / المشاركة |
| القصة | اكتب سردية تضمن عمليات بحث محفوظة والنتائج |
المحللون
يعمل المحللون تلقائياً على خط زمني لوضع علامات على الأنماط.
| المحلل | السطح |
|---|
| البحث عن المتصفح / القطع الأثرية | نشاط الويب المهم |
| أحداث تسجيل الدخول/Windows | شذوذ المصادقة |
| Sigma | مطابقة قواعد كشف Sigma مقابل الأحداث |
| Yet، خيوط الذكاء التهديد | المؤشرات المعروفة السيئة |
| الموسوم | علامات تلقائية للأحداث حسب القواعد |
| المهمة | كيف |
|---|
| تشغيل محلل | جهاز التحكم من واجهة المستخدم أو API على خط زمني |
| قواعس Sigma | إدارة القواعس حتى يتمكن محلل Sigma من مطابقتها |
| التجميعات | بناء الرسوم البيانية (على سبيل المثال الأحداث بمرور الوقت والمستخدمون الأفضل) |
API / الأتمتة
from timesketch_api_client import client
ts = client.TimesketchApi("https://ts.example.com", "analyst", "password")
sketch = ts.get_sketch(1)
for event in sketch.explore("tag:bad", as_pandas=True).itertuples():
print(event.message)
سير العمل الشائع
# بناء سطر زمني فائق من مخرجات التجميع وتحميله في رسم
log2timeline.py --storage-file case.plaso /evidence
timesketch_importer -u analyst case.plaso --sketch_id 5
# في واجهة المستخدم: البحث عن نشاط مريب والعلامات والنتائج والكتابة إلى قصة
# message:*mimikatz* → tag "credential-access" → add to Story
Timesketch مقابل أدوات خط زمني أخرى
| الجانب | Timesketch | Plaso (log2timeline) | Splunk |
|---|
| الدور | واجهة مستخدم تحليل تعاونية | توليد خط زمني | SIEM/analytics سجل |
| التعاون | من الدرجة الأولى (الرسومات والقصص) | لا شيء (CLI) | لوحات تحكم الفريق |
| الإدخال | Plaso و CSV و JSONL | نظام الملفات/القطع الأثرية | المحولات/الفهارس |
| الأفضل ل | مراجعة خط زمني DFIR الفريق | إنتاج خط زمني | تسجيل مؤسسة عريضة |
الموارد