
دفتر Jupyter لتحليل مجموعة بيانات RanSMAP لتصنيف عائلات برامج الفدية من أنماط الوصول إلى الذاكرة (GPA، والإنتروبيا، ونوع الصفحة) باستخدام نماذج التجميع (ensemble) من scikit-learn.
المؤلف: كيفن توماس
[1] م. هيرانو و ر. كوباياشي، "RanSMAP: مجموعة بيانات مفتوحة لأنماط وصول برمجيات الفدية إلى التخزين والذاكرة لإنشاء كاشفات برمجيات فدية قائمة على التعلم العميق." Computers & Security، 2024، 104202، ISSN 0167-4048، https://doi.org/10.1016/j.cose.2024.104202.
[2] م. هيرانو و ر. كوباياشي، "كشف برمجيات الفدية القائم على التعلم الآلي باستخدام أنماط وصول منخفضة المستوى إلى الذاكرة تم الحصول عليها من مراقب الأجهزة الافتراضية للتحليل الجنائي المباشر" في وقائع المؤتمر الدولي IEEE للأمن السيبراني والمرونة (CSR) لعام 2022، 2022، ص. 323-330، https://doi.org/10.1109/CSR54599.2022.9850340.
Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0).
يُظهر هذا التحليل الشامل لمجموعة بيانات السمات السلوكية لبرمجيات الفدية RanSMAP فعالية تحليل أنماط الوصول إلى الذاكرة في التمييز بين البرمجيات الخبيثة والحميدة من خلال تقنيات التعلم الآلي. فحصت الدراسة 1,425,904 عملية وصول إلى الذاكرة عبر 12 فئة (6 تطبيقات حميدة و6 عائلات برمجيات فدية) باستخدام أربع سمات رئيسية: العنوان الفيزيائي للضيف (GPA)، والإنتروبيا، وحجم محتوى الذاكرة، ونوع الصفحة.
تكشف مجموعة البيانات عن أنماط وصول مميزة إلى الذاكرة تفرّق بين برمجيات الفدية والبرمجيات الشرعية. تتركز عمليات الوصول إلى الذاكرة في الغالب على البيانات الوصفية (99.7% تتضمن استرجاع محتوى بحجم صفر بايت) مع توزيعات عناوين عالية التركيز تمتد عبر 9,673 قيمة GPA فريدة. تُظهر الإنتروبيا توزيعًا ثنائي النسق لافتًا حيث تكون 51.0% من العمليات عند إنتروبيا 0.0 بالضبط (بيانات منظمة) و48.7% عند -1.0 (محتوى مُطبَّع). تهيمن صفحات الذاكرة القياسية بحجم 4 KiB بشكل ساحق على بنية صفحات الذاكرة (99.3%) مقابل الصفحات الكبيرة بحجم 2 MiB (0.7%)، مما يعكس أنماط إدارة الذاكرة النموذجية في أنظمة التشغيل.
حدد التحليل عدة أنماط سلوكية تمييزية تفصل عائلات البرمجيات الخبيثة عن التطبيقات الحميدة:
استراتيجيات تخصيص الذاكرة: تُظهر عائلات برمجيات الفدية قيم GPA مرتفعة (متوسط ~7.6 × 10^9) لعمليات المحتوى مقارنة بعمليات البيانات الوصفية (متوسط ~2.75 × 10^9)، مما يشير إلى تخصيص منهجي للذاكرة في مناطق عناوين أعلى أثناء الأنشطة الخبيثة. تُظهر الصفحات الكبيرة (2 MiB) أنماط تخصيص مركزة مع خصائص إنتروبيا مرتفعة، مما يوحي باستخدام متخصص لعمليات التشفير الحرجة الأداء.
أنماط عشوائية المحتوى: تُظهر فئات البرمجيات الخبيثة بصمات إنتروبيا مميزة، حيث تُظهر عمليات نقل البيانات الفعلية (4096 بايت) إنتروبيا أعلى بشكل ملحوظ (متوسط ~0.7) مقارنة بعمليات البيانات الوصفية (متوسط ~-0.5). يعكس هذا الارتفاع توليد المحتوى المشفر المميز لعمليات تشفير برمجيات الفدية.
البصمات الخاصة بالفئات: نجح التجميع غير الموجَّه بخوارزمية K-means في تحديد أربع مجموعات سلوكية مميزة، حيث تمثل المجموعة 3 أنماط وصول نادرة ولكنها عالية التمييز تتركز في عائلات برمجيات فدية محددة (WannaCry وLockBit وConti). تلتقط هذه المجموعات بصمات تشغيلية متخصصة يمكن أن تكون بمثابة بصمات سلوكية خاصة بالبرمجيات الخبيثة.
تم تقييم عدة أساليب تعلم جماعي لكشف برمجيات الفدية، مع أداء متشابه عبر خوارزميات مختلفة:
أظهرت طرق التجميع (الغابة العشوائية: دقة 0.639، AdaBoost: دقة 0.639، التكديس: دقة 0.639) أداءً متسقًا، مع تحسّن طفيف على أشجار القرار المفردة (دقة 0.638). حقّق نهج التجميع الحزمي (bagging) بأشجار القرار دقة 0.639 مع استدعاء عالٍ (0.994) لكن دقة تنبؤية (precision) أقل (0.637)، مما يشير إلى تحديات في التمييز بين أنماط الوصول إلى الذاكرة الخبيثة والحميدة التي تتطلب هندسة ميزات أكثر تطورًا.
لممارسي الأمن السيبراني: انشروا أنظمة كشف برامج الفدية القائمة على الذاكرة بالاستفادة من الأنماط السلوكية المحددة. ركّزوا على مراقبة عمليات الصفحات الكبيرة ونقل المحتوى عالي الإنتروبيا في مناطق الذاكرة المرتفعة الصلاحيات كمؤشرات أساسية للنشاط الخبيث.
لمجتمع البحث: وسّعوا التحليل الزمني لالتقاط أنماط تطور برامج الفدية وادرسوا قابلية التطبيق عبر المنصات المختلفة لتوقيعات الوصول إلى الذاكرة هذه. تشير الفعالية المُثبتة للتجميع غير الخاضع للإشراف إلى إمكانية كشف برامج الفدية من نوع zero-day من خلال تحديد الشذوذ السلوكي.
لمسؤولي النظام: نفّذوا مراقبة فورية لأنماط تخصيص صفحات الذاكرة وخصائص الإنتروبيا، مع التركيز بشكل خاص على الميزات التمييزية المحددة عبر تحليل المكونات الرئيسية. تشير دقة التصنيف البالغة 63.9% إلى أن هندسة ميزات إضافية أو نهجًا هجينًا قد تكون ضرورية للنشر الإنتاجي في بيئات المؤسسات.
يُرسي هذا التحليل تحليل أنماط الوصول إلى الذاكرة كأساس لكشف برامج الفدية، محققًا دقة 63.9% من خلال تقنيات التعلم الجماعي مع استدعاء عالٍ ملحوظ (99.4%) لتحديد الأنشطة الخبيثة. وبينما تشير أداء التصنيف الحالي إلى وجود مجال للتحسين، فإن تحديد مجموعات سلوكية محددة وأنماط العلاقة بين الإنتروبيا وGPA يوفر معلومات استخباراتية قيّمة لتطوير دفاعات أمن سيبراني معززة. يكشف التحليل الشامل للميزات أن سلوكيات إدارة الذاكرة تحتوي على معلومات تمييزية للتمييز بين أنشطة التشفير الخبيثة وعمليات البرامج المشروعة، رغم أن هندسة ميزات إضافية وتحسين النموذج سيكونان مطلوبين لتحقيق أداء جاهز للإنتاج لأنظمة كشف برامج الفدية في المؤسسات.
GPA: العنوان الفيزيائي للضيف (Guest Physical Address) لصفحة ذاكرة تم الوصول إليهاsize: حجم محتويات الذاكرة التي تم الحصول عليها على الصفحة التي تم الوصول إليها، [بايت]entropy: إنتروبيا شانون المُعيّرة لمحتويات ذاكرة مكتوبةtype: نوع الوصول لصفحة الذاكرة، (صفحة 4 KiB، صفحة 2 MiB، صفحة 1 GiB، ووصول MMIO)category: تسمية تصنيف عائلة برامج الفدية أو البرامج الحميدة المستمدة من بنية الدليل (AESCrypt, Conti, Darkside, Firefox, Idle, LockBit, Office, REvil, Ryuk, SDelete, WannaCry, Zip)UNIX_time_sec: تمثل قيمة الطابع الزمني هذه الوقت الدقيق الذي حدثت فيه عمليات الذاكرة لكنها قد تُدخل تحيزًا زمنيًا ولا تصف مباشرة أنماط سلوك البرمجيات الخبيثة التي نريد كشفها.UNIX_time_ns: على غرار الطابع الزمني بالثواني، تضيف دقة النانوثانية خصوصية زمنية قد لا تُعمّم جيدًا عبر بيئات تنفيذ مختلفة وقد تؤدي إلى الإفراط في التخصيص (overfitting) على توقيتات تنفيذ محددة بدلًا من الأنماط السلوكية.import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import itertools
from sklearn.preprocessing import StandardScaler
from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import VotingClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import AdaBoostClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import StackingClassifier
import joblib
# import pathlib
# # List of possible malware or application categories to assign to each row based on file path
# cat = [
# 'AESCrypt','Conti','Darkside','Firefox','Idle','LockBit',
# 'Office','REvil','Ryuk','SDelete','WannaCry','Zip'
# ]