في المقال السابق بنينا محرك SIEM يطبق قواعد الكشف على السجلات، لكن القاعدة وحدها لا تعرف أن العنوان الذي اتصل به سيرفرك قبل قليل هو خادم قيادة وتحكم لبرمجية فدية معروفة، فهذه معلومة تأتي من خارج مؤسستك، من جهة رصدت هذا العنوان في هجوم سابق على غيرك. وهذا هو عمل منصة استخبارات التهديدات Threat Intelligence Platform واختصاراً TIP: تجمع ما تعرفه الجهات والمجتمعات عن المهاجمين، وتوحده وتضيف له سياقاً، ثم تدفعه إلى ضوابطك لتطابقه بما يحدث عندك فعلاً. وقد يبدو من الوهلة الأولى أن الأمر مجرد قائمة عناوين سيئة تحظرها، لكن في الواقع فهو غير كذلك، فالقيمة ليست في جمع المؤشرات وإنما في جودتها وسياقها ومشاركتها بالقواعد الصحيحة. وسوف نرى في هذا المقال كيف تعمل هذه المنصات من الداخل، ونشغل مثالاً عملياً يستورد مغذياً عاماً حقيقياً ويطابق مؤشراً فيه مع سجلات.
وهذا المقال من المرحلة المتقدمة كيف تبني منتجات الأمن السيبراني، وهو يكمل مقالي SIEM وEDR اللذين يستهلكان مخرجات هذه المنصة:
دليلكيف يعمل محرك كشف SIEM من الداخل؟كيف يجمع SIEM ملايين السجلات ويوحدها ويطبق قواعد الكشف، مع خط أنابيب Vector وLoki وقاعدة Sigma تطلق فعلاً.
دليلكيف يعمل وكيل EDR؟ من eBPF إلى قواعد الكشفكيف يرى وكيل EDR ما يجري داخل كل جهاز، ولماذا سائق النواة خطر، مع تشغيل Falco يكشف فعلاً مشبوهاً.وسوف نناقش في هذا المقال ما يلي:
- الفرق بين المؤشر IOC والسلوك TTP، وهرم الألم Pyramid of Pain لديفيد بيانكو David Bianco.
- معيارا STIX 2.1 وTAXII 2.1، والمغذيات Feeds وجودتها، والإثراء Enrichment، والمشاركة بوسم TLP 2.0.
- البدائل المفتوحة: MISP وOpenCTI، ورخصة كل منهما، ولماذا OpenCTI ثقيل.
- تجربة عملية: استيراد مغذي عناوين C2 حقيقي، وتحويله إلى مؤشرات STIX، ومطابقتها مع سجلات جدار حماية بمكتبات STIX.
المؤشر والسلوك: هرم الألم
أول ما يجب أن تفهمه قبل بناء منصة تهديدات هو أن المؤشرات ليست سواء. فعنوان IP وبصمة ملف Hash مؤشرات على الاختراق Indicators of Compromise واختصاراً IOC، وهي سهلة الاستخدام لكن سهلة التغيير أيضاً: يبدل المهاجم عنوانه أو يعيد بناء ملفه في دقائق فتصبح قائمتك قديمة. وفي المقابل، أساليب المهاجم وتقنياته وإجراءاته Tactics, Techniques and Procedures واختصاراً TTP تصف سلوكه لا أدواته، وهي أصعب عليه كثيراً في التغيير. وقد لخص هذه الفكرة ديفيد بيانكو في هرم الألم Pyramid of Pain عام 2013، والصورة التالية تبينه:

والدرس العملي أن الاكتفاء بحظر العناوين والبصمات حماية هشة، لأن المهاجم يغيرها فوراً، أما اكتشاف السلوك فيؤلمه فعلاً. ولذلك منصة التهديدات الجادة لا تخزن IOC فقط وإنما تربطها بالسلوك والجهة المهاجمة، وهذا هو السياق الذي يحول قائمة عناوين إلى معرفة.
المعايير: STIX وTAXII وTLP
لكي تتبادل الجهات ما تعرفه عن التهديدات تحتاج لغة مشتركة، ومعيارين أقرتهما منظمة OASIS في 10 يونيو 2021:
- STIX 2.1: لغة لوصف التهديد ككائنات مترابطة، فيها كائنات نطاق Domain Objects مثل المؤشر Indicator والجهة المهاجمة Threat Actor والبرمجية الخبيثة Malware وأسلوب الهجوم Attack Pattern، وكائنات علاقة تربط بينها. ويوصف المؤشر بنمط Pattern مثل
[ipv4-addr:value = '203.0.113.1']الذي يعني «إذا رأيت اتصالاً بهذا العنوان فهذا مؤشر». - TAXII 2.1: بروتوكول نقل هذه المعرفة بين الخوادم عبر مجموعات Collections تشترك فيها، فهو القناة وSTIX هو المحتوى.
ثم تأتي مسألة حساسة: ليس كل ما تعرفه يشارك مع الجميع. ولذلك وضع منتدى فرق الاستجابة FIRST بروتوكول إشارة المرور Traffic Light Protocol واختصاراً TLP، والنسخة 2.0 معتمدة منذ أغسطس 2022، ولها أربع درجات: TLP:RED لا تشارك مع أحد، وTLP:AMBER تشارك داخل مؤسستك وعملائك بحسب الحاجة، وTLP:GREEN تشارك مع مجتمعك لا علناً، وTLP:CLEAR تشارك بلا قيود. فأي منصة تهديدات جادة يجب أن تحترم هذا الوسم عند المشاركة، وإلا سربت معلومة ثقة بها جهة أخرى.
مكونات المنصة من الداخل
الصورة التالية تبين كيف تعمل المنصة، من المغذيات إلى الضوابط:

وفيما يلي كل جزء:
- الاستقبال وإزالة التكرار Ingest and Dedupe: المنصة تشترك في عدة مغذيات، وكثير منها يذكر العنوان نفسه، فأول عمل دمج المكرر حتى لا تتضخم القاعدة بنفس المؤشر عشر مرات.
- الإثراء Enrichment: المؤشر الخام قليل القيمة، فالعنوان وحده لا يقول شيئاً، أما إذا أضفت له من أي دولة، ومتى رصد أول مرة، وبأي حملة يرتبط، صار معلومة قابلة للتصرف. وفي OpenCTI موصلات إثراء Connectors تستعلم مصادر خارجية تلقائياً.
- التخزين كشبكة Graph Store: التهديد ليس قائمة وإنما شبكة علاقات: هذه البرمجية تستخدمها هذه الجهة التي تهاجم هذا القطاع بهذا الأسلوب. وحفظها كشبكة يتيح أسئلة لا تجيب عليها القائمة.
- المشاركة Sharing: نشر ما يجوز نشره بحسب وسم TLP، عبر TAXII، مع جهات أخرى.
- الدفع للمطابقة: أهم مخرج عملي: دفع المؤشرات إلى SIEM وEDR لتطابقها بما يحدث عندك، وهذا ما سنجربه.
جودة المغذيات: لماذا لا تجمع كل شيء؟
وقد يتساءل البعض: أليس الأفضل أن أشترك في كل مغذي متاح؟ والإجابة لا، والسبب أن المغذيات تختلف جودةً كثيراً، وكثير منها يتداخل قليلاً أو يتأخر أو يحوي إنذارات كاذبة. وقد درست ورقة بحثية في مؤتمر USENIX Security عام 2019 بعنوان Reading the Tea Leaves سبعة وأربعين مصدراً لعناوين IP، ووجدت أن أغلبها لا يتداخل مع غيره، بل إن أكثر من 90% من مؤشرات بعض الفئات تنفرد بها مغذية واحدة. والدرس العملي: مغذيات قليلة عالية الجودة ومناسبة لقطاعك خير من عشرات تغرق محللك بمؤشرات لا تخصه، تماماً كما رأينا في مشكلة إرهاق التنبيهات في مقال SIEM.
البدائل مفتوحة المصدر
في هذه الفئة أداتان مفتوحتان ناضجتان:
- MISP: منصة مشاركة معلومات التهديدات، برخصة AGPL-3.0، تخزن المؤشرات والأحداث وتشاركها مع مجتمعات أخرى، وتدعم تصدير STIX واستيراده، وتأتي بعشرات المغذيات الافتراضية الجاهزة، وهي الأشهر للمشاركة المجتمعية وأخف نسبياً في التشغيل.
- OpenCTI من Filigran: النسخة المجتمعية برخصة Apache-2.0 مع نسخة مؤسسية ببعض المزايا، وتركز على تمثيل التهديد كشبكة معرفة غنية مرتبطة ب ATT&CK، وهي من عائلة منتجات Filigran نفسها التي منها OpenAEV التي رأيناها في مقال AEV. لكنها ثقيلة في التشغيل: تحتاج Elasticsearch وRedis وRabbitMQ وتخزين كائنات وذاكرة كبيرة، فلا تشغلها على جهاز صغير.
ولأن OpenCTI ثقيل ومنصة MISP كاملة تحتاج إعداداً، سنستخدم في التجربة الطريق الأخف: مكتبات STIX وTAXII نفسها مع مطابق صغير، وهو يكفي تماماً لفهم الآلية، وهذا خيار واقعي عندما لا تحتمل الآلة منصة كاملة.
تجربة عملية: مغذي حقيقي يطابق سجلاً
سوف نستورد مغذياً عاماً حقيقياً لعناوين خوادم قيادة وتحكم، ونحوله إلى مؤشرات STIX 2.1، ثم نطابقه مع سجلات اتصالات جدار حماية فنكتشف أي اتصال ذهب إلى عنوان معروف. والصورة التالية تبين التجربة:

نستخدم مغذي Feodo Tracker من abuse.ch لعناوين خوادم القيادة والتحكم، وهو متاح للاستخدام التجاري وغير التجاري برخصة CC0. نحمل قائمته:
curl -s "https://feodotracker.abuse.ch/downloads/ipblocklist.txt" -o feodo.txtوالملف يبدأ بترويسة ثم عناوين، كما يلي:
# abuse.ch Feodo Tracker Botnet C2 IP Blocklist (IPs only)
# Terms Of Use: https://feodotracker.abuse.ch/blocklist/
162.243.103.246
178.62.3.223
27.133.154.218
...الآن نكتب سكربت Python صغيراً بمكتبة stix2 الرسمية من OASIS: يقرأ العناوين، ويبني من كل عنوان مؤشر STIX بنمط Pattern، ثم يبني من سجلات اتصالات الجدار كائنات Observed Data، ويطابقها بمكتبة stix2-matcher:
from stix2 import Indicator, Bundle, ObservedData, IPv4Address, NetworkTraffic
from stix2matcher.matcher import match
ips = [l.strip() for l in open("feodo.txt") if l[:1].isdigit()]
# 1) كل عنوان يصير مؤشر STIX بنمط
for ip in ips:
pat = f"[ipv4-addr:value = '{ip}']"
Indicator(name=f"Feodo C2 {ip}", pattern=pat, pattern_type="stix")
# 2) سجلات الجدار تصير Observed Data، بعضها يتصل بعنوان في المغذي
# 3) نطابق كل سجل مع كل نمط
for dst, observation in firewall_logs:
for ip, pat in patterns:
if match(pat, observation):
print(f"ALERT dst={dst} matched Feodo C2 IOC {ip}")وعند تشغيله على خمسة اتصالات، اثنان منها إلى عناوين في المغذي والبقية حميدة، كان المخرج الحقيقي كما يلي:
feed IOCs loaded: 5 C2 IPs -> 162.243.103.246, 178.62.3.223, 27.133.154.218, ...
STIX bundle built: 5 indicators, type=bundle
--- matching firewall egress against feed ---
ALERT dst=162.243.103.246 matched Feodo C2 IOC 162.243.103.246
ok dst=93.184.216.34 no match
ALERT dst=27.133.154.218 matched Feodo C2 IOC 27.133.154.218
ok dst=1.1.1.1 no match
ok dst=8.8.8.8 no match
matches: 2 / 5 connections hit a known C2 IOCفي المخرج أعلاه لاحظ التالي:
- حولنا مغذياً خاماً إلى مؤشرات STIX 2.1 قياسية، وهذا هو الخطوة التي تجعل المؤشر قابلاً للمشاركة والمطابقة بلغة واحدة مهما كان مصدره.
- المطابقة بالنمط Pattern لا بمقارنة نصية بسيطة، وهذا ما يتيح لاحقاً أنماطاً أعقد من مجرد عنوان، مثل بصمة ملف أو مجموعة شروط.
- اثنان من خمسة اتصالات طابقا عنواناً معروفاً، والثلاثة الحميدة لم تطابق، وهذا بالضبط ما تفعله المنصة الكاملة على نطاق ملايين السجلات.
- كل هذا جرى بمكتبتين فقط دون منصة ثقيلة، وهو مدخل واقعي حين لا تحتمل الآلة MISP أو OpenCTI كاملين.
ولم نشغل هنا أي حاوية، فالتجربة كلها بمكتبات Python في بيئة معزولة، ولا شيء نحذفه.
بناء منتج كهذا: أين الصعوبة الحقيقية؟
قد يبدو بناء منصة تهديدات مجرد قاعدة بيانات تستورد قوائم، لكن الصعوبة في خمسة أمور:
- جودة البيانات Quality: منصتك تساوي جودة مغذياتها، ومغذيات رديئة تملأ القاعدة بإنذارات كاذبة تفقد المحلل ثقته، وتمييز المفيد من الضجيج هو أصعب ما في المنتج.
- الإثراء والربط Enrichment: تحويل مؤشر خام إلى معرفة ذات سياق يتطلب موصلات لمصادر كثيرة وعلاقات محفوظة بدقة، وهذا هو ما يفرق منصة معرفة عن قائمة حظر.
- التوسع Scale: ملايين المؤشرات تتغير يومياً، وحفظها كشبكة قابلة للبحث السريع، ودفعها للضوابط دون أن تثقلها، مسألة هندسية صعبة.
- المشاركة والثقة Trust: احترام وسم TLP بدقة، وحماية ما لا يشارك، وبناء الثقة مع الجهات التي تتبادل معها، شرط وجود لا ميزة إضافية، فتسريب واحد يفقدك كل شركائك.
- التكامل Integration: منصة لا تدفع مؤشراتها إلى SIEM وEDR اللذين تملكهما بلا قيمة، فالتكامل مع ضوابطك الموجودة هو ما يحول المعرفة إلى حماية.
إذا أردت بناء واحدة في منطقتنا
بناء منصة تهديدات من الصفر منافسة ل MISP وOpenCTI الناضجتين، وهذا نادراً ما يكون المدخل الأنسب. والمسار العملي أن تشغل MISP داخلياً، وتصنع القيمة في الطبقة التي تحتاجها المؤسسات هنا: مغذيات إقليمية عالية الجودة تجمع تهديدات تستهدف قطاعاتنا، ومجتمع مشاركة موثوق بين مؤسسات المنطقة يحترم TLP، وربط التهديدات بضوابط الهيئة الوطنية للأمن السيبراني، وموصلات إثراء لمصادر محلية. وهذه القيمة، لا كتابة محرك التخزين، هي المدخل الواقعي، ونتجنب هنا أي أرقام عن حجم السوق لأنها تحتاج مصدراً موثقاً.
تشتري أم تبني؟
محرك التخزين والمشاركة سلعة ناضجة ومفتوحة في MISP وOpenCTI، فلا معنى لكتابته. أما ما تدفع ثمنه في المنتجات التجارية فهو جودة المغذيات نفسها: فرق بحث تهديدات تجمع وتنقي وتضيف سياقاً على مدار الساعة، وهذا ما يصعب بناؤه. فإذا كانت حاجتك المحرك والتكامل فابن على المفتوح، وإذا كانت حاجتك معرفة عالية الجودة جاهزة فهي ما يستحق الشراء أو الاشتراك في مغذ تجاري، والموازنة بينهما فصلناها في مقارنة حلول الأمن.
أخطاء شائعة
- الاكتفاء بحظر العناوين والبصمات؛ فهي أسهل ما يغيره المهاجم، والأقوى اكتشاف السلوك TTP في أعلى هرم الألم.
- الاشتراك في كل مغذي متاح؛ فتغرق القاعدة بمؤشرات لا تخص قطاعك، والصحيح مغذيات قليلة عالية الجودة.
- تخزين المؤشرات بلا سياق؛ فعنوان بلا جهة ولا حملة ولا تاريخ رصد قليل القيمة.
- تجاهل وسم TLP عند المشاركة؛ فتسريب معلومة ثقة بها شريك يفقدك ثقته وثقة غيره.
- جمع المؤشرات دون دفعها إلى SIEM وEDR؛ فالمعرفة التي لا تطابق شيئاً لا تحمي أحداً.
الخلاصة
وصلنا لنهاية الموضوع، وأهم ما فيه:
- منصة التهديدات تجمع ما تعرفه الجهات عن المهاجمين وتوحده وتثريه وتدفعه إلى ضوابطك، والقيمة في الجودة والسياق لا في جمع المؤشرات.
- المؤشرات IOC سهلة التغيير، والسلوك TTP أصعب، وهرم الألم لبيانكو يرتب ما يؤلم المهاجم فعلاً.
- المعايير STIX 2.1 للمحتوى وTAXII 2.1 للنقل، وTLP 2.0 من FIRST يحكم ما يشارك وما لا يشارك.
- البدائل المفتوحة: MISP (AGPL-3.0) الأخف للمشاركة المجتمعية، وOpenCTI (Apache-2.0) الأغنى لكنه ثقيل التشغيل.
- استوردنا مغذي Feodo Tracker الحقيقي (CC0)، وحولناه إلى مؤشرات STIX 2.1، وطابقناها بمكتبة stix2-matcher فكشفنا اتصالين من خمسة إلى عناوين معروفة.
- المدخل المحلي بناء القيمة فوق MISP: مغذيات إقليمية ومجتمع مشاركة موثوق وربط بضوابط NCA.
وفي المقال الأخير من هذه المرحلة ننتقل إلى الجبهة التي تبدأ منها أغلب الهجمات فعلاً: البريد الإلكتروني، وكيف تعمل بوابة أمن البريد التي تكشف التصيد:
دليلكيف تعمل بوابة أمن البريد وتكشف التصيد؟كيف تفحص بوابة أمن البريد كل رسالة وتكشف التصيد والانتحال، مع تشغيل Rspamd وClamAV على رسائل اختبار.
دليلكيف تبني منصة محاكاة الهجمات والتحقق من التعرض AEV؟كيف تعمل منصات AEV من الداخل لتثبت أي الهجمات ينجح خلف ضوابطك، مع تشغيل Caldera بسيناريو آمن.
دليلكيف يعمل وكيل EDR؟ من eBPF إلى قواعد الكشفكيف يرى وكيل EDR ما يجري داخل كل جهاز، ولماذا سائق النواة خطر، مع تشغيل Falco يكشف فعلاً مشبوهاً.
دليلكيف يعمل محرك كشف SIEM من الداخل؟كيف يجمع SIEM ملايين السجلات ويوحدها ويطبق قواعد الكشف، مع خط أنابيب Vector وLoki وقاعدة Sigma تطلق فعلاً.سجل التحديثات
- أكتوبر 2026: كتابة المقال، وتنفيذ التجربة العملية بمكتبتي stix2 وstix2-matcher الرسميتين من OASIS، باستيراد مغذي Feodo Tracker الحقيقي وتحويله إلى مؤشرات STIX 2.1 ومطابقتها مع سجلات اتصالات.