Mimikatz : Attack Vectors Explained

Saadman SakibSaadman Sakib
5 min read

আমরা আগের পর্বে দেখেছিলাম, Mimikatz কিভাবে LSASS থেকে plaintext password, hash, আর kerberos ticket extract করে। কিন্তু আসল খেলাটা শুরু হয় যখন এই credentials দিয়ে attackers lateral movement বা পুরো network compromise করে। আজকে দেখবো:

  • pass-the-hash

  • pass-the-ticket

  • PtH vs PtT

  • Golden Ticket

  • Silver Ticket

  • আর কেন এসব অ্যাটাক এত powerful


■ 𝐏𝐚𝐬𝐬-𝐭𝐡𝐞-𝐇𝐚𝐬𝐡 (PtH)

Windows Authentication System এ LM / NTLM hash ইউজ হয়। একবার Admin বা User এর NTLM hash পেয়ে গেলে, Attacker এর আর plaintext password দরকার হয় না। Attacker এই hash use করেই network এর অন্য machine এ connect করতে পারে । আগের পর্বে দেখানো হয়েছিলো কীভাবে আমরা NTLM hash dump করতে পারি :

sekurlsa::logonpasswords

hash পেয়ে গেলে, মেশিনে সেশন খুলতে হবে, যেন নেটওয়ার্কের অধীন যেই মেশিনেই / যেই সার্ভিসেই password এর মতো credentials দরকার হবে, যখনই দরকার হবে, এই সেশন থেকে হ্যাশ প্রোভাইড করে আমাকে log in করিয়ে দেয় :

sekurlsa::pth /user:admin /domain:corp.local /ntlm:HASHVALUE

এখানে HASHVALUE হলো সেই admin এর NTLM hash।

লক্ষ্য করুন, এখানে অন্য মেশিনে unauthorized access করতে কিন্তু আমাকে এমনকি তার password ও জানতে হলো না, জাস্ট হ্যাশ থেকে অ্যাক্সেস পেয়ে গেলাম । Password এর জটিল এনক্রিপশন কোনো বাঁধাই দিতে পারলো না!

এ কারণেই: strong password থাকলেও যদি hash leak হয়, Attacker পুরো network এ ইচ্ছামতো move করতে পারে।


■ 𝐏𝐚𝐬𝐬-𝐭𝐡𝐞-𝐓𝐢𝐜𝐤𝐞𝐭 (PtT)

ধরুন সিনেমা বা ট্যুর এর টিকিট কাটবেন কিন্তু তার জন্য় বাসা থেকে পারমিশন দরকার । এই যে ট্যুরে যেতে হলে দুই লেভেলে পারমিশন নিতে হচ্ছে, kerberos ticket এর ব্যাপারটা ঠিক তেমন । বাসার পারমিশন চাইলেন আপনি কিন্তু যদি অন্য কাউকে দিয়ে দেয়, অথবা আপনার ট্যুরের টিকিট অন্য কেউ পেয়ে যায়, তাহলে ব্যাপারটা কেমন হবে?

Windows domain এ kerberos protocol ইউজ হয়। যখন ইউজার log in করে, kerberos KDC (Key Distribution Center) থেকে একটা TGT (Ticket Granting Ticket) পায়। এটা দিয়ে domain এর অন্য সার্ভিস থেকে TGS (Ticket Granting Service) নেয়।

Attacker যদি ইউজারের TGT বা TGS টিকেট পায়, তখন password বা hash ছাড়াই অন্য সার্ভিসে authenticate করতে পারে। Mimikatz দিয়ে kerberos tickets export করা হয় এভাবে :

sekurlsa::tickets /export

তারপর:

kerberos::ptt ticket.kirbi

মানে Attacker সরাসরি টিকেট inject করলো, আর লগইন হয়ে গেলো! এবার চলুন দুইরকম অ্যাটাক তুলনা করে দেখা যাক :


■ 𝐏𝐚𝐬𝐬-𝐭𝐡𝐞-𝐇𝐚𝐬𝐡 vs 𝐏𝐚𝐬𝐬-𝐭𝐡𝐞-𝐓𝐢𝐜𝐤𝐞𝐭

Pass-the-HashPass-the-Ticket
protocolNTLM / LMKerberos
যা প্রয়োজনNTLM hashKerberos ticket
targetযে কোনো মেশিনspecific service/domain
usageসেশন খুলে network এ moveticket inject করে resource access
limitationhash পেতে হবেvalid ticket থাকতে হবে, expirer respect

■ 𝐆𝐨𝐥𝐝𝐞𝐧 𝐓𝐢𝐜𝐤𝐞𝐭

PtT অ্যাটাকে যতক্ষণ User log in করা অবস্থায় থাকতো, ততক্ষণ kerberos ticket valid থাকতো । User log out করলে ticket expired হয়ে যেত । তার মানে অ্যাটাকার কতক্ষণ অ্যাক্সেস পাবে সেটা তার নিজের হাতে ছিলো না । এই প্রব্লেমটা সল্ভ করা যায় কীভাবে?

কেমন হয় যদি অ্যাটাকার নিজেই fake TGT generate করতে পারে? তাহলে যখন ইচ্ছা তখন সিস্টেমে অ্যাক্সেস করা যাবে ।

Kerberos এ, TGT sign করতে KDC এর krbtgt ইউজার এর password hash ইউজ করা হয়। Attacker যদি একবার domain এর krbtgt account এর NTLM hash পায়, ইচ্ছামতো fake TGT বানাতে পারবে । মানে, Attacker একদম manually একটি “golden ticket” বানিয়ে inject করতে পারে:

kerberos::golden /user:Administrator /domain:corp.local /sid:S-1-5-21-... /krbtgt:HASH /id:500

লক্ষ্য করুন, এই TGT দিয়ে domain এর যেকোনো service এর যেকোনো resource access করা যাবে ; এমনকি KDC কেও। কেন? কারণ অ্যাটাকার অলরেডি ইউজার সেজে ইউজারের বাসার পারমিশন নিয়ে নিয়েছে, ট্যুরের টিকেট চুরি করার আর কোনো দরকার নেই, এটা চাইলে নিজ থেকে কাটা যায়, বাসায় জানবে যে ইউজার ট্যুরে গেছে কিন্তু আসলে যাবে অ্যাটাকার । যেহেতু বাসার পারমিশন নেয়ার সক্ষমতা আছে, ট্যুর ছাড়াও অন্য অনেক কিছুই ম্যানেজ করা যায় !

এটাকে বলে Golden Ticket Attack ; কারণ এটা TGT level এ fake ticket বানায়, যা দিয়ে পুরো domain এ unrestricted access পাওয়া যায়।


■ 𝐒𝐢𝐥𝐯𝐞𝐫 𝐓𝐢𝐜𝐤𝐞𝐭

এককথায়

Golden ticket বানায় TGT → যেটা পুরো domain এ valid.
Silver ticket বানায় TGS → শুধু কোনো specific service এর জন্য valid।

ঠিক ধরেছেন, এবার অ্যাটাকার ইউজারের বাসার পারমিশন নেবে না, বরং তার ট্যুরের টিকেটটা ম্যানেজ করবে । এতে শুধু ইউজার সেজে ট্যুরে যাওয়ার ক্যাপাবিলিটি এচিভ করা যাবে ।

krbtgt hash না পেলেও যদি কোনো সার্ভিসের account (যেমন SQL Server এর service account) এর hash পেয়ে যায়, attacker সেই সার্ভিস এর জন্য fake TGS বানাতে পারে। এটার জন্য Mimikatz command:

kerberos::golden /sid:... /domain:corp.local /target:sql.corp.local /rc4:HASH /service:MSSQLSvc /user:hack /ptt

Attacker শুধু সেই সার্ভিসে access পাবে, কিন্তু পুরো domain না।

Silver ticket quieter, harder to detect, and doesn’t contact KDC ; KDC তে কখনও যায়ই না, তাই logs এ কম ধরা পড়ে।


■ Prevention & Detection

  • Credential Guard বা LSA protection (পর্ব ১ এও বলেছিলাম )

  • Domain admin access restrict করে দিন ( Golden Ticket Prevent করার জন্য় )

  • critical breach সন্দেহ হলে krbtgt password রিসেট করুন ।

  • Unusual TGT/TGS issue, long expiry ticket, abnormal user accounts এসব খুঁজে পান কিনা মাঝেমাঝে চেক করুন ।

  • Service accounts কে Managed Service Account বা gMSA ইউজ করা যেতে পারে ।


■ 𝐖𝐡𝐲 𝐬𝐡𝐨𝐮𝐥𝐝 𝐝𝐞𝐯𝐬 𝐜𝐚𝐫𝐞?

আমরা শুধু কোড লিখে ছেড়ে দিই না ; devOps, cloud, server access, CI/CD pipeline, credentials vault… এসবের কাজও করতে হয় ।

Attacker একবার foothold পেলে এই credentials ইউজ করেই lateral move করে। এমনকি অন্যান্য টুল ব্যবহার করে আরো complicated attack vector বানাতে পারে । তাই আবারও মনে করিয়ে দেই, offensive security শেখা মানেই offense না — বরং defense শিখে টিমকে protect করা।


References:

10
Subscribe to my newsletter

Read articles from Saadman Sakib directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Saadman Sakib
Saadman Sakib