NoiseHound: کمسروصداترین مسیر تا Domain Admin
خلاصهٔ کاملتر
NoiseHound یه پروژهٔ متنباز پایتونیه (نیازمند Python 3.10+) که همون دادههای گراف BloodHound رو میخونه، ولی سؤال رو عوض میکنه. BloodHound «یه مسیر» تا Domain Admin پیدا میکنه، این ابزار میپرسه «کمسروصداترین مسیر کدومه». به گفتهٔ سازنده، ارزش واقعی پروژه توی کد نیست، توی corpus یعنی همون مجموعه فایلهای JSONیه که هر نوع یال BloodHound رو به سطح تلهمتری تشخیصش وصل میکنه: Event IDهای Security و Sysmon، هیوریستیکهای EDR، تکنیک MITRE و یه امتیاز نویز ۰ تا ۱۰۰.
محاسبهٔ امتیاز مسیر عمداً جمع ساده نیست، چون تریگر شدن یه تشخیص برای بار دوم دو برابر بلندتر حساب نمیشه. فرمولی که تو مستندات اومده اینه:
path_score = max(edge_scores) * 0.6 + mean(edge_scores) * 0.4یعنی وزن اصلی روی بلندترین قدم مسیره، چون یه قدم بد کل عملیات رو میسوزونه، ولی مجموع مواجهه هم بیاثر نیست. هر مسیر یه detection probability هم میده که با سوییچ --correlation تنظیم میشه و جواب سؤال متفاوتیه: یه مسیر کوتاه ولی پرسروصدا میتونه احتمال گیر افتادن کمتری از یه مسیر بلند و آروم داشته باشه.
چون این فرمول با Dijkstra مستقیم بهینه نمیشه، حلکننده یه threshold sweep رو با یه پاس k-shortest ترکیب میکنه و بعد اجتماع نتایج رو با امتیاز واقعی مرتب میکنه. روی نمونهٔ همراه پروژه، کمسروصداترین راه تا Domain Admins یه مسیر چهارقدمی session با امتیاز ۱۹.۹ درمیاد که بالاتر از یه میانبر دوقدمی با امتیاز ۳۶.۴ میشینه. برای گرافهای بزرگ کار به DeadAir، یه موتور Rust جداگانه، سپرده میشه که روی گراف ۲۵۰ هزار گره حدود ۲ ثانیه طول میکشه بهجای ۳۰ ثانیه.
چون یه عدد ثابت برای همهٔ محیطها جواب نمیده، میشه وضعیت تشخیص هدف رو تو یه فایل JSON کوچیک اعلام کرد؛ مثلاً اینکه object auditing با رویداد ۴۶۶۲ روشنه یا Sysmon نصبه. نسخهٔ ۱.۲.۰ شش پروفایل اندازهگیریشده از یه رنج واقعی Hyper-V و یه تنانت آزمایشی Azure میفرسته و ۳۷ یال از ۷۷ یال corpus لابراتوار-اندازهگیریشدهن؛ بقیه تخمین کارشناسیه و سازنده صریح میگه رتبهبندی کالیبرهنشده رو حکم قطعی نگیرید.
نکتهٔ جالب برای تیم آبی سوییچ --defensive هست: چون آرومترین مسیر دقیقاً همونجاییه که تشخیص ضعیفه، خروجی برعکس میشه و یالهایی رو نشون میده که فقط به خاطر خاموش بودن تلهمتری آرومن. روی نمونهٔ کامل، ابزار میگه مسیر آروم به دسترسی تشخیصنشده به LSASS وابستهست و با فعال کردن Sysmon Event 10 امتیاز از ۱۹.۹ به ۴۸.۴ میره بالا. ابزارهای جانبی noisehound-sigma، noisehound-mdi و noisehound-elastic هم پوشش قوانین واقعی شما رو به همین پروفایل تبدیل میکنن.
نکات کلیدی:
- نسخهٔ ۱.۲.۰، پایتون ۳.۱۰ به بالا، ورودی از zip یا JSON یا مستقیم از Neo4j با bolt
- امتیاز مسیر: ۰.۶ ضربدر بلندترین یال بهعلاوهٔ ۰.۴ ضربدر میانگین، با وزنهای قابل تنظیم
- ۳۷ یال از ۷۷ یال corpus در لابراتوار اندازهگیری شده، بقیه تخمین کارشناسیه
- موتور Rust به اسم DeadAir گراف ۲۵۰ هزار گره رو در حدود ۲ ثانیه حل میکنه
- حالت --defensive شکاف تشخیص رو میده؛ روی نمونه، Sysmon Event 10 امتیاز رو از ۱۹.۹ به ۴۸.۴ میبره
- یالهای ADCS ESC1 تا ESC8 موقع بارگذاری ساخته میشن؛ ESC9، ESC10 و ESC13 هنوز خارج از دامنهن
- پروژه مستقله، ربطی به SpecterOps نداره و فقط برای تست با مجوز کتبیه




