دستگرمی با یادگیری ماشینی
و اسپلانک Machine Learning and splunk

✍️روزبه نوروزی

☘️تشخیص حمله با Splunk MLTK

یک بانک متوجه شده است که برخی از سیستم‌های داخلی در حال برقراری ارتباط با یک سرور خارجی مشکوک هستند. رفتار غیرعادی این سیستم‌ها نشان‌دهنده‌ی یک حمله است. تیم امنیتی قصد دارد با استفاده از Splunk Machine Learning Toolkit (MLTK) و SOAR، این نوع حملات را بهتر شناسایی و کنترل کند.

از مدل PCA (Principal Component Analysis) برای تحلیل رفتار نرمال و تشخیص انحرافات استفاده می‌کنیم:
اول
index=network_traffic sourcetype=firewall_logs
| stats count dc(dest_ip) as unique_destinations by src_ip
| where unique_destinations > 50

سیستم‌هایی که با بیش از ۵۰ دامنه‌ی مختلف در مدت کوتاه ارتباط دارند، ممکن است به سرورهای C2 متصل باشند.
این داده‌ها برای یادگیری ماشین آماده می‌شوند.
دوم

| fit PCA unique_destinations into anomaly_model
| where anomaly_model_score > 2.5

مدل PCA داده‌های پرت (Outliers) را که از الگوی عادی انحراف دارند، شناسایی می‌کند.
سیستم‌هایی که امتیاز anomaly_model_score > 2.5 دارند، به‌عنوان ارتباطات مشکوک شناخته می‌شوند.

☘️تطبیق با IOCها و ایجاد هشدار امنیتی

اگر IP مقصد در Indicator of Compromise (IOC) ها موجود باشد، باید به آن وزن بیشتری داده شود:

| lookup ioc_list.csv dest_ip AS suspicious_ip
| eval risk_score = case(anomaly_model_score > 2.5 AND isnotnull(suspicious_ip), 100, anomaly_model_score > 2.5, 80)
| table src_ip, dest_ip, risk_score
| sendalert "notable"

اگر IP مقصد در IOC لیست سیاه باشد، امتیاز ریسک به ۱۰۰ افزایش پیدا می‌کند.
اگر ارتباط فقط از مدل یادگیری ماشین مشکوک باشد، امتیاز ۸۰ دریافت می‌کند.

☘️پاسخ خودکار با Splunk SOAR (Phantom)

با استفاده از Splunk SOAR، اقداماتی خودکار اجرا می‌شود:

مسدود کردن IP مشکوک در فایروال:

phantom.act("block ip", parameters={"ip": suspicious_ip, "device": "firewall"})


🌷نقش یادگیری ماشین در این سناریو و چرایی استفاده از آن

در این سناریو، هدف ما شناسایی ارتباطات مشکوک بین سیستم‌های داخلی بانک و سرورهای خارجی (که احتمالاً سرورهای C2 هستند) است. اما چرا از یادگیری ماشین استفاده کردیم؟
۱. مشکل اصلی: تشخیص ارتباطات غیرعادی در میان حجم بالای ترافیک

در یک سازمان بزرگ، روزانه میلیون‌ها ارتباط شبکه‌ای ثبت می‌شود. تشخیص حملات APT از طریق روش‌های سنتی مانند Signature-based Detection (مبتنی بر قوانین و فیلترها) دشوار است، زیرا:

مهاجمان از IPهای جدید و ناشناخته استفاده می‌کنند که در لیست‌های IOC نیستند.
رفتار C2 ممکن است آهسته و پنهانی باشد (ارتباطات مداوم اما کم‌حجم).
قوانین ثابت (مثل "اگر بیش از ۵۰ ارتباط داشت، هشدار بده") ممکن است False Positive زیادی تولید کند.

یادگیری ماشین کمک می‌کند که رفتار عادی کاربران و سرورها را یاد بگیرد و فقط موارد غیرعادی را علامت‌گذاری کند.
۲. نقش PCA (Principal Component Analysis) در تشخیص ناهنجاری‌ها

ما از PCA (تحلیل مؤلفه‌های اصلی) استفاده کردیم که یک روش یادگیری ماشین برای کاهش ابعاد داده‌ها و کشف نقاط پرت است.
چطور کار می‌کند؟

مدل PCA الگوهای عادی را در ارتباطات کاربران یاد می‌گیرد (مثلاً کاربران معمولاً با چند سرور مشخص کار می‌کنند).
وقتی سیستمی رفتار جدید و غیرعادی از خود نشان دهد (مثلاً تعداد زیادی ارتباط به دامنه‌های ناشناخته)، امتیاز ناهنجاری بالایی می‌گیرد.
سیستم‌هایی که امتیازشان از یک حد خاص عبور کند (anomaly_model_score > 2.5)، به عنوان مشکوک علامت‌گذاری می‌شوند.

🔆 یادگیری ماشین به ما کمک کرد که فقط روی سیستم‌هایی تمرکز کنیم که رفتارشان واقعاً متفاوت از رفتار نرمال است، بدون اینکه هزاران هشدار غلط تولید شود.
۳. ترکیب یادگیری ماشین با IOCها برای دقت بالاتر

برخی ارتباطات ناهنجار ممکن است بی‌خطر باشند (مثلاً یک مهندس شبکه که به سرورهای زیادی متصل می‌شود).
اما اگر یک سیستم هم رفتار غیرعادی داشته باشد و هم به یک IP مشکوک متصل شود، احتمال حمله بسیار زیاد است.
ترکیب این دو (امتیاز PCA + تطبیق با IOCها) باعث شد که فقط موارد مهم با امتیاز ریسک بالا (مثلاً 100) به تیم امنیتی گزارش شود.

#من_آموزش_میدهم
#آکادمی_روزبه

Comments

Be the first to add a comment