
حزمة بايثون للتفاعل مع إطار عمل Mitre ATT&CK Framework
.______ ____ ____ ___ .___________.___________. ______ __ ___
| _ \ \ \ / / / \ | | | / || |/ /
| |_) | \ \/ / / ^ \ `---| |----`---| |----`| ,----'| ' /
| ___/ \_ _/ / /_\ \ | | | | | | | <
| | | | / _____ \ | | | | | `----.| . \
| _| |__| /__/ \__\ |__| |__| \______||__|\__\
حزمة Python للتفاعل مع أطر عمل MITRE ATT&CK
الإصدار الحالي هو 7.1.1
pyattck هو إطار عمل خفيف الوزن لأطر عمل MITRE ATT&CK. تستخرج هذه الحزمة التفاصيل من أطر عمل MITRE Enterprise و PRE-ATT&CK و Mobile و ICS.
يساعد pyattck المؤسسات والأفراد في الوصول إلى أطر عمل MITRE ATT&CK بطريقة برمجية. بمعنى، يمكنك الوصول إلى جميع الجهات الفاعلة والبرامج الضارة والتخفيفات والتكتيكات والتقنيات والأدوات المحددة من أطر عمل Enterprise و Mobile و Pre-Attck و ICS عبر أداة سطر أوامر أو تضمينها في قاعدة الكود الخاصة بك.
هناك العديد من الأسباب التي قد تدفعك للوصول إلى هذه البيانات بطريقة آلية (نصية/مبرمجة)، لكن بعض الأمثلة هي:
هناك فوائد أخرى يقدمها pyattck أيضًا، بما في ذلك القدرة على توفير بيانات سياقية إضافية. يمكنك العثور على مزيد من المعلومات حول هذه البيانات هنا، لكن الأساسيات هي أن pyattck يستخدم مستودعات مفتوحة المصدر متعددة لجمع بيانات سياقية إضافية مثل الأوامر المستخدمة لتنفيذ تقنية، والبلد وتفاصيل أخرى عن جهة فاعلة ضارة، وأنواع أخرى من البرامج الضارة المشابهة لأداة/برنامج ضار محدد، إلخ.
هذا السياق الإضافي هو ما يجعل pyattck قويًا حقًا ويمكّن الأشخاص من بناء اختبارات وتحقق أكثر قوة لقواعد الكشف الخاصة بهم، والتحقق من افتراضات الاختبار، إلخ. حقًا، هناك طرق لا تعد ولا تحصى يمكن من خلالها استخدام pyattck لمساعدة الفرق الزرقاء والحمراء والأرجوانية في حماية المؤسسات (وأنفسهم).
تسترد حزمة pyattck جميع التكتيكات والتقنيات والجهات الفاعلة والبرامج الضارة والأدوات والتخفيفات من أطر عمل MITRE ATT&CK بالإضافة إلى أي علاقات محددة داخل مجموعة بيانات MITRE ATT&CK (بما في ذلك التقنيات الفرعية).
بالإضافة إلى ذلك، أصبحت التقنيات والجهات الفاعلة والأدوات (إن أمكن) تحتوي الآن على بيانات مجمعة من موارد طرف ثالث يمكن الوصول إليها عبر خصائص مختلفة. لمزيد من المعلومات التفصيلية حول هذه الميزات، راجع مجموعات البيانات الخارجية.
تتيح لك حزمة pyattck ما يلي:
يمكنك تثبيت pyattck على OS X أو Linux أو Windows. يمكنك أيضًا تثبيته مباشرة من المصدر. للتثبيت، راجع الأوامر تحت عنوان نظام التشغيل ذي الصلة أدناه.
pip install pyattck
git clone https://github.com/swimlane/pyattck.git
cd pyattck
python setup.py install
لاستخدام pyattck، يجب عليك إنشاء كائن Attck. على الرغم من أنه يمكنك التفاعل مباشرة مع كل فئة، فإن الاستخدام المقصود هو من خلال كائن Attck:
from pyattck import Attck
attack = Attck()
افتراضيًا، يمكن الوصول إلى التقنيات الفرعية ضمن كل كائن تقنية. يمكنك إيقاف تشغيل هذا السلوك بتمرير nested_techniques=False عند إنشاء كائن Attck الخاص بك.
كمثال، السلوك الافتراضي يشبه المثال التالي:
from pyattck import Attck
attack = Attck()
for technique in attack.enterprise.techniques:
print(technique.id)
print(technique.name)
for subtechnique in technique.techniques:
print(subtechnique.id)
print(subtechnique.name)
يمكنك الوصول إلى الخصائص الرئيسية التالية في كائن Attck الخاص بك:
بمجرد تحديد إطار عمل MITRE ATT&CK، يمكنك الوصول إلى خصائص إضافية.
فيما يلي الكائنات التي يمكن الوصول إليها تحت خاصية Enterprise:
لمزيد من المعلومات حول أنواع الكائنات تحت خاصية enterprise، راجع Enterprise.
فيما يلي الكائنات التي يمكن الوصول إليها تحت خاصية PreAttck:
لمزيد من المعلومات حول أنواع الكائنات تحت خاصية preattck، راجع PreAttck.
فيما يلي الكائنات التي يمكن الوصول إليها تحت خاصية Mobile:
لمزيد من المعلومات حول أنواع الكائنات تحت خاصية mobile، راجع Mobile.
فيما يلي الكائنات التي يمكن الوصول إليها تحت خاصية ICS:
لمزيد من المعلومات حول أنواع الكائنات تحت خاصية ics، راجع ICS.
لاستخدام نظام القائمة التفاعلية الجديد داخل pyattck، يجب عليك تعيين interactive إلى True. عند القيام بذلك، سيتم تشغيل نظام القائمة التفاعلية لوحدة التحكم.
باستخدام سكربت، يمكنك تشغيل ذلك عن طريق تشغيل:
from pyattck import Attck
Attck(interactive=True)
أو يمكنك أيضًا تشغيل الوضع التفاعلي على سطر الأوامر:
pyattck --interactive
ألق نظرة على مثال بصيغة gif أدناه:

يسمح لك pyattck بتكوين ما إذا كنت تخزن البيانات الخارجية وأين يتم تخزينها.
from pyattck import Attck
attck = Attck(
nested_techniques=True,
use_config=False,
save_config=False,
config_file_path='~/pyattck/config.yml',
data_path='~/pyattck/data',
enterprise_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_enterprise_attck_v1.json",
pre_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_pre_attck_v1.json",
mobile_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_mobile_attck_v1.json",
ics_attck_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_ics_attck_v1.json",
nist_controls_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/merged_nist_controls_v1.json",
generated_nist_json="https://swimlane-pyattck.s3.us-west-2.amazonaws.com/attck_to_nist_controls.json",
**kwargs
)
افتراضيًا، يقوم pyattck الآن بسحب أحدث البيانات الخارجية من مواقعها الخاصة باستخدام طلبات HTTP GET. يسحب pyattck حاليًا من المواقع التالية:
لديك عدة خيارات عند إنشاء كائن Attck. اعتبارًا من الإصدار 4.0.0، يمكنك الآن تحديد أي من الخيارات التالية:
True، سيحاول pyattck استرداد التكوين المحدد في موقع config_file_path. إذا كان هذا الملف تالفًا أو لا يمكن العثور عليه، فسنعود إلى سحب البيانات من مواقع *_attck_json المحددة.True، سيحفظ pyattck ملف التكوين إلى الموقع المحدد بواسطة config_file_path. بالإضافة إلى ذلك، سنحفظ جميع الملفات التي تم تنزيلها إلى موقع data_path المحدد. إذا قمت بتحديد موقع مسار محلي بدلاً من رابط تنزيل لأي من معلمات *_attck_json، فسنحفظ هذا الموقع في تكويننا وسنشير إلى هذا الموقع في المستقبل.~/pyattck/config.yml~/pyattck/dataبالإضافة إلى ذلك، يمكنك تحديد موقع كل ملف *_attck_json فردي عن طريق تمرير إما URI أو مسار ملف محلي. إذا قمت بتمرير مسار ملف محلي، فسنقرأ ببساطة من هذا الملف.
إذا كنت قد استخدمت القيم الافتراضية أو حددت موقع URI بديل لسحب ملفات JSON هذه، فيمكنك أيضًا تمرير **kwargs التي سيتم تمريرها إلى حزمة Requests بلغة Python عند تنفيذ أي طلبات HTTP.
نحن ندرك أن هناك العديد من المشاريع مفتوحة المصدر المختلفة التي يتم إصدارها، حتى على أساس يومي، ولكننا أردنا توفير حزمة Python مباشرة تسمح للمستخدم بتحديد العلاقات المعروفة بين جميع الاتجاهات الرأسية لإطار عمل MITRE ATT&CK.
إذا كنت غير معتاد على إطار عمل MITRE ATT&CK، فهناك بعض المكونات الرئيسية التي يجب أن تكون لديك فكرة واضحة عنها. الأول هو التكتيكات والتقنيات. عند النظر إلى إطار عمل MITRE ATT&CK، فإن التكتيكات هي الأعمدة وتمثل المراحل المختلفة للهجوم.
إطار عمل MITRE ATT&CK ليس خريطة أمنية شاملة/افتراضية - بل هو إطار عمل ويجب أيضًا النظر في السبل الإضافية عند تقييم وضعك الأمني.
التقنيات هي صفوف الإطار ويتم تصنيفها تحت تكتيكات محددة (أعمدة). إنها نقاط بيانات داخل الإطار توفر إرشادات عند تقييم فجواتك الأمنية. بالإضافة إلى ذلك، تحتوي معظم التقنيات على إرشادات تخفيف بالإضافة إلى معلومات حول علاقتها بالأدوات والبرامج الضارة وحتى الجهات الفاعلة/المجموعات التي استخدمت هذه التقنية أثناء الهجمات المسجلة.
هذا يعني، إذا كانت مؤسستك تركز على TTPs (التكتيكات والتقنيات والإجراءات) التي تستخدمها بعض الجهات الفاعلة/المجموعات، فإن إطار عمل MITRE ATT&CK مثالي لك. إذا كنت لم تصل إلى هذا المستوى من النضج الأمني داخل مؤسستك، لا تقلق! لا يزال إطار عمل ATT&CK يوفر إرشادات جيدة جدًا بتخطيط بسيط ومباشر، لكنه ليس مباشرًا برمجيًا - خاصة إذا كنت ترغب في قياس (أو رسم) ضوابطك الأمنية باستخدام الإطار.
يمكنك إضافة ميزات أو أخطاء أو تشغيل الكود في بيئة تطوير.
للحصول على بيئة تطوير واختبار جاهزة، استخدم [Dockerfile] هذا (https://github.com/swimlane/pyattck/blob/master/Dockerfile).
لاستخدام Dockerfile، قم بتشغيل cd إلى دليل هذا المستودع وقم بتشغيل:
docker build --force-rm -t pyattck .
docker run pyattck
يؤدي تشغيل هذا إلى استدعاء ملف اختبار python في bin/test.py.
يجب أن تغطي الاختبارات داخل هذا المشروع جميع الخصائص والطرق المتاحة. مع نمو هذا المشروع، ستصبح الاختبارات أكثر قوة، لكننا حاليًا نختبر أنها موجودة وتعيد مخرجات.
يرجى قراءة CONTRIBUTING.md للحصول على تفاصيل حول مدونة قواعد السلوك الخاصة بنا، وعملية تقديم طلبات السحب إلينا.
نستخدم SemVer للإصدارات.
للحصول على تفاصيل حول ميزات إصدار معين من pyattck، راجع CHANGELOG.md.
راجع أيضًا قائمة المساهمين.
هذا المشروع مرخص بموجب رخصة MIT.
أولاً وقبل كل شيء، أود أن أشكر كل من يساهم في المشاريع مفتوحة المصدر، وخاصة القائمين على هذه المشاريع ومنشئيها. بدونهم، لن تكون هذه الإمكانية ممكنة.
يتم إنشاء مجموعة البيانات هذه من مصادر مختلفة جدًا. بينما نستمر في إضافة المزيد من المصادر، سنستمر في إضافتها هنا. مرة أخرى شكرًا لجميع هذه المشاريع. بدون ترتيب معين، يستخدم pyattck بيانات من المشاريع التالية:
.. toctree::
:titlesonly:
configuration
pyattck/attck
Dataset <https://github.com/swimlane/pyattck-data>
Data Models <https://github.com/swimlane/pyattck-data>
enterprise/enterprise
preattck/preattck
mobile/mobileattck
ics/icsattck