علیرضا تقی خانی
علیرضا تقی خانی
خواندن ۵ دقیقه·۳ سال پیش

گاد آف اسپلانک شوید..

در این بخش قراره در مورد SIEMها بخصوص Splunk صحبت کنیم. ابتدا در مورد اسپلانک صحبت میکنیم بعد مروری بر Threat hunting یا شکار تهدیدات داریم و در نهایت با نحوه حرفه ای کوئری زدن در اسپلانک اشنا میشیم.

ابزارهای SIEM قلب SOC هستند و تمامی تحلیلگران امنیت با استفاده از این ابزارها تحلیل های امنیتی خود رو انجام میدهند، یوزکیس و سناریو های امنیتی رو پیاده سازی میکنند و شاید بهتر باشه بگم باهاشون زندگی می کنند.

شاید بد نباشه ابتدا یکم در مورد بخش های SOC توضیح کوتاهی بدهیم. هر SOC از سه بخش تشکیل میشه:

People: شامل تحلیلگران امنیتی که در مرکز عملیات امنیت مشغول به فعالیت هستند Process: شامل فرایندها و پروسه هایی هست که باید برای تحلیل رخدادهای امنیتی طی بشه Technology: شامل ابزارهایی هست که تحلیلگران برای کارهای خود استفاده میکنند
Threat Hunting
Threat Hunting


اسپلانک چیه؟

اسپلانک یک SIEM (Security information and event management) است که بصورت پلتفرمی قدرتمند بمنظور جمع ­آوری لاگ‌ها، جستجو، مشاهده، آنالیز و تحلیل داده‌ها در سازمانها نصب می­شود و فعالیت می­کند. کشف اطلاعات از طریق پردازش هزاران داده از بررسی لاگ­ها انجام می­شود. به بیانی دیگر Splunk داده‌های خام را جمع ­آوری و فهرست بندی می‌کند و به شما این امکان را می­دهد که بتوانید بر روی تمام داده‌ها عملیات جستجو را انجام دهید و نتایج را به هر صورت قابل دلخواه مشاهده کنید.
اسپلانک
اسپلانک


چطور با اسپلانک شکار تهدیدات(Threat Hunting) کنیم؟

مفهوم شکار تهدیدات یا همان Threat Hunting به این فرآیند اشاره دارد که ما به دنبال تهدیدات و کشف تهدیدات متنوع باشیم که اغلب ممکن است در سازمان و شبکه ما وجود نداشته باشند. شکار تهدیدات شامل پروسه های متعددی از جمله بررسی پروسس ها، مموری، سرویس ها، Scheduled taskها و غیره می باشد. برای انجام شکار تهدیدات نیاز است یوزکیس های امنیتی مشخصی داشته باشید.


چطور با اسپلانک بهینه کوئری بزنیم؟

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


حرفه ای کوئری بزنید..

زبان کوئری در اسپلانک SPL می­باشد. کوئری دارای دو بخش است: 1- فیلتر 2- پردازش

برای مثال در کوئری زیر خط اول فیلتر و خط دوم پردازش می­باشد. به صورت کلی تمامی موارد قبل از "|" (Pipeline) فیلتر و بعد از آن پردازش قرار دارد.

index=windows source=&quotXmlWinEventLog:Security&quot sourcetype=XmlWinEventLog | head 1

? محدود نمودن زمان

برای مشاهده Eventها در زمان محدود، پیشنهاد می­شود زمان کوئری متناسب با Event محدود گردد. برای مثال در صورتیکه Event روز گذشته در ساعت 17 مد نظر باشد، بهتر است زمان در این بازه محدود شود و از فیلترهای زمانی 24 ساعت گذشته استفاده نگردد.

در Splunk برای محدود نمودن زمان از دو طریق می­توان اقدام نمود:

1- استفاده از Time Picker

در این بخش می­توان به روش­های مختلف محدوده زمانی را اعمال نمود.

2- استفاده از Time Modifier

با استفاده از earliest, latest می­توان محدوده زمانی را تغییر داد. برای مثال جهت مشاهده Eventهای روز گذشته می­توان فیلترهای زیر را اعمال نمود:

earliest=-1d latest=now()

? مشخص کردن index, source, sourcetype

تمامی کوئری­ها باید این سه مقدار را داشته باشند. برای مثال در صورت مشاهده لاگ­های 4624 بهتر است از کوئری زیر استفاده شود.

کوئری صحیح:

index=windows source=&quotXmlWinEventLog:Security&quot sourcetype=XmlWinEventLog EventCode=4624

کوئری غلط:

index=windows EventCode=4624

? استفاده از TERM

در صورتیکه یک IP، کلمه یا موردی جستجو شود که هیچ اطلاعاتی در مورد آن نباشد، استفاده می­شود.

کوئری صحیح:

TERM (“1.1.1.1”) TERM (“My Word”)

کوئری غلط:

index=* 1.1.1.1 index=* “My Word”

? عدم استفاده از * تا حد ممکن

تا حد امکان سعی شود کوئری مشخص باشد. همچنین باید سعی شود تا حد امکان از * در کوئری خودداری شود. برای مثال درصورتیکه کد وضعیت­های 404 HTTP مدنظر باشد، بهتر است این مقدار ذکر گردد.

کوئری صحیح:

status=404

کوئری غلط:

status=4**

? عدم استفاده ازNOT تا حد ممکن

برای درک بهتر این موضوع کوئری­های زیر بررسی می­شود.

کوئری صحیح:

src!=x.x.x.x

در این کوئری، تمامی آدرس­های مبدا که مخالف x.x.x.x باشند، برگردانده می­شود.

کوئری غلط:

NOT src=x.x.x.x

در این کوئری برای Splunk اهمیت ندارد که لاگ­ها فیلد src را دارند یا خیر و در تمامی لاگ­ها بدنبال آدرس­هایی میگردد که مخالف x.x.x.x باشند. در نتیجه این کوئری سربار پردازشی بیشتری برروی سرور دارد.

? استفاده از fields

با استفاده از آن، کوئری تنها برروی فیلدهای ذکر شده انجام می­گردد. برای مثال در کوئری زیر تنها باید مقادیر فیلد EventCode جستجو شود.

کوئری صحیح:

index=windows source=&quotXmlWinEventLog:Security&quot sourcetype=XmlWinEventLog | fields EventCode | stats count by EventCode

کوئری غلط:

index=windows source=&quotXmlWinEventLog:Security&quot sourcetype=XmlWinEventLog | stats count by EventCode

? مشخص بودن کوئری

یکی از مواردی که به افزایش سرعت جستجو کمک می­کند، مشخص نمودن فیلد مورد نظر در بخش فیلتر است. درصورتیکه که این مقدار مشخص نشود، Splunk در تمامی لاگ­ها بدنبال آن می­گردد که ممکن است تمامی لاگ­ها این فیلد را نداشته باشند. برای مثال در کوئری زیر اگر فیلد EventCode مشخص نشود، تمامی لاگ­ها بررسی میشوند که سبب کاهش سرعت انجام کوئری می­شود.

کوئری صحیح:

index=windows source=&quotXmlWinEventLog:Security&quot sourcetype=XmlWinEventLog EventCode=* | stats count by EventCode

کوئری غلط:

index=windows source=&quotXmlWinEventLog:Security&quot sourcetype=XmlWinEventLog | stats count by EventCode

? استفاده از tstats

از دستور tstats جهت افزایش سرعت کوئری­ها استفاده می­شود. این دستور فایل­های tsidx را بررسی کرده که سبب افزایش سرعت کوئری می­شود. در مثال زیر، نمونه ساده­ای از این کوئری مشاهده می­شود. همانطور که مشاهده می­شود دستور tstats کوئری را در 1 ثانیه و stats آن را در 456 ثانیه اجرا کرده که هنوز تمام نشده است.

کوئری صحیح:

| tstats count where index=windows by host
سرعت اجرای کوئری با استفاده از دستور tstats
سرعت اجرای کوئری با استفاده از دستور tstats


کوئری غلط:

index=windows | stats count by host
سرعت کوئری با شیوه های رایج
سرعت کوئری با شیوه های رایج


? استفاده از دستور metadata

داده­ها در Splunk در Bucketهای مختلف ذخیره می­شوند. در فایل tsidx اطلاعاتی شاملhost, source, sourcetype و... ذخیره می­شود. برای استفاده از دستور metadata باید بخش­های type آن را مشخص نمود.

| metadata type=hosts index=*

در بخش type می­توان host, source, sourcetype را وارد کرد. نکته مهم این است که در بخش type باید حرف s را به host, source, sourcetype اضافه کرد. برای مثال hosts, sources, sourcetypes

کوئری صحیح:

| metadata type=sources index=*

کوئری غلط:

index=* | stats count by source


نتیجه گیری

در این بخش با روش هایی که حرفه ای ها کوئری میزنند آشنا شدیم. امیدوارم این بخش مورد استفاده و توجه شما قرار بگیره.



اسپلانکsplunkthreat huntingشکار تهدیداتsoc
شاید از این پست‌ها خوشتان بیاید