
إطار عمل مفتوح المصدر للطب الشرعي لتحليل بيانات تعريف PLC الصناعية وملفات المشاريع. يقوم بمسح القطع الأثرية المشبوهة في بيئات ICS لدعم الاستجابة للحوادث والتحقيق اليدوي.

إطار عمل أدوات التحقيقات الجنائية في أنظمة التحكم الصناعي من مايكروسوفت هو إطار عمل مفتوح المصدر يتيح تحليل بيانات التعريف الخاصة بأجهزة PLC الصناعية وملفات المشاريع.
يوفر الإطار للمحققين طريقة ملائمة لمسح أجهزة PLC وكشف أي قطع أثرية مشبوهة داخل بيئات ICS، والتي يمكن استخدامها للفحص اليدوي أو مهام المراقبة الآلية أو عمليات الاستجابة للحوادث لاكتشاف الأجهزة المخترقة.
وبكونه أداة مفتوحة المصدر، تسمح أدوات التحقيقات الجنائية في أنظمة التحكم الصناعي للمحققين بمراجعة المخرجات وتخصيصها وفقًا لمتطلباتهم الخاصة.
ستحصل من خلال هذه التعليمات على نسخة من المشروع وتشغيلها على جهازك المحلي لأغراض التطوير والاختبار.
git clone https://github.com/microsoft/ics-forensics-tools.git
تثبيت متطلبات بايثون
pip install -r requirements.txt
python driver.py -s -v PluginName --ip ips.csv
python driver.py -s -v PluginName --ip ips.csv --analyzer AnalyzerName
python driver.py -s -v -c config.json --multiprocess
from forensic.client.forensic_client import ForensicClient
from forensic.interfaces.plugin import PluginConfig
forensic = ForensicClient()
plugin = PluginConfig.from_json({
"name": "PluginName",
"port": 123,
"transport": "tcp",
"addresses": [{"ip": "192.168.1.0/24"}, {"ip": "10.10.10.10"}],
"parameters": {
},
"analyzers": []
})
forensic.scan([plugin])
عند التطوير محليًا تأكد من تعيين مجلد src كـ "جذر المصادر"
from pathlib import Path
from forensic.interfaces.plugin import PluginInterface, PluginConfig, PluginCLI
from forensic.common.constants.constants import Transport
class GeneralCLI(PluginCLI):
def __init__(self, folder_name):
super().__init__(folder_name)
self.name = "General"
self.description = "General Plugin Description"
self.port = 123
self.transport = Transport.TCP
def flags(self, parser):
self.base_flags(parser, self.port, self.transport)
parser.add_argument('--general', help='General additional argument', metavar="")
class General(PluginInterface):
def __init__(self, config: PluginConfig, output_dir: Path, verbose: bool):
super().__init__(config, output_dir, verbose)
def connect(self, address):
self.logger.info(f"{self.config.name} connect")
def export(self, extracted):
self.logger.info(f"{self.config.name} export")
__init__.py داخل مجلد pluginsfrom pathlib import Path
from forensic.interfaces.analyzer import AnalyzerInterface, AnalyzerConfig
class General(AnalyzerInterface):
def __init__(self, config: AnalyzerConfig, output_dir: Path, verbose: bool):
super().__init__(config, output_dir, verbose)
self.plugin_name = 'General'
self.create_output_dir(self.plugin_name)
def analyze(self):
pass
__init__.py داخل مجلد analyzersMicrosoft Defender for IoT هو حل أمني على مستوى الشبكة بدون وكيل يسمح للمؤسسات بمراقبة واكتشاف الأصول باستمرار، واكتشاف التهديدات، وإدارة الثغرات في أجهزة IoT/OT وأنظمة التحكم الصناعي (ICS) الخاصة بها، سواء في الموقع أو في البيئات المتصلة بـ Azure.
القسم 52 في مدونة MSRC
محاضرة ICS حول الأداة
القسم 52 - التحقيق في منطق السلم الخبيث | ندوة عبر الإنترنت لـ Microsoft Defender for IoT - YouTube
يرحب هذا المشروع بالمساهمات والاقتراحات. تتطلب معظم المساهمات موافقتك على اتفاقية ترخيص المساهم (CLA) التي تعلن أن لديك الحق في منحنا الحقوق لاستخدام مساهمتك، وأنك تفعل ذلك بالفعل. للتفاصيل، قم بزيارة https://cla.opensource.microsoft.com.
عند تقديم طلب سحب، سيقوم بوت CLA تلقائيًا بتحديد ما إذا كنت بحاجة إلى تقديم CLA وتزيين طلب السحب بشكل مناسب (على سبيل المثال، فحص الحالة، تعليق). ما عليك سوى اتباع التعليمات المقدمة من البوت. ستحتاج فقط إلى القيام بذلك مرة واحدة عبر جميع المستودعات التي تستخدم CLA الخاص بنا.
اعتمد هذا المشروع مدونة قواعد السلوك مفتوحة المصدر من Microsoft. لمزيد من المعلومات، راجع الأسئلة الشائعة حول مدونة قواعد السلوك أو اتصل بـ [email protected] لأي أسئلة أو تعليقات إضافية.
قد يحتوي هذا المشروع على علامات تجارية أو شعارات لمشاريع أو منتجات أو خدمات. الاستخدام المصرح به للعلامات التجارية أو الشعارات الخاصة بـ Microsoft يخضع ويجب أن يتبع إرشادات العلامات التجارية والعلامات التجارية لـ Microsoft. يجب ألا يتسبب استخدام العلامات التجارية أو الشعارات الخاصة بـ Microsoft في إصدارات معدلة من هذا المشروع في حدوث ارتباك أو الإيحاء برعاية Microsoft. أي استخدام للعلامات التجارية أو الشعارات التابعة لجهات خارجية يخضع لسياسات تلك الجهات.
Copyright (c) 2018 Microsoft Corporation. All rights reserved.
البرنامج مُقدم "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق، والملاءمة لغرض معين، وعدم الانتهاك. في أي حال من الأحوال، لا يتحمل المؤلفون أو أصحاب حقوق النشر أي مسؤولية تجاه أي مطالبة أو أضرار أو مسؤولية أخرى، سواء كانت ناشئة عن عقد أو ضرر أو غير ذلك، ناتجة عن أو بسبب أو فيما يتعلق بالبرنامج أو استخدامه أو التعاملات الأخرى فيه.
| Args | الوصف | مطلوب / اختياري |
|---|
-h, --help | يعرض رسالة المساعدة هذه ويخرج | اختياري |
-s, --save-config | حفظ ملف الإعدادات لاستخدام مستقبلي سهل | اختياري |
-c, --config | مسار ملف الإعدادات، الافتراضي هو config.json | اختياري |
-o, --output-dir | الدليل الذي سيتم فيه إخراج أي ملفات تم إنشاؤها، الافتراضي هو output | اختياري |
-v, --verbose | تسجيل المخرجات في ملف بالإضافة إلى وحدة التحكم | اختياري |
-p, --multiprocess | التشغيل في وضع المعالجة المتعددة بعدد الإضافات/المحللات | اختياري |
| Args | الوصف | مطلوب / اختياري |
|---|
-h, --help | يعرض رسالة المساعدة هذه ويخرج | اختياري |
--ip | مسار ملف العناوين، CIDR أو عناوين IP بصيغة csv (عمود ip مطلوب). أضف المزيد من الأعمدة لمعلومات إضافية حول كل ip (اسم المستخدم، كلمة المرور، إلخ...) | مطلوب |
--port | رقم المنفذ | اختياري |
--transport | tcp/udp | اختياري |
--analyzer | اسم المحلل لتشغيله | اختياري |