
نص برمجي بلغة Python لفحص سجلات الأحداث الخاصة بـ Ivanti Secure Connect (ICS)، مصمم لدعم التحقيقات في الثغرات الأمنية CVE-2025-0282 وCVE-2023-46805 وCVE-2024-21887.
يوفر هذا المستودع نصًا برمجيًا بلغة Python مصممًا لتحويل ملفات سجلات .vc0 الخاصة بـ Ivanti Secure Connect إلى صيغة CSV لأغراض الفحص الجنائي الرقمي والاستجابة للحوادث. على وجه التحديد، يقوم المحلل بما يلي:
.vc0).
طُوّر هذا البرنامج في الأصل أثناء التحقيق في CVE-2025-0282 (ثغرة تنفيذ التعليمات البرمجية عن بُعد دون مصادقة تؤثر على أجهزة Ivanti معينة). تشير تقارير Mandiant وغيرها إلى أن الجهات المهاجمة قد تحذف أو تعدّل إدخالات السجل لإخفاء أنشطتها. من خلال تحليل هذه الملفات .vc0، يمكن للمحققين اكتشاف أدلة الاختراق أو عمليات الحذف غير المعتادة أو أي سلوك مريب بسهولة أكبر.

خلال العديد من مهام الاستجابة للحوادث التي تضمنت Ivanti Secure Connect، تبيّن أن بعض الأجهزة تُظهر سجلات غير مكتملة أو معدّلة — بل إن بعضها لم يُظهر أي إدخالات على الإطلاق حتى تم اكتشاف استغلال CVE-2025-0282 وإعادة تشغيل الجهاز. بالإضافة إلى ذلك، قد يقوم المهاجم بتعطيل أو تعديل فحوصات السلامة المدمجة التي تجري عادةً كل ساعتين. من خلال تحويل ملفات .vc0 إلى صيغة CSV أكثر سهولة، يساعد هذا البرنامج المحققين في تحديد الحالات الشاذة، مثل فقدان إدخالات السجل، ومحاولات المصادقة غير المتوقعة، والعلامات المحتملة للتلاعب بالبيانات.

PS F:\Case20250109001> python .\ics_logs_parser.py -h
usage: ics_logs_parser.py [-h] --input INPUT --output OUTPUT --mapfile MAPFILE
Process .vc0 files and convert them to .csv files.
options:
-h, --help show this help message and exit
--input INPUT Directory containing .vc0 files
--output OUTPUT Directory to save .csv files
--mapfile MAPFILE CSV file mapping [MessageCode, MessageType, Description]
python .\ics_logs_parser.py --input "F:\Case20250109001\root_runtime.img\[root]\runtime\logs" --output .\logs\ --map .\logmessages_map.csv
--input: الدليل الذي يحتوي على ملفات سجلات .vc0 المستخرجة من Ivanti Secure Connect.--output: الدليل الذي ستُكتب فيه ملفات CSV.--mapfile: ملف CSV يربط كل رمز رسالة بنوع رسالة ووصف.
يخزّن logmessages_map.csv رموز الرسائل المعروفة وأنواع الرسائل والأوصاف المقابلة لها. وعلى الرغم من أن هذه القائمة (المأخوذة من وثائق Ivanti المتاحة للعموم وأبحاث المجتمع) شاملة، إلا أنها قد لا تتضمن كل رمز رسالة موجود. نشجع المستخدمين على مراجعة هذا الربط أو تخصيصه حسب الحاجة لبيئتهم. راجع قسم الموارد للحصول على المراجع الأصلية.
بشكل افتراضي، يتم تحويل الطوابع الزمنية إلى توقيت UTC. إذا كنت بحاجة إلى تخصيصها لمنطقة زمنية معينة أو تنسيقها بشكل مختلف، يمكنك تعديل استدعاء datetime.fromtimestamp(...) في دالة process_subline().

إذا كانت لديك أسئلة أو اقتراحات أو تحتاج إلى مساعدة، فلا تتردد في التواصل عبر البريد الإلكتروني [email protected].