ES|QL
ES|QL — اسنیپتهای منتخب
ES|QL در دنیای واقعی: از لاگ خام تا تصمیمگیری. اینجا فقط فهرستی از توابع نیست، بلکه درخواستهاییست که یک مهندس واقعی در کنار دستش نگه میداره — شناسایی SOC (بیکنینگ، استخراج داده از طریق DNS، impossible travel)، رصدپذیری آماری (MAD، z-score، SLO) و ظرفیتسنجی پیشبینانه. خروجیای که میبینی خودِ همون بینشه، همراه با توابع تازهای مثل INLINESTATS و CATEGORIZE و ST_DISTANCE که تقریباً جای دیگهای به فارسی پیداشون نمیکنی.
21 اسنیپت منتخب
- میانگین تأخیر وزندار بر اساس حجم درخواستهاWEIGHTED_AVG هر اندازهگیری رو با وزن واقعیاش (تعداد فراخوانیها) میسنجه؛ برخلاف میانگین ساده که نمونههای کمترافیک رو بیش از حد پررنگ میکنه.
- پارس access log خام Apache با GROKاستخراج درجای فیلدهای combined log (IP، متد، مسیر، وضعیت، بایتها) با تعیین نوع :int مستقیم توی الگوی GROK.
- پاشش گذرواژه: حسابهای زیاد، تلاشهای کمامضای وارونهٔ brute force: یه IP حسابهای زیادی رو هر کدوم با 1 تا 3 تلاش میآزماید تا زیر آستانههای قفلشدن بمونه.
- exfiltration از راه DNS: زیردامنههای پرشمار و طولانیدو تا نشونهٔ DNS tunneling کنار هم: کاردینالیتی بالای زیردامنههای یکتا زیر یه دامنه و طول میانگین غیرعادی کوئریها.
- حسابی که در کمتر از یک ساعت ساخته و admin شدهMIN(CASE(...)) دو نقطه عطف (ساخت، ارتقا) رو برای هر حساب هدف ثبت میکنه و DATE_DIFF فاصلهشون رو حساب میکنه — فاصله کوتاه یعنی مهاجم داره جا خوش میکنه.
- آستانه ناهنجاری مقاوم: میانه + 5×MADMEDIAN_ABSOLUTE_DEVIATION برخلاف انحراف معیار جلوی outlierها کم نمیاره — آستانه میانه + 5×MAD کرانهای هشدارِ قابلاتکا برای هر سرویس میسازه.
- دسترسپذیری 30روزه و بودجه خطای باقیمونده SLOدسترسپذیری رو روی پاسخهای غیر 5xx میسنجه و بعد موقعیتش رو نسبت به یک SLO معادل 99.9 درصد میذاره — بودجهای که به درصد باقی مونده، تصمیمِ فریزِ دیپلویها رو راه میندازه.
- LOOKUP JOIN: تطبیق ترافیک با IOCهای threat intelپیوند ترافیک خروجی شبکه با یک ایندکس شاخصهای نفوذ — فقط مقصدهایی که match میشن فیلدهای threat.* رو نگه میدارن.
- آزمودن توابع بدون ایندکس با ROWROW یک سطر توی حافظه میسازه: عالیه برای اینکه یک الگوی DISSECT، یک تبدیل یا یک CIDR_MATCH رو قبل از اعمال روی میلیونها سند چک کنی.
- INLINESTATS: انحراف هر درخواست از میانگین سرویس خودشINLINESTATS مقدار تجمیعی رو بدون اینکه سطرها رو کم کنه بهصورت یک ستون اضافه میکنه — هر تراکنش توی همون کوئری با میانگین سرویس خودش مقایسه میشه.
- میزبانهای خارج از عرف با z-score (STD_DEV)STD_DEV پراکندگی بار CPU هر میزبان رو میسنجه؛ z-score قله یعنی (max منهای میانگین) تقسیم بر انحراف معیار، یک قلهی واقعی غیرعادی رو از یک بار همیشه پرنوسان جدا میکنه.
- گروهبندی خطاها بر اساس الگو با CATEGORIZECATEGORIZE پیامهای مشابه رو خودکار توی الگوها گروه میکنه — هزاران سطر خطا بدون اینکه regex بنویسی به چند تا خانواده خلاصه میشه.
- اتصالهای دور از دفتر مرکزی با ST_DISTANCEST_DISTANCE فاصلهی برحسب متر بین موقعیت جغرافیایی اتصال و یک نقطهی مرجع — اینجا دفتر پاریس — رو حساب میکنه تا دسترسیهایی که از نظر جغرافیایی بعیدن خودشون رو نشون بدن.
- سه امتیاز برتر CVSS هر میزبان با MV_SORT و MV_SLICEMV_SORT فیلد چندمقداری رو نزولی مرتب میکنه، MV_SLICE سه مقدار اول رو نگه میداره و MV_FIRST بدترینش رو بیرون میکشه — همهش بدون اینکه سطرها بشکنن.
- تخمین روزهای باقیمونده تا پر شدن دیسکدوتا تجمیعِ فیلترشده در زمان (14 روز پیش در برابر امروز) رشد روزانه رو میدن که بعد به تعداد روزهای مونده تا 100 درصد اشغال برونیابی میشه.
- ورود موفق بعد از یه رگبار شکستتجمیعهایی که بر اساس outcome فیلتر شدن: اگه اولین موفقیتِ زوج IP/حساب بعد از آخرین شکستِ یه رگبار بیفته، احتمالاً brute force به نتیجه رسیده.
- Timeline تریاژِ یه میزبانِ لورفتهبازسازی گاهشمارانهی چنددستهای (auth، process، شبکه، فایل) روی پنجرهی رخداد، با یه فیلد detailِ یکپارچه که از طریق COALESCE درست شده تا حمله رو از اول تا آخر بخونی.
- Beaconing به C2: اتصالهای منظم با حجم ثابتیه implant که به سرور فرماندهیش ضربان میفرسته، کلی اتصال به یه مقصد با اندازههای تقریباً یکسان میسازه: STD_DEV بایتها توی یه بازهی طولانی نزدیک صفره.
- حملهی Kerberoasting: رگبار تیکتهای TGS با RC4ترکیبِ رویداد 4769 با رمزنگاری 0x17 (یعنی RC4) که ظرف چند دقیقه بهصورت انبوه برای کلی SPNِ متمایز درخواست میشه، امضای کلاسیکِ یه حملهی Kerberoastinge.
- وبشل: POSTهای تکرارشونده به URIهای کمیابیه وبشل خودش رو با POSTهای مکرر به یه اسکریپتِ مشخص، از تعداد خیلی کمی IP و تقریباً همیشه با کد 200 لو میده — درست برعکسِ رفتار یه فرم عمومی.
- برش Distinguished Name در LDAP به واحدهای سازمانیاول SPLIT روی ویرگول، بعد MV_SLICE واحد سازمانی اصلی رو از DN درمیاره و حسابها رو به تفکیک شاخهی سازمانی جمع میکنه، اونم بدون اینکه فیلد اختصاصیای توی دایرکتوری لازم باشه.