
「悪意のある」DNSサーバー - DNS Rebinding攻撃をその場で実行するためのもの(rebind.network:53 で動作中の公開インスタンス)
DNS Rebinding攻撃をその場で実行するための悪意のあるDNSサーバーです。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リバウンドルールの素晴らしい点は、ブラウザの同一生成元ポリシーを悪用するために、自分自身の悪意のあるDNSサーバーを立ち上げる必要がないことです。代わりに、誰もが rebind.network のポート53で動作している同じパブリックな whonow サーバーを共有できます。
注: UUID(例:a06a5856-1fff-4415-9aa2-823230b05826)をサブドメインとして各DNSルックアップに含める必要があります。これらのUUIDは、このREADMEの例では簡潔にするために省略されていますが、*.rebind.network へのリクエストは *.a06a5856-1fff-4415-9aa2-823230b05826.rebind.network であると想定してください。詳細については、注意点セクションを参照してください。
免責事項:このソフトウェアは教育目的のみです。このソフトウェアを違法行為に使用してはなりません。作者はその使用について責任を負いません。バカなことをしないでください。
whonow の素晴らしさは、ドメイン名自体のサブドメインを介してDNS応答の動作を定義できる点にあります。A、(n)times、forever、repeat といういくつかの単純なキーワードのみを使用して、複雑で強力なDNS動作を定義できます。
whonow リクエストの構造A.<ip-address>.<rule>[.<ip-address>.<rule>[.<ip-address>.<rule>]][.uuid/random-string].example.com
A: DNSリクエストのタイプ。現在は A レコードのみサポートされていますが、AAAA は近日対応予定です。<ip-address>: 各オクテットをピリオドで区切ったIPv4アドレス(例:192.168.1.1)。IPv6は近日対応予定。<rule>: 以下の3つのルールのいずれか。
(n)time[s]: DNSサーバーが前のIPアドレスで応答する回数。複数形と単数形の両方を受け入れます(例:1time, 3times, 5000times)。forever: 前のIPアドレスで永久に応答します。repeat: ルールのセット全体を最初から繰り返します。[uuid/random-string]: 同じIPアドレスに対するDNSリバウンド攻撃を互いに分離するためのランダムな文字列。詳細は注意点を参照してください。example.com: whonow ネームサーバーを指すドメイン名。例えば、公開されている の インスタンスです。ルールは連鎖させて複雑な応答動作を形成できます。
# 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 Wikipediaページより)
さらに、ラベル/サブドメインは127個を超えてはなりません。
whonow への一意のドメイン名リクエストごとに、サーバーのRAM内に小さな状態保存プログラムが作成されます。次回そのドメイン名がリクエストされると、プログラムカウンタがインクリメントされ、状態が変更される可能性があります。すべての一意のドメイン名は、それぞれ独自のプログラムインスタンスです。他のユーザーと衝突したり、ドメイン名プログラムの状態が誤ってインクリメントされたりしないように、ルール定義の後に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 によってRAMに保存されます。RAM不足を防ぐために、同時に管理できる一意のドメインのプログラム状態の数に上限が設定されています。デフォルトではこの値は10,000,000に設定されていますが、--max-ram-domains で設定できます。この制限に達すると、ドメイン名とその保存されたプログラム状態は、追加された順序(FIFO)で削除されます。
whonow サーバーを実行するクラウド上で自分自身の whonow サーバーを実行するには、ドメイン名プロバイダーの管理パネルを使用して、VPSを指すカスタムネームサーバーを設定します。次に、そのVPSに whonow をインストールし、ポート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

もしそれが面倒なら、rebind.network のポート53で動作しているパブリックな whonow サーバーを自由に使用してください。🌐.
$ 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)
test.js のテストを実行するには、whonow サーバーが localhost:15353 で実行されている必要があります。
# in one terminal
whonow -p 15353
# in another terminal
cd path/to/node_modules/whonow
npm test
rebind.network:53whonow