
Ein "bösartiger" DNS-Server zur Durchführung von DNS-Rebinding-Angriffen im laufenden Betrieb (öffentliche Instanz unter rebind.network:53)
Ein bösartiger DNS-Server zur Ausführung von DNS-Rebinding-Angriffen im laufenden Betrieb. whonow ermöglicht es Ihnen, DNS-Antworten und Rebind-Regeln dynamisch durch die Domänenanfragen selbst festzulegen.
# respond to DNS queries for this domain with 34.192.228.43 the first time
# it is requested and then 192.168.1.1 every time after that
A.34.192.228.43.1time.192.168.1.1.forever.rebind.network
# respond first with 34.192.228.43, then 192.168.1.1 the next five times,
# and then start all over again (1, then 5, forever...)
A.34.192.228.43.1time.192.168.1.1.5times.repeat.rebind.network
Das Tolle an dynamischen DNS-Rebinding-Regeln ist, dass Sie keinen eigenen bösartigen DNS-Server aufsetzen müssen, um die Same-Origin-Policy des Browsers auszunutzen. Stattdessen kann jeder denselben öffentlichen whonow-Server nutzen, der auf Port 53 von rebind.network läuft.
Hinweis: Sie sollten UUIDs (z. B. a06a5856-1fff-4415-9aa2-823230b05826) als Subdomain in jede DNS-Abfrage an einen whonow-Server einfügen. Diese wurden in den Beispielen in dieser README der Kürze halber weggelassen, aber gehen Sie davon aus, dass Anfragen an *.rebind.network eigentlich *.a06a5856-1fff-4415-9aa2-823230b05826.rebind.network sein sollten. Weitere Informationen dazu finden Sie im Abschnitt Fallstricke.
HAFTUNGSAUSSCHLUSS: Diese Software dient nur zu Bildungszwecken. Diese Software sollte nicht für illegale Aktivitäten verwendet werden. Der Autor übernimmt keine Verantwortung für ihre Nutzung. Sei kein Idiot.
Das Schöne an whonow ist, dass Sie das Verhalten von DNS-Antworten über Subdomains im Domänennamen selbst definieren können. Mit nur wenigen einfachen Schlüsselwörtern: A, (n)times, forever und repeat können Sie komplexes und leistungsstarkes DNS-Verhalten definieren.
whonow-AnfrageA.<ip-address>.<rule>[.<ip-address>.<rule>[.<ip-address>.<rule>]][.uuid/random-string].example.com
A: Der Typ der DNS-Anfrage. Derzeit werden nur A-Records unterstützt, aber AAAA sollte bald kommen.<ip-address>: eine IPv4-Adresse (IPv6 kommt bald) mit jedem Oktett durch einen Punkt getrennt (z. B. 192.168.1.1).<rule>: Eine von drei Regeln
(n)time[s]: Die Anzahl der Male, die der DNS-Server mit der vorherigen IP-Adresse antworten soll. Akzeptiert sowohl Plural- als auch Singular-Schreibweisen (z. B. 1time, 3times, 5000times).forever: Antworte für immer mit der vorherigen IP-Adresse.repeat: Wiederhole den gesamten Regelsatz von Anfang an.[uuid/random-string]: Eine zufällige Zeichenfolge, um DNS-Rebind-Angriffe auf dieselben IP-Adressen voneinander zu trennen. Weitere Informationen finden Sie unter .Regeln können miteinander verkettet werden, um komplexes Antwortverhalten zu bilden.
# always respond with 192.168.1.1. This isn't really DNS rebinding
# but it still works
A.192.168.1.1.forever.rebind.network
# alternate between localhost and 10.0.0.1 forever
A.127.0.0.1.1time.10.0.0.1.1time.repeat.rebind.network
# first respond with 192.168.1.1 then 192.168.1.2. Now respond 192.168.1.3 forever.
A.192.168.1.1.1time.192.168.1.2.2times.192.168.1.3.forever.rebind.network
# respond with 34.192.228.43 the first time, then whatever `whonow --default-address`
# is set to forever after that (default: 127.0.0.1)
A.34.192.228.43.1time.rebind.network
Jede Bezeichnung [Subdomain] darf null bis 63 Zeichen enthalten... Der vollständige Domänenname darf in seiner textuellen Darstellung eine Länge von 253 Zeichen nicht überschreiten. (von der DNS-Wikipedia-Seite)
Außerdem darf es nicht mehr als 127 Bezeichnungen/Subdomains geben.
Jede eindeutige Domänennamenanfrage an whonow erstellt ein kleines zustandsspeicherndes Programm im RAM des Servers. Wenn dieser Domänenname das nächste Mal angefordert wird, wird der Programmzähler erhöht und der Zustand kann geändert werden. Alle eindeutigen Domänennamen sind ihre eigenen eindeutigen Programminstanzen. Um Konflikte mit anderen Benutzern zu vermeiden oder zu verhindern, dass der Zustand Ihres Domänennamenprogramms versehentlich erhöht wird, sollten Sie nach Ihren Regeldefinitionen eine UUID-Subdomain hinzufügen. Diese UUID sollte niemals wiederverwendet werden.
# this
A.127.0.0.1.1time.10.0.0.1.1time.repeat.8f058b82-4c39-4dfe-91f7-9b07bcd7fbd4.rebind.network
# not this
A.127.0.0.1.1time.10.0.0.1.1time.repeat.rebind.network
--max-ram-domainsDer mit jedem eindeutigen Domänennamen verbundene Programmzustand wird von whonow im RAM gespeichert. Um zu vermeiden, dass der RAM ausgeht, wird eine Obergrenze für die Anzahl der eindeutigen Domänen festgelegt, deren Programmzustand gleichzeitig verwaltet werden kann. Standardmäßig ist dieser Wert auf 10.000.000 gesetzt, kann aber mit --max-ram-domains konfiguriert werden. Sobald dieses Limit erreicht ist, werden Domänennamen und ihr gespeicherter Programmzustand in der Reihenfolge entfernt, in der sie hinzugefügt wurden (FIFO).
whonow-ServersUm Ihren eigenen whonow-Server in der Cloud zu betreiben, verwenden Sie das Admin-Panel Ihres Domainnamen-Anbieters, um einen benutzerdefinierten Nameserver zu konfigurieren, der auf Ihre VPS zeigt. Installieren Sie dann whonow auf dieser VPS und stellen Sie sicher, dass es auf Port 53 (dem Standard-DNS-Port) läuft und dass Port 53 vom Internet aus erreichbar ist.
# install
npm install --cli -g whonow@latest
# run it!
whonow --port 53
# you can also run it with more logging to stdout and save DNS activity to CSV
whonow --port 53 --logfile log.csv --verbose

Wenn Ihnen das ☝ zu viel Aufwand ist, können Sie einfach den öffentlichen whonow-Server nutzen, der auf Port 53 von rebind.network läuft.🌐.
$ whonow --help
usage: whonow [-h] [-v] [-p PORT] [-d DEFAULT_ANSWER] [-b MAX_RAM_DOMAINS]
[-l LOGFILE] [-m]
A malicious DNS server for executing DNS Rebinding attacks on the fly.
Optional arguments:
-h, --help Show this help message and exit.
-v, --version Show program's version number and exit.
-p PORT, --port PORT What port to run the DNS server on (default: 53).
-d DEFAULT_ANSWER, --default-answer DEFAULT_ANSWER
The default IP address to respond with if no rule is
found (default: "127.0.0.1").
-b MAX_RAM_DOMAINS, --max-ram-domains MAX_RAM_DOMAINS
The number of domain name records to store in RAM at
once. Once the number of unique domain names queried
surpasses this number domains will be removed from
memory in the order they were requested. Domains that
have been removed in this way will have their program
state reset the next time they are queried (default:
10000000).
-l LOGFILE, --logfile LOGFILE
Log to CSV file (default: false)
-m, --verbose Log request timestamp and sender IP address to stdout
(default: false)
Ein whonow-Server muss auf localhost:15353 laufen, um die Tests in test.js auszuführen.
# in one terminal
whonow -p 15353
# in another terminal
cd path/to/node_modules/whonow
npm test
example.com: Ein Domänenname, der auf einen whonow-Nameserver zeigt, wie die öffentlich verfügbare whonow-Instanz auf rebind.network:53.