Write-up zu CyberChef #
Ich verwende das Online Tool CyberChef, dass http requests absetzten kann und bausteine beinhaltet, um schnell etwas auszuwerten. Die folgenden Beispiele sollen den Funktionsumfang verdeutlichen.
Aufgabenstellung 1 - Email-Adresse exstrahieren #
Es sollen die Email Adressen von einer Webseite extrahiert werden.
Die Seite lautet https://mcs.unibnf.ch/lecturers-list/ und ist auch “gepaged” https://mcs.unibnf.ch/lecturers-list/page/XXX/ wobei XXX eine Zahl von 2 - 5 ist.
Umsetzung #
Die Zielwebseite hat die SOP nicht mit CORS gelockert, weshalb der Browser die Antwort von mcs.unibnf.ch nicht akzeptiert. Das kann aber leicht umgangen werden, wenn wir einen Proxy dazwischen schalten und den Access-Control-Allow-Origin Header auf * setzen. Alternativ kann auch der Browser gewisse Security Mechanismen abschalten.
Das Proxy-Setup in ZAP wird unter Tools Replacer Options eingerichtet:
Wir erstellen Web Requests mit den URLs:
- https://mcs.unibnf.ch/lecturers-list/
- https://mcs.unibnf.ch/lecturers-list/page/$R0/ wobei $R0 von 2 - 5 geht.
Das Tool muss also 5 Requests machen, wobei eine Condition enthalten ist, weil die erste URL anders ist.
Der Ablauf ist also so:
- 5 Threads starten
- Prüfen ob ich der erste bin
- Wenn ja, dann jump zur ersten Request-Art
- Wenn nein, dann jump zur zweiten Request-Art
- Alle Threads mergen
- Aus dem Ergebnis alle Email extrahieren
- Sortieren
- Duplikate entfernen
Das Rezept zu CyberChef kann mit dem Input 1, 2, 3, 4, 5 benutzt werden.
Aufgabenstellung 2 - Forking #
Es soll ein Input als Liste entgegengenommen werden und diese dann in eine Liste von Hashes transformiert werden.
Der Output ist wie folgt:
- HASHES
- Checksums:
- CHECKSUMS
- ===== NEXT ======
Umsetzung #
Der Ablauf ist so:
- Forken
- Generate All hashes
- Search & Replace mit Regex letztes Zeichen mit ===== NEXT ersetzen
- Implizit Mergen
Aufgabenstellung 3 - Forking & Web Requests #
- Es sollen die fork, merge, register Bausteine erklärt werden.
- Anzahl unique Email-Adressen der Seiten 2 - 5 von https://mcs.unibnf.ch/lecturers-list/page/XXX/
Umsetzung #
- Fork: Ähnlich wie bei C, wird der nachfolgende Code pro Input-“Gruppe” ausgeführt. Die Gruppe kann simple eine Zeile sein oder mit Regex selektiert werden.
- Merge: Ähnlich wie bei C, werden alle Abzweigungen wieder zusammengeführt und der nachfolgende Code befindet sich auf einem “Pfad”.
- Register: Speichert eine Input-“Gruppe” in einem Register. Die erste Gruppe ist im $RO gespeichert. Zusammen mit Fork, kann so ein for_each loop gebaut werden. Das Register wird als Input für andere Bausteine verwendet (Beispiel unten im Rezept).
Der Ablauf, um die Email-Adressen zu finden ist so:
- Forken
- Web Request absetzen
- Email extrahieren
- Mergen
- Liste unique machen
- Anzahl im Output-Fenster ablesen