Sysmon and Threat Detection: کاوش در Sysmon Log

در طول آزمایش های تست قلم من برای وبلاگ IOS ، من اغلب "به ویدیو می روم" – یعنی نگاهی به گزارش های رویدادهای ویندوز بیندازم – برای دیدن اینکه وقتی حسابرسی فرآیند ویندوز روشن است چه چیزی ردیابی می شود. . در سناریوهای مختلف ، وانمود می کنم مدافع تیم آبی هستم و سعی می کنم این حمله را انجام دهم. اگر چشمان امنیتی خوبی دارید ، می توانید فعالیتهای غیر معمول را در پرونده های خام جستجو کنید – بگویید یک اسکریپت Powershell که دارای یک cmdlet DownloadString یا یک اسکریپت vbs است که به عنوان یک پرونده doc Word مخفی شده است – با پیمایش فعالیت اخیر در Windows Viewer

اما در زیر با شرایط واقعی کلمه نبرد ، اطلاعات مثبت امنیت فناوری اطلاعات باید با مقابله با ورودی های سیاههها مقابله کند و تجزیه و تحلیل تهدیدات را در مورد حملات پیچیده انجام دهد.

یکی از مشکلات مهم با تکیه بر ورود به سیستم خارج از کادر ویندوز بسیاری از متن [ از ورودی ها مفقود شده است ، و وظیفه تجزیه و تحلیل را بیش از کمی چالش برانگیز می کند. به عنوان مثال ، اطلاعات رویدادهای Windows اطلاعات مربوط به فرآیند والدین را از دست می دهد و بنابراین سلسله مراتب پردازش به دست نمی آیند. اطلاعات بیشتر در مورد آن در زیر آمده است.

جواب سردرگمی ثبت رویداد چیست؟ در نهایت ، یک راه حل SIEM به عادی سازی اطلاعات رویداد کمک می کند و تجزیه و تحلیل آن را هرچه بیشتر قابل تحسین می کند.

اما شما لازم نیست حداقل در ابتدا این کار را انجام دهید. اولین قدم برای درک آنچه SIEM می تواند برای شما انجام دهد ، امتحان کردن ابزار شگفت انگیز freebie Sysmon ویندوز است. کار با آن بسیار تعجب آور است. برو مایکروسافت!

چه چیزی در مورد Sysmon بسیار عالی است؟

Sysmon به عنوان درایور و سرویس دستگاه نصب می شود – بیشتر در اینجا – و این مهمترین مزیت آن است که از ورودی های متعدد مربوط می شود ، با برخی از منابع ارتباط دارد. این اطلاعات را وارد می کند و ورودی های بدست آمده را در یک پوشه در Event Viewer ، که در زیر Microsoft-> ​​Windows-> Sysmon-> Operative یافت می شود ، قرار می دهد. می گویند ، پوشه ورود به سیستم PowerShell ، و سپس به پوشه Security برگردید و سپس بیننده های جداگانه رویداد را مشاهده کنید که قهرمانانه سعی در مطابقت با ورودی دارند. تجزیه و تحلیل آسان نیست و همانطور که یاد گرفتم ، داشتن یک زن و شوهر آسپیرین مفید است.

Sysmon اولین گام محکم را در ارائه مفید – یا عملی ، همانطور که فروشندگان دوست دارند بگویند – ارائه می دهد برای کمک به. شما شروع به درک علل اساسی می کنید. به عنوان مثال ، من از راه دور یک جلسه wmiexec مخفی را شبیه سازی یک حرکت جانبی هوشمندانه انجام دادم. در زیر می توانید آنچه را که در پرونده وقایع ویندوز یافتم ، مشاهده کنید:

پوسته cmd عجیب و غریب با راه اندازی یک دستور "cd" و هدایت خروجی به یک پرونده. عجیب به نظر می رسد ، نه؟

برای یک متخصص IT ، با دانش هک کردن ، خط فرمان اجتناب از ظن باید ظهور کند. استفاده از cmd.exe برای اجرای دستور دیگری در حالی که تغییر مسیر خروجی را به پرونده ای عجیب و غریب منتقل می کند ، چیزهای نرم افزاری command-and-control (C2) است: در مورد ما روشی برای ایجاد یک شبه پوسته با استفاده از خدمات WMI است. [19659002] اجازه دهید نگاهی معادل ورود به Sysmon را بیاندازیم ، و به ثروت اطلاعات اضافی موجود در یک ورود به سیستم نگاه كنید:

پوسته فرمان Stange كه توسط WMI پرتاب شده است؟ J'accuse!

نه تنها می توانیم خط فرمان واقعی را ببینیم ، بلکه نام پرونده و مسیر اجرایی را نیز می دانیم ، آنچه ویندوز در مورد آن می داند ("پردازنده فرمان Windows") ، شناسه فرایند والدین ، خط فرمان پدر و مادر که پوسته cmd ویندوز را راه اندازی کرد ، و نام پرونده واقعی در مراحل اولیه والدین است. بالاخره همه ما این را داریم.

از روی پرونده Sysmon ، می توانیم با اطمینان خاطر نتیجه بگیریم که خط فرمان عجیب و غریب که در پرونده های خام موجود است چیزی نیست که توسط یک کارمند انجام کار عادی ساخته شود. در عوض ، این فرآیند مانند C2 ایجاد شده است – wmiexec که در بالا به آن اشاره کردم – تولید شده و توسط فرآیند خدمات WMI (WmiPrvSe) مستقیماً تولید شده است. اکنون اسلحه سیگاری داریم که یک مهاجم از راه دور یا خودی در تلاش است سیستم IT سازمانی را بررسی کند.

معرفی Get-Sysmonlogs

شگفت آور است که سیسمون تمام این اطلاعات گزارش را در یک مکان قرار می دهد. حتی اگر می توانم به یک برنامه cmSlet PowerShell دسترسی داشته باشم ، حتی اگر بتوانم به همه زمینه های فردی موجود در سیاهه دسترسی داشته باشم ، جالب نیست؟ به این ترتیب می توانم PowerShell را برای خودکار سازی روند یافتن تهدیدات احتمالی بنویسم!

من تنها کسی نیستم که این ایده را داشتم. و خوشبختانه برخی پست ها در انجمن ها و پروژه های github وجود دارد که نحوه استفاده از PowerShell برای تجزیه سیاهههای مربوط به Sysmon را توضیح می دهد. با این حال ، من می خواستم از نوشتن خط جداگانه اسکریپت PS برای هر قسمت Sysmon اجتناب کنم. در عوض ، من رویکرد شخص تنبلی را برای تجزیه کردن ورودی های Sysmon استفاده کردم و فکر می کنم چیزی هوشمندانه به دست آوردم.

اولین نکته مهم این است که cmdlet مناسب Get-WinEvent می تواند پرونده های Sysmon را بخواند و نتایج را در یک متغیر PS قرار دهد ، مانند زیر:

 $ Events = Get-WinEvent -LogName "Microsoft-Windows-Sysmon / Operative" | $ {$ _. id -eq 1-or $ _. id -eq 11} 

اگر این کار را در خانه امتحان می کنید ، با نمایش محتوای اولین عنصر آرایه رویدادهای $ ، رویدادهای $ [0] .Message ، و شما متوجه خواهید شد که این مجموعه ای از رشته های متن یک خطی است که در زیر یک قالب بسیار ساده قرار دارد: نام فیلد Sysmon ، یک روده بزرگ و سپس مقدار آن.

JSON – خروجی آماده از ورود به سایت Symon. [19659011] آیا شما فکر می کنید من چه فکر می کنم؟ با تلاش بیشتر ما می توانیم این ماده را به یک رشته با فرمت JSON تبدیل کنیم و رشته را مستقیماً با استفاده از cmdlet قدرتمند ConverFrom-Json به یک شی PS تبدیل کنیم.

من PowerScript واقعی را نشان می دهم – بسیار ساده است. این در پست بعدی در حال حاضر ، اجازه دهید نگاهی به آنچه cmdlet جدید من با نام get-sysmonlogs و که من به عنوان یک ماژول PS نصب کردم ، بپردازیم. به زحمت فعالیت ناشایست را از یک جلسه PowerShell جستجو کنید و از PS استفاده کنید که cmdlet (با نام مستعار؟) برای باریک کردن نتایج:

لیستی از تمام پوسته های cmd که توسط WMI اداره می شود. تجزیه و تحلیل تهدیدات با ارزانترین سیستمهای تبلیغاتی ما.

شگفت انگیز! من ابزاری ایجاد کرده ام که به شما امکان می دهد گزارش Sysmon را مثل یک پایگاه داده پرس و جو کنید. کسانی از شما که پست مختصر من در EQL را به یاد می آورید می دانند که این دقیقاً همان کاری است که این نرم افزار جالب انجام می دهد ، هرچند که رسماً از طریق رابط SQL مانند انجام می شود. بله ، EQL شسته و رفته است و ما بعداً آنرا بررسی خواهیم کرد.

Symon and Graph Analsis

: و بنشینیم و از آنچه انجام داده ایم قدردانی کنیم. اکنون یک پایگاه داده از اطلاعات رویداد ویندوز از طریق PowerShell قابل دسترسی است. همانطور که در بالا اشاره کردم ، بین این ورودی ها – از طریق ParentProcessId – پیوندها یا پیوندهایی وجود دارد ، بنابراین می توان سلسله مراتب فرایندی کامل را ضبط کرد. ایجاد حملات چند مرحله ای با هر فرآیند انجام یک بخش کوچک از حمله مرحله بعدی را انجام می دهد. کشف این پرونده ها به راحتی امکان پذیر نیست.

اما با اسمبلت های دریافت شده من cmdlet و یک ساختار داده اضافی که دفعه دیگر به آن خواهیم رسید – یک درخت به طور طبیعی ما یک روش مؤثر برای شناسایی تهدیدات داریم. فقط باید جستجوهای صحیح را بین گره ها انجام دهیم. دفعه دیگر توضیح خواهم داد که چگونه این کار را انجام دهم.

مثل همیشه در مورد پروژه های وبلاگ DIY ، نکته مهم مهم این است که با انجام برخی از جزئیات در مقیاس کوچکتر ، شما شروع به قدردانی می کنید. انجام تشخیص خطر در سطح سازمانی چقدر پیچیده است. در هر صورت ، من sysmonlogs get را در Github ارسال خواهم کرد. این یک چیز مرتب و مرتب در اطراف است. دفعه دیگر!