
Un serveur DNS « malveillant » pour exécuter des attaques de rebinding DNS à la volée (instance publique fonctionnant sur rebind.network:53)
Un serveur DNS malveillant pour exécuter des attaques de rebinding DNS à la volée. whonow vous permet de spécifier dynamiquement les réponses DNS et les règles de rebinding en utilisant les requêtes de domaine elles-mêmes.
# 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
Ce qui est génial avec les règles de rebinding DNS dynamiques, c'est que vous n'avez pas besoin de configurer votre propre serveur DNS malveillant pour commencer à exploiter la politique de même origine du navigateur. Au lieu de cela, tout le monde peut partager le même serveur whonow public fonctionnant sur le port 53 de rebind.network.
Note : Vous devez inclure des UUID (par exemple a06a5856-1fff-4415-9aa2-823230b05826) comme sous-domaine dans chaque requête DNS vers un serveur whonow. Ceux-ci ont été omis des exemples de ce README par souci de concision, mais supposez que les requêtes vers *.rebind.network doivent être *.a06a5856-1fff-4415-9aa2-823230b05826.rebind.network. Voir la section Gotchas pour plus d'informations sur la raison.
AVERTISSEMENT : Ce logiciel est destiné uniquement à des fins éducatives. Ce logiciel ne doit pas être utilisé pour des activités illégales. L'auteur n'est pas responsable de son utilisation. Ne soyez pas un connard.
La beauté de whonow est que vous pouvez définir le comportement des réponses DNS via des sous-domaines dans le nom de domaine lui-même. En utilisant seulement quelques mots-clés simples : A, (n)times, forever et repeat, vous pouvez définir un comportement DNS complexe et puissant.
whonowA.<ip-address>.<rule>[.<ip-address>.<rule>[.<ip-address>.<rule>]][.uuid/random-string].example.com
A : Le type de requête DNS. Actuellement, seuls les enregistrements A sont pris en charge, mais AAAA devrait arriver bientôt.<ip-address> : une adresse ipv4 (ipv6 bientôt) avec chaque octet séparé par un point (par exemple 192.168.1.1).<rule> : L'une des trois règles suivantes :
(n)time[s] : Le nombre de fois que le serveur DNS doit répondre avec l'adresse IP précédente. Accepte à la fois les chaînes plurielles et singulières (par exemple 1time, 3times, 5000times).forever : Répondre avec l'adresse IP précédente pour toujours.repeat : Répéter l'ensemble des règles depuis le début.[uuid/random-string] : Une chaîne aléatoire pour garder les attaques de rebinding DNS contre les mêmes adresses IP séparées les unes des autres. Voir Astuces pour plus d'informations.example.com : Un nom de domaine pointant vers un serveur de noms , comme l'instance publique disponible sur .Les règles peuvent être enchaînées pour former un comportement de réponse complexe.
# 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
Chaque étiquette [sous-domaine] peut contenir de zéro à 63 caractères... Le nom de domaine complet ne peut pas dépasser 253 caractères dans sa représentation textuelle. (de la page Wikipedia DNS)
De plus, il ne peut pas y avoir plus de 127 étiquettes/sous-domaines.
Chaque requête de nom de domaine unique à whonow crée un petit programme de sauvegarde d'état dans la RAM du serveur. La prochaine fois que ce nom de domaine est demandé, le compteur de programme s'incrémente et l'état peut être modifié. Tous les noms de domaine uniques sont leurs propres instances de programme uniques. Pour éviter les conflits avec d'autres utilisateurs ou que l'état de votre programme de nom de domaine soit incrémenté involontairement, vous devez ajouter un sous-domaine UUID après vos définitions de règles. Cet UUID ne doit jamais être réutilisé.
# 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-domainsL'état du programme associé à chaque nom de domaine unique est stocké par whonow en RAM. Pour éviter de manquer de RAM, une limite supérieure est placée sur le nombre de domaines uniques dont l'état du programme peut être géré en même temps. Par défaut, cette valeur est définie à 10 000 000, mais peut être configurée avec --max-ram-domains. Une fois cette limite atteinte, les noms de domaine et leur état de programme sauvegardé seront supprimés dans l'ordre où ils ont été ajoutés (FIFO).
whonowPour exécuter votre propre serveur whonow dans le cloud, utilisez le panneau d'administration de votre fournisseur de noms de domaine pour configurer un serveur de noms personnalisé pointant vers votre VPS. Ensuite, installez whonow sur ce VPS et assurez-vous qu'il fonctionne sur le port 53 (le port DNS par défaut) et que le port 53 est accessible depuis 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

Si cela ☝ est trop compliqué, n'hésitez pas à utiliser le serveur whonow public fonctionnant sur le port 53 de 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 serveur whonow doit être en cours d'exécution sur localhost:15353 pour effectuer les tests dans test.js
# in one terminal
whonow -p 15353
# in another terminal
cd path/to/node_modules/whonow
npm test
whonowwhonowrebind.network:53