Constrained Delegation: Active Directory-তে এই ফিচারের নিরাপত্তা ঝুঁকি ও সমাধান!
Active Directory-র Constrained Delegation feature, এর কাজের পদ্ধতি, abuse scenarios, এবং প্রতিরোধমূলক ব্যবস্থা সম্পর্কে বিস্তারিত গাইড।
Active Directory-র এমন কিছু legacy feature আছে যেগুলো প্রাথমিকভাবে enterprise সুবিধার জন্য designed হলেও আধুনিক attacker-দের জন্য সোনার খনি হয়ে উঠেছে। Kerberos Delegation, বিশেষ করে Constrained Delegation, ঠিক তেমনই একটি feature। Microsoft এটি ২০০০ সালে introduce করেছিল multi-tier application-এর জন্য, কিন্তু আজ এটি Red Team-দের প্রিয় attack vector-এর একটি। বহু APT campaign এবং famous breach-এ Constrained Delegation abuse-এর প্রমাণ পাওয়া গেছে। আজকের আলোচনায় আমরা গভীরে গিয়ে দেখবো এই feature কীভাবে কাজ করে, কীভাবে এর abuse হয় এবং কীভাবে সুরক্ষা নিশ্চিত করা যায়।
Kerberos Delegation-এর মূল ধারণা
Kerberos Delegation বুঝতে হলে আগে একটি বাস্তব scenario কল্পনা করুন। একজন user একটি web application-এ login করেছেন। সেই web application তার backend database server থেকে data fetch করতে চায়, কিন্তু user-এর identity ব্যবহার করে—অর্থাৎ database server-এ সেই user-এর own permission apply হবে। এটিই double-hop authentication problem, যা Delegation সমাধান করে।
Kerberos-এ তিন ধরনের delegation আছে:
1. Unconstrained Delegation: Most dangerous। Server যেকোনো service-এ user-এর behalf-এ act করতে পারে। User-এর TGT (Ticket Granting Ticket) সরাসরি server-এ store হয়, যা compromise হলে full impersonation সম্ভব।
2. Constrained Delegation (KCD): Server শুধু specific service-এর সাথে delegate করতে পারে। S4U2Self এবং S4U2Proxy extension ব্যবহার করে।
3. Resource-Based Constrained Delegation (RBCD): Windows Server 2012-এ introduced। Permission target resource-এ define করা হয়, source-এ নয়। এটি cross-domain delegation enable করে।
Constrained Delegation-এর Technical Details
Constrained Delegation দুটি Kerberos protocol extension ব্যবহার করে:
S4U2Self (Service for User to Self): একটি service কোনো user-এর জন্য নিজের কাছে একটি ticket request করতে পারে, এমনকি যদি সেই user direct authenticate না করেও থাকে। এই ticket forwardable হতে পারে যদি account "Trusted to authenticate for delegation" হয়।
S4U2Proxy (Service for User to Proxy): S4U2Self থেকে পাওয়া ticket ব্যবহার করে service অন্য specific service-এ user-এর behalf-এ ticket request করতে পারে। কোন service-এ delegate করা যাবে, সেটি msDS-AllowedToDelegateTo attribute-এ define থাকে।
Active Directory-তে Constrained Delegation enabled service account-এর User Account Control (UAC) flag-এ TRUSTED_TO_AUTH_FOR_DELEGATION সেট থাকে এবং msDS-AllowedToDelegateTo attribute-এ allowed SPN-গুলো list করা থাকে।
Resource-Based Constrained Delegation (RBCD)
RBCD ঐতিহ্যবাহী KCD-এর তুলনায় অনেক বেশি flexible কিন্তু আক্রমণের দৃষ্টিকোণ থেকেও দুর্বল।
Traditional KCD: Permission source service-এ stored। শুধু Domain Admin সেট করতে পারেন।
RBCD: Permission target resource-এ (msDS-AllowedToActOnBehalfOfOtherIdentity attribute-এ) stored। Target resource-এর owner সেট করতে পারেন।
এই পার্থক্যই RBCD-কে সবচেয়ে abused delegation type-এ পরিণত করেছে। যদি কোনো attacker একটি computer object-এর owner হন, বা GenericWrite permission পান, তাহলে তিনি সেই computer-এ RBCD সেট করে privilege escalation করতে পারেন।
Attack Scenarios
কয়েকটি practical attack scenario বুঝি।
Scenario 1 - KCD Service Account Compromise: Attacker একটি Constrained Delegation-enabled service account-এর password বা NTLM hash পেয়েছে (Kerberoasting, LSASS dump, ইত্যাদি)। সেই account "MSSQLSvc/db01.lab.local"-এ delegate করতে পারে। Attacker S4U2Self + S4U2Proxy ব্যবহার করে যেকোনো user (যেমন Domain Admin) হিসেবে database server-এ access নিতে পারে।
Scenario 2 - Protocol Transition Abuse: "Trust this user for delegation to specified services using any authentication protocol" option enabled থাকলে protocol transition সম্ভব। মানে user actually Kerberos দিয়ে authenticate না করলেও service তার behalf-এ ticket পেতে পারে। এটি ভয়ংকর কারণ attacker কোনো user-এর consent ছাড়াই impersonate করতে পারে।
Scenario 3 - RBCD via Computer Account: Attacker একটি domain user হিসেবে আছেন। ডিফল্টভাবে domain user-রা ১০টি computer account তৈরি করতে পারে (MachineAccountQuota=10)। Attacker একটি computer account তৈরি করে, target server-এর msDS-AllowedToActOnBehalfOfOtherIdentity-তে নিজের তৈরি computer-কে সেট করেন (যদি তার write access থাকে)। তারপর S4U দিয়ে যেকোনো user হিসেবে target-এ access নেন।
Scenario 4 - Cross-Domain RBCD: RBCD cross-domain delegation allow করে, যা traditional KCD-তে ছিল না। Attacker child domain থেকে parent domain compromise করতে পারে।
Scenario 5 - sname Manipulation (CVE-2020-17049): Bronze Bit attack নামে পরিচিত। Attacker S4U2Proxy request-এ service ticket-এর "forwardable" flag manipulate করে এমন user-এর behalf-এ act করতে পারে যারা "Account is sensitive and cannot be delegated" set করেছে।
Practical Exploitation Tools
বিভিন্ন tool এই abuse automate করে।
Rubeus: C#-এ লেখা একটি Kerberos interaction tool। s4u command দিয়ে S4U2Self/S4U2Proxy abuse করা যায়।
Rubeus.exe s4u /user:websvc /rc4:HASH /impersonateuser:administrator /msdsspn:cifs/dc01.lab.local /ptt
Impacket-এর getST.py: Linux-এ একই কাজ করে।
getST.py -spn cifs/dc01.lab.local -impersonate administrator -hashes :HASH lab.local/websvc
PowerView: PowerShell-based AD enumeration। Get-DomainUser -TrustedToAuth দিয়ে delegation-enabled account খুঁজে।
BloodHound: AD attack path visualization। Delegation-related edges দেখায়—"AllowedToDelegate", "AllowedToAct"।
ntlmrelayx: SMB relay attack-এর সাথে RBCD সেট করে privilege escalation। Famous "Printer Bug" বা "PetitPotam" attack-এ ব্যবহৃত।
বিখ্যাত Attack Chains
Constrained Delegation প্রায়শই বড় attack chain-এর অংশ।
SpoolSample/Printer Bug + RBCD: Attacker MS-RPRN-এর RpcRemoteFindFirstPrinterChangeNotificationEx API দিয়ে target computer-কে force করে attacker-controlled host-এ authenticate করতে। ntlmrelayx দিয়ে relay করে RBCD সেট করে। তারপর S4U দিয়ে Domain Admin হিসেবে target-এ login।
PetitPotam + AD CS + RBCD: PetitPotam (MS-EFSRPC) দিয়ে DC-কে force করে attacker-controlled host-এ authenticate করতে। AD Certificate Services (CS) web enrollment endpoint-এ relay করে DC-র জন্য certificate ইস্যু করা। সেই certificate দিয়ে DC impersonate।
Coercer + WebClient: PetitPotam, DFSCoerce, ShadowCoerce-এর মতো coercion technique-এর সাথে RBCD-এর সমন্বয়।
Generic Write on Computer Object: Attacker কোনোভাবে domain computer object-এর GenericWrite permission পেয়েছেন। RBCD সেট করে দ্রুত SYSTEM হিসেবে সেই machine-এ access।
Detection Strategies
Delegation abuse detect করা challenging কিন্তু সম্ভব।
Event Logging: Domain Controller-এ Event ID 4769 (Kerberos service ticket request) এবং 4624 (logon) closely monitor করুন। S4U2Self/S4U2Proxy-এর জন্য specific TGS_REQ pattern দেখা যায়।
Anomalous Service Ticket Requests: Service account থেকে high-privilege user-এর behalf-এ ticket request—যেমন websvc থেকে administrator-এর জন্য—সন্দেহজনক।
Honeytoken Account: "Account is sensitive and cannot be delegated" সেট করে honey account তৈরি করুন। যদি এই account-এর জন্য কেউ ticket request করে, alert।
msDS-AllowedToActOnBehalfOfOtherIdentity Modification: এই attribute-এ যেকোনো change-এ alert। Microsoft Defender for Identity এই detection-এ ভালো।
BloodHound for Defense: নিজের environment-এ BloodHound চালিয়ে delegation path detect করুন। Unused delegation remove করুন।
Computer Account Creation Spike: Standard user যদি অনেক computer account তৈরি করে, সেটি RBCD attack-এর preparation হতে পারে।
প্রতিরোধ ও Hardening
Constrained Delegation-এর ঝুঁকি কমাতে নিচের ব্যবস্থা নিন।
Disable Unnecessary Delegation: যেসব account-এর delegation দরকার নেই, সেগুলোতে disable করুন। Regular audit করুন।
Use Resource-Based Constrained Delegation Carefully: RBCD অনেক বেশি secure হতে পারে যদি সঠিকভাবে use করা হয়—target resource-এর owner control করেন। কিন্তু GenericWrite permission strictly limit রাখুন।
Protected Users Group: Sensitive accounts-কে "Protected Users" group-এ যোগ করুন। এতে delegation, NTLM, এবং weak cipher disable হয়ে যায়।
"Account is Sensitive and Cannot be Delegated" Flag: Domain Admin এবং অন্যান্য highly privileged account-এ এই flag set করুন। তবে Bronze Bit attack-এর প্যাচ apply রাখা গুরুত্বপূর্ণ।
Tier 0/1/2 Model: Microsoft-এর Tier model অনুসরণ করুন। Tier 0 (DC, AD admin) account-কে কখনো Tier 1/2 system-এ logon করতে দেবেন না।
MachineAccountQuota = 0: Default 10 reduce করে 0 করুন। ডিফল্টভাবে standard user-দের computer account তৈরির ক্ষমতা থাকা ঐতিহাসিক ভুল।
Patch Management: CVE-2020-17049 (Bronze Bit), CVE-2021-42278/42287 (sAMAccountName spoofing) এবং সংশ্লিষ্ট প্যাচ সর্বশেষ রাখুন।
Authentication Policy & Silos: Authentication Policy Silo দিয়ে high-value account-গুলোকে specific computer-এ restrict করুন।
LDAP & SMB Signing: NTLM relay attack ব্লক করতে LDAP signing এবং SMB signing enforce করুন।
Coercion Mitigation: PetitPotam, PrintNightmare-এর mitigation apply করুন। Print Spooler service DC-তে disable করুন।
Credential Guard: Windows Credential Guard enable করে LSASS dump-এর মাধ্যমে credential চুরি কঠিন করুন।
Regular AD Security Assessment: PingCastle, Purple Knight-এর মতো tool দিয়ে নিয়মিত AD security posture assess করুন।
বাস্তব Incident-এর শিক্ষা
বহু APT campaign-এ Constrained Delegation abuse-এর প্রমাণ পাওয়া গেছে। FIN7, APT29, APT41—সবাই Active Directory environment-এ delegation chain ব্যবহার করেছে privilege escalation ও lateral movement-এ। Black Basta ransomware affiliate-রা RBCD abuse-এ বিশেষ পারদর্শী।
২০২২ সালের একটি famous incident-এ একটি বড় বাণিজ্যিক প্রতিষ্ঠান compromise হয়েছিল কারণ তাদের domain-এ ৮০+ অপ্রয়োজনীয় Constrained Delegation enabled account ছিল। Attacker একটি service account compromise করে S4U দিয়ে কয়েক মিনিটের মধ্যেই Domain Admin হয়ে যায়।
Constrained Delegation Active Directory-র এমন একটি ক্ষমতাশালী feature যা সঠিকভাবে use করলে business-এ অসামান্য মূল্য যোগ করে, কিন্তু misuse বা misconfigure করলে পুরো forest compromise করতে পারে। S4U2Self ও S4U2Proxy-এর internal working বুঝতে পারলে আক্রমণের scope উপলব্ধি করা সহজ হয়। RBCD-এর introduction modern enterprise-এ flexibility এনেছে, কিন্তু সাথে সাথে নতুন attack surface-ও খুলে দিয়েছে। Defender হিসেবে আমাদের কর্তব্য delegation-এর প্রয়োজনীয়তা প্রশ্ন করা, যেখানে দরকার সেখানেই enable রাখা, regular audit চালানো, এবং Protected Users Group, Tier model, Authentication Policy Silo-এর মতো modern defense apply করা। মনে রাখবেন, Active Directory-এর security কোনো single setting-এ নির্ভর করে না—এটি একটি ecosystem। প্রতিটি stale delegation, প্রতিটি unnecessary permission সম্ভাব্য attack path। আজই আপনার AD environment audit করে দেখুন কোথায় কোথায় unnecessary delegation আছে।
আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ Constrained Delegation MCQ Quiz-টি দিন!
Related articles
AD Trusts: How Hackers Weaponize Network Trust to Hijack Systems
8 min
AS-REP Roasting: Hacking Techniques to Gain Access to Kerberos Accounts Without Passwords
8 min
BloodHound Analysis: Analyzing Active Directory Vulnerabilities from a Hacker's Perspective
12 min
Kerberoasting: The Cyber Technique for Cracking Weak Active Directory Passwords
10 min

