今天突然發生了一件令人心驚膽戰的事情,雖然最後似乎是虛驚一場。就是我像平常一樣在 Windows 中的開啟 cmd 使用 nslookup 來解析網域的,卻發現解析到的 IP 為不正確 IP,不知道是哪裡的 IP 跟奇怪的網域。
一開始想說是不是我的設定有錯誤,還是 DNS Server 出問題了。後來越看越不對勁,懷疑自己是不是被攻擊,中了 DNS 劫持(DNS hijacking)或是 DNS 快取汙染(DNS cache poisoning)。
總之在同事與網友的協助下,最後發現似乎是路由器 D-Link 的 BUG,應該不是被攻擊啦,手動去更改電腦的IP就可以搞定,解決問題了,下面是完整的紀錄這次 DNS nslookup 故障的事件。
問題描述
環境為租屋處,沒有受到資安設備管理與監控。
簡易架構如下:
遇到的問題,房間中有兩台電腦,一台 Laptop 一台 PC,皆為 Windows Win10,
目前問題為 Laptop Win10 的 nslookup 使用時,大部分的網域,都沒辦法正確被解析。
譬如利用 nslookup 去解析網域:
hackercat.org
ithome.com.tw
會回應奇怪的 78.xx.xx.xx IP跟 domain.name 網域,
hackercat.org -> 78.47.226.171 Aliases: hackercat.org.domain.name
ithome.com.tw -> 78.47.226.171 Aliases: ithome.com.tw.domain.name
上面解出來的都不是這兩個網站真正的 IP,如下圖:
(不止這兩個,試過很多個都是一樣的情形)
平常我預設使用的 DNS Server 是自訂的 8.8.8.8 跟 8.8.4.4,
所以懷疑是否為 Google 的 DNS 出問題,
有嘗試把 Server 設成 168.95.1.1,仍然得到一樣的結果。
但是 Laptop Win10 當中的虛擬機 Kali Linux,使用 nslookup 卻正常,如下圖:
hackercat.org -> 35.213.167.241
ithome.com.tw -> 220.130.119.130
得到正常回應(注意,這邊解出來的 IP,才是正確的 IP)
而 Laptop Win10 當中雖然 nslookup 解析有問題,
可是瀏覽器上網正常,利用 Nmap 或是 ping 去解析來的 IP 也正常
譬如下圖:
嘗試方法
VPN
如果啟用Laptop Win10 公司 VPN 的話,則 nslookup 可以正常使用解析正常 IP。
更換DNS Server
如同上面提過,將 Server 設為 8.8.8.8 或 168.95.1.1 或 1.1.1.1,
仍然都是回應一樣奇怪的錯誤結果,78.xx.xx.xx 的這組 IP,還有奇怪的「domain.name」網域。
hosts file
當發現更換 DNS Server 沒有用之後,開始懷疑與害怕自己是不是被入侵了,中了DNS攻擊。所以就先去確認 hosts file,但也確認 Win10本 機中的 hosts 檔案並未遭受到惡意修改。
順便備註:hosts 檔案的路徑在 C:\Windows\System32\drivers\etc
DHCP重新取得 IP
ipconfig /release
ipconfig /renew
嘗試用上面的指令,讓 DHCP 重新取得 IP。但上面兩個指令完成後,再使用 nslookup,仍然得到同樣的錯誤結果。
清除DNS Cache
使用 ipconfig /flushdns 嘗試清除 DNS cache ,但清除後結果一樣。
ipconfig /flushdns
tracert
利用 tracert 偵查看看,是否會通過 78.47.226.171 (總之就是78.xx.xx.xx)的節點,
測試完的結果看似無異狀,沒有經過 78.xx.xx.xx 的節點。
Wireshark錄封包
如果是被攻擊被入侵,應該會有傳出去的指令或是檔案吧(?
總之不管如何,就是先錄錄封包來看看。
側錄封包的結果,似乎有點突破(?!
幾乎靜置的狀態,好像也是一直 query 一堆奇怪的 domain
都是 domain.name 的網域。越想越不對勁。
但 VirusTotal 查這個 domain.name 網域看,好像又沒問題。
Who is hijacking my NXDOMAINs
資安群組中的大神分享的網路文章
https://harigovind.org/articles/who-is-hijacking-my-nxdomains/
英文不是很好,但乍看之下,這個文章作者遇到的問題跟我很相似,
domain 都被解析到 78.xx.xx.xx 這個 IP,也都是解到 domain.name。
簡單描述一下他的內容:
他一開始是解析一個他確定不存在的網域,結果卻發現 DNS query 有回應,
回應的 IP 是 78.47.226.171,都指向 <domain>.domain.name。
那中間有一段分析過程,若要深入了解原理建議還看他原文,我沒辦法說清楚XD,
總之後來他也有認為是不是遭受了DNS hijacking 攻擊,
但他覺得註冊 <domain>.domain.name 的價格不算便宜,
花大錢註冊一大堆 <domain>.domain.name 來做這種攻擊不符合經濟效益,
而且如果是這樣,應該會有一堆人熱絡的討論不會只有他注意到,所以應該是路由器BUG。
我看完是先試試看,嘗試解一些不存在的網域,
的確我的問題也一樣,不存在的網域也會被解出來到這個 IP 跟網域:
所以看起來是路由器問題?
PC Win10 確認
上面提到懷疑是路由器被攻擊,或是路由器的BUG,
而我房間中的 Laptop 跟 PC 是接到同一台 Switch(可以參考最上面的架構圖),
所以 Switch 出去就是同一台路由器麻,就先試試看我的 PC Win10,
想說如果路由器被DNS劫持,應該我的 PC Win 10 也會有問題。
但測試過後 PC Win10 的 nslookup 沒有問題:
完全沒有道理啊!!!極度崩潰
到這個階段,我真的滿擔心是被入侵了。就「非常簡單」的用netstat/Process Explorer/工作管理員。觀察了一下筆電是否有明顯異常連線、異常的程式在執行、或是CPU與網路流量異常。但初步觀察似乎沒有明顯異狀。
手動更改 Laptop Win10 的固定 IP
大神同事建議,手動更改 IP看看(前面他有建議過DHCP重新取得,不過DHCP重抓無效)。
先確認一下內網有哪些 IP 被占用,避免重複使用 IP:
手動更改 IP,不使用 DHCP:
更改完後,再試試看 nslookup,結果就成功啦!!!!
真心搞不懂原因,不過解決了很開心。
確定路由器設定
回頭稍微提上面的那篇文章
https://harigovind.org/articles/who-is-hijacking-my-nxdomains/
這篇文章的作者最後其實有提到解決方法,不過我還沒嘗試他的方法就解決了,
這邊還是提供一下他的解決方法。
首先,他跟我都一樣是使用 D-Link,先連線到路由器,
我的話就是連到 192.168.100.1(也就是我 Switch 出去的 Gatway)
產品是 D-Link 的 DIR-612,管理介面如下,預設帳號密碼為 Admin:(blank) (密碼空白)
這邊我稍微備註一下:
最開頭的架構圖當中的 Switch 是我自己的 ZYXEL 的 L2 Switch,
這個 D-Link DIR-612 是在架構中的 Router 的位置。
按照他文章的說法,是 D-Link 的問題(dlinkrouter或dlink),
只要把 DHCP 設定當中的 domain.name 修改成類似 my-home-network(只要是無效的 TLD 即可)
不過我自己後來是沒有去修改我的 D-Link 設定,因為手動設定固定 IP 後就解決問題了。
希望這篇文章可以幫助到有遇到同樣問題的人,或是遇到 DNS 有問題或是懷疑中 DNS hijack or poison的人,可透過這篇文章,稍微試試看有甚麼方法除錯。(同時也感謝我遇到問題時,熱心給予我建議與協助的同事和網友!)
最後稍微提一下,因為我沒有把握確定問題點,
也不完全排除,說不定內網真的有人針對我的IP進行Poison攻擊,
我也都不認識租屋處的其他室友。
補充大神的回覆1:
因為DHCP Server(範例是dlink)配的網域名稱是domain.nam,用dhcp取得ip就會在作業系統上加入domain.name網域主機,當dns解析不到時就往上層問,就是往domain.name,這個網址有很多在78.27.x.x的ip。所以…解法很多,改成固定ip不吃dhcp server的網域、或改掉dhcp。
補充大神的回覆2:
跟 dlink 無關,跟 dhcp server 配置的網域名稱尾碼有關。這些設定其實是微軟要解決 AD 網域名稱解析的配套,用在非 AD 環境就有點多餘,這是為什麼 Kali 會沒事,因為 Linux 不來這一套。把「附加主要及連線特定的DNS尾碼」關掉應該就好,可依照下圖: