
محرك استيعاب ومعالجة البرامج الضارة/مؤشرات الاختراق
_ ___ _
/\/\ __ _| | / _ (_)_ __ ___
/ \ / _` | |/ /_)/ | '_ \ / _ \
/ /\/\ \ (_| | / ___/| | |_) | __/
\/ \/\__,_|_\/ |_| .__/ \___|
|_|
MalPipe هو إطار عمل معياري لجمع ومعالجة البرامج الضارة (والمؤشرات). تم تصميمه لسحب البرامج الضارة والنطاقات وعناوين URL وعناوين IP من مصادر متعددة، وإثراء البيانات المجمعة، وتصدير النتائج.
في الوقت الحالي، يتم دعم المصادر التالية:
ستساعدك هذه التعليمات في الحصول على نسخة من المشروع وتشغيلها على جهازك المحلي لأغراض التطوير والاختبار. راجع قسم النشر للحصول على ملاحظات حول كيفية نشر المشروع على نظام مباشر.
يتطلب نشر MalPipe تثبيت مكتبات بايثون المطلوبة وتكوين الوحدات المختلفة.
يمكن تثبيت تبعيات بايثون عن طريق تشغيل:
pip install -r requirements.txt
يتم توفير تكوين مثال في config_example.json مع الإعدادات اللازمة للبدء. يحتوي هذا الملف على كائن JSON يحتوي على الإعدادات المطلوبة لكل مصدر / معالج / مصدر. وصف لإعدادات المصادر موضح أدناه:
...
"feeds": {
...
"MalShare": {
"ENABLED" : true,
"API_KEY" : "00000000000000000000000000000000000000000000000000000000000",
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["YaraScan", "DNSResolver"]
},
...
نظرًا لأن بعض المصادر يتم تحديثها يوميًا، يمكن أن تكون المصادر في شكلين: مجدولة ونشطة. يتم تعريف إعدادات موعد تشغيلها خارج التكوين في الوحدات الفردية.
تُستخدم المعالجات لإثراء / توحيد البيانات التي تم جمعها. على سبيل المثال، تحتوي البيانات من VirusTotal على نتائج yara لكل ملف تم جمعه، بينما لا يحتوي MalShare على ذلك. بإضافة YaraScan إلى مفتاح PROCESSORS، يمكنك مسح الملفات لتضمين هذه البيانات أيضًا.
إعدادات مثال للوحدات أدناه:
...
"processors": {
...
"YaraScan": {
"ENABLED" : false,
"RULES_PATH": "/yara_rules/Malware.yara"
},
...
حاليًا، تم تنفيذ المعالجات التالية:
ASNLookupDNSResolverFileTypeRDNSYaraScanالمكون النهائي هو المُصدرون، الذين يتحكمون في وجهة البيانات. يمكن استخدامها لتصدير البيانات التي تم جمعها إلى مستودع للبرامج الضارة، أو SIEM، أو ملفات سجل JSON، أو طباعتها للمستخدم.
...
"exporters": {
...
"JSONLog": {
"ENABLED" : true,
"PRETTY" : true,
"LOG_PATH": "./temp/"
},
...
حاليًا، تم تنفيذ المُصدرين التاليين:
DetailsPrinterGenericWebStorageJSONLogLocalFileStorageبعد الإعداد، يمكن تشغيل MalPipe باستخدام:
python malpipe.py
توجد وحدات MalPipe ضمن malpipe/ حسب النوع:
إنشاء وحدات جديدة سهل،
تُعرّف وحدات MalPipe على أنها فئات Python. فيما يلي مثال لرأس الوحدة:
class ModuleName(Processor):
def __init__(self):
md = ProcessorDescription(
module_name="ModuleName",
description="Description",
authors=["Author Name"],
version="VersionNumber"
)
Processor.__init__(self, md)
self.types = ['ipaddresses']
self.parse_settings()
يمكن تعيين الإعدادات عن طريق استيراد التكوين وتعيينها إلى متغيرات الصف، كما هو موضح أدناه:
from malpipe.config import CONFIG
...
self.yara_rule_path = CONFIG['processors'][self.get_module_name()]['RULES_PATH']
يُطلب من كل معالج وجود دالة run يتم استدعاؤها بواسطة المصدر.
بعد إنشاء الوحدة، يجب إضافة الإعدادات إلى config.json تحت مفتاح processors أو feeds أو exporters. إذا كانت الوحدة الجديدة معالجًا أو مُصدرًا، فسيلزم أيضًا إضافتها إلى المصادر المرتبطة. مثال موضح أدناه:
...
"processors": {
...
"SuperNewModule": {
"ENABLED" : true,
"DOCOOLSTUFF": true
},
...
"feeds": {
...
"0DayMalwareFeed": {
"ENABLED" : true,
"EXPORTERS" : ["DetailsPrinter", "JSONLog"],
"PROCESSORS" : ["SuperNewModule"]
}
...
يرجى الإبلاغ عن أي مشاكل عن طريق إنشاء issue أو بدء pull request. إذا كانت لديك وحدات أو ميزات إضافية ترغب في رؤيتها، فيرجى التفكير في فتح issue.
انظر أيضًا قائمة المساهمين الذين شاركوا في هذا المشروع.
هذا المشروع مرخص بموجب رخصة GNU العامة الإصدار 3.0 - راجع ملف LICENSE.md للحصول على التفاصيل.