درون فالکون: کرادسترایک چطور پروسهها رو رصد میکنه
خلاصهٔ کاملتر
این پست یه ریورسانجینیرینگ عملی از سنسور CrowdStrike Falcon روی ویندوزه. تو سمت کرنل درایور csagent.sys نشسته و تو سمت یوزر دو سرویس CSFalconService.exe و CSFalconContainer.exe کار میکنن. نویسنده از جدول ایمپورتهای درایور شروع میکنه: FLTMGR.SYS یعنی یه مینیفیلتر فایلسیستم ثبت شده، NETIO.SYS و fwpkclnt.sys یعنی یه موتور فیلترینگ شبکهٔ کامل که میتونه اتصالها رو بازرسی و قطع کنه، و cspcm4.sys هم ماژول ضددستکاری خود کرادسترایکه.
نقطهٔ ورود اصلی کالبکیه که با PsSetCreateProcessNotifyRoutineEx ثبت میشه (درایور اول نسخهٔ Ex2 رو داینامیک پیدا میکنه و اگه نبود برمیگرده به Ex). همون یه کالبک هم ساخت پروسه رو مدیریت میکنه هم پایانش رو. به گفتهٔ نویسنده مکانیزم کیل کرادسترایک دقیقاً یه خطه: اگه موتور تشخیص یه NTSTATUS منفی برگردونه، اون مقدار تو فیلد CreationStatus داخل ساختار CreateInfo نوشته میشه و پروسه اصلاً اجرا نمیشه.
بخش بعدی سراغ تابع ساخت رویداده: یه بافر ۵۵۲ بایتی که مثل یه آبجکت COM با چهار پوینتر اینترفیس سرهم میشه و بعد پر میشه از PID (هم عددی هم به شکل رشتهٔ یونیکد)، PID والد، مسیر ایمیج، خط فرمان، اطلاعات امضا و زنجیرهٔ گواهی، ریپیوتیشن و هش، و SID و سطح یکپارچگی کاربر. مسیر و خط فرمان به شکل lazy کش میشن و اگه هر زیرفیلدی حل نشه صفر میشه؛ یعنی تلهمتری best-effortه و ساخت رویداد بهخاطر یه فیلد گمشده شکست نمیخوره.
یکی از جزئیات جالبش فلگهای فایل و تراکنشه: اگه ایمیج از داخل یه تراکنش TxF اجرا شده باشه یه بیت مخصوص ست میشه — همون تکنیک process doppelgänging که همینجا علامت میخوره. نویسنده آخرش شش منبع کالبک کرنل رو فهرست میکنه (پروسه، ترد، لود ایمیج، ObRegisterCallbacks برای هندلهای LSASS، رجیستری و مینیفیلتر فایل) و اشاره میکنه چند تا گیت اول — غیرفعالبودن سنسور یا آمادهنبودن موتور موقع بوت — پروسه رو بدون هیچ بررسیای رد میکنن.
نکات کلیدی:
- سنسور فالکون شش منبع اعلان کرنلی ثبت میکنه: پروسه، ترد، لود ایمیج، آبجکت، رجیستری و فایل
- بلاک پروسه با نوشتن NTSTATUS منفی تو فیلد CreationStatus انجام میشه
- رویداد ساخت پروسه یه ساختار ۵۵۲ بایتی با هویت، منشأ و اعتماد (امضا، ریپیوتیشن، SID) هست
- پروسهٔ System با PID برابر ۴ کلاً از مسیر گرفتن مسیر ایمیج کنار گذاشته میشه
- اجرای ایمیج از داخل تراکنش TxF جداگانه فلگ میشه (تشخیص process doppelgänging)
- اگه موتور تشخیص موقع بوت آماده نباشه، پروسههای اولیه بدون بررسی رد میشن




