در ساختار امنیتی سازمانهای مدرن، Active Directory یکی از اجزای اصلی مدیریت هویت و دسترسی است؛ اما همین نقش کلیدی باعث میشود روابط و مجوزهای موجود در آن به هدف مهمی برای مهاجمان تبدیل شوند.
در بسیاری از سناریوهای حمله، مهاجم الزاماً به یک آسیبپذیری نرمافزاری یا Zero-Day نیاز ندارد؛ گاهی ترکیب چند دسترسی و Relationship کمخطر میتواند مسیری را ایجاد کند که در نهایت به یک حساب یا دارایی حساس منتهی شود.
BloodHound ابزاری گرافمحور برای تحلیل روابط و شناسایی مسیرهای حمله (Attack Path) است. این ابزار با مدل کردن کاربران، گروهها، کامپیوترها، Sessionها و مجوزها بهعنوان Nodes و Edges، به تیمهای امنیتی کمک میکند ارتباطاتی را ببینند که بررسی فهرستمحور آنها دشوار است. BloodHound ابتدا بیشتر با Active Directory شناخته میشد، اما قابلیتهای امروزی آن از محیطهای مایکروسافتی فراتر رفته و از منابع و سرویسهای هویتی مختلف از طریق OpenGraph پشتیبانی میکند.
در این مقاله ویکی رسیس بررسی میکنیم BloodHound چیست، چگونه دادهها را به یک Graph قابل تحلیل تبدیل میکند، Attack Path چگونه در آن شناسایی میشود و این ابزار چه کاربردی برای تیمهای Red Team، Blue Team و متخصصان امنیت دارد.
ابزار BloodHound چیست؟
“مدافعان در قالب لیست فکر میکنند؛ مهاجمان در قالب گراف. تا زمانی که این وضعیت ادامه داشته باشد، مهاجمان پیروز خواهند بود.”
John Lambert، از مهندسان و چهرههای شناخته شده امنیت مایکروسافت، این جمله را در سال ۲۰۱۵ مطرح کرد؛ جملهای که بعدها به یکی از ایدههای کلیدی در رویکرد Attack Graph تبدیل شد.
دقیقاً همین تفاوت دیدگاه است که باعث میشود سازمانها با وجود داشتن چندین لایه امنیتی، فایروالهای پیشرفته و آنتیویروسهای بهروز، باز هم قربانی حملات سایبری شوند. در ساختارهای متمرکز سازمانی مانند اکتیو دایرکتوری (Active Directory) یا محیطهای ابری مانند Azure (Entra ID)، مدیران شبکه اغلب امنیت را به شکل لیست میبینند یعنی «لیست کاربران»، «لیست گروهها»، «لیست دسترسیهای Admin». اما یک مهاجم یا تست نفوذکار حرفهای دنبال لیست نیست؛ او دنبال ارتباطات پنهان بین این اجزاست.
ابزار BloodHound دقیقاً برای پاسخ به همین چالش بهوجود آمد. بلادهاوند ابزاری متنباز (Open-Source) و گرافمحور است که روابط پیچیده، مجوزها، نشستهای فعال (Sessions) و دسترسیهای متداخل در اکتیو دایرکتوری و Azure را اسکن و تصویرسازی میکند.
به زبان ساده، BloodHound تمامی راههای نادیدهای که مهاجم میتواند طی کند تا مرحله به مرحله دسترسی خود را افزایش دهد و در نهایت به کنترل یک حساب یا دارایی حساس برسد، روی یک نقشه گرافی به شما نشان میدهد.
فلسفه ایجاد BloodHound و مفهوم Attack Path Management
در یک Active Directory بزرگ، بررسی تکتک Group Membershipها، ACLها، Sessionها و دسترسیهای مدیریتی میتواند تصویر کاملی از ریسک واقعی ارائه نکند؛ زیرا مهاجم ممکن است از زنجیرهای از Relationshipها و دسترسیها برای رسیدن به هدف استفاده کند.
فلسفه اصلی بهوجود آمدن BloodHound، وارد کردن مفهوم مدیریت مسیر حمله (Attack Path Management) به دنیای امنیت اکتیو دایرکتوری بود. این ابزار به جای اینکه صرفاً بگوید «کدام سیستمها آسیبپذیری نرمافزاری دارند»، به این سوال پاسخ میدهد که: «چگونه یک حساب کاربری ساده با کمترین دسترسی، میتواند به دسترسی سطح Domain Admin برسد؟»
Attack Path نیز به زنجیرهای از دسترسیها، مجوزها و رفتارهای قابل سوءاستفاده گفته میشود که یک نقطه شروع را به یک حساب یا دارایی با ارزش وصل میکند. برای مثال، فرض کنید در یک سازمان چنین ارتباطی وجود دارد:
- کارمند بخش حسابداری یک ایمیل فیشینگ را باز میکند و سیستم او آلوده میشود.
- یک کاربر با دسترسی متوسط (مثلاً Helpdesk) روی سیستم این کارمند یک نشست فعال (Session) دارد.
- کاربر Helpdesk عضو یک گروه فرعی است که به صورت غیر مستقیم اجازه تغییر رمز عبور یک گروه مدیریتی را دارد.
- آن گروه مدیریتی، دسترسی کامل روی Domain Controller دارد.
اگر به صورت منفرد به هر یک از این اجزا نگاه کنید، شاید هیچ آسیبپذیری حیاتی یا لایسنس غیر مجازی دیده نشود! اما وقتی این نقاط را به هم وصل میکنید، یک شاهراه نفوذ مستقیم برای مهاجم ایجاد شدهاست. BloodHound دقیقاً این شاهراههای پنهان را آشکار میکند.
کاربرد BloodHound برای تیمهای تهاجمی (Red Team) و دفاعی (Blue Team)
یکی از ویژگیهای منحصربهفرد BloodHound این است که مانند یک شمشیر دو لبه عمل میکند و هم در سمت مهاجم (Offensive Security) و هم در سمت دفاع (Defensive Security) به شدت محبوب و کاربردی است:
۱. برای تیمهای تهاجمی و تستنفوذکاران (Red Team)
مهاجمان یا نفوذگران اخلاقی پس از اینکه وارد شبکه داخلی شدند (Initial Access)، نیازمند حرکات عرضی (Lateral Movement) و ارتقای دسترسی (Privilege Escalation) هستند. BloodHound به Red Team اجازه میدهد:
- بدون ایجاد سروصدای زیاد در شبکه، کوتاهترین و کم ریسکترین مسیر رسیدن به هدف (Target System یا Domain Admin) را پیدا کنند.
- دسترسیهای غیر مستقیم و روابط پیچیده مانند GenericAll یا WriteDacl روی اشیای اکتیو دایرکتوری را که از دید ابزارهای اسکن معمولی پنهان میمانند، کشف کنند.
- نشستهای فعال (Active Sessions) کاربران حساس مانند مدیران ارشد یا مدیران دامنه را روی سیستمهای ضعیفتر شناسایی کنند.
۲. برای تیمهای دفاعی، تیمهای SOC و مدیران شبکه (Blue Team)
تیمهای دفاعی از BloodHound نه برای حمله، بلکه به عنوان یک ابزار ارزشمند برای ارزیابی ریسک و امنسازی (Hardening) استفاده میکنند. بیشتر بخوانید: ۱۰ راهبرد حیاتی Incident Response در برابر تهدیدات امنیتی
Blue Team با کمک این ابزار میتواند:
- حذف خطرات ساختاری: تمام مسیرهای منتهی به گروههای حساس مانند Domain Admins، Enterprise Admins و Administrators را شناسایی و قطع کند.
- کشف مدیران سایه (Shadow Admins): کاربرانی که نامشان در گروه Domain Admin نیست اما به دلیل مجوزهای خاص روی اشیا، عملاً همان قدرت را دارند، شناسایی و محدود کند.
- تست سناریوهای What-If: پیش از اعمال تغییر در دسترسیهای شبکه، بررسی کند که آیا حذف یک گروه یا دسترسی، مسیرهای خطرناک قبلی را مسدود میکند یا خیر.
مدیریت متمرکز هویت و کنترل دسترسی، یکی از راهکارهای کاهش ریسک ناشی از دسترسیهای غیر ضروری است.
ابزار BloodHound چگونه کار میکند؟ (معماری و نحوه عملکرد)
نحوه کارکرد BloodHound بر پایه فرمولی ساده بنا شدهاست، استخراج دادههای خام از اکتیو دایرکتوری، تبدیل آنها به روابط منطقی و ذخیرهسازی در یک پایگاه داده گرافی برای جستجوی سریع.
کل فرآیند کاری BloodHound را میتوانیم به ۳ بخش اصلی تقسیم کنیم:
- جمعآوریکننده (Collector): استخراج اطلاعات از شبکه
- پایگاه داده (Database): ذخیره و سازماندهی روابط
- رابط کاربری (GUI): تحلیل تصویری و اجرای کوئریها
جمعآوری دادهها از اکتیو دایرکتوری با SharpHound
BloodHound برای اینکه بتواند شبکه شما را نقشهبرداری کند، ابتدا به دادههای خام اکتیو دایرکتوری نیاز دارد. این فرآیند جمعآوری دادهها بر عهده ابزاری به نام SharpHound (یا در محیطهای لینوکسی BloodHound.py) است.
SharpHound دقیقاً چه کاری انجام میدهد؟ SharpHound یک برنامه اجرایی (C#) است که با دسترسی یک کاربر معمولی سیستم (بدون نیاز به دسترسی Admin) در شبکه اجرا میشود. این ابزار از پروتکلهای کاملاً استاندارد و بومی شبکه مانند LDAP، RPC و SMB استفاده میکند تا اطلاعات زیر را جمعآوری کند:
- دادههای دایرکتوری (از طریق LDAP): لیست تمام کاربران، گروهها، رایانهها، واحدهای سازمانی (OUs)، Group Policyها و مجوزهای دسترسی (ACLs)
- دادههای نشستها (from RPC/SAMR/NetWkstaUserEnum): شناسایی اینکه چه کاربرانی در حال حاضر روی چه رایانههایی نشست فعال (Session) دارند.
- دادههای گروههای محلی (Local Admin Enumeration): بررسی اینکه چه کاربرانی عضو گروه Administrators روی رایانههای مختلف هستند.
خروجی SharpHound مجموعهای از فایلهای JSON فشرده شده (Zip) است که تمامی این اطلاعات و ارتباطات را درون خود جای داده است.
تحلیل روابط بر پایه تئوری گراف (Graph Theory)
مغز متفکر و نقطه عطف BloodHound، استفاده از تئوری گراف (Graph Theory) برای تحلیل دادههاست. در ابزارهای سنتی، اطلاعات به صورت سطری و ستونی در جداول قرار میگرفتند، اما BloodHound تمام ساختار اکتیو دایرکتوری را به دو عنصر بنیادی گراف تبدیل میکند:
- گرهها (Nodes): موجودیتها یا اشیای واقعی در اکتیو دایرکتوری هستند؛ مانند یک کاربر (User)، گروه (Group)، رایانه (Computer)، دامنه (Domain) یا OU.
- یالها (Edges): نشاندهنده نوع رابطه یا دسترسی میان دو گره هستند.
برای مثال، اگر کاربر A عضو گروه B باشد، یک یال به نام MemberOf از گره A به گره B متصل میشود. برخی از مهمترین و خطرناکترین یالها (روابط) در BloodHound عبارتاند از:
- AdminTo: نشان میدهد یک کاربر یا گروه، دسترسی کامل مدیریت (Local Admin) روی یک رایانه دارد.
- HasSession: نشان میدهد یک کاربر روی یک رایانه نشست فعال دارد (فرصتی عالی برای مهاجم جهت سرقت Token یا Hash رمز عبور).
- GenericAll / WriteDacl: مجوزهای فوقالعاده حساسی که به یک موجودیت اجازه میدهند رمز عبور، مالکیت یا دسترسیهای موجودیت دیگری را کاملاً تغییر دهد.
با کنار هم قرار گرفتن میلیونها گره و یال، گراف کامل شبکه شکل میگیرد و الگوریتمهای یافتن کوتاهترین مسیر (Shortest Path Algorithms) میتوانند زنجیرههای نفوذ را در چند میلیثانیه محاسبه کنند.
ذخیرهسازی و جستجوی دادهها در پایگاه داده Neo4j
فایلهای JSON تولید شده توسط SharpHound پس از استخراج، وارد پایگاه داده Neo4j میشوند.
Neo4j یک پایگاه داده گرافمحور (Graph Database) بسیار سریع و قدرتمند است. برخلاف پایگاههای داده رابطهای (SQL) که برای اتصال جداول مختلف به JOINهای سنگین و کند نیاز دارند، Neo4j روابط بین دادهها را مستقیماً در سطح ذخیرهسازی حفظ میکند. این ویژگی به BloodHound اجازه میدهد تا سناریوهای پیچیدهای مانند:
«تمام مسیرهایی را پیدا کن که از یک کاربر معمولی آغاز شده و پس از حداکثر ۵ واسطه به گروه Domain Admins میرسد»
را به سرعت و با نوشتن دستوراتی به زبان Cypher (زبان پرسوجوی اختصاصی Neo4j) پردازش و روی صفحه، تصویرسازی کند.
بلادهاوند چه اطلاعاتی را تحلیل میکند؟
برای اینکه BloodHound بتواند Attack Pathها را شناسایی کند، باید Relationshipهای میان موجودیتهای مختلف محیط را در اختیار داشته باشد. در یک محیط Active Directory، این اطلاعات میتوانند شامل کاربران، گروهها، کامپیوترها، Sessionها، Permissionها و Trust Relationshipها باشند.
بهطور کلی، مهمترین دادههایی که در تحلیل بلادهاوند دیده میشوند عبارتاند از:
- Users: حسابهای کاربری و سطح دسترسی آنها
- Groups: عضویت کاربران و گروهها در یکدیگر
- Computers: سیستمها و Relationshipهای مدیریتی آنها
- Sessions: ارتباط حسابهای کاربری با سیستمهایی که روی آنها Session دارند.
- ACLs و Permissions: مجوزهای تعریف شده روی Objectهای مختلف
- Trust Relationships: ارتباط میان Domainها
- Group Policy و سایر Relationshipهای مرتبط با محیط
MITRE ATT&CK نیز قابلیتهای BloodHound را برای شناسایی Accountها، Groupها، Trustها، Group Policy و سیستمهای موجود در Active Directory مستند کرده است.
در نسخههای جدید BloodHound، دامنه تحلیل به Active Directory محدود نیست. OpenGraph این امکان را فراهم میکند که دادهها و Relationshipهای منابع دیگری نیز به Graph اضافه شوند؛ برای مثال، پروژههای رسمی SpecterOps Collectorهایی برای سرویسهایی مانند GitHub و MSSQL ارائه کردهاند.
مهمترین Relationshipها در BloodHound کداماند؟
یکی از دلایلی جذابیت کار با BloodHound برای متخصصان امنیت نمایش نوع Relationship میان موجودیتها به جای نمایش ساده Permissionهاست. برای مثال:
- MemberOf: نشان میدهد یک User یا Group عضو Group دیگری است.
- AdminTo: نشاندهنده رابطه مدیریتی یک موجودیت با یک Computer است.
- HasSession: نشان میدهد یک User روی یک Computer Session دارد.
- GenericAll و WriteDacl: نمونههایی از Permissionهای حساس هستند که بسته به Object و Context میتوانند امکان تغییر یا کنترل Relationshipهای دیگر را فراهم کنند.
نکته مهم این است که هیچ Relationshipی را نباید بهتنهایی معادل «نفوذ موفق» در نظر گرفت. اهمیت هر Edge به این بستگی دارد که در چه Contextی قرار گرفته است و آیا در کنار سایر Relationshipها یک مسیر قابل سوءاستفاده ایجاد میکند یا خیر.
به همین دلیل، BloodHound بیشتر از آنکه دنبال یک Permission «خطرناک» باشد، دنبال ترکیب Relationshipهایی است که در کنار یکدیگر ریسک ایجاد میکنند.
BloodHound چه تفاوتی با Vulnerability Scanner دارد؟
یکی از پرسشهای مهم درباره BloodHound این است که آیا میتوانیم آن را جایگزین ابزارهای Vulnerability Assessment بدانیم؟ خیر!
Vulnerability Scannerها اغلب دنبال شناسایی آسیبپذیریهای نرمافزاری، پیکربندیهای ناامن، نسخههای آسیبپذیر و سایر ضعفهای فنی هستند؛ اما BloodHound مسئله متفاوتی را بررسی میکند: ارتباط میان هویتها، دسترسیها، منابع و مسیری که این Relationshipها میتوانند ایجاد کنند.
برای مثال، یک Vulnerability Scanner ممکن است نشان دهد یک Server دارای یک آسیبپذیری مشخص است. BloodHound میتواند از زاویه دیگری بررسی کند که:
- چه حسابی به این Server دسترسی دارد؟
- این حساب عضو چه گروهی است؟
- این Group چه Permissionهای دیگری دارد؟
- آیا همین Relationshipها میتوانند آن را به یک دارایی حساس متصل کنند؟
بنابراین این دو ابزار رقیب یکدیگر نیستند؛ بلکه دو نوع متفاوت از ریسک را بررسی میکنند.
ابزار | تمرکز اصلی |
Vulnerability Scanner | آسیبپذیری و ضعف فنی |
BloodHound | Relationship و مسیر دسترسی |
Penetration Testing | اعتبارسنجی امکان سوءاستفاده |
SIEM / SOC | پایش و تشخیص فعالیتها |
با این قابلیتها BloodHound در کنار سایر ابزارهای امنیتی، دید کاملتری از ریسک زیرساخت هویت و دسترسی ارائه میکند.
آیا BloodHound فقط برای Red Team است؟
خیر؛ یکی از ارزشهای اصلی BloodHound این است که یک Graph واحد میتواند از دو زاویه متفاوت بررسی شود.
Red Team اغلب دنبال مسیرهایی است که میتوانند از یک نقطه دسترسی به یک هدف حساس منتهی شوند؛ در حالی که Blue Team و تیمهای Identity Security دنبال همین مسیرها هستند تا آنها را حذف یا محدود کنند. برای تیم دفاعی، BloodHound میتواند در فرآیندهای زیر مفید باشد:
- Active Directory Hardening
- بررسی Excessive Privileges
- کاهش Local Administratorها
- بازبینی Group Membershipها
- شناسایی Shadow Adminها
- تحلیل مسیرهای دسترسی به حسابهای Privileged
- بررسی اثر تغییر Permissionها
- اولویتبندی اقدامات Remediation
در واقع، BloodHound میتواند یک سؤال مهم را برای تیم امنیتی پاسخ دهد:
«اگر مهاجم به این حساب دسترسی پیدا کند، چه مسیرهایی در اختیار او قرار میگیرد؟»
این نگاه در محیطهایی که تعداد کاربران، سیستمها و Permissionها زیاد است، ارزش بیشتری پیدا میکند.
محدودیتهای BloodHound چیست؟
با وجود قابلیتهای زیاد، BloodHound را نباید ابزار همهکاره امنیتی بدانیم، مهمترین محدودیتهای آن عبارتاند از:
۱. کیفیت خروجی به کیفیت دادهها وابسته است.
اگر دادههای مورد نیاز جمعآوری نشده باشند یا Collection ناقص باشد، Graph نیز نمیتواند تصویر کاملی از محیط ارائه دهد.
۲. وجود یک Attack Path الزاماً به معنی Exploit موفق نیست.
مسیر شناسایی شده باید با شرایط واقعی محیط و امکان سوءاستفاده از Relationshipها اعتبارسنجی شود.
۳. BloodHound جایگزین Vulnerability Assessment نیست.
این ابزار عمدتاً روی Relationship و Identity Attack Path تمرکز دارد.
۴. تحلیل Graphهای بزرگ نیازمند دانش فنی است.
صرف مشاهده تعداد زیادی Node و Edge به معنی درک ریسک نیست؛ متخصص امنیت باید بتواند Relationshipهای مهم را از موارد کم اهمیت تفکیک کند.
به همین دلیل، بیشترین ارزش BloodHound زمانی ایجاد میشود که خروجی آن در کنار فرآیندهای Identity Security، Hardening، Penetration Testing و Continuous Monitoring مورد استفاده قرار گیرد.
BloodHound برای چه کسانی کاربرد دارد؟
BloodHound بیشترین کاربرد را برای متخصصانی دارد که با هویت، دسترسی و امنیت زیرساخت سازمان سروکار دارند. از جمله:
- متخصصان Penetration Testing
- تیمهای Red Team
- تیمهای Blue Team
- تحلیلگران SOC
- مدیران Active Directory
- متخصصان Identity و Access Management
- تیمهای امنیت زیرساخت
- متخصصان Threat Hunting
برای یک مدیر شبکه، BloodHound میتواند تصویری از ریسک ساختاری دسترسیها ارائه دهد؛ برای Red Team ابزاری برای تحلیل Attack Path است و برای Blue Team راهی برای اولویتبندی اقدامات Hardening.
نکات پایانی در مورد BloodHound
در پایان برای جمعبندی باید بگوییم که BloodHound ابزاری برای تبدیل Relationshipهای پیچیده هویتی و دسترسی به یک Graph قابل تحلیل است.
این ابزار با استفاده از Collectorهایی مانند SharpHound، دادههای مرتبط با Active Directory را جمعآوری میکند و با مدل کردن موجودیتها و Relationshipها، امکان بررسی مسیرهای بالقوه دسترسی به داراییهای حساس را فراهم میکند. BloodHound همچنین با OpenGraph در حال گسترش مدل خود به منابع و سرویسهای دیگری فراتر از Active Directory است.
اگر بخواهیم کل مفهوم را در یک جمله خلاصه کنیم:
BloodHound به تیم امنیت کمک میکند بهجای دیدن فهرستی از دسترسیها، ارتباط میان آنها و مسیرهایی را ببیند که میتوانند به یک ریسک امنیتی منجر شوند.
به همین دلیل، ارزش BloodHound صرفاً در پیدا کردن یک Permission خاص نیست؛ بلکه در درک ارتباط میان هویتها، دسترسیها و داراییهای سازمان و اولویتبندی مسیرهایی است که نیاز به بررسی و Remediation دارند.
سوالات متداول درباره BloodHound
BloodHound چیست؟
BloodHound ابزاری Graph-based برای تحلیل Relationshipها و شناسایی Attack Path در محیطهای هویتی و زیرساختی است که ابتدا با تمرکز بر Active Directory شناخته شد.
آیا BloodHound یک ابزار هک است؟
BloodHound ابزاری امنیتی و تحلیل Relationship است که هم در عملیات Red Team و Penetration Testing و هم برای ارزیابی و Hardening زیرساخت توسط تیمهای دفاعی استفاده میشود.
SharpHound چه تفاوتی با BloodHound دارد؟
SharpHound Collector است و وظیفه آن جمعآوری دادههای مورد نیاز از محیط Active Directory است؛ در حالی که BloodHound برای Ingest، مدلسازی و تحلیل دادهها و Relationshipها استفاده میشود. مخزن رسمی SpecterOps نیز SharpHound را C# Data Collector برای BloodHound معرفی میکند.
آیا BloodHound فقط Active Directory را بررسی میکند؟
خیر. BloodHound ابتدا عمدتاً برای Active Directory شناخته میشد، اما قابلیتهای OpenGraph امکان اضافهکردن داده و Relationship از منابع دیگر را نیز فراهم کرده است.







