> ## Content Index
> Fetch the complete content index at: https://arabroot.io/llms.txt
> Use this file to discover other available public pages before exploring further.

# الاستجابة للحوادث Incident Response مع TheHive
- URL: https://arabroot.io/articles/الاستجابة-للحوادث-incident-response-مع-thehive/
- Published: 2026-10-26T12:18:54.000Z
- Updated: 2026-10-26T23:27:28.000Z
- Description: حولنا تنبيهاً عن دخول مريب إلى حساب FTP إلى قضية في TheHive بمهام ومؤشرات وأسلوب ATT&CK، وقسنا ما تسمح به الرخصة فعلاً.
- Author: فريق عرب رووت
- Tags: الأدلة التقنية, الأمن السيبراني, الاستضافة الذاتية, Docker والحاويات, TheHive

في مقال [OpenVAS](https://arabroot.io/articles/%D9%81%D8%AD%D8%B5-%D8%A7%D9%84%D8%AB%D8%BA%D8%B1%D8%A7%D8%AA-%D8%A7%D9%84%D8%B4%D8%A8%D9%83%D9%8A-%D9%85%D8%B9-openvas-greenbone-%D9%81%D9%8A-%D9%85%D8%AE%D8%AA%D8%A8%D8%B1/) وجد فريق شركة الحجوزات السعودية الصغيرة نتيجة بخطورة 4.8 فقط: خدمة FTP يرفع عليها شريك الشركة ملفات الحجوزات، وتقبل كلمة المرور بنص واضح. سجلها الفريق في [DefectDojo](https://arabroot.io/articles/%D8%A7%D8%AF%D8%A7%D8%B1%D8%A9-%D9%86%D8%AA%D8%A7%D8%A6%D8%AC-%D8%A7%D9%84%D9%81%D8%AD%D8%B5-%D9%88%D8%A7%D9%84%D8%AB%D8%BA%D8%B1%D8%A7%D8%AA-%D9%85%D8%B9-defectdojo/) بمهلة 45 يوماً، لأنها متوسطة. وفي صباح أحد الأيام، قبل أن تنتهي المهلة، وصل تنبيه من مراقبة الخدمة: حساب الشريك `partner-upload` دخل من عنوان لم ير من قبل، ثم نزل ثلاثة ملفات. وبعد دقائق وصل تنبيه ثان من سجلات الويب: محاولات دخول فاشلة كثيرة على لوحة الإدارة، من العنوان نفسه. هنا تتوقف إدارة الثغرات ويبدأ عمل آخر: الاستجابة للحوادث Incident Response.

وفي هذه اللحظة اكتشف الفريق أنه لا يعرف كيف يعمل. فالتنبيهان في بريدين مختلفين، والمهندس الذي عطل الحساب كتب ما فعله في محادثة جانبية، والآخر نسخ السجلات إلى جهازه دون أن يسجل الهاش، والمدير يسأل كل ساعة «أين وصلنا؟» ولا أحد يملك الجواب في مكان واحد. وهذه هي المشكلة التي صنعت لها أدوات إدارة الحالات Case Management، وأشهرها في العالم المفتوح أداة TheHive. وفي هذا المقال سوف نشغل TheHive على Docker، ونعيش هذه الحادثة نفسها فيه خطوة خطوة بتنبيهات صنعناها في المختبر، ونقيس ما يحتاجه من موارد، ونفحص بأنفسنا ما تسمح به رخصته اليوم، لأن الإجابة عن هذا السؤال تغيرت كثيراً عما يعرفه أغلب الناس.

📚

هذا المقال يكمل سلسلة الاستجابة والتحقيق: (1) [التحقيق الرقمي والاستجابة للحوادث DFIR للمبتدئين](https://arabroot.io/articles/%D8%A7%D9%84%D8%AA%D8%AD%D9%82%D9%8A%D9%82-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-dfir/). (2) أدوات التحقيق الرقمي مفتوحة المصدر. (3) التحقيق في الأجهزة مع Velociraptor. (4) الاستجابة للحوادث مع TheHive (الموضوع الحالي).

وسوف نناقش في هذا المقال ما يلي:

- ما المشكلة التي تحلها إدارة الحالات، ولماذا لا يكفي البريد والمحادثات وجدول مشترك.
- تاريخ TheHive، وكيف تحول من مشروع مفتوح المصدر إلى منتج تجاري، وما تسمح به الرخصة اليوم كما قسناها.
- التشغيل بـ Docker مع Cassandra وElasticsearch، والموارد الحقيقية، وكلمة المرور الافتراضية.
- المفاهيم: المنظمة Organisation والتنبيه Alert والقضية Case والمهمة Task والمؤشر Observable والأسلوب TTP.
- الحادثة كاملة: من التنبيه إلى القضية بقالب مهام، ثم الربط بين التنبيهات، ثم أسلوب ATT&CK، ثم الإغلاق.
- ماذا يحدث إذا أرسلت المراقبة التنبيه نفسه مرتين، وإذا وصل تنبيه ثان من مصدر آخر.
- متطلبات الهيئة الوطنية للأمن السيبراني للحوادث، والبدائل مفتوحة المصدر، وقائمة التحقق.

## لماذا لا يكفي البريد والمحادثات؟

الحادثة الأمنية ليست مهمة واحدة، بل عمل جماعي تحت ضغط الوقت، فيه أسئلة تحتاج إجابات موثقة: ماذا حدث؟ متى بالضبط؟ ما الحسابات والأجهزة المتأثرة؟ ما الذي فعلناه، ومن فعله، ومتى؟ ما الأدلة، وأين حفظت، وما هاشها؟ وكل إجابة منها يحتاجها شخص مختلف: المهندس ليكمل العمل، والمدير ليقرر، والمستشار القانوني إن كانت هناك بيانات عملاء، والهيئة الوطنية للأمن السيبراني إذا كانت الجهة ملزمة بالإبلاغ.

وعندما يدار هذا العمل في البريد والمحادثات تظهر ثلاث مشكلات معروفة، رأيناها في قصة الشركة: التكرار، فشخصان يحققان في الأمر نفسه دون أن يعرف أحدهما بالآخر، والضياع، فما فعله المهندس في الساعة الثانية لا يجده أحد في الساعة العاشرة، والانفصال، فالتنبيه الثاني من سجلات الويب يعامل حادثة جديدة مع أنه جزء من الحادثة نفسها. وقد شرحنا في [مقال DFIR](https://arabroot.io/articles/%D8%A7%D9%84%D8%AA%D8%AD%D9%82%D9%8A%D9%82-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-dfir/) مراحل الاستجابة وأهمية سلامة الدليل وسلسلة الحيازة، والسؤال هنا عملي: أين تعيش هذه المراحل أثناء الحادثة؟

وأداة إدارة الحالات تجيب بفكرة بسيطة: كل حادثة «قضية» واحدة، لها مهام بأصحاب، وسجل لكل مهمة، ومؤشرات Observables مثل العناوين والحسابات والملفات، تربط القضية بالقضايا الأخرى التي تشاركها، وخط زمني يبنى وحده. فيجد كل شخص ما يحتاجه في مكان واحد، ويبقى السجل بعد الحادثة دليلاً على ما فعله الفريق.

## من مشروع مفتوح إلى منتج تجاري: قصة الرخصة

بدأ TheHive مشروعاً مفتوح المصدر صنعه فريق استجابة للحوادث ليستخدمه بنفسه، ثم انتشر في فرق مراكز العمليات الأمنية SOC حول العالم، ومعه أداة شقيقة اسمها Cortex تحلل المؤشرات آلياً. وكان TheHive 4 مرخصاً بـ AGPL-3.0، ومستودعه [TheHive-Project/TheHive](https://github.com/TheHive-Project/TheHive?ref=arabroot.io) اليوم مؤرشف Archived، وآخر تحديث فيه في يوليو 2025، ووصفه في GitHub يقول صراحة إن TheHive «يوزع الآن نسخة تجارية». أما من الإصدار 5 فصار المنتج تطوره شركة StrangeBee بكود غير منشور، وتوزعه Images جاهزة على [Docker Hub](https://hub.docker.com/r/strangebee/thehive?ref=arabroot.io)، وآخرها وقت التجربة 6.0.0 بتاريخ 15 أكتوبر 2026، مع استمرار فرع 5.7 الذي صدر منه 5.7.8 في 22 أكتوبر.

وهذا التحول يغير قرار أي شركة، فلا يكفي أن تعرف أن الأداة «مجانية» كما كانت. وبحسب [صفحة الرخص الرسمية](https://docs.strangebee.com/thehive/installation/licenses/about-licenses/?ref=arabroot.io) فإن التثبيت الجديد من الإصدار 5.3 يبدأ بفترة تجريبية Platinum لمدة 14 يوماً، وبعدها «ينتقل TheHive إلى وضع القراءة فقط» إلى أن تفعل رخصة. والرخص أربعة أنواع: رخصة المجتمع Community المجانية، وهي «للبداية أو للاحتياجات الأساسية» ومتاحة للتثبيت على سيرفرك فقط، ويجب أن [تطلبها](https://docs.strangebee.com/thehive/installation/licenses/request-a-community-license/?ref=arabroot.io) من بوابة الرخص ببريد عمل، وتنتظر أن تتحقق الشركة من حسابك، ثم رخص Gold وPlatinum وONE المدفوعة. وتقول [صفحة الأسعار](https://www.strangebee.com/pricing/?ref=arabroot.io) في 26 أكتوبر 2026 إن الاشتراك سنوي يبدأ من 26,000 يورو، ويحسب بعدد المستخدمين الذين يعملون في الواجهة، والمستخدمون للقراءة فقط مجانيون.

وماذا يعني هذا عملياً لشركة صغيرة؟ ثلاثة أشياء يجب أن تزنها قبل أن تبني عملك على الأداة. الأول أنك لا تستطيع أن تراجع الكود ولا أن تصلحه بنفسك، فإذا ظهرت ثغرة في الأداة انتظرت المورد. والثاني أن شروط الرخصة المجانية يحددها المورد ويمكن أن تتغير، كما تغيرت من AGPL إلى رخصة تطلب تسجيلاً، فخطتك يجب أن تحتمل هذا التغيير. والثالث، وهو الأهم، أن سجل حوادثك يجب أن يبقى ملكك: فاعرف من اليوم الأول كيف تصدر القضايا ومرفقاتها، وجربه، حتى لا يصبح الانتقال إلى أداة أخرى مستحيلاً بعد سنوات من البيانات. وهذا لا يعني أن TheHive اختيار خاطئ، فهو من أنضج الأدوات في فئته، وإنما أن القرار تغير من «أداة مجانية مفتوحة» إلى «منتج له رخصة مجانية محدودة».

ولم نكتف بالتوثيق، فسألنا التثبيت نفسه عن رخصته عبر API قبل أن نطلب أي رخصة:

```text
{"_type":"org.thp.thehive.dto.v1.OutputLicenseCurrentNotFound",
 "fallback":{"id":"platinum-trial","plan":"Platinum","kind":"Trial",
   "validFrom":1793003351754,"expiresAt":1794355199999,
   "quotas":{"organisations":1,"users.normal":2}},"notFound":true}
```

في المخرج أعلاه لاحظ التالي:

- **لا توجد رخصة مثبتة** `notFound: true`، والتشغيل يعمل برخصة احتياطية Fallback اسمها platinum-trial.
- **بدأت المدة** عند أول تشغيل، يوم 26 أكتوبر 2026 الساعة 08:29 UTC، وتنتهي 10 نوفمبر الساعة 23:59 UTC، والواجهة تعرض شريطاً أحمر في أعلى كل صفحة يقول إنها تنتهي بعد 15 يوماً.
- **الحصص Quotas** منظمة واحدة ومستخدمان عاديان فقط، وهذه أهم معلومة في المخرج، وسوف نجربها بعد قليل لنعرف هل هي مطبقة فعلاً.

## التشغيل بـ Docker: ثلاث خدمات ثقيلة

TheHive لا يعمل وحده، فهو يخزن بياناته في قاعدة **Cassandra** عبر طبقة رسم بياني اسمها JanusGraph، ويفهرسها في **Elasticsearch** للبحث، كما يقول [توثيق التثبيت بـ Docker](https://docs.strangebee.com/thehive/installation/docker/?ref=arabroot.io). ولماذا قاعدتان؟ لأن البيانات في TheHive رسم بياني: قضية مرتبطة بمهام ومؤشرات وتنبيهات، والمؤشر نفسه مرتبط بقضايا كثيرة، وCassandra تحفظ هذا الرسم، وElasticsearch تجيب عن البحث السريع في النصوص. وتنشر StrangeBee ملفات Compose جاهزة في مستودع [StrangeBeeCorp/docker](https://github.com/StrangeBeeCorp/docker?ref=arabroot.io)، ثبتناه عند آخر commit وقت التجربة، وملف الإصدارات فيه يحدد Cassandra 4.1.12 وElasticsearch 8.19.23 وTheHive 6.0.0.

والملف الرسمي للإنتاج يعطي كل خدمة من الثلاث ذاكرة JVM بثلاثة جيجابايت وحداً أعلى أربعة جيجابايت، ومعها nginx للاتصال المشفر، أي أكثر من 12 GB للذاكرة وحدها. وفي المختبر عدلنا الملف بثلاثة تغييرات، وذكرناها لأنها مهمة إن جربت على Windows:

- **Volumes بأسماء بدل مجلدات مربوطة:** الملف الرسمي يربط مجلدات السيرفر ويشغل الخدمات بمعرف المستخدم UID، وهذا يسبب مشكلات صلاحيات على Docker Desktop في Windows.
- **ذاكرة أصغر:** Cassandra بجيجابايت واحد، وElasticsearch بجيجابايت، وTheHive بـ 1500 ميجابايت، وهذا يكفي لمختبر لا لفريق حقيقي.
- **بلا nginx، والمنفذ على العنوان المحلي فقط:** فلا يصل أحد إلى الواجهة من الشبكة.

```yaml
  thehive:
    image: strangebee/thehive:6.0.0
    command: '--no-config --no-config-secret'
    environment:
      - JAVA_OPTS=-Xms1500M -Xmx1500M -XX:MaxMetaspaceSize=400m -XX:ReservedCodeCacheSize=400m
    volumes:
      - ./config:/etc/thehive:ro
      - files:/opt/thp/thehive/files
    ports:
      - "127.0.0.1:18862:9000"
    depends_on:
      cassandra:
        condition: service_healthy
      elasticsearch:
        condition: service_healthy
```

والإعدادات في مجلد `config`: الملف `application.conf` من المستودع كما هو، وملف `secret.conf` بمفتاح عشوائي يوقع الجلسات، وملف `index.conf` بكلمة مرور Elasticsearch عشوائية، ولدنا الاثنين بالأمر `openssl rand -hex` كما يفعل سكربت `init.sh` الرسمي، ولا تقم بنسخهما من أي مكان.

واستغرق سحب ال Images الثلاث 612 ثانية، أي أكثر من عشر دقائق، وحجمها 2.14 GB لـ Elasticsearch و1.13 GB لـ TheHive و503 MB لـ Cassandra. ثم استغرق التشغيل 318 ثانية حتى رد `/api/status` بـ 200، لأن Cassandra تحتاج دقيقتين لتصبح جاهزة، وTheHive ينتظر صحة القاعدتين ثم ينشئ مخططه:

```text
{"versions":{"Scalligraph":"6.0.0","TheHive":"6.0.0","Play":"3.0.x"},
 "config":{"protectDownloadsWith":"malware","authType":["key","session","basic","local"],...}}
```

وبعد انتهاء المختبر قاس `docker stats` نحو 2.11 GiB لـ TheHive و2.07 GiB لـ Elasticsearch و1.62 GiB لـ Cassandra، أي قرابة 5.8 GiB رغم أننا صغرنا الذاكرة، بينما كانت البيانات نفسها صغيرة جداً: 13.6 MB في Cassandra و7.7 MB في Elasticsearch. أي أن الثمن في الذاكرة الثابتة للخدمات لا في حجم القضايا، وسيرفر بـ 8 GB هو أقل ما يعقل لتشغيله، والأنسب 16 GB.

### كلمة المرور الافتراضية: جربناها بالاسمين

التوثيق نفسه غير متفق على اسم المستخدم الافتراضي، فصفحة تقول `admin` وأخرى تقول `admin@thehive.local`، وكلمة المرور `secret` في الحالتين. فجربنا الاسمين على التثبيت الجديد:

```text
admin@thehive.local: 200
admin: 200
```

فالاثنان يدخلان، وكلمة المرور معروفة لكل من قرأ التوثيق، و[صفحة التشغيل الأول](https://docs.strangebee.com/thehive/administration/first-start?ref=arabroot.io) تطلب تغييرها فوراً. فغيرناها عبر API قبل أي شيء آخر، ثم تأكدنا أن القديمة لم تعد تعمل:

```text
setpass 204
old pw now: 401
new pw: 200
```

🛑

TheHive يحفظ أخطر معلومات شركتك: الحوادث، والحسابات المخترقة، والعناوين، وأسماء الملفات المسربة. فلا تفتح منفذه على الإنترنت، وغير كلمة مرور المدير قبل أن تضيف أي بيانات، وضعه خلف VPN أو Reverse Proxy بدخول موحد. فالمهاجم الذي يصل إلى أداة إدارة الحوادث يعرف ما تعرفه عنه.

## المفاهيم الأساسية قبل أن نبدأ

قبل أن نعيش الحادثة، هذه الكلمات السبع التي سوف تتكرر، ومعنى كل منها في قصتنا:

- **المنظمة Organisation:** مساحة مستقلة لفريق، لها مستخدموها وقضاياها. والمدير الافتراضي يعيش في منظمة إدارية لا تفتح فيها قضايا، فأنشأنا منظمة باسم الشركة.
- **التنبيه Alert:** إشارة من أداة مراقبة، لم يحكم عليها إنسان بعد. أغلب التنبيهات ليست حوادث، ولذلك تبقى تنبيهات حتى يقرر المحلل.
- **القضية Case:** حادثة قرر المحلل أنها تستحق عملاً، ولها رقم وخطورة وحالة وملخص.
- **المهمة Task:** خطوة عمل داخل القضية لها صاحب وحالة وسجل Task Log يكتب فيه ما فعله.
- **المؤشر Observable:** قطعة معلومة يمكن البحث عنها: عنوان IP، أو اسم نطاق، أو اسم ملف، أو حساب. ويمكن وسمه مؤشر اختراق IOC.
- **الأسلوب TTP:** ما فعله المهاجم بلغة إطار [MITRE ATT&CK](https://arabroot.io/articles/mitre-attack-%D9%83%D9%8A%D9%81-%D9%8A%D9%81%D9%83%D8%B1-%D8%A7%D9%84%D9%85%D9%87%D8%A7%D8%AC%D9%85-%D8%AE%D8%B7%D9%88%D8%A9-%D8%A8%D8%AE%D8%B7%D9%88%D8%A9/)، مثل «استخدام حسابات صالحة».
- **قالب القضية Case Template:** مهام جاهزة لنوع معين من الحوادث، حتى لا يبدأ الفريق من ورقة بيضاء تحت الضغط.

والشكل التالي يبين طريق الحادثة في المختبر بهذه المفاهيم، من التنبيهين إلى القضية المغلقة، وسوف نمر على كل صندوق فيه:

![مخطط طريق الحادثة في TheHive: تنبيهان من مراقبة FTP وسجلات الويب، مفتاح فريد لكل تنبيه، الربط بين التنبيهين بعنوان IP مشترك، القضية من قالب فيها 6 مهام و6 مؤشرات وأسلوب T1078، ثم الإغلاق، والتخزين في Cassandra وElasticsearch](https://arabroot.io/content/images/2026/10/thehive-lab-01-flow.webp)

التنبيه يأتي من الأدوات، والقضية يديرها إنسان بمهام وأدلة وقرار

## الاستعداد قبل الحادثة: المنظمة والمستخدم والقالب

أهم درس في الاستجابة للحوادث أن أغلب العمل يحدث قبل الحادثة. فأنشأنا المنظمة، ثم مستخدماً للمحلل بصلاحية مدير المنظمة org-admin، ثم مفتاح API له تستخدمه الأتمتة:

```bash
curl -s -u "admin@thehive.local:$ADMIN_PW" -X POST $U/api/v1/organisation \
  -H 'Content-Type: application/json' -d '{"name":"booking-co","description":"Saudi booking SME (lab)"}'
curl -s -u "admin@thehive.local:$ADMIN_PW" -X POST $U/api/v1/user -H 'Content-Type: application/json' \
  -d '{"login":"analyst@booking.example","name":"SOC Analyst","organisation":"booking-co","profile":"org-admin"}'
curl -s -u "admin@thehive.local:$ADMIN_PW" -X POST "$U/api/v1/user/analyst@booking.example/key/renew"
```

ثم كتبنا قالب قضية للنوع الذي نخافه أكثر في شركة صغيرة: دخول مريب إلى خدمة مكشوفة. والمهام الست تتبع مراحل الاستجابة التي شرحناها في [مقال DFIR](https://arabroot.io/articles/%D8%A7%D9%84%D8%AA%D8%AD%D9%82%D9%8A%D9%82-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-dfir/)، ولاحظ أن مهمة حفظ الأدلة تأتي قبل الاستئصال، لأن تغيير كلمة المرور أو إعادة تشغيل الخدمة قد يمسح ما تحتاجه لتفهم ما حدث:

```json
{"name":"suspicious-login","displayName":"Suspicious login on an exposed service","titlePrefix":"[IR]","severity":2,"tlp":2,"pap":2,
 "tags":["login","exposed-service"],
 "tasks":[
  {"title":"1. Scoping: confirm the alert and list affected accounts and hosts","group":"identification","order":0},
  {"title":"2. Containment: disable the account, block the source IP","group":"containment","order":1},
  {"title":"3. Evidence: copy service and auth logs with hashes before changes","group":"identification","order":2},
  {"title":"4. Eradication: rotate credentials, enforce TLS or SFTP","group":"eradication","order":3},
  {"title":"5. Recovery: re-enable the partner with a new account and monitor","group":"recovery","order":4},
  {"title":"6. Lessons learned: update runbook and vulnerability tracking","group":"lessons","order":5}
 ]}
```

في القالب أعلاه لاحظ التالي:

- **tlp وpap بقيمة 2:** بروتوكول إشارات المرور TLP يحدد من يجوز أن يرى المعلومة، والقيمة 2 تعني AMBER، أي داخل المنظمة ومن يحتاجها فقط. وPAP يحدد ما يجوز فعله بالمعلومة، فالقيمة نفسها تعني ألا نتصل بعنوان المهاجم من شبكتنا مباشرة. وهذا مهم حين تشارك المؤشرات مع جهة أخرى.
- **المجموعة group لكل مهمة:** تجمع المهام بالمرحلة، فيرى المدير بنظرة أين وصلت القضية.
- **titlePrefix:** كل قضية من هذا القالب يبدأ عنوانها بـ `[IR]`، فتميزها في القائمة.

## وصول التنبيه Alert

في الشركة الحقيقية يرسل التنبيه نظام مراقبة مثل [Wazuh](https://arabroot.io/articles/%D9%85%D8%B1%D8%A7%D9%82%D8%A8%D8%A9-%D8%A7%D9%84%D8%B3%D9%8A%D8%B1%D9%81%D8%B1%D8%A7%D8%AA-%D9%85%D8%B9-wazuh-%D9%85%D9%86-%D8%A7%D9%84%D8%B3%D8%AC%D9%84-%D8%A7%D9%84%D9%89-%D8%AD%D8%B8%D8%B1-%D8%A7%D9%84%D9%85%D9%87%D8%A7%D8%AC%D9%85/) أو سكربت صغير يقرأ سجل FTP. وفي المختبر أرسلناه نحن عبر API، وكل بياناته من صنعنا، وعناوينه من النطاقات المخصصة للتوثيق، فلا يوجد مهاجم حقيقي:

```json
{"type":"auth-anomaly","source":"lab-ftp-monitor","sourceRef":"ftp-2026-10-26-001",
 "title":"Partner FTP account login from a new country",
 "description":"Lab alert. The partner upload account `partner-upload` logged in to ftp.booking.example (vsftpd, cleartext FTP) from 203.0.113.45, never seen before for this account. Previous logins came only from 198.51.100.20. Three files were downloaded after login.",
 "severity":2,"tlp":2,"pap":2,"tags":["ftp","auth","partner"],
 "observables":[
  {"dataType":"ip","data":"203.0.113.45","message":"Source of the unusual login","ioc":true},
  {"dataType":"ip","data":"198.51.100.20","message":"Usual partner IP"},
  {"dataType":"fqdn","data":"ftp.booking.example","message":"Affected service"},
  {"dataType":"other","data":"partner-upload","message":"Account used"},
  {"dataType":"filename","data":"bookings-2026-10.csv","message":"Downloaded after login"}
 ]}
```

ولاحظ أن الحساب جاء بنوع `other`، لأن قائمة أنواع المؤشرات في هذا الإصدار، وسألناها من API، ليس فيها نوع للحساب: autonomous-system وdomain وfile وfilename وfqdn وhash وhostname وip وmail وmail-subject وother وregexp وregistry وuri\_path وurl وuser-agent. ويمكن للمدير أن يضيف أنواعاً جديدة، وهذا يستحق أن تفعله إذا كانت حوادث الحسابات شائعة عندك، حتى تبحث في كل الحسابات المخترقة بنوع واحد.

والصورة التالية لقائمة التنبيهات بعد وصول التنبيهين، وفيها النوع والمصدر والمرجع وعدد المؤشرات لكل تنبيه:

![قائمة التنبيهات في TheHive: تنبيه Partner FTP account login from a new country من lab-ftp-monitor بخمسة مؤشرات، وتنبيه Many failed admin logins من lab-web-logs بمؤشرين، وكلاهما Imported إلى القضية رقم 1، وشريط أحمر يذكر رخصة Platinum التجريبية](https://arabroot.io/content/images/2026/10/thehive-lab-02-alerts.webp)

التنبيهان بعد الاستيراد إلى القضية رقم 1، والشريط الأحمر في الأعلى يذكر أن الرخصة تجريبية

ولنتخيل الدقائق الأولى كما يجب أن تكون بعد هذا الإعداد: يصل التنبيه، فيظهر في قائمة التنبيهات بخطورته ومؤشراته، ويراه المحلل المناوب دون أن ينتظر بريداً. يقرأ الوصف، ويفتح المؤشر 203.0.113.45 ليرى هل ظهر في قضية سابقة، ثم يقرر خلال دقائق: قضية أم لا. وإذا رقاه صار أمام الفريق كله قائمة مهام واحدة، والمدير يرى الحالة من حساب القراءة دون أن يسأل. هذه الدقائق هي ما يقيسه زمن الفرز، وهي الفرق بين حساب شريك عطل قبل أن ينزل المهاجم ملفاً آخر، وحساب بقي مفتوحاً حتى نهاية اليوم.

### ماذا يحدث إذا أرسلت المراقبة التنبيه نفسه مرتين؟

هذه مشكلة حقيقية في أي مراقبة: سكربت يعيد المحاولة بعد خطأ شبكة، أو نظام يعيد إرسال ما لم يتأكد من وصوله. فأرسلنا التنبيه نفسه مرة ثانية:

```text
{"type":"CreateError","message":"Alert auth-anomaly:lab-ftp-monitor:ftp-2026-10-26-001 already exists in organisation booking-co"}
HTTP 400
```

فرفضه TheHive، والسبب أن كل تنبيه يعرف بثلاثة حقول معاً: النوع type والمصدر source والمرجع sourceRef. وهذا يعني أن مسؤولية أداة المراقبة أن تعطي كل حدث مرجعاً فريداً ثابتاً، فإذا أعطت مرجعاً عشوائياً في كل إرسال صار التنبيه الواحد عشرة، وإذا أعطت المرجع نفسه لحدثين مختلفين ضاع الثاني. والقاعدة العملية أن يبنى المرجع من الحدث نفسه، مثل اسم الخدمة وتاريخ الحدث ورقمه في السجل، كما فعلنا في `ftp-2026-10-26-001`.

## من التنبيه إلى القضية Case

قرأ المحلل التنبيه، ورأى حساباً حقيقياً لشريك، ودخولاً من عنوان جديد، وتنزيل ملفات، فقرر أنه يستحق قضية. وهذا القرار نفسه، تحويل التنبيه إلى قضية، هو الفرز Triage في TheHive. فرقاه إلى قضية بالقالب الذي جهزناه:

```bash
curl -s -H "Authorization: Bearer $KEY" -X POST "$U/api/v1/alert/$ALERT_ID/case" \
  -H 'Content-Type: application/json' -d '{"caseTemplate":"suspicious-login"}'
```

```text
~4444176 1 [IR] Partner FTP account login from a new country New 2
~9044064 Waiting 1. Scoping: confirm the alert and list affected accounts and hosts
~9048160 Waiting 2. Containment: disable the account, block the source IP
~4640920 Waiting 3. Evidence: copy service and auth logs with hashes before changes
~4448272 Waiting 4. Eradication: rotate credentials, enforce TLS or SFTP
~9039968 Waiting 5. Recovery: re-enable the partner with a new account and monitor
~9035872 Waiting 6. Lessons learned: update runbook and vulnerability tracking
```

ومتى يصبح التنبيه قضية؟ هذا هو القرار الذي يتكرر كل يوم في أي فريق، والخطأ فيه في الاتجاهين مكلف: إذا رقيت كل تنبيه غرق الفريق في قضايا لا تستحق، وإذا أغلقت التنبيهات بسرعة فاتتك حادثة حقيقية. وقد كتب فريق الشركة أربعة أسئلة يجيب عنها المحلل قبل الترقية: هل يمس التنبيه حساباً حقيقياً أو بيانات عملاء؟ هل السلوك جديد على هذا الحساب أو هذه الخدمة؟ هل حدث بعده شيء، مثل تنزيل ملفات أو تغيير إعداد؟ هل يتكرر المؤشر في تنبيهات أخرى؟ وتنبيهنا أجاب بنعم عن الأسئلة الثلاثة الأولى، فرقي فوراً. أما تنبيه دخول فاشل واحد من عنوان معروف فيغلق تنبيهاً، مع سبب مكتوب، ولا يصبح قضية.

فنشأت القضية رقم 1 بعنوان يبدأ بـ `[IR]`، وفيها المهام الست من القالب بحالة انتظار Waiting، والمؤشرات الخمسة انتقلت من التنبيه إلى القضية دون أن ينسخها أحد. وهذه هي القيمة الأولى للأداة: في الدقيقة الأولى من الحادثة، الفريق يعرف ما يجب فعله، ولا يناقش ترتيب الخطوات تحت الضغط.

## العمل في المهام Tasks وسجلاتها

ثم بدأ المحلل العمل. وكل مهمة تمر بثلاث حالات: انتظار، ثم قيد التنفيذ InProgress مع صاحب، ثم مكتملة Completed، وبين الحالتين يكتب في سجل المهمة Task Log ما فعله بالضبط. وفي المختبر كتبنا سجلات تشبه ما يكتبه محلل حقيقي، مع أننا لم نشغل سيرفر FTP حقيقياً في هذه التجربة:

```bash
curl -s -H "Authorization: Bearer $KEY" -X PATCH "$U/api/v1/task/$T2" \
  -H 'Content-Type: application/json' -d '{"status":"InProgress","assignee":"analyst@booking.example"}'
curl -s -H "Authorization: Bearer $KEY" -X POST "$U/api/v1/task/$T2/log" -H 'Content-Type: application/json' \
  -d '{"message":"Disabled partner-upload in vsftpd user list and added a firewall drop rule for 203.0.113.45 at 10:12 UTC."}'
curl -s -H "Authorization: Bearer $KEY" -X PATCH "$U/api/v1/task/$T2" \
  -H 'Content-Type: application/json' -d '{"status":"Completed"}'
```

والصورة التالية لصفحة المهام في منتصف الحادثة: مهمتان مكتملتان، ومهمة حفظ الأدلة قيد التنفيذ، وثلاث في الانتظار، وفي اليسار مقاييس الوقت التي يحسبها TheHive وحده:

![صفحة المهام في القضية رقم 1: مهمة التحديد ومهمة الاحتواء مكتملتان، ومهمة الأدلة قيد التنفيذ، والاستئصال والاستعادة والدروس في الانتظار، وفي اللوحة الجانبية مقاييس الوقت: الكشف أقل من ثانية والفرز 29 ثانية](https://arabroot.io/content/images/2026/10/thehive-lab-05-tasks.webp)

المهام بحالاتها وأصحابها، ومقاييس الوقت في اللوحة الجانبية

ولاحظ في اللوحة الجانبية مقاييس الوقت Time metrics: الكشف Detection أقل من ثانية، والفرز Triage والإقرار Acknowledge والتأهيل Qualification 29 ثانية. وهذه الأرقام من المختبر لا تعني شيئاً عن سرعة فريق حقيقي، لأننا رقينا التنبيه بعد ثوان من إرساله، لكنها تبين ما يقيسه TheHive وحده دون أن يكتبه أحد: كم مضى من التنبيه حتى نظر فيه إنسان، وحتى قرر. وهذه هي المقاييس التي تريدها الإدارة بعد شهر: متوسط الزمن حتى الفرز، ومتوسط الزمن حتى الاحتواء.

ولماذا جاءت مهمة الأدلة ثالثة لا أولى؟ لأن الاحتواء في هذه الحادثة كان عاجلاً: الحساب ما زال صالحاً والمهاجم قد يعود، فتعطيله وحجب العنوان لا يمسحان السجلات. لكن المهمة الرابعة، تغيير كلمة المرور وإعادة إعداد vsftpd، قد تعيد تشغيل الخدمة وتدور السجلات Log Rotation، ولذلك جاءت الأدلة قبلها. وفي سجل مهمة الأدلة كتب المحلل أنه نسخ `vsftpd.log` و`auth.log` وسجل هاش SHA-256 لكل ملف قبل أي تغيير، وهذا تطبيق مباشر لما شرحناه في [سلامة الدليل وسلسلة الحيازة](https://arabroot.io/articles/%D8%A7%D9%84%D8%AA%D8%AD%D9%82%D9%8A%D9%82-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-dfir/#integrity). ويمكن رفع الملفين نفسيهما مرفقات في القضية، فيبقيان معها بدل أن يبقيا على جهاز المحلل، مع الهاش المكتوب في السجل للتحقق لاحقاً.

وسجل المهمة يجيب عن سؤال المدير «أين وصلنا؟» دون أن يقاطع أحداً، ويجيب بعد الحادثة عن سؤال أصعب: «لماذا قررتم ذلك؟». فلا تقم بكتابة «تم» فقط، بل اكتب ما فعلت، ومتى بالتوقيت العالمي UTC، وعلى أي جهاز، والسبب أن هذا السجل قد يقرؤه محقق أو مستشار قانوني بعد أشهر.

## المؤشرات Observables وكيف تعرض

صفحة المؤشرات تعرض كل قطعة معلومة في القضية، والصورة التالية بعد اكتمال الحادثة:

![صفحة المؤشرات في القضية رقم 1: ستة مؤشرات منها عنوانان IP ونطاقان واسم ملف وحساب، معروضة بشكل معطل مثل 203[.]0[.]113[.]45، وكلها بوسم TLP:AMBER وPAP:AMBER، والعنوان 203.0.113.45 بعلامة أنه شوهد في مكان آخر](https://arabroot.io/content/images/2026/10/thehive-lab-06-observables.webp)

ستة مؤشرات معروضة بشكل معطل Defanged، والعنوان المشترك بعلامة أنه شوهد في تنبيه آخر

في الصورة أعلاه لاحظ التالي:

- **العرض المعطل Defanged:** العنوان يظهر `203[.]0[.]113[.]45` والنطاق `ftp[.]booking[.]example`، والسبب أن المحلل قد ينسخ المؤشر إلى بريد أو تقرير، فلو بقي رابطاً حقيقياً قد يضغط عليه أحد فيتصل بخادم المهاجم.
- **TLP وPAP لكل مؤشر:** ورثها من القالب، فيعرف من يشارك المؤشر لاحقاً حدود المشاركة.
- **علامة الرؤية:** العنوان 203.0.113.45 بعلامة حمراء تعني أنه شوهد في مكان آخر في المنظمة، وهذا ما سنشرحه الآن.

## التنبيه الثاني: الربط Correlation بين الحوادث

بعد دقائق من فتح القضية وصل التنبيه الثاني من سجلات الويب، ومن مصدر مختلف تماماً:

```json
{"type":"web-auth","source":"lab-web-logs","sourceRef":"web-2026-10-26-017",
 "title":"Many failed admin logins on booking dashboard",
 "description":"Lab alert. 140 failed logins to /admin on dashboard.booking.example in 10 minutes from 203.0.113.45.",
 "severity":2,"tags":["web","auth"],
 "observables":[{"dataType":"ip","data":"203.0.113.45","message":"Source of failed logins"},
                {"dataType":"fqdn","data":"dashboard.booking.example"}]}
```

وفي البريد كان هذا سيصبح حادثة ثانية يحقق فيها شخص آخر. أما TheHive فسألناه عن القضايا المشابهة لهذا التنبيه:

```text
similar case # 1 [IR] Partner FTP account login from a new country | observables shared: 1 | iocs: 1 | types: {'ip': 1}
```

فربط التنبيه الجديد بالقضية رقم 1 بمؤشر واحد مشترك، وهو موسوم مؤشر اختراق IOC. وهذا الربط يغير فهم الحادثة كلها: المهاجم لم يكتف بحساب FTP، بل جرب لوحة الإدارة أيضاً، فالسؤال لم يعد «من دخل حساب الشريك؟» بل «من يستهدف الشركة، وماذا جرب أيضاً؟». ودمجنا التنبيه في القضية:

```bash
curl -s -H "Authorization: Bearer $KEY" -X POST "$U/api/v1/alert/$ALERT2_ID/merge/$CASE_ID"
```

وهنا ظهر سلوك دقيق يستحق أن تعرفه: مباشرة بعد الدمج سألنا عن مؤشرات القضية فكانت خمسة لا ستة، ثم بعد ثوان صارت ستة. فالدمج يكمل في الخلفية، والعنوان المشترك لم يتكرر، وأضيف النطاق الجديد `dashboard.booking.example` وحده. فإذا كانت عندك أتمتة تقرأ القضية بعد الدمج مباشرة، فانتظر قليلاً أو أعد المحاولة، ولا تفترض أن الرد الأول نهائي.

## الأسلوب TTP في إطار MITRE ATT&CK

تسجيل ما فعله المهاجم بلغة مشتركة يفيد بعد الحادثة: في مقارنة الحوادث ببعضها، وفي معرفة أي ضوابط فشلت. ووجدنا أن TheHive 6.0.0 يأتي بكتالوج ATT&CK محملاً مسبقاً، فعدد الأنماط فيه 823 دون أن نستورد شيئاً. فأضفنا الأسلوب [T1078 استخدام حسابات صالحة Valid Accounts](https://attack.mitre.org/techniques/T1078/?ref=arabroot.io) في تكتيك الوصول الأولي Initial Access:

```bash
curl -s -H "Authorization: Bearer $KEY" -X POST "$U/api/v1/case/$CASE_ID/procedure" -H 'Content-Type: application/json' \
  -d '{"patternId":"T1078","occurDate":1793003730924,"tactic":"initial-access","description":"Partner account credentials (sent in cleartext over FTP) used from an unknown IP."}'
```

![صفحة TTPs في القضية رقم 1 فيها أسلوب واحد: التكتيك initial-access والتقنية T1078 Valid Accounts](https://arabroot.io/content/images/2026/10/thehive-lab-07-ttps.webp)

الأسلوب T1078 مسجل في القضية بتكتيك الوصول الأولي

ولماذا T1078 وليس هجوماً على FTP نفسه؟ لأن المهاجم لم يستغل ثغرة في vsftpd، بل دخل بكلمة مرور صحيحة، وهذا هو جوهر الدرس: الثغرة الحقيقية كانت أن كلمة المرور تمر بنص واضح، وهي النتيجة المتوسطة 4.8 التي تركناها بمهلة 45 يوماً. وقد شرحنا في [مقال MITRE ATT&CK](https://arabroot.io/articles/mitre-attack-%D9%83%D9%8A%D9%81-%D9%8A%D9%81%D9%83%D8%B1-%D8%A7%D9%84%D9%85%D9%87%D8%A7%D8%AC%D9%85-%D8%AE%D8%B7%D9%88%D8%A9-%D8%A8%D8%AE%D8%B7%D9%88%D8%A9/) كيف يفكر المهاجم خطوة خطوة، وكيف يقرأ الفريق الحادثة بهذه اللغة.

## الخط الزمني Timeline الذي يبنى وحده

من أصعب الأعمال بعد أي حادثة أن تكتب ما حدث بالترتيب. وTheHive يبني الخط الزمني من الأحداث التي سجلها الفريق أصلاً: التنبيهات، وتغيرات حالة القضية، والمهام، والأساليب، والصورة التالية للخط الزمني للقضية:

![الخط الزمني للقضية رقم 1 يعرض الأسلوب Valid Accounts، والمهام بخطوط زمنية، والتنبيهين، وأحداث القضية مثل بدء الاستجابة وتغير المرحلة إلى قيد التنفيذ](https://arabroot.io/content/images/2026/10/thehive-lab-08-timeline.webp)

الخط الزمني يبنى من عمل الفريق نفسه: التنبيهات والمهام والأسلوب وأحداث القضية

وهذا الخط هو مسودة تقرير الحادثة، يحتاج فقط إلى تحرير، لا إلى إعادة بناء من الذاكرة والمحادثات.

## إغلاق القضية والدرس الذي يعود

أكمل المحلل المهام الباقية: حفظ السجلات بالهاش، وتغيير كلمة مرور الشريك وإجبار التشفير في vsftpd، وحساب جديد للشريك مقيد بعنوانه المعتاد، ثم الدروس المستفادة. وأغلق القضية بحكم ونتيجة وملخص:

```bash
curl -s -H "Authorization: Bearer $KEY" -X PATCH "$U/api/v1/case/$CASE_ID" -H 'Content-Type: application/json' \
  -d '{"status":"TruePositive","impactStatus":"WithImpact","summary":"Partner FTP credentials sent in cleartext were reused from 203.0.113.45 (also seen brute forcing the admin dashboard). Account disabled, IP blocked, credentials rotated, TLS enforced. One file list downloaded; partner and management informed."}'
```

في الأمر أعلاه لاحظ التالي:

- **الحكم TruePositive:** الحادثة حقيقية. والخيارات الأخرى مثل الإنذار الخاطئ FalsePositive أو المكرر Duplicated مهمة لاحقاً في المقاييس، لأن نسبة الحوادث الحقيقية إلى التنبيهات تقيس جودة المراقبة.
- **الأثر WithImpact:** لأن ملفاً نزل فعلاً، وهذا يغير ما بعد الحادثة: إبلاغ الشريك، ومراجعة هل في الملف بيانات شخصية تستلزم إجراءات وفق نظام حماية البيانات الشخصية، وهو موضوع منفصل لا تحسمه الأداة.
- **الملخص:** ثلاثة أسطر يقرؤها المدير والمدقق دون أن يفتح المهام.

![القضية رقم 1 بعد الإغلاق بحالة True Positive وأثر Yes، وفيها وصف التنبيهين المدمجين والملخص، ونسبة إكمال المهام كاملة](https://arabroot.io/content/images/2026/10/thehive-lab-09-closed.webp)

القضية المغلقة: الحكم والأثر والوصف من التنبيهين والملخص في صفحة واحدة

والدرس الأهم لا يبقى في TheHive، بل يعود إلى بداية القصة. فالمهمة السادسة كتب فيها المحلل أن السبب الجذري نتيجة FTP المتوسطة التي تركت بمهلة 45 يوماً، فرفع الفريق خطورتها في DefectDojo وأغلقها في اليوم نفسه، وأضاف إلى سياسة إدارة الثغرات قاعدة: أي خدمة تحمل كلمات مرور بنص واضح على الإنترنت تعامل كعالية مهما قال رقم CVSS. وهذه هي الحلقة الكاملة: الفحص يجد، والمتابعة تحدد المهلة، والحادثة تكشف أن المهلة كانت خاطئة، فتعود الدروس إلى الفحص والمتابعة.

## ماذا يحدث إذا أضفنا محللاً ثالثاً؟ تجربة الرخصة

رأينا في مخرج الرخصة حصصاً بمنظمة واحدة ومستخدمين اثنين، فأردنا أن نعرف هل هي مطبقة فعلاً أثناء الفترة التجريبية Platinum. وفي منظمة الشركة محلل واحد، فأضفنا ثانياً وثالثاً ورابعاً، ثم حاولنا إنشاء منظمة ثانية:

```text
user2: analyst2@booking.example
user3: {'type': 'LicenseLimitExceeded', 'message': 'The limit of the license is reached: Capability(users.normal) (2/2)', 'details': [{'capability': 'users.normal', 'current': 2, 'quota': 2}]}
user4: {'type': 'LicenseLimitExceeded', 'message': 'The limit of the license is reached: Capability(users.normal) (2/2)', 'details': [{'capability': 'users.normal', 'current': 2, 'quota': 2}]}
org2: {'type': 'LicenseLimitExceeded', 'message': 'The limit of the license is reached: Capability(organisations) (1/1)', 'details': [{'capability': 'organisations', 'current': 1, 'quota': 1}]}
```

فالحصص مطبقة: مستخدمان عاديان ومنظمة واحدة، رغم أن الشريط في الواجهة يقول Platinum. وهذه معلومة مهمة لا تجدها بوضوح في صفحات البيع: تثبيت جديد بلا رخصة يسمح عملياً بمحللين اثنين، وبعد انتهاء المدة يصبح للقراءة فقط بحسب التوثيق. ولم نطلب رخصة المجتمع في هذا المختبر، لأنها تحتاج تسجيلاً ببريد عمل وانتظار تحقق الشركة، فلم نقس حصصها، والتوثيق نفسه لا يذكر أرقامها، فاطلبها واقرأ حصصها في البوابة قبل أن تبني عليها خطة فريقك.

## من أين تأتي التنبيهات في شركة حقيقية؟

في المختبر أرسلنا التنبيهين بأيدينا، وفي الإنتاج هذه أهم نقطة يغفل عنها من يثبت TheHive: الأداة لا تراقب شيئاً بنفسها، بل تنتظر من يرسل إليها. فإذا لم توصل مصادر التنبيه بقيت القضايا تفتح يدوياً من البريد، وعدنا إلى المشكلة نفسها. والطرق الشائعة ثلاث، وكلها تمر من واجهة `/api/v1/alert` التي استخدمناها:

- **من منصة المراقبة:** أنظمة مثل Wazuh تستطيع أن تنفذ تكاملاً Integration عند قاعدة معينة، فترسل التنبيه إلى TheHive، والأنسب أن ترسل فقط التنبيهات فوق مستوى معين، وإلا غرق الفريق في تنبيهات لا تستحق قضية.
- **سكربت صغير:** يقرأ سجل خدمة، مثل سجل vsftpd في قصتنا، ويرسل تنبيهاً عند حدث محدد، مثل دخول حساب من عنوان خارج قائمته. وهذا ما يناسب شركة صغيرة ليس عندها SIEM.
- **البريد:** بعض الرخص المدفوعة تستقبل تنبيهات من صندوق بريد، وهذه ميزة مذكورة في رخصة Platinum في صفحة الأسعار، فلا تفترض وجودها في رخصة المجتمع.

وفي كل الطرق تذكر ما رأيناه في تجربة التنبيه المكرر: المرجع sourceRef يبنى من الحدث نفسه، والمؤشرات ترسل مع التنبيه بأنواعها الصحيحة، لأن الربط بين الحوادث، وهو أقوى ما في الأداة، لا يعمل إلا إذا كان العنوان نفسه مسجلاً بالنوع نفسه في التنبيهين.

## الأدوار والصلاحيات، وأثرها على الرخصة

أنشأنا المحلل بملف تعريف Profile اسمه org-admin، أي مدير المنظمة، لأنه وحده في الفريق. وفي فريق حقيقي تفرق بين ثلاثة أدوار على الأقل: مدير المنظمة الذي يكتب القوالب ويدير المستخدمين، والمحلل Analyst الذي يعمل في القضايا والمهام، والقارئ Read-only الذي يرى ولا يغير، مثل المدير التنفيذي أو المدقق. والتفريق مهم أمنياً، لأن من يغير القوالب يغير خطة الاستجابة نفسها، وهو مهم مالياً أيضاً: فبحسب [صفحة الرخص](https://docs.strangebee.com/thehive/installation/licenses/about-licenses/?ref=arabroot.io) لا يحسب في الحصة إلا المستخدم العادي الذي له صلاحية مرخصة، وحسابات الخدمة والقراءة فقط لا تحسب. فالمدير الذي يريد أن يتابع القضايا يأخذ حساب قراءة، ولا يستهلك واحداً من المستخدمين الاثنين اللذين رأينا أنهما الحد بلا رخصة.

## النسخ الاحتياطي والتحديث

سجل الحوادث من أثمن ما تملكه الشركة: فيه دليل ما فعلته، وقد تحتاجه بعد سنة أمام مدقق أو في نزاع. والبيانات موزعة على ثلاثة أماكن: Cassandra وفيها القضايا والمهام والمؤشرات، وElasticsearch وفيها الفهرس، ومجلد الملفات وفيه المرفقات مثل السجلات التي حفظتها أدلة. ولاحظ أن المستودع الرسمي فيه سكربتان باسم `backup.sh` و`restore.sh` في ملف الإنتاج، وهذا يدلك على أن النسخ الاحتياطي يجب أن يشمل الأماكن الثلاثة معاً في اللحظة نفسها، لأن نسخ Cassandra دون فهرسها يعطيك قضايا لا تظهر في البحث. ولم نجرب الاستعادة في هذا المختبر، فجربها أنت قبل أن تحتاجها، فالنسخة التي لم تستعدها مرة نسخة غير مضمونة.

أما التحديث، فلاحظ أن Docker Hub يحمل فرعين نشطين في الأسبوع نفسه: 6.0.0 و5.7.8\. والانتقال بين الإصدارات الكبيرة يغير مخطط البيانات، فثبت الوسم الكامل في ملف Compose، مثل `6.0.0` لا `6`، وخذ نسخة احتياطية قبل أي ترقية، واقرأ ملاحظات الإصدار، وجرب الترقية على نسخة من البيانات أولاً.

## ماذا تقيس بعد شهر؟

بعد أن يعمل الفريق بالأداة شهراً، تصبح البيانات نفسها لوحة لإدارة الاستجابة. والأسئلة التي يسألها المدير، وكلها تجاب من القضايا المغلقة: كم تنبيهاً وصل وكم منها صار قضية؟ وكم من القضايا كانت حقيقية وكم إنذاراً خاطئاً؟ وما متوسط الزمن من التنبيه حتى الفرز، ومن الفرز حتى الاحتواء؟ وما أكثر الأساليب تكراراً في إطار ATT&CK؟ والسؤال الأخير هو الأهم لشركة صغيرة: فإذا كان T1078 يتكرر، فالمشكلة في الحسابات وكلمات المرور، والاستثمار الصحيح في المصادقة متعددة العوامل والتشفير، لا في أداة جديدة.

## ماذا تطلب الهيئة الوطنية للأمن السيبراني؟

في [الضوابط الأساسية للأمن السيبراني ECC-2:2024](https://cdn.nca.gov.sa/api/files/public/upload/86e09090-44e4-481f-bc28-355673607654%5FECC--2024-EN.pdf?ref=arabroot.io) مكون كامل لإدارة الحوادث والتهديدات برقم 2-13، والضابط 2-13-3 يطلب كحد أدنى أربعة أشياء: خطط الاستجابة للحوادث وإجراءات التصعيد، وتصنيف الحوادث، وإبلاغ الهيئة بالحوادث، ومشاركة إشعارات الحوادث ومعلومات التهديدات ومؤشرات الاختراق وتقارير الحوادث مع الهيئة. وكل بند منها له مكان عملي في الأداة:

| بند الضابط 2-13-3              | أين يظهر في TheHive                                     |
| ------------------------------ | ------------------------------------------------------- |
| خطط الاستجابة وإجراءات التصعيد | قوالب القضايا بمهامها، والمهمة الأولى فيها من يصعد إليه |
| تصنيف الحوادث                  | الخطورة وTLP وPAP والوسوم وحكم الإغلاق                  |
| إبلاغ الهيئة                   | مهمة في القالب بموعد، وسجلها يثبت متى أبلغت ومن أبلغ    |
| مشاركة المؤشرات والتقارير      | المؤشرات الموسومة IOC بحدود TLP، والملخص والخط الزمني   |

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

## البدائل مفتوحة المصدر

بما أن TheHive 5 وما بعده ليس مفتوح المصدر، فمن حق الشركة أن تسأل عن بديل مفتوح. والبديل المعروف في الفئة نفسها هو [DFIR-IRIS](https://github.com/dfir-iris/iris-web?ref=arabroot.io)، منصة لإدارة قضايا الاستجابة للحوادث بترخيص LGPL-3.0، وآخر إصدار فيها v2.4.29 بتاريخ 10 أغسطس 2026، ومستودعها نشط. ولم نشغله في هذا المختبر، فلا نحكم على جودته هنا. أما أداة Cortex الشقيقة لـ TheHive فما زال [مستودعها](https://github.com/TheHive-Project/Cortex?ref=arabroot.io) مفتوحاً بترخيص AGPL-3.0، وقد ذكرنا في [مقال البدائل مفتوحة المصدر](https://arabroot.io/articles/%D8%AD%D9%84%D9%88%D9%84-%D8%A7%D9%84%D8%A7%D9%85%D9%86-%D8%A7%D9%84%D8%AA%D8%AC%D8%A7%D8%B1%D9%8A%D8%A9-%D9%88%D8%A8%D8%AF%D8%A7%D8%A6%D9%84%D9%87%D8%A7-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1/) موقع هذه الأدوات بين حلول SOAR. والقرار العملي لشركة صغيرة مثل شركتنا:

| الوضع                                        | الخيار الأنسب                                      |
| -------------------------------------------- | -------------------------------------------------- |
| محلل أو اثنان، وتجربة قبل قرار               | TheHive برخصة المجتمع بعد طلبها، مع مراجعة حصصها   |
| فريق أكبر يحتاج دخولاً موحداً وتقارير وأتمتة | TheHive برخصة مدفوعة، والسعر من 26,000 يورو سنوياً |
| شرط أن تكون الأداة مفتوحة المصدر بالكامل     | DFIR-IRIS، بعد تجربته على حوادثك                   |
| حادثة واحدة كل سنة                           | قالب مهام مكتوب ومجلد أدلة منظم يكفي               |

## مشكلات شائعة Common Problems وحلولها

- **TheHive لا يرد بعد التشغيل:** ينتظر صحة Cassandra وElasticsearch، وCassandra تحتاج دقيقتين على الأقل، فتابع `docker compose ps` حتى تصبح healthy، وفي المختبر احتاج التشغيل 318 ثانية.
- **أخطاء صلاحيات على المجلدات في Windows:** استخدم Volumes بأسماء بدل ربط مجلدات السيرفر مع UID.
- **المدير لا يستطيع فتح قضية:** المدير الافتراضي في المنظمة الإدارية، فأنشئ منظمة لفريقك ومستخدماً فيها.
- **رسالة LicenseLimitExceeded عند إضافة مستخدم أو منظمة:** بلا رخصة الحد مستخدمان عاديان ومنظمة واحدة، فاطلب رخصة أو استخدم مستخدمين للقراءة فقط لمن لا يعمل في القضايا.
- **رسالة already exists عند إرسال تنبيه:** التنبيه بالنوع والمصدر والمرجع نفسها موجود، فتحقق من بناء المرجع في أداة المراقبة.
- **الأتمتة لا ترى مؤشرات التنبيه المدموج:** الدمج يكمل في الخلفية، فانتظر ثوان أو أعد القراءة.

## قائمة تحقق قبل الحادثة الأولى

- كلمة مرور المدير الافتراضية تغيرت، والواجهة على 127.0.0.1 أو خلف VPN.
- منظمة للفريق، ومستخدمون بأسمائهم لا حساب مشترك، ومفتاح API للأتمتة بأقل صلاحية.
- قالب قضية لكل نوع حادثة متوقع، وحفظ الأدلة قبل الاستئصال في كل قالب.
- مهمة للتصعيد والإبلاغ بحسب سياسة الجهة ومتطلبات الهيئة.
- أدوات المراقبة ترسل تنبيهات بمرجع sourceRef فريد ثابت لكل حدث.
- رخصة مطلوبة ومفعلة قبل انتهاء الأيام الأربعة عشر، وحصصها معروفة.
- نسخ احتياطي لـ Cassandra وElasticsearch ومجلد الملفات، لأنها سجل حوادثك.
- كل قضية تغلق بحكم وأثر وملخص، والدرس يعود إلى إدارة الثغرات.

## الخلاصة

وصلنا لنهاية الموضوع، وأهم ما ظهر في المختبر:

- إدارة الحالات تحل مشكلات التكرار والضياع والانفصال في الحادثة، بقضية واحدة لها مهام بأصحاب وسجلات ومؤشرات وخط زمني.
- TheHive من الإصدار 5 منتج تجاري، والتثبيت الجديد بلا رخصة سمح عملياً بمستخدمين عاديين اثنين ومنظمة واحدة، ورفض الثالث برسالة LicenseLimitExceeded.
- التشغيل احتاج ثلاث خدمات بنحو 5.8 GiB من الذاكرة حتى مع ذاكرة مصغرة، وأكثر من 15 دقيقة بين السحب والتشغيل.
- التنبيه نفسه لا يتكرر لأن مفتاحه النوع والمصدر والمرجع، والتنبيه الثاني من مصدر آخر ربط بالقضية بعنوان IP مشترك ودمج فيها.
- الأسلوب T1078 كشف أن الثغرة الحقيقية كانت كلمة مرور بنص واضح، فعاد الدرس إلى إدارة الثغرات وتغيرت سياسة المهل.
- ضوابط الهيئة في 2-13-3 تجد في القوالب والتصنيف والسجلات مكاناً عملياً، والإبلاغ نفسه قرار الجهة لا الأداة.

[![](https://arabroot.io/content/images/2026/10/dfir-basics-cover-cover.webp)دليلالتحقيق الرقمي DFIR للمبتدئين: احفظ الأدلة قبل أن تنظف السيرفرماذا تفعل عندما تشك أن سيرفرك مخترق، ولماذا تمسح إعادة التشغيل والتنظيف الأدلة التي تحتاجها لتعرف ما حدث.](https://arabroot.io/articles/%D8%A7%D9%84%D8%AA%D8%AD%D9%82%D9%8A%D9%82-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-%D9%84%D9%84%D9%85%D8%A8%D8%AA%D8%AF%D8%A6%D9%8A%D9%86-dfir/)[![](https://arabroot.io/content/images/2026/10/forensics-tools-cover-cover.webp)دليلأدوات التحقيق الرقمي مفتوحة المصدر وكيف تستخدمهاالأدوات المفتوحة التي تحتاجها في كل مرحلة من التحقيق الرقمي، من نسخ القرص واسترجاع ملف محذوف إلى بناء خط زمني لما حدث.](https://arabroot.io/articles/%D8%A7%D8%AF%D9%88%D8%A7%D8%AA-%D8%A7%D9%84%D8%AA%D8%AD%D9%82%D9%8A%D9%82-%D8%A7%D9%84%D8%B1%D9%82%D9%85%D9%8A-%D9%85%D9%81%D8%AA%D9%88%D8%AD%D8%A9-%D8%A7%D9%84%D9%85%D8%B5%D8%AF%D8%B1/)[![](https://arabroot.io/content/images/2026/10/velociraptor-lab-cover-cover.webp)دليلالبحث عن آثار الاختراق Hunt في كل سيرفراتك مع Velociraptorبنينا سيرفر Velociraptor وثلاثة عملاء وبحثنا عن آثار اختراق مزروعة بسبع عمليات Hunt، فظهر ما وجدته الأداة وما فاتها بإعداداتها الافتراضية.](https://arabroot.io/articles/%D8%A7%D9%84%D8%A8%D8%AD%D8%AB-%D8%B9%D9%86-%D8%A7%D8%AB%D8%A7%D8%B1-%D8%A7%D9%84%D8%A7%D8%AE%D8%AA%D8%B1%D8%A7%D9%82-%D9%81%D9%8A-%D9%83%D9%84-%D8%A7%D9%84%D8%B3%D9%8A%D8%B1%D9%81%D8%B1%D8%A7%D8%AA-%D9%85%D8%B9-velociraptor/)[![](https://arabroot.io/content/images/2026/10/defectdojo-lab-cover-cover.webp)دليلإدارة نتائج الفحص والثغرات مع DefectDojoاستوردنا نتائج Nuclei وOpenVAS الحقيقية إلى DefectDojo، فجمع التكرار وأغلق المصلح وحده، وكاد إعداد افتراضي واحد أن يفسد كل شيء.](https://arabroot.io/articles/%D8%A7%D8%AF%D8%A7%D8%B1%D8%A9-%D9%86%D8%AA%D8%A7%D8%A6%D8%AC-%D8%A7%D9%84%D9%81%D8%AD%D8%B5-%D9%88%D8%A7%D9%84%D8%AB%D8%BA%D8%B1%D8%A7%D8%AA-%D9%85%D8%B9-defectdojo/)[![](https://arabroot.io/content/images/2026/10/mitre-attack-cover-cover.webp)دليلMITRE ATT&CK: كيف يفكر المهاجم خطوة بخطوةلغة موحدة لسلوك المهاجمين مبنية على حوادث موثقة، نقرأ بها هجوم فدية حقيقياً مرحلة بمرحلة ونربط كل خطوة بالدفاع المقابل.](https://arabroot.io/articles/mitre-attack-%D9%83%D9%8A%D9%81-%D9%8A%D9%81%D9%83%D8%B1-%D8%A7%D9%84%D9%85%D9%87%D8%A7%D8%AC%D9%85-%D8%AE%D8%B7%D9%88%D8%A9-%D8%A8%D8%AE%D8%B7%D9%88%D8%A9/)

## تدريب عملي Practice

- اكتب قالب قضية لأكثر حادثة تخافها في شركتك، ومهامه بمراحل الاستجابة، وضع فيه مهمة التصعيد ومن يصعد إليه بالاسم.
- اجعل أداة مراقبة عندك ترسل تنبيهاً تجريبياً إلى TheHive بمرجع فريد، ثم أرسله مرة ثانية وتأكد أنه رفض، ثم أرسل تنبيهاً من مصدر آخر يشاركه مؤشراً وانظر هل ربط بالقضية.

## سجل التحديثات

- أكتوبر 2026: كتابة المقال وتنفيذ المختبر يوم 26 أكتوبر 2026 على TheHive 6.0.0 مع Cassandra 4.1.12 وElasticsearch 8.19.23، بتنبيهات صنعناها في المختبر، دون رخصة مثبتة.