
إطار عمل متقدم للاستخبارات الأمنية في الوقت الفعلي لتحديد التهديدات وحركة المرور الويب الضارة بناءً على سمعة عنوان IP والبيانات التاريخية.

ARTIF هو إطار عمل متقدم جديد لذكاء التهديدات في الوقت الفعلي يضيف طبقة تجريد إضافية فوق MISP لتحديد التهديدات وحركة المرور الويب الضارة بناءً على سمعة عنوان IP والبيانات التاريخية. كما يقوم بالإثراء التلقائي وتسجيل التهديدات من خلال جمع ومعالجة وربط العناصر القابلة للملاحظة بناءً على عوامل مختلفة.
الميزات الرئيسية لـ ARTIF تشمل:-
بعض حالات الاستخدام:-
لماذا استخدام ARTIF؟ إنه إطار عمل لذكاء التهديدات في الوقت الفعلي يمكن أن يساعد في تحديد عناوين IP الضارة حتى لو لم تكن موجودة في MISP. يساعد ذلك المؤسسات على إنشاء الطبقة الأولى من الدفاع من خلال توفير الشفافية حول حركة المرور الويب الضارة التي تصل إلى خوادمها.
مأخوذ من MISP: MISP هو حل برمجي مفتوح المصدر لجمع وتخزين وتوزيع ومشاركة مؤشرات وتهديدات الأمن السيبراني حول تحليل حوادث الأمن السيبراني وتحليل البرامج الضارة. MISP مصمم من قبل ومحللي الحوادث، ومحترفي الأمن وتكنولوجيا المعلومات، أو محللي البرامج الضارة لدعم عملياتهم اليومية لمشاركة المعلومات المنظمة بكفاءة.
يمكن تثبيت MISP باستخدام الكود المصدري أو صور AWS المعدة مسبقًا. يمكن العثور على مزيد من المعلومات حول تثبيت MISP على موقعهم الإلكتروني.
maxmind:
image: maxmindinc/geoipupdate
environment:
GEOIPUPDATE_ACCOUNT_ID: xxxxx
GEOIPUPDATE_LICENSE_KEY: xxxxxxxxxxxxxx
git clone https://github.com/CRED-CLUB/ARTIF/
sudo docker-compose build
sudo docker-compose up
أدناه مثال على config.yaml كمرجع. فقط استبدل القيم المقابلة بقيمك.
credentials:
MISP_URL: "https://127.0.0.1"
MISP_KEY: "qwertyuiopasdfghjk"
python3 /home/user/ARTIF/ip_rep/feed_ingestor/update_check.py -s
python3 /home/user/ARTIF/ip_rep/feed_ingestor/update_check.py
python3 manage.py crontab add
python3 manage.py runserver
سيؤدي هذا إلى فتح المنفذ 8000 الذي يمكن استخدامه للحصول على البيانات الوصفية لعناوين IP. يمكنك الآن تجربة الحصول على درجة التهديد لأي IP معين.
curl 127.0.0.1:8000/ip/?ip=x.x.x.x
المخرج هو
{"is_IoC": false, "is_Active": false, "metadata": {"asn": "AS165**", "country": "XXX", "org": "XXX"}, "score": 80.14671726301682, "description": "XXX", "blacklists": "", "type": "", "historical":false, verdict": "No action needed"}
تمثل الدرجة مخاطر أقل لعنوان IP حيث أن درجة التهديد عالية. كلما زادت الدرجة، قلَّ احتمال أن يكون IP غير ضار.
ملاحظة: يُوصى باستخدام مثبت بذاكرة وصول عشوائي 8 جيجابايت لتثبيت ARTIF.
إعداد حاويات docker

بدء ARTIF

يدعم ARTIF المزامنة مع MISP. يقوم بمزامنة خلاصات MISP، ويختار أحدث تكوين من settings.yaml وجميع الأحداث الجديدة المعدلة من MISP تنعكس في settings.yaml. لإضافة IP جديد، فقط قم بتسجيل الدخول إلى MISP وانقر على صفحة إضافة خلاصة. بمجرد إضافة IP، سيلتقطه cronjob وفقًا لجدوله وسيتم معالجته تلقائيًا.
ARTIP كإطار عمل للتهديدات، مفيد جدًا للرؤية داخل حركة مرور المؤسسة. مكتوب بالكامل بلغة Python ويجمع معلومات استخباراتية عن IP من خلاصات مختلفة. ثم يرسل هذه البيانات إلى محرك الربط الذي يولد درجة تهديد حيث تكون البيانات التاريخية أحد العوامل المأخوذة في الاعتبار لحساب درجة التهديد.
في كل مرة يصل IP جديد إلى الخدمة، يتم تعيين مهمة لعامل celery لتحديث درجته في قاعدة البيانات بالتنسيق مع محرك الربط، والذي بدوره يجمع البيانات من مصادر متعددة. لضمان عدم ركود البيانات (القيمة الافتراضية لـ 'وقت الركود' هي 24 ساعة)، نقوم بتشغيل عامل لكل IP في قاعدة البيانات لم يتم تحديثه خلال 'وقت الركود' الماضي. كما هو الحال مع جميع المعلمات الأخرى، هذه القيمة قابلة للتكوين أيضًا. نظرًا لأن حساب درجة التهديد هو المفتاح لكل هذا، فقد أولينا له أهمية كبيرة. بصرف النظر عن خلاصات التهديدات المعروفة مثل MISP وCortex وAlien Vault وVirusTotal، والقائمة السوداء الشهيرة لعناوين IP، يمكننا أيضًا إضافة خلاصات مخصصة وفقًا لحالة الاستخدام التجاري والأمني، حيث يمكن استخدام ولاء العملاء أيضًا كمعلمة لحساب درجة التهديد.
لسهولة التكوين، يحتاج ARTIF إلى الإدخال التالي لتشغيل نفسه:
عند التشغيل، تتم معالجة البيانات وتخزينها في حاوية MongoDB. تحتوي حاوية MongoDB على 3 قواعد بيانات مهمة تخزن معلومات حول IP في الخلاصة بالإضافة إلى بياناته الوصفية على سبيل المثال. البلد/ASN، المنظمة، إلخ. إذا لم يتم العثور على IP في قاعدة البيانات، فهذا يعني أنه IP جديد يصل إلى الخادم ومعلوماته غير موجودة في MISP. ثم نقوم بحساب درجة المخاطرة لـ IP المحدد باستخدام خوارزمية ومعلمات أخرى مختلفة مثل الموقع الجغرافي وASN والمنظمة. يمكن العثور على مزيد من المعلومات حول محرك التسجيل هنا.
لدى ARTIF وظيفة إضافية لتتبع الخلاصات القديمة. التكوين الافتراضي يجدد الخلاصات الأحدث كل 24 ساعة. بعد 24 ساعة، يتم نقل الخلاصة القديمة إلى مجموعة أخرى ويتم إضافة الأحدث. لسهولة التشغيل، أضفنا حقلًا يسمى "historical" في المخرج يخبرنا ما إذا كان IP سيئًا تاريخيًا. القيمة false تشير إلى أن IP قد تمت إضافته مؤخرًا إلى الخلاصات بينما القيمة true تشير إلى أن IP كان موجودًا بالفعل في الخلاصات الأقدم وبالتالي فهو IP ضار تاريخيًا.
جميع عناوين IP التاريخية ستتم إزالتها من قاعدة البيانات بعد 7 أيام افتراضيًا.

تحتاج إلى استدعاء ARTIF باستخدام update_check.py وهو العمود الفقري لـ ARTIF.
ubuntu@localhost:~/ARTIF/ip_rep/feed_ingestor$ python3 /home/user/ARTIF/ip_rep/feed_ingestor/update_check.py -h
usage: update_check.py [-h] [-s [S]] -k [KEY] -m MISP
IP reputation program
optional arguments:
-h, --help show this help message and exit
-s [S] Required only for the first run
يمكنك أيضًا الاطلاع على مهمة cron عن طريق تشغيل الأمر التالي -
python3 manage.py crontab show
سيؤدي هذا إلى التحديث التلقائي للخلاصة. افتراضيًا، كل 24 ساعة سيتحقق من MISP للحصول على أحدث خلاصة ويجدد قاعدة البيانات بـ IP جديد من الخلاصات. كما تتم إزالة عناوين IP الأقدم من 7 أيام بواسطة المجدول.
يمكنك تجاهلها بأمان لأن هذا يحدث عندما يكون Tag موجودًا بالفعل ونحاول إضافته. في هذه الحالة، سيعطي خطأً كما هو مذكور أعلاه، وبالتالي لا يمكن إزالة Tag. MISP ليس لديه طريقة لالتقاط هذه الاستثناءات ولذا نضطر إلى الاعتماد على هذه الطريقة.
هذا بالفعل يستغرق وقتًا أحيانًا من 30 دقيقة إلى 90 دقيقة اعتمادًا على سرعة الإنترنت وذاكرة الوصول العشوائي. هذا بشكل أساسي تنزيل جميع الخلاصات إلى MongoDB ومعالجتها وبالتالي سيستغرق وقتًا وهو أيضًا جهد لمرة واحدة.
الحل: في مثل هذه الحالات، قم بتشغيل ملف update_check.py بدون الوسيطة -s. سيؤدي هذا إلى تنزيل جميع عناوين IP من الخلاصة. هذا الخطأ يحدث عمومًا عندما تقاطع تنفيذ update_check.py فجأة خلال مرحلته الأولية.
المساهمات مرحب بها دائمًا!
انظر contributing.md لطرق البدء. يرجى الالتزام بـ code of conduct لهذا المشروع.
أسهل طريقة للتواصل مع الفريق هي عبر GitHub Issues.
يرجى تقديم مشكلات جديدة، وطلبات الميزات، والاقتراحات، ولكن ابحث عن المشكلات المشابهة المفتوحة/المغلقة الموجودة مسبقًا قبل إنشاء مشكلة جديدة.