واجهة رسومية بلغة Python لتشغيل capemon في جهاز افتراضي مستقل. توفّر مجموعة فرعية من معالجة ونتائج CAPE (Configuration And Payload Extraction).

الواجهة
- تبويبات في الأعلى: Start، ثم تبويب لكل عرض نتائج (Info، Behavior، Signatures، Payloads،
Yara، Configs، Strings، Debugger، JS Log، Network).
- يجمع تبويب Start اختيار الهدف وخيارات الحزمة وأعلام المراقبة والتسجيل في
بطاقات؛ وتبقى الإجراءات (Launch، Kill، التقارير، Zip Results) مثبّتة في أسفل
النافذة، حتى لا تختفي عند التمرير.
- سمتان داكنة وفاتحة، تُبدَّلان من شريط الحالة أسفل اليمين أو من Settings.
يُكتب الاختيار في
cfg.ini ويُستعاد في التشغيل التالي.
- معالجة Payloads وConfigs قبل Signatures. فالتوقيع لا يرى إلا ما هو موجود في
النتائج عند تشغيله، والعديد منها يقرأ بيانات الحمولة والإعدادات وyara - وتشغيل
هذه المرحلة أولاً من شأنه أن ينقص التقارير بصمت بدلاً من أن يفشل. يبقى زر Signatures معطّلاً
حتى تُشغَّل تلك التبويبات، ويوضّح تلميحه أيّها لم يُشغَّل بعد.

العمل على الواجهة
-
يبني tools/uidev/ اللوحات الحقيقية خارج الشاشة ويكتبها إلى ملفات PNG، بحيث يمكن
اختبار تغيير التخطيط اختباراً سريعاً وأخذ لقطة شاشة له دون تشغيل تحليل. راجع
tools/uidev/README.md.
-
تعمل السكربتات نفسها في CI عند كل طلب سحب، على مشغّل Windows، وترفع
المخرجات كأثر (artifact).
-
أنشئ جهازاً افتراضياً بنظام Windows 10 مناسباً لتشغيل البرمجيات الخبيثة.
-
ثبّت Python في الجهاز الافتراضي، وقد اختُبر على إصدارات Python 64-bit 3.11 و3.12 و3.12. أضف Python إلى المسار (path).
-
نزّل وثبّت كلاً من Microsoft Visual C++ Redistributables:
-
ثبّت CAPEsolo.
-
خذ لقطة (snapshot) لجهازك الافتراضي.
بدء سريع
- افتح نافذة أوامر بصلاحيات المسؤول.
- اكتب capesolo للتشغيل.
بدلاً من ذلك، أنشئ اختصاراً إلى CAPEsolo.exe،
والذي سيكون في المجلد الفرعي Scripts في الموقع نفسه الذي يوجد فيه ملف python.exe.
- ضمن Advanced، حدّد 'Run as administrator'
- يتوفر ملف أيقونة في مجلد تثبيت CAPEsolo ضمن site-packages.
توجد نتائج التحليل في C:\Users\Public\CAPEsolo\analysis.
- يمكن ضبطها في C:\Users\Public\CAPEsolo\cfg.ini
- تتجاوز الإعدادات هناك القيم الافتراضية المضمّنة في python-path\site-packages\CAPEsolo\cfg.ini،
وتصمد أمام
pip install --upgrade CAPEsolo، الذي يستبدل النسخة المضمّنة.
- أدرج فقط المفاتيح التي تريد تغييرها؛ أما الباقي فيعود إلى القيم الافتراضية المضمّنة.
توقيعات المجتمع
- تشحن CAPEsolo توقيعاتها الخاصة فقط. توضع توقيعات مجتمع CAPEv2 / CAPESandbox في
C:\Users\Public\CAPEsolo\signatures (بجانب cfg.ini)، دون تعديل. يمكن لـ Update (أدناه) أن يملأ
مجلده الفرعي
community من https://github.com/CAPESandbox/community، أو انسخ الملفات إلى هناك
بنفسك.
- تُفحص المجلدات الفرعية؛ ويُتخطّى
deprecated وlinux. تُلتقط الملفات المضافة أو المعدّلة
في مرحلة التوقيع التالية، دون إعادة تشغيل.
- يستبدل التوقيع الموجود هناك توقيعاً مشحوناً بالاسم نفسه. كما يتفوّق أحد توقيعاتك الخاصة، خارج
community، على توقيع بالاسم نفسه داخله.
- يُتخطّى التوقيع الذي يحتاج إلى وحدة CAPEv2 غير متوفرة في CAPEsolo، ويذكر سجل
التحليل الوحدة المفقودة. أما التوقيع الذي يقرأ قسم نتائج لا تنتجه CAPEsolo (Suricata،
مثلاً) فيُحمَّل لكنه لا يطابق أبداً.
- تُقرأ ملفات البيانات الاختيارية التي تبحث عنها تلك التوقيعات تحت جذر CAPEv2 (
extra/msft-public-ips.csv،
data/dga.bloom) من C:\Users\Public\CAPEsolo.
قواعد YARA
- يأتي CAPEsolo بقواعد CAPE الخاصة به. قواعدك الخاصة توضع في C:\Users\Public\CAPEsolo\yara، وقواعد
المجتمع توضع في مجلدها الفرعي
community. يتم فحص كليهما إلى جانب قواعد CAPE.
حيث يتشارك ملفان الاسم نفسه: Desktop\custom يفوز، ثم مجلدك، ثم community، ثم
القواعد المُضمَّنة.
pip install --upgrade CAPEsolo يعيد القواعد المُضمَّنة.
التحديث (علامة تبويب Start)
- يسأل عمّا يجب تنزيله:
- قواعد YARA - CAPEsolo (محددة افتراضيًا) وCAPEv2 يعيدان بناء القواعد المُضمَّنة (قواعد
CAPE وقواعد المراقب التي يستخدمها capemon في الضيف) من أيّهما محدد. حيث يوجد ملف في كليهما،
تُستخدم قواعد CAPEsolo.
- قواعد YARA - المجتمع يستبدل
yara\community بـ data/yara/CAPE من CAPESandbox/community.
- التوقيعات - المجتمع يستبدل
signatures\community بـ modules/signatures/windows و
all من CAPESandbox/community.
- ملفاتك الخاصة، والقاعدة المحفوظة في علامة تبويب Debugger، لا تُمسّ أبدًا. يتم تنزيل كل شيء
قبل استبدال أي شيء، لذا فإن فشل التحديث يحتفظ بما كان موجودًا.
- الخيارات نفسها متاحة عبر
capesolo --update_yara capesolo,capev2,community (عدم إعطاء قيمة
يعني capesolo)، وcapesolo --update_signatures، وأداة MCP capesolo_update_yara.
التقارير (علامة تبويب Start)
- التقارير تبني تقرير JSON و/أو HTML (كلاهما محدد افتراضيًا) من مرور واحد على
التحليل. يُكتب كل منهما إلى سطح المكتب وإلى مجلد التحليل.
أعِد ضبط الجهاز الظاهري بعد كل تحليل.
عرض تقرير JSON (مستقل)
tools/report_viewer.py هو عارض فرز مستقل لتقرير report.json الخاص بـ CAPEsolo يعمل
على أي مضيف باستخدام Python فقط - دون تثبيت CAPEsolo ودون اعتماديات pip (tkinter من المكتبة القياسية).
python tools/report_viewer.py [path\to\report.json | path\to\bundle.zip]
- حزمة النتائج من Zip Results تُفتح كما هي: يُقرأ التقرير من داخل ملف zip في مكانه، لذا
لا تُكتب بايتات حمولة الحزمة الكاملة أبدًا على الجهاز الذي يقوم بالفرز.
- بدون وسيط يفتح
%USERPROFILE%\Desktop\report.json (حيث يكتبه CAPEsolo)؛
استخدم File > Open لاختيار تقرير أو حزمة أخرى.
- علامات تبويب الفرز: Overview (بطاقة الحكم - تجزئات الملف، الاكتشافات، أهم التوقيعات، الإعدادات، الأعداد،
وما إذا كان قد فُقد شيء أثناء الالتقاط)، Capture (ما خزّنه التشغيل وما لم يخزّنه)،
Signatures (مرتبة حسب الخطورة، ملوّنة، مع أدلة لكل عملية)، Processes (شجرة العمليات
مع بيانات وصفية لكل عملية)، Network (DNS/HTTP/Hosts/Domains/Flows)، Payloads (مع إصابات
yara والسلاسل النصية)، Yara (كل قاعدة أصابت أي ملف مفحوص، مع البيانات الوصفية والسلاسل
المطابقة والإزاحات)، وIOCs (مجمّعة، مع Copy / Export CSV / Export text).
- مربع البحث (الشريط العلوي) يجد قيمة عبر التوقيعات والشبكة والحمولات والإعدادات وIOCs
والسلاسل النصية، وينتقل إلى علامة التبويب المالكة.
- علامة تبويب Raw JSON تحتفظ بالشجرة الكاملة لأي شيء لا تُظهره علامات تبويب الفرز.
- يتعامل مع التقارير الكبيرة: يُقرأ الملف مع شريط تقدم، وتُحمَّل الشجرة الخام بشكل كسول
(الأبناء عند التوسيع)، وألواح التفاصيل محدودة الحجم، لذا يبقى سريع الاستجابة على
تقارير بمئات الميغابايت/غيغابايت. (تقرير بحجم غيغابايت لا يزال يحتاج عدة غيغابايت من الذاكرة لتحليله - أمر متأصل في
JSON الخاص بـ Python.)
- سمات داكنة وفاتحة، مطابقة للوحة ألوان واجهة CAPEsolo الرسومية. يتبع إعداد
"وضع التطبيق" في Windows افتراضيًا (داكن في غير ذلك)؛ الزر في أعلى اليمين يقلبه
للجلسة، و
--theme dark|light يفرض أحدها. شريط القوائم ونوافذ Open/الخطأ الأصلية
ترسمها Windows وتبقى فاتحة - لا يستطيع tkinter تنسيقها.
- يحتاج tkinter - مضمّن مع Python القياسي على Windows/macOS؛ على Linux ثبّت
python3-tk.