
क्रोमियम कुकीज़ और पासवर्ड को ब्राउज़रों में क्लोन और आयात करें, ऑफलाइन DPAPI स्टेट की डिक्रिप्शन के साथ, जो रेड टीम ऑपरेशन के लिए AES-256 GCM एन्क्रिप्टेड डेटाबेस का समर्थन करता है।
Chlonium एक एप्लिकेशन है जो Chromium कुकीज़ को क्लोन करने के लिए डिज़ाइन किया गया है।
Chromium 80 और उससे ऊपर के संस्करणों में, कुकीज़ को AES-256 GCM का उपयोग करके एन्क्रिप्ट किया जाता है, जिसमें एक स्टेट की होती है जो Local State फ़ाइल में संग्रहीत होती है। यह स्टेट की DPAPI का उपयोग करके एन्क्रिप्ट की जाती है। यह पुराने संस्करणों से बदलाव है, जो कुकी डेटाबेस में प्रत्येक कुकी आइटम को एन्क्रिप्ट करने के लिए DPAPI का उपयोग करते थे। इसका मतलब यह है कि यदि आपके पास स्टेट की है, तो आप हमेशा कुकी डेटाबेस को ऑफ़लाइन डिक्रिप्ट करने में सक्षम होंगे, बिना DPAPI कुंजियों तक निरंतर पहुंच की आवश्यकता के।
यह मूलतः कुकी डेटाबेस को "पोर्टेबल" बनाता है, जिसका अर्थ है कि उन्हें एक मशीन से दूसरी मशीन पर ले जाया जा सकता है, बशर्ते आपने स्टेट की को डंप कर लिया हो। आयात करते समय कुकीज़ को पुन: एन्क्रिप्ट करने की आवश्यकता होती है, क्योंकि प्रत्येक उपयोगकर्ता प्रोफ़ाइल और मशीन पर स्टेट कुंजियाँ भिन्न होंगी। यह डिक्रिप्शन के समान प्रक्रिया का उपयोग करके किया जा सकता है, पहले "लक्ष्य" ब्राउज़र से स्टेट की को डिक्रिप्ट करके, और फिर प्रत्येक आइटम को नई कुंजी से पुन: एन्क्रिप्ट करके।
यह प्रोजेक्ट C# में लिखा गया है और इसके दो अलग-अलग घटक हैं। पहला घटक, chlonium.exe कलेक्टर बाइनरी है। यह केवल स्टेट की को डिक्रिप्ट करता है और उसे प्रिंट करता है। इस कुंजी को नोट कर लें और आप भविष्य में Cookies डेटाबेस फ़ाइल डाउनलोड करके कुकीज़ को डिक्रिप्ट कर सकते हैं जब भी आपको अपडेटेड कुकीज़ की आवश्यकता हो। डिफ़ॉल्ट रूप से यह Chrome स्टेट की को डिक्रिप्ट करने का प्रयास करेगा। यदि आप किसी अन्य ब्राउज़र (जैसे Edge) के लिए स्टेट की डंप करना चाहते हैं, तो आप कुंजी का पथ निर्दिष्ट कर सकते हैं।
उदाहरण के लिए:
> Chlonium.exe "c:\users\user\AppData\Local\Microsoft\Edge\User Data\Local State"
[+] Statekey = 3Cms3YxFXVyJRUbulYCnxqY2dO/jubDkYBQBoYIvqfc=
दूसरा घटक, ChloniumUI.exe "आयातक" उपकरण है। यह दिए गए स्टेट की के साथ दिए गए Cookies डेटाबेस फ़ाइल को डिक्रिप्ट करने, मानों को वर्तमान उपयोगकर्ता के स्टेट की के साथ पुन: एन्क्रिप्ट करने, और कुकीज़ को आपके चुने हुए ब्राउज़र में आयात करने का ध्यान रखता है। आप इसे उस मशीन पर चलाते हैं जिसमें आप कुकीज़ आयात करना चाहते हैं।
इसका उपयोग करने के लिए, ChloniumUI.exe निष्पादन योग्य चलाएँ। पहले निकाली गई स्टेट की दर्ज करें, वह Cookies फ़ाइल चुनें जिसे आप आयात करना चाहते हैं, और वह ब्राउज़र चुनें जिसमें आप कुकीज़ आयात करना चाहते हैं। अब "Import Cookies" पर क्लिक करें और कुकीज़ आयात हो जाएँगी।
ChloniumUI वर्तमान में तीन Chromium-आधारित ब्राउज़रों का समर्थन करता है: Edge, Chrome और Vivaldi। Browsers.cs में अतिरिक्त ब्राउज़र जोड़े जा सकते हैं। यह Edge कुकी फ़ाइल को Chrome में आयात करने (या इसके विपरीत) का अनपेक्षित लाभ जोड़ता है, हालाँकि यह शायद एक अच्छा विचार नहीं है क्योंकि user-agent मेल नहीं खाएगा।
महत्वपूर्ण नोट: जब कुकी फ़ाइल को अपने ब्राउज़र में आयात करते हैं, तो सभी पुरानी कुकीज़ साफ़ हो जाती हैं! वर्तमान निर्देशिका में एक बैकअप कॉपी किया जाता है (प्रासंगिक समय टिकट के साथ)। यदि आपको पिछली कुकीज़ को पुनर्स्थापित करने की आवश्यकता है, तो बस बैकअप फ़ाइल को Cookies फ़ाइल पर कॉपी करें।
Mimikatz और SharpChromium जैसे उपकरण पहले से ही Chrome 80 कुकीज़ को डंप करने की क्षमता रखते हैं, फिर एक और उपकरण क्यों?
यह उपकरण विशेष रूप से कुकीज़ को दूसरे ब्राउज़र में आयात करना आसान बनाने के उद्देश्य से है। जबकि ये उपकरण Chromium कुकीज़ (और अधिक!) को डंप करने का अच्छा काम करते हैं, मैं कुछ ऐसा चाहता था जो मुझे आसानी से दूसरे ब्राउज़र में आयात करने दे। तृतीय-पक्ष कुकी मैनेजर प्लगइन्स मौजूद हैं, लेकिन मैंने उन्हें हमेशा उपद्रवी और विफलता की संभावना वाला पाया है। CloniumUI को इस प्रक्रिया को आसान बनाने के लिए डिज़ाइन किया गया है, सीधे आपके ब्राउज़र के sqlite डेटाबेस में कुकीज़ आयात करके।
जबकि यह प्रोजेक्ट chlonium.exe कलेक्टर के साथ आता है, जो स्टेट की को डंप करने में सहायता करता है, यह वास्तव में केवल एक उदाहरण है। Mimikatz जैसे अन्य उपकरण भी आपके लिए स्टेट की डंप करेंगे, संभावित रूप से अधिक छिपे तरीके से (आपके ऑपरेटिंग वातावरण, निष्पादन विधि आदि पर निर्भर करता है)। इसके अतिरिक्त, SharpDPAPI आपको Chromium स्टेट की फ़ाइल को डिक्रिप्ट करने की अनुमति देगा यदि आपके पास DPAPI स्टेट कुंजियाँ, वर्तमान पासवर्ड, या डोमेन बैकअप कुंजी है - जिससे आप SMB के माध्यम से दूरस्थ रूप से कुकीज़ डंप कर सकते हैं!
रेड टीमिंग करते समय, मुझे कभी-कभी लंबी अवधि (जैसे दैनिक/साप्ताहिक) में किसी उपयोगकर्ता की कुकीज़ को कई बार डंप करने की आवश्यकता होती है। लक्ष्य प्रणाली पर सीधे कुकी फ़ाइल से व्यक्तिगत कुकीज़ निकालने के लिए .NET असेंबली, रिफ्लेक्टिव DLL या अन्य इन-मेमोरी निष्पादन तकनीक का उपयोग करना अनावश्यक है और ऑपरेटर को पहचान के बढ़ते जोखिम में डालता है। इसके बजाय आप एक बार स्टेट की डंप कर सकते हैं, और जब भी आपको ताज़ा कुकीज़ की आवश्यकता हो, Cookies डेटाबेस फ़ाइल को कॉपी कर सकते हैं, बिना अतिरिक्त निष्पादन की आवश्यकता के।
वीडियो डेमो के लिए यहाँ देखें।
ChloniumUI पासवर्ड आयात और निर्यात का भी समर्थन करता है। इस सुविधा का उपयोग करने के लिए, बस Cookies db के बजाय Login Data डेटाबेस पथ प्रदान करें, साथ ही स्टेट की, और वह ब्राउज़र चुनें जिसमें आप उन्हें आयात करना चाहते हैं (निर्यात के लिए इससे कोई फर्क नहीं पड़ता)। यह आपको पासवर्ड को सादे टेक्स्ट में फ़ाइल में निर्यात करने या उन्हें अपने ब्राउज़र में आयात करने की अनुमति देता है। कुकीज़ की तरह, आप Chrome पासवर्ड को Edge में, Edge पासवर्ड को Vivaldi में आयात कर सकते हैं।
Chlonium ऑफ़लाइन स्टेट की डिक्रिप्शन का समर्थन करता है जिससे आप उपयोगकर्ता के स्टेटकी को ऑफ़लाइन डिक्रिप्ट कर सकते हैं यदि आपके पास निम्नलिखित सभी फ़ाइलें हैं:
C:\Users\<user>\AppData\Local\<browser>\User Data\Local State सेC:\Users\<user>\AppData\Roaming\Microsoft\Protect\<SID>\ सेऔर निम्नलिखित में से एक:
LsaRetrievePrivateData API विधि से)अब बस "Offline statekey decryption" टैब के तहत इन मानों को प्रदान करें, और Chlonium पहले DPAPI मास्टरकीज़ को डिक्रिप्ट करके (बैकअप कुंजी या पासवर्ड का उपयोग करके) एन्क्रिप्टेड स्टेटकी को डिक्रिप्ट करने का प्रयास करेगा, और फिर इन कुंजियों का उपयोग स्टेटकी को डिक्रिप्ट करने के लिए करेगा। एक बार स्टेटकी डिक्रिप्ट हो जाने के बाद, इसका उपयोग "Import or Export Database" टैब में कुकीज़/पासवर्ड प्राप्त करने के लिए किया जा सकता है।
उपयोग नोट: उपयोगकर्ता के पासवर्ड का उपयोग करके DPAPI मास्टरकी को डिक्रिप्ट करते समय, Chlonium पहले DPAPI मास्टरकी फ़ोल्डर से BK-<NETBIOSDOMAINNAME> फ़ाइल से उपयोगकर्ता के SID को निकालने का प्रयास करेगा। यदि यह विफल होता है (या यदि फ़ाइल मौजूद नहीं है), तो यह DPAPI मास्टरकी फ़ोल्डर नाम से SID प्राप्त करने का प्रयास करेगा (जो डिफ़ॉल्ट रूप से उपयोगकर्ता के SID के नाम पर होगा)। यदि आपने फ़ोल्डर का नाम बदल दिया है, या आपके पास BK फ़ाइल की प्रतिलिपि नहीं है, तो आप पासवर्ड का उपयोग करके मास्टरकी को डिक्रिप्ट नहीं कर पाएँगे।
यह सुविधा @harmj0y द्वारा उत्कृष्ट SharpChrome और SharpDPAPI प्रोजेक्ट्स का उपयोग करती है। पूरा श्रेय SharpDPAPI के मूल लेखकों को जाता है।
कुकी या लॉगिन डेटाबेस आयात करते समय, Chlonium एक "Importer" चुनने का विकल्प प्रदान करता है। आप Database Importer (डिफ़ॉल्ट) या StateKey Importer में से चुन सकते हैं। डिफ़ॉल्ट Database Importer स्रोत डेटाबेस में प्रत्येक आइटम को डिक्रिप्ट करेगा, इसे आपके वर्तमान स्टेट की के साथ पुन: एन्क्रिप्ट करेगा और फिर आपके वर्तमान ब्राउज़र के डेटाबेस में आयात करेगा। यह आमतौर पर ठीक काम करता है, हालाँकि; यदि ब्राउज़र अपडेट के कारण डेटाबेस स्कीमा बदल जाती है - तो नई स्कीमा को संभालने के लिए Chlonium को अपडेट की आवश्यकता हो सकती है। इस समस्या को हल करने के लिए, StateKey Importer बनाया गया था। डेटाबेस में प्रत्येक आइटम को पुन: एन्क्रिप्ट करने (और DB स्कीमा जानने पर निर्भर रहने) के बजाय, हम बस Local State फ़ाइल में संग्रहीत StateKey को (DPAPI के साथ) पुन: एन्क्रिप्ट कर सकते हैं ताकि वह स्रोत डेटाबेस से मेल खाए। उस बिंदु पर हम SQL के माध्यम से डेटाबेस सामग्री के साथ छेड़छाड़ किए बिना कुकी DB फ़ाइल को बदल सकते हैं। जबकि यह विधि स्कीमा परिवर्तनों के लिए अधिक लचीली होनी चाहिए, इसका एक दुष्प्रभाव यह है कि आप पुरानी कुकी फ़ाइल का उपयोग नहीं कर पाएँगे - क्योंकि StateKey अब मान्य नहीं होगी। पुनर्स्थापना में किसी भी समस्या से बचने के लिए, Local State फ़ाइल को मूल कुकी/लॉगिन डेटाबेस के साथ वर्तमान निर्देशिका में बैकअप किया जाता है। यदि आवश्यक हो तो इन्हें मैन्युअल रूप से पुनर्स्थापित किया जा सकता है। इसके अतिरिक्त, क्योंकि हमें प्रत्येक डेटाबेस आइटम को पुन: एन्क्रिप्ट करने की आवश्यकता नहीं है, StateKey Importer बहुत तेज़ है!
TL;DR: यदि आपको Database Importer के साथ समस्या हो रही है, तो इसके बजाय StateKey Importer चुनने का प्रयास करें :)
Chrome Local State और Cookies फ़ाइलों पर एक SACL सेट करें (साथ ही अन्य संवेदनशील फ़ाइलें जैसे Login Data और History)। देखें कि क्या कोई संदिग्ध (जैसे गैर-ब्राउज़र से संबंधित) प्रक्रिया इन फ़ाइलों में से किसी को खोल रही है।
SACLs सेट करने के बारे में @cryps1s के इस शानदार ब्लॉग पोस्ट पर एक नज़र डालें।
AV विक्रेताओं के लिए जो फ़ाइल सिस्टम फ़िल्टर ड्राइवर का उपयोग करते हैं, गैर-ब्राउज़र से संबंधित प्रक्रियाओं को इन फ़ाइलों को खोलने से अवरुद्ध करने पर विचार करें। जैसे PowerShell Cookies फ़ाइल खोल रहा है।