- Startseite
- Clientseitige Abwehr
- Demo
- Phase 3 — Abwehr
Phase 3 — Abwehr
Phase 3 erstellt einen Vorher-/Nachher-Nachweis der CSD-Abwehr. Sie wiederholen den Angriff ohne Abwehrmaßnahmen, um eine Basislinie zu erstellen, wenden Abwehrmaßnahmen an und wiederholen denselben Angriff, um zu beweisen, dass CSD die Netzwerkaufrufe blockiert. Phase 2 muss abgeschlossen sein — alle DET-Prüfungen müssen BESTANDEN sein — bevor Sie fortfahren.
Schritt 1: Keine aktiven Abwehrmaßnahmen bestätigen (Basislinie)
Abschnitt betitelt „Schritt 1: Keine aktiven Abwehrmaßnahmen bestätigen (Basislinie)“Bevor Sie den „Vorher”-Schnappschuss erfassen, stellen Sie sicher, dass die Umgebung sauber ist — es sollten keine Abwehrmaßnahmen aktiv sein. Dadurch wird gewährleistet, dass der Basislinienangriff ohne CSD-Blockierung ausgeführt wird.
Anzahl abgewehrter Domains prüfen
Abschnitt betitelt „Anzahl abgewehrter Domains prüfen“curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq '{count: (.items | length)}'Wenn die Anzahl nicht 0 ist, sind Abwehrmaßnahmen aus einem früheren Durchlauf vorhanden. Löschen Sie jede davon, bevor Sie fortfahren:
# Eine abgewehrte Domain löschen (für jeden Domainnamen wiederholen)curl -s -X DELETE \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains/<domain-name>" \ | jq .Ersetzen Sie <domain-name> durch den metadata.name, der bei der Abwehr der Domain verwendet wurde (z. B. cdn.jsdelivr.net, esm.sh, unpkg.com, ga.jspm.io, httpbin.org, jsonplaceholder.typicode.com). Falls die Bereinigung von httpbin.org einen verbleibenden Eintrag hinterlässt, versuchen Sie auch, www.httpbin.org zu löschen — einige frühere Durchläufe haben möglicherweise diesen Namen als Metadatenname verwendet.
Bestätigen, dass Phase-2-Erkennungen vorhanden sind
Abschnitt betitelt „Bestätigen, dass Phase-2-Erkennungen vorhanden sind“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}]}'Nachweis
Abschnitt betitelt „Nachweis“| Prüfung | Erwartet | Status |
|---|---|---|
| Anzahl abgewehrter Domains | 0 (saubere Basislinie) | BESTANDEN wenn 0, Bereinigung erforderlich wenn > 0 |
| Anzahl erkannter Domains | > 0 (Phase-2-Erkennungen vorhanden) | BESTANDEN wenn > 0 |
| Exfil-Domains vorhanden | www.httpbin.org, jsonplaceholder.typicode.com | BESTANDEN wenn mindestens eine erscheint |
Schritt 2: Angriff ausführen — Vor der Abwehr
Abschnitt betitelt „Schritt 2: Angriff ausführen — Vor der Abwehr“Führen Sie die kombinierte Simulation ohne aktive Abwehrmaßnahmen erneut aus, um eine aktuelle Basislinie zu erfassen. Dies ist der „Vorher”-Schnappschuss — Nachweis, dass Angriffe erfolgreich sind, wenn keine CSD-Abwehr angewendet wird.
KI-automatisierte Ausführung
Abschnitt betitelt „KI-automatisierte Ausführung“KI-Assistenten mit Browser-Automatisierungswerkzeugen führen die Angriffssimulation programmgesteuert mit demselben Phase-2-initScript aus (das das native fetch speichert):
- Mit initScript navigieren — navigieren Sie zunächst zu
about:blank, um einen sauberen Dokumentenkontext zu gewährleisten (verhindert veraltete initScripts aus früheren Navigationen), dannnavigate_pagezuhttp://$F5XC_DOMAINNAME/#/loginmit dem Phase-2-initScript (wortwörtlicher Code in Phase 2 — KI-automatisierte Ausführung). Dieses initScript speichert das nativesetInterval,clearInterval,fetchundconsole.log— die nativefetch-Referenz ist hier korrekt, da keine Abwehrmaßnahmen aktiv sind - 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 — 10 Sekunden warten, bis alle CDN-Skriptlade-/Fehler-Callbacks und Fetch-Promise-Auflösungen abgeschlossen sind
- Nachweis erfassen —
list_console_messages, um auf[CSD Demo] Simulation completeund CDN-Ladeergebnisse zu prüfen;list_network_requestsgefiltert nachscript- undfetch-Typen, um HTTP-Statuscodes zu überprüfen (200/201für Erfolg)
Manuelle Ausführung
Abschnitt betitelt „Manuelle Ausführung“Operatoren ohne Browser-Automatisierungswerkzeuge führen die Simulation manuell mit demselben Verfahren wie in Phase 2 — Schritt 8: Angriffssimulation durch:
- Zu
http://xF5XC_DOMAINNAMEx/#/loginnavigieren - Dummy-Anmeldeinformationen in die Felder E-Mail und Passwort eingeben (nicht absenden)
- DevTools öffnen — F12 drücken und zur Registerkarte Konsole wechseln
- Das kombinierte Erkennungsskript aus Erkennung auslösen einfügen und ausführen
- Konsolenausgabe beobachten — alle CDN-Skripte sollten geladen werden und Exfil-Aufrufe sollten mit
200/201-Antworten erfolgreich sein
Nachweis — Vor der Abwehr
Abschnitt betitelt „Nachweis — Vor der Abwehr“| Prüfung | Erwartet (vor der Abwehr) | Status |
|---|---|---|
| CDN-Skripte injiziert | Alle 4 Script-Tags laden — [Supply Chain] Loaded from-Meldungen erscheinen, Netzwerk-Tab zeigt 200 | BESTANDEN |
Exfil-Fetch zu www.httpbin.org | Netzwerk-Tab zeigt 200 — Daten gesendet | BESTANDEN |
| Exfil-Fetch zu jsonplaceholder.typicode.com | Netzwerk-Tab zeigt 201 — Daten gesendet | BESTANDEN |
| Konsolenausgabe | [CSD Demo] Simulation complete | BESTANDEN |
Schritt 3: Abwehrmaßnahmen anwenden
Abschnitt betitelt „Schritt 3: Abwehrmaßnahmen anwenden“Für jede erkannte Domain senden Sie eine POST-Anfrage an den Endpunkt für abgewehrte Domains. Die primären Ziele aus der Phase-2-Simulation sind die 4 CDN-Injektionsdomains und alle erkannten Datenexfiltrationsdomains.
Primäre Abwehrziele (aus dem kombinierten Simulationsskript):
| Domain | Rolle |
|---|---|
cdn.jsdelivr.net | CDN-Skriptinjektion |
esm.sh | CDN-Skriptinjektion |
unpkg.com | CDN-Skriptinjektion |
ga.jspm.io | CDN-Skriptinjektion |
www.httpbin.org | Datenexfiltrationsendpunkt |
jsonplaceholder.typicode.com | Datenexfiltrationsendpunkt |
Eine Domain abwehren (einmal pro Domain ausführen):
curl -s -X POST \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ -H "Content-Type: application/json" \ -d '{ "metadata": { "name": "cdn.jsdelivr.net", "namespace": "xF5XC_NAMESPACEx" }, "spec": { "mitigated_domain": "cdn.jsdelivr.net" } }' \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq .Für jede Domain wiederholen:
curl -s -X POST \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ -H "Content-Type: application/json" \ -d '{"metadata":{"name":"esm.sh","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"esm.sh"}}' \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq .
# unpkg.comcurl -s -X POST \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ -H "Content-Type: application/json" \ -d '{"metadata":{"name":"unpkg.com","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"unpkg.com"}}' \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq .
# ga.jspm.iocurl -s -X POST \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ -H "Content-Type: application/json" \ -d '{"metadata":{"name":"ga.jspm.io","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"ga.jspm.io"}}' \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq .
# httpbin.org — www.httpbin.org als mitigated_domain verwenden (siehe Hinweis unten)curl -s -X POST \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ -H "Content-Type: application/json" \ -d '{"metadata":{"name":"httpbin.org","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"www.httpbin.org"}}' \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq .
# jsonplaceholder.typicode.comcurl -s -X POST \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ -H "Content-Type: application/json" \ -d '{"metadata":{"name":"jsonplaceholder.typicode.com","namespace":"xF5XC_NAMESPACEx"},"spec":{"mitigated_domain":"jsonplaceholder.typicode.com"}}' \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq .Eine 200-Antwort gibt das erstellte abgewehrte Domain-Objekt zurück. Eine 409-Antwort bedeutet, dass die Domain bereits in der Abwehrliste vorhanden ist — dies ist eine Erfolgsbedingung.
Schritt 4: Angewendete Abwehrmaßnahmen überprüfen
Abschnitt betitelt „Schritt 4: Angewendete Abwehrmaßnahmen überprüfen“Listen Sie alle abgewehrten Domains auf und bestätigen Sie, dass die Anzahl der soeben übermittelten Domains entspricht:
curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/shape/csd/namespaces/xF5XC_NAMESPACEx/mitigated_domains" \ | jq '{count: (.items | length)}'Nachweis
Abschnitt betitelt „Nachweis“| Prüfung | Erwartet | Status |
|---|---|---|
| Anzahl abgewehrter Domains | 6 (entspricht POST-Anzahl) | BESTANDEN wenn Anzahl übereinstimmt |
Alle POSTs aus Schritt 3 haben 200 oder 409 zurückgegeben | Jede Domain akzeptiert | BESTANDEN |
Wenn die Anzahl geringer als erwartet ist, führen Sie den POST-Befehl für die fehlende Domain aus Schritt 3 erneut aus.
Schritt 5: Angriff ausführen — Nach der Abwehr
Abschnitt betitelt „Schritt 5: Angriff ausführen — Nach der Abwehr“Führen Sie exakt dieselbe kombinierte Simulation erneut aus, um den „Nachher”-Schnappschuss zu erfassen. Das Simulationsskript ist identisch — nur der Abwehrstatus von CSD hat sich geändert. Skriptladevorgänge von abgewehrten Domains werden jetzt durch das CSD-JavaScript blockiert (das <script>-Tag src wird auf eine leere Zeichenkette geleert).
KI-automatisierte Ausführung
Abschnitt betitelt „KI-automatisierte Ausführung“KI-Assistenten mit Browser-Automatisierungswerkzeugen führen die Angriffssimulation programmgesteuert mit demselben Phase-2-initScript erneut aus (wortwörtlicher Code in Phase 2 — KI-automatisierte Ausführung). Das initScript speichert das native fetch, um zone.js-Fehler zu vermeiden — dies hat keinen Einfluss auf die CSD-Abwehr, da CSD keine fetch()-Aufrufe abfängt.
- Mit initScript navigieren — verwenden Sie
new_pagemitisolatedContextfür einen sauberen Browser-Kontext (verhindert veraltete initScripts aus Schritt 2), navigieren Sie dann zuabout:blankund anschließend zur Anmeldeseite mit dem Phase-2-initScript - Willkommensbanner schließen —
press_keymitEscape - Auf Abschluss warten — 10 Sekunden warten, bis alle asynchronen Callbacks abgeschlossen sind
- Nachweis erfassen —
list_console_messages, um auf[CSD Demo] Simulation completezu prüfen;list_network_requestsgefiltert nachscript- undfetch-Typen, um zu beobachten, dass CDN-Skriptladevorgänge fehlen (CSD hat das Skript-srcgeleert), während Fetch-Aufrufe an Exfil-Domains weiterhin normal abgeschlossen werden
Manuelle Ausführung
Abschnitt betitelt „Manuelle Ausführung“Operatoren ohne Browser-Automatisierungswerkzeuge führen die Simulation manuell mit demselben Verfahren wie in Phase 2 — Schritt 8: Angriffssimulation durch:
- Zu
http://xF5XC_DOMAINNAMEx/#/loginnavigieren - Dummy-Anmeldeinformationen in die Felder E-Mail und Passwort eingeben (nicht absenden)
- DevTools öffnen — F12 drücken und zur Registerkarte Konsole wechseln
- Das kombinierte Erkennungsskript aus Erkennung auslösen einfügen und ausführen
- Konsolen- und Netzwerkausgabe beobachten — CDN-Skript-
onload- undonerror-Callbacks werden für abgewehrte Domains nicht ausgelöst (CSD hat das Skript-srcauf eine leere Zeichenkette geleert, wodurch die Netzwerkanfrage vollständig verhindert wird). Fetch-Aufrufe an Exfil-Domains (www.httpbin.org, jsonplaceholder.typicode.com) werden weiterhin abgeschlossen mit200/201— die CSD-Abwehr blockiert das Laden von Skripten, nicht Fetch/XHR-Aufrufe
Nachweis — Nach der Abwehr
Abschnitt betitelt „Nachweis — Nach der Abwehr“| Prüfung | Erwartet (nach der Abwehr) | Status |
|---|---|---|
| CDN-Skriptladevorgänge | Blockiert — Skripte erscheinen nicht im Netzwerk-Tab (CSD hat src auf leere Zeichenkette geleert) | BESTANDEN |
| CDN-Skript-Callbacks | Weder onload noch onerror werden für abgewehrte Domains ausgelöst | BESTANDEN |
Exfil-Fetch zu www.httpbin.org | 200 — Fetch wird weiterhin abgeschlossen (CSD fängt Fetch nicht ab) | INFO |
| Exfil-Fetch zu jsonplaceholder.typicode.com | 201 — Fetch wird weiterhin abgeschlossen (CSD fängt Fetch nicht ab) | INFO |
| Konsolenausgabe | [CSD Demo] Simulation complete | BESTANDEN |
Schritt 6: Vergleich Vorher vs. Nachher
Abschnitt betitelt „Schritt 6: Vergleich Vorher vs. Nachher“Dies ist der Demo-Höhepunkt — Seite-an-Seite-Nachweis, der beweist, dass derselbe Angriff auf derselben Seite mit demselben Skript nun ein völlig anderes Ergebnis erzeugt.
Vergleichstabelle
Abschnitt betitelt „Vergleichstabelle“| Signal | Vor der Abwehr (Schritt 2) | Nach der Abwehr (Schritt 5) |
|---|---|---|
| CDN-Skriptladevorgänge | 200 — alle 4 CDN-Skripte laden normal | Blockiert — Skripte fehlen im Netzwerk-Tab (CSD hat src auf leere Zeichenkette geleert) |
CDN-onload-Callbacks | [Supply Chain] Loaded from-Meldungen erscheinen | Keine Callbacks werden ausgelöst (es wurde keine Netzwerkanfrage gestellt) |
Exfil zu www.httpbin.org | 200 — Daten exfiltriert | 200 — Fetch wird weiterhin abgeschlossen (CSD fängt Fetch nicht ab) |
| Exfil zu jsonplaceholder.typicode.com | 201 — Daten exfiltriert | 201 — Fetch wird weiterhin abgeschlossen (CSD fängt Fetch nicht ab) |
| CSD-API für abgewehrte Domains | 0 abgewehrt | 6 abgewehrt |
Abwehr in Backend-Daten überprüfen
Abschnitt betitelt „Abwehr in Backend-Daten überprüfen“Fragen Sie /detected_domains alle 60 Sekunden für bis zu 10 Iterationen (10 Minuten) ab. Fahren Sie mit der Vergleichstabelle fort, sobald die Abfrage zurückgibt, oder nach dem 10-Minuten-Maximum — diese Prüfungen sind informativ und sperren Phase 4 nicht.
Erkannte Domains nach der Abwehr prüfen:
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}]}'Skripte auf abgewehrten Status prüfen:
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}]}'Nachweiszusammenfassung für Phase 3
Abschnitt betitelt „Nachweiszusammenfassung für Phase 3“| Prüfung | Erwartet | Status |
|---|---|---|
| Basislinie sauber (Schritt 1) | 0 abgewehrte Domains zu Beginn | BESTANDEN / NICHT BESTANDEN |
| Vorher — Angriff erfolgreich (Schritt 2) | Skripte laden, Exfil gibt 200/201 zurück | BESTANDEN / NICHT BESTANDEN |
| Abwehrmaßnahmen angewendet (Schritt 3) | Alle 6 Domains über POST akzeptiert (200 oder 409) | BESTANDEN / NICHT BESTANDEN |
| Abwehrzahl bestätigt (Schritt 4) | 6 Einträge in der Liste | BESTANDEN / NICHT BESTANDEN |
| Nachher — Skriptladevorgänge blockiert (Schritt 5) | CDN-Skripte fehlen im Netzwerk-Tab, Fetch-Aufrufe werden weiterhin abgeschlossen | BESTANDEN / NICHT BESTANDEN |
| Vergleich Vorher vs. Nachher (Schritt 6) | Klarer Unterschied zwischen den Nachweisen aus Schritt 2 und Schritt 5 | BESTANDEN / NICHT BESTANDEN |
Phase 3 abgeschlossen. Fahren Sie mit Phase 4 — Abbau fort, wenn Sie bereit sind, alle Bereitstellungsobjekte zu entfernen.