در محیطهای عملیاتی SOC، نوشتن کوئریهای بهینه برای تحلیل حجم عظیم دادهها یکی از چالشهای همیشگی است. در زبان SPL (Search Processing Language) کلاسیک، دستورات به صورت متوالی اجرا میشوند و برای اعمال منطق شرطی، معمولاً از توابعی مانند eval، if() یا case() استفاده میشود. با این حال، این توابع تنها برای محاسبه مقدار یک فیلد کاربرد دارند و نمیتوانند جریان اجرای کل بلوکهای کد را کنترل کنند.
تفاوت میان تابع if() و دستور if در SPL2
بسیاری از کاربران ممکن است تصور کنند چون تابع if() در SPL وجود دارد، نیازی به قابلیتهای جدید نیست. اما تفاوت بنیادین در اینجاست که if() یک تابع برای بازگرداندن یکی از دو مقدار است، در حالی که دستور if در SPL2 یک ابزار کنترل جریان (Execution Flow Control) است. این دستور به کاربر اجازه میدهد تا تعیین کند کدام دستورات یا بلوکهای کد بر اساس یک شرط خاص اجرا شوند، مشابه آنچه در زبانهای برنامهنویسی رویهای (Procedural Programming) میبینیم.
مثال کاربردی: بهینهسازی غنیسازی دادهها (Enrichment)
یکی از رایجترین سناریوها در تحلیل ترافیک شبکه، استفاده از دستور iplocation برای تبدیل IPها به موقعیت جغرافیایی (Geolocation) است. در محیطهای سازمانی بزرگ، اجرای این دستور برای تمام رویدادها بسیار هزینهبر است و سرعت کوئری را به شدت کاهش میدهد.
در SPL کلاسیک، اگر بخواهید تنها فیلدهای خالی (Unknown) را پر کنید، باز هم مجبورید دستور iplocation را برای تمام رکوردها اجرا کنید و سپس نتایج را جایگزین کنید. اما با استفاده از دستور if در SPL2، میتوان این فرآیند را بهینهسازی کرد:
- شرط: بررسی اینکه آیا فیلد location خالی است یا خیر.
- عملکرد: دستور
iplocationتنها برای رکوردهایی اجرا میشود که شرط مذکور را دارا باشند.
این رویکرد باعث کاهش چشمگیر فشار روی منابع سیستم و افزایش سرعت پاسخدهی در عملیاتهای Threat Hunting یا گزارشگیریهای حجیم میشود.
کاربردهای دیگر و تحلیل نهایی
علاوه بر غنیسازی شرطی، این قابلیت میتواند در موارد زیر نیز مفید باشد:
- تغییر نام فیلدها (Renaming) بر اساس مقادیر موجود در یک فیلد دیگر.
- تنظیم بازههای زمانی (Time Binning) به صورت پویا و شرطی.
اگرچه بسیاری از مهندسان تشخیص (Detection Engineers) هنوز از SPL کلاسیک استفاده میکنند، اما پذیرش SPL2 و قابلیتهایی نظیر کنترل جریان، ابزارهای قدرتمندتری را برای شناسایی زیرساختهای عامل تهدید (Threat Actor) و تحلیل ASNها در اختیار تیمهای امنیت قرار میدهد.