دليل تحليل تهديدات Sysmon ، الجزء 2. استخدام بيانات حدث Sysmon لتحديد التهديدات





هذه المقالة هي الأولى في سلسلة حول تحليل تهديدات Sysmon. جميع الأجزاء الأخرى من السلسلة:

الجزء 1. التعريف بتحليل سجل Sysmon

الجزء 2. استخدام بيانات حدث Sysmon للكشف عن التهديدات (نحن هنا)

الجزء 3. التحليل المتعمق لتهديدات Sysmon باستخدام الرسوم البيانية



في هذا القسم ، سنتعمق أكثر ونبدأ في استخدام المعلومات التفصيلية التي تقدمها Sysmon. فيما يلي ثلاث نقاط رئيسية سنعمل عليها:



  1. استخدام PowerShell للوصول مباشرة إلى معلومات دقيقة حول العمليات ؛
  2. إن إنشاء وتصور تسلسل هرمي للعمليات هو الخطوة المهمة الأولى في إيجاد التهديدات ؛
  3. استخدم بيانات Sysmon الوصفية لإنشاء مقاييس مهمة مفيدة في تحقيقات التهديدات المتقدمة ، مثل حساب التكرار الذي يتم عنده بدء عمليات معينة.


باستخدام Get-Sysmonlogs



دعونا الآن نلقي نظرة فاحصة على الأمر الرائع الذي يحول أحداث Sysmon إلى كائنات PowerShell. أنا فخور إلى حد ما لأنني لم أضطر إلى كتابة أسطر تعليمات برمجية منفصلة يدويًا لكل حقل من الحقول. وهنا ، في الواقع ، الكشف الكبير عن الكود:



$events = Get-WinEvent  -LogName "Microsoft-Windows-Sysmon/Operational" | where { $_.id -eq 1 }
 
foreach ($event in $events)  {
    $ev = $event.Message -split "`r`n"
    $jsons="{ "
    foreach ($line in $ev) {
        $line=$line -replace "\\","\\" `
               -replace "\{"," " `
               -replace "\}"," " `
               -replace '"','\"' `
               -replace "`n"," " 
        $line=$line -replace '(\s*[\w\s]+):\s*(.*)', '"$1":"$2",'
        $jsons = $jsons + $line } 

        $jsons =$jsons + '"blah" : "blah" }' 
        ConvertFrom-Json -InputObject $jsons 
    }
}


كل الكود متاح الآن على GitHub ويمكنك تنزيله واستيراده كوحدة Sysmon لمشروعك الخاص. يرتبط عدم الاستقرار الوحيد بإزالة عدد قليل من الشخصيات السيئة - الأقواس ، الشرطات المائلة العكسية ، أحرف نهاية السطر ، الاقتباسات - لجعل الإخراج أقرب إلى JSON.

لذا ، فإن الإشارة الكلاسيكية للمتسلل الذي يدور حول النظام هو استخدام الأمر "whoami" ، وغالبًا ما يتبع "hostname". يريد مخترق (أو ربما من الداخل) يحصل على حساب شخص ما التأكد من أن انتحال الشخصية يعمل ، لذلك غالبًا ما يكتب الأوامر المذكورة أعلاه بمجرد أن يكون على خادم الضحية. بالنسبة للبقية ، فإن "whoami" و "hostname" ليستا الكلمات التي سيكتبونها في وحدة التحكم في نظامهم الخاص ، حتى لو استخدموا سطر الأوامر.



باستخدام الأمر الأنيق الذي يتيح الوصول إلى جميع إدخالات سجل Sysmon ، يمكننا بسهولة إنشاء سلسلة ترشح اسم العملية (كما فعلنا في الجزء الأول ). في الوقت نفسه ، مع Sysmon ، يمكننا التعامل مع المشكلة بشكل أكثر دقة من خلال النظر إليهاسطر الأوامر للعملية الرئيسية .



عادة ، عندما يخترق مخترق الشبكة ويكتسب الوصول إلى سطر الأوامر ، يكون الأمر cmd قديمًا - بالمناسبة ، هذا هو بالضبط ما يحدث في حالة اختراق مع psexec أو smbexec . باستخدام مخرجات get-symonlogs ، من الممكن التقاط عمليات whoami التي ولدت من قبل هذه الأصداف القديمة ، وهذا سيكون دليلاً جيدًا على التهديد.



انتباه: تم إطلاق Whoami من خلال قذيفة cmd القديمة



تنبيه: تم إطلاق Whoami من خلال shell cmd القديم.من





وجهة نظر عملية ، فإن البحث عبر السجلات "الأولية" لسجل أحداث Windows وعمليات المطابقة أمر مستحيل بكل بساطة. كما رأينا للتو ، تفتح تسجيلات Sysmon العديد من الاحتمالات لتحليل التهديدات. لذلك دعونا نواصل استكشافنا من خلال تعيين بيانات Sysmom إلى هياكل أكثر تعقيدًا.



أساسيات هياكل البيانات: القوائم والرسوم البيانية



لا توفر لنا سجلات Sysmon سطر الأوامر للعملية الرئيسية فحسب ، بل توفر لنا أيضًا معرّف العملية!



أعتقد أنك قد خمنت بالفعل ما يعنيه هذا. لكن لا يزال: الآن يمكننا ربط العمليات معًا في تسلسل هرمي ، ولا أخشى القول ، الشبكات. من خلال تذكر المفاهيم الأساسية لعلوم الكمبيوتر ، يمكنك العثور على هياكل البيانات الطبيعية للحصول على هذه المعلومات - القوائم والرسوم البيانية المرتبطة هي أول ما يتبادر إلى الذهن.



اعتقدت في البداية أنني سأضطر إلى مسح نسخة من تراكيب البيانات الخاصة بالشعراء والطهاة ، ولكنني ساعدني الإنترنت بعد ذلك. لقد عثرت على مجموعة دوغ فينك الرائعة من الخوارزميات الأساسية على Gihub المكتوبة في PowerShell. شكرا لك دوغ!

بعد المرور ببعض منحنى التعلم ، تمكنت من استخدام خوارزمياته لتنظيم أحداث Sysmon الخاصة بي. قمت ببناء هياكل البيانات كقائمة ورسم بياني ، ثم باستخدام واجهة برمجة التطبيقات ، كتبت وظيفة PowerShell للبحث عن أمر وعرض التسلسل الهرمي للعملية. رائع.



لقد أطلقت عليه اسم مسار التهديد . تبحث في العمق أولاً من خلال التسلسل الهرمي للعملية وتعرض أسماء التطبيقات والأوامر المرتبطة بالتطبيق الجذر المحدد كمعلمة إدخال. في الاختبار الأول ، بحثت عن "whoami.exe". وهذا ما رأيته:



التسلسل الهرمي للعمليات: تبدو العملية 2452 مريبة!



التسلسل الهرمي للعمليات: تبدو العملية 2452 مريبة!





مكافأة إضافية لأولئك الذين لاحظوا في الإخراج أعلاه أن whoami المرتبط بالعملية 2452 تم استدعاؤه من خلال shell cmd القديم ، والذي تم تشغيله بدوره بواسطة ملف exe باسم غريب في مجلد Windows.



هممم. إذا كنت على دراية بآليات مكالمات psexec البعيدة الموصوفة هنا ، فيجب أن تدق الأجراس بالفعل. لكنني سأخبرك بسر صغير: لعب دور المخترق ، لقد أطلقت سابقًا هذا whoami من خادم Linux بعيد باستخدام البرامج النصية Impacket python.



الهدف هو إثبات أنه بمساعدة سجلات Sysmon المخصبة وجزء صغير من PowerShell ، يمكنك إعداد أداة عملية تمامًا لتحديد نقاط الضعف ، كما فعلت للتوطريق التهديد بالعرض .



تهديدات الصيد مع الرسوم البيانية الموجهة



حان الوقت للقيام بأشياء غريبة. مع كل معلومات العملية هذه مصدرها Sysmon ، يمكنك إلقاء نظرة على العلاقات بشكل عام. بمعنى آخر ، أريد عرض التطبيقات قيد التشغيل - PowerShell.exe و Explorer.exe ، إلخ. - كرؤوس الرسم البياني وربطها بالتطبيق الذي أطلقها بدورها. والنتيجة هي رسم تخطيطي يوضح كيفية تفاعل التطبيقات مع بعضها البعض (بدلاً من إنشاء قمة منفصلة لكل مثيل عملية).



من وجهة نظر فنية ، نحن نتحدث عن رسم بياني موجه يكون فيه المسار ، إذا جاز التعبير ، مسارًا أحادي الاتجاه من التطبيق إلى العملية الأصلية.



في هذه المرحلة ، سيكون من اللطيف إلقاء نظرة على التصور لما أتحدث عنه. لحسن الحظ ، هناك أداة تصور رسومات PowerShell رائعة تسمى GraphViz ، والتي تحتوي على أغلفة بسيطة للغاية متاحة من خلال PSQuickGraph . ثم مع قطعة صغيرة من الرمز ...



#Let's graph it!!!
$gv = New-Graph -Type BiDirectionalGraph # PSQuickGraph
foreach ($e in $g.getAllEdges() )  { $g from Doug Fink's functions
    $vs= $e.startvertex
   $ve= $e.endvertex
    PSQuickGraph\Add-Edge -From $vs.value.Key -To $ve.value.Key -Graph $gv |Out-Null
}
Show-GraphLayout -Graph $gv


... يمكنك تصور التفاعلات المعقدة بين التطبيقات من خلال واجهة GraphViz:



GraphViz: مكتبة PowerShell لتصور التسلسلات الهرمية للعملية



GraphViz: مكتبة PowerShell لتصور التسلسل الهرمي للعملية





ماذا يفعل؟ إنها في الأساس طريقة رسومية لتحديد التهديدات. بدلاً من البحث عن توقيع محدد للنص ، كما فعلنا سابقًا باستخدام الأمر show-التهديد-path ، يمكننا الآن محاولة العثور على حالات شاذة على الرسم البياني.



تكمن الفكرة في فهم ما هي الصورة العادية لحي الرسوم البيانية والرسوم البيانية الفرعية - وهي عادة ما تبدو وكأنها هياكل متصلة في التصور - ثم تحاول اكتشاف القمم التي تبدو منفصلة أكثر. والواقع أن أعيننا متكيفة بشكل جيد مع هذه المهمة. لحسن الحظ ، هناك أيضًا بعض الخوارزميات البسيطة للكشف عن الأحياء وكشف التهديدات المتاحة. ذات مرة ، كتب خادمك المتواضع منشورًا حول استخدام تقنية الكشف عن الأحياء في شبكة اجتماعية مرتبطة بـ ... بطل الثورة الشهير في الولايات المتحدة .



ميزة هذا النهج في العثور على المهاجمين هي أن المتسللين يمكنهم تغيير تقنياتهم وإخفاء هجماتهم ، ولكن من الصعب عليهم إخفاء أنماط الرسم البياني الخاصة بهم.



في الجزء الثالث من مراجعتنا ، سنتعمق في تحليل وتطبيق الخوارزميات وطرق البحث عن الثغرات الأمنية. ابقى معنا!



All Articles