
إطار عمل الطب الشرعي للاستجابة للحوادث

تطبيق مخصص لعرض البيانات الجنائية غير المتزامنة على واجهة خلفية Elasticsearch.
صُمم هذا التطبيق لاستيعاب ملف "المجموعات" (collections) من Mandiant Redline وتوفير مرونة في البحث والتجميع والوسم.
وُلد التطبيق نتيجة عدم القدرة على التحكم في تحقيقات متعددة (أو مئات نقاط النهاية) من نافذة واحدة.
لاستيعاب عمليات تدقيق Redline، أنشأنا nightHawkResponse، وهو تطبيق كامل بلغة GOpher صُمم لمرافقة هذا الإطار. كود المصدر للتطبيق متاح في هذا المستودع، وقد تم تجميع ملف ثنائي وتشغيله داخل الـ ISO جاهزًا للاستيعاب من أول تشغيل.
نحن حاليًا نطور إصدارًا رئيسيًا جديدًا وسنصدره بحلول مارس 2020. يهدف الإصدار الجديد إلى تحقيق ما يلي:
أدركنا أن هناك أجزاء متحركة كثيرة جدًا لتشغيل المستودع بالكامل بشكل فعال، وإدارة الكيانات بسهولة، والحفاظ على تحديث كل شيء. كما نعتقد أن البيانات الأساسية الموجودة في Elastic يجب استخدامها بشكل أكثر فعالية بواسطة Kibana، ولذا قررنا جعل هذا حقيقة من خلال تطوير إضافة تفعل ذلك جنبًا إلى جنب مع سير عمل Kibana المذهل.
التثبيت
ستتبع توثيق API في صفحة Wiki
01/09/2016: الإصدار 1.0.3
الميزات:
عرض فيديو توضيحي: منصة nightHawk Response
لتسهيل الأمر على مستخدمي nightHawk، قمنا ببناء ISO مع كل شيء مُعد وجاهز للاستخدام. هذا يعني أنك تحصل على ما يلي؛
/opt/nighthawk/etc/nightHawk.json. بدء النظام:
قبل بناء جهازك الافتراضي باستخدام ISO المقدم، ضع في الاعتبار ما يلي؛
قيد الانتظار: إعداد خدمة Elastic لتكون عُقدة مزدوجة مع ربع ذاكرة النظام المخصصة لكل عقدة. هذا يعني إذا أعطيتها 2 جيجابايت من ذاكرة الوصول العشوائي، ستحصل كل عقدة ES على 512 ميجابايت وسيتبقى للنظام 1 جيجابايت لتشغيله.
إذا كنت ترغب في تعيين هذا بأي طريقة أخرى، قم بتسجيل الدخول عبر SSH إلى الصندوق وقم بالتكوين بالطريقة التي تريدها.
يجب النظر في 20 جيجابايت كحد أدنى. يمكن أن يكون ملف التدقيق كبيرًا، لذلك يُنصح بتخصيص مساحة تخزين كبيرة للتعامل مع استيعاب العديد من المجموعات.
قيد الانتظار: إعداد تخزين قائم على المستخدم للحالات واسعة النطاق. إذا كنت ترغب في إعداد أقسام إضافية، يمكنك القيام بذلك بنفسك، ويمكن إجراء بعض التغييرات لتوجيه تخزين بيانات ES إلى القسم الجديد الخاص بك.
التثبيت:
تنزيل ISO: nightHawk v1.0.3
قم بتكوين الأجهزة، وقم بتثبيت ISO في الجهاز الافتراضي، وابدأ برنامج التثبيت.
بمجرد الانتهاء، في متصفحك (Chrome/FireFox)، انتقل إلى؛ https://192.168.42.173.
سجل الدخول إلى النظام باستخدام 'nighthawk/nighthawk' - انقر على "انتقال إلى الموقع" للدخول إلى التطبيق
إذا كنت بحاجة للوصول إلى Kibana، فانتقل إلى؛ https://192.168.42.173:8443.
إذا كنت بحاجة إلى SSH إلى الصندوق، فإن تفاصيل تسجيل الدخول هي؛ admin/nightHawk.
إذا كنت ترغب في تغيير عنوان IP (ينعكس على مستوى التطبيق بالكامل)؛ /opt/nighthawk/bin/nighthawkctl set-ip <new_ipaddress>
يمكن العثور على برنامج جمع تدقيق Redline في جذر هذا المستودع. استخدم هذا عند استخدام أداة جمع Redline المستقلة لأنها ستعيد المستندات التي تحتاجها لملء nightHawk بشكل صحيح.
الرفع:
هام:
إنشاء ملف تدقيق مضغوط للرفع (أداة جمع Redline المستقلة):
الخطوة_1: انتقل إلى Sessions\AnalysisSessionX\Audits<ComputerName> حيث X هو رقم التحليل وهو 1 في معظم الحالات.
الخطوة_2: أنشئ ملف مضغوط للمجلد الذي يحتوي على ملفات التدقيق، على سبيل المثال 20160708085733
الخطوة_3: ارفع الملف 20160708085733.zip
هام: استخدام ملف تدقيق HX الموجود (جامع HX): تدقيقات FireEye HX هي امتدادات تنتهي بـ .mans. يختلف التدقيق من HX عن جامع Redline لأن ملف .mans الذي يعيده هو في الواقع ملف مضغوط. هذا يعني أنه يمكن رفعه مباشرة على عكس تدقيق Redline الذي تحتاج فيه إلى اتباع التعليمات أعلاه.
انتقل إلى أيقونة "رفع" في شريط التنقل، وحدد ملف .zip للتدقيق (أو عدة ملفات)، واسم حالة (وإلا سيزودك النظام بواحد)، ثم أرسل. إذا كنت قد استخدمت برنامج تدقيق Redline الخاص بنا لبناء مجموعتك، فاتبع إرشادات "جامع Redline" أعلاه.
بمجرد المعالجة، ستظهر نقطة النهاية في عقدة شجرة "التحقيقات الحالية". تحت نقطة النهاية، سيتم عرض جميع أنواع التدقيق المتاحة لتلك النقطة. ميزة الرفع في تطبيق الويب هذا تستدعي عمليات pOpen فرعية تستدعي تطبيق GO لتحليل تدقيق Redline ودفع البيانات إلى Elasticsearch. هناك خياران للرفع، أحدهما متسلسل والآخر متزامن.
يرجى الملاحظة: الرفع المتزامن محدود بـ 5 في المرة ويمكن أن يكون كثيف الموارد، إذا كان لديك جهاز ضعيف فحد من استخدام هذه الميزة إلى 2-3.
الوسم:
يمكنك النقر على أي صف في أي جدول (في عرض الاستجابة) لوسم تلك البيانات. بمجرد الوسم، يمكنك عرض التعليقات في عرض التعليقات.
Elasticsearch:
توجد تعيينات مخصصة (متوفرة في جذر git) وتعليقات استشارية حول ما يلي؛
يتم فهرسة المستندات عبر تطبيق GO كعلاقة أب/ابن. تم اختيار هذا لأنه قادر على تقديم مسار منطقي نسبيًا لعرض المستندات، أي أن الأصل هو اسم نقطة النهاية والأبناء هم أنواع التدقيق. يبدو أن إجراء التجميعات على مستند علاقة أب/ابن على نطاق واسع منطقي أيضًا. يعتمد إطار التجميع على بناء الأصول في مصفوفة ثم الحصول على تجميعات جميع المستندات الفرعية لأنواع تدقيق معينة.
تتطلب إعدادات Elasticsearch الضبط والتقدير السليم للتصميم. يعتبر التقسيم مهمًا للفهم بسبب طريقة ربط مستندات الأصل/الفرع. يتم توجيه الفرع دائمًا إلى الأصل ولا يمكن أن يوجد بمفرده. هذا يعني أنه يجب النظر في عدد الأجزاء الموجودة في الفهرس. بناءً على ما نعرفه، قد يكون من الحكمة اختيار إعداد يتضمن العديد من العقد مع أجزاء مفردة. لتحسين الأداء من هذا النوع من الإعداد، نعمل على عمليات بحث موجهة للأجزاء.
نحن نعمل حاليًا على تصميم أفضل تكوين ممكن للبحث السريع.
تم تصميم هذا التطبيق ليتوسع بشكل هائل. من مفهوم التصميم الأولي، تمكنا من تشغيله بسلاسة على جهاز افتراضي Ubuntu بمعالج واحد و 2 جيجابايت من ذاكرة الوصول العشوائي مع 3 عقد ES (Macbook Pro)، مع حوالي 4 ملايين مستند أو أكثر (أو 50 نقطة نهاية تم استيعابها). إذا تم الانتقال إلى الإنتاج، باستخدام إعداد بذاكرة 64/128 جيجابايت وتخزين SAS، ستتمكن من الحفاظ على زمن استجابة سريع جدًا لاسترجاع المستندات مع وجود العديد من المحللين الذين يعملون على التطبيق في وقت واحد.
اعتبارات:
معالجة مختلطة لجداول البيانات:
هناك عدة أنواع تدقيق تم استيعابها وهي كبيرة جدًا بحيث لا يمكن إرجاع جميع المستندات إلى الجدول. على سبيل المثال، قد يعيد سجل URL والسجل 15 ألف مستند إلى DOM، مما قد يضغط على متصفح العميل. لمكافحة هذا، نستخدم معالجة من جانب الخادم لتصفح نتائج أنواع تدقيق معينة. هذا يعني أنه يمكنك أيضًا البحث عبر المستندات في نوع التدقيق باستخدام Elasticsearch في الخلفية.
الوسم:
حاليًا يمكننا وسم المستندات وعرض تلك التعليقات. يمكننا تحديثها أو تغييرها. المحلل قادر على إضافة سياق مثل التاريخ/اسم المحلل/التعليق إلى المستند.
التبعيات (جميعها مثبتة مسبقًا):
elasticsearch-dsl.py
django 1.8
python requests
قائمة المهام:
معالجة المؤشرات (قيد التقدم).
منزلقات اختيار الوقت للمولدات المستندة إلى الوقت (قيد التقدم).
قائمة سياق للتحقيقات الحالية/السابقة.
سياق الوسم. سيتكامل نظام الوسم مع حلقة websocket للتعليقات المباشرة عبر ألواح المحللين (قيد التقدم).
سياق التطبيق.
القدرة على نقل نقاط النهاية بين أي سياق.
إعادة تصميم شجرة العقدة لتعتمد على تاريخ التحقيق.
تجميع انتقائي، حاليًا محدد عقدة الجذر مفعل.
عمليات بحث موجهة للأجزاء.
قالب برنامج تدقيق Redline.
تكامل أوسع مع AngularJS (قيد التقدم).
تصميم متجاوب. (قيد التقدم).
صفحة تحكم إدارية لتكوين الإعدادات الأساسية (قيد التقدم).
المؤلفون والملاحظات:
نحن دائمًا نبحث عن أشخاص متشابهين في التفكير يرغبون في المساهمة في هذا المشروع، نحن لسنا بأي حال خبراء في تصميم الويب، إذا كنت تعتقد أن بإمكاننا القيام بشيء أفضل، فيرجى طلب سحب (pull request) وإذا أعجبنا، سنقوم بدمجه.
دانيال إيدن & روشان ماسكي
الشكر:
مطورو Mandiant Redline، AngularJS، Django، Angular-DataTables/DataTables، D3 (Bostock)، Elasticsearch/ES-dsl.py، jsTree، qTip، GOlang، Python، فهيد عبد العال (الشعار/الفيديو).
