DNS反向查詢


DNS反向查詢是什么

DNS反向查詢大概的一個定義就是:
從 IP 地址獲取 PTR 記錄。也就是說,通過使用一些網絡工具可以將 IP 地址轉換為主機名。 實際上,PRT 代表 POINTER,在 DNS 系統有唯一性,將 IP 地址與規范化的主機名聯系起來。PTR 記錄其實是 NDS 系統的一部分,但是由專門的區域文件組成的,使用的是傳統的 in-addr.arpa 格式。

最簡單的理解就是使用一個在線服務來查詢一個IP對應的域名服務

原理就是 dig -x ip

➜  ~ dig -x 192.30.252.153

...

;; ANSWER SECTION:
153.252.30.192.in-addr.arpa. 3505 IN    PTR    lb-192-30-252-153-iad.github.com.

...

反向查詢的一個應用,是可以防止垃圾郵件,即驗證發送郵件的IP地址,是否真的有它所聲稱的域名,如果反向查詢和聲稱不一致,那么就可以認為有風險。

注意:
反向查詢是根據一個資源記錄查詢域名,不一定是IP。這個資源記錄可能是A記錄,也可能是CNAME記錄或者MX記錄(見“DNS開源服務器BIND最小配置詳解”),而PTR記錄用於從IP地址反查域名。

DNS反向查詢的使用場景

  • rDNS的最初用途:通過traceroute,ping和SMTP電子郵件的“Received:”跟蹤標題字段進行網絡故障排除,網站跟蹤用戶(特別是在Internet論壇上)等。

  • 一種電子郵件反垃圾郵件技術:檢查rDNS中的域名是否可能來自撥號用戶,或動態分配的地址不太可能被合法郵件服務器使用。這些IP地址的所有者通常會為其分配通用的rDNS名稱,例如“1-2-3-4-dynamic-ip.example.com”。一些反垃圾郵件過濾器假設來自這些地址的電子郵件可能是垃圾郵件,並可能拒絕連接。

  • 向確認反向DNS(FCrDNS)驗證可以創建驗證的形式示出了域名的所有者,並且已經在給定IP地址的服務器的所有者之間的關系有效。雖然不是很正全面,但這種驗證足夠強大,經常用於白名單目的,因為垃圾郵件制造者和釣魚者在使用僵屍計算機偽造域記錄時通常無法實現前向驗證。

  • 系統日志記錄或監視工具通常會接收僅由IP地址指定的相關設備的條目。為了提供更多可用的數據,這些程序通常在寫入日志之前執行反向查找,從而寫入名稱而不是IP地址。

從使用場景中也能發現這個技術點也是攻守雙方博弈的戰場,防守方通過反向查詢來確認攻擊方的信息,而攻擊方為了隱藏自己的信息,也會讓反向查詢得到的域名並不是真實的,因為攻擊者會在反向查找的記錄中插入偽造的數據,達到迷惑的作用。

 

實驗

為了加強理解,我寫了段py代碼來幫助理解

import sys
import socket

try:
    # gethostbyaddr的作用是通過IPv4的地址來獲取主機信息,並放在hostent結構體中
    result = socket.gethostbyaddr(sys.argv[1])

    # 顯示查找到的主機名
    print("Primary hostname: " + result[0])

    # 顯示還返回的可用地址列表
    print("Addresses: ")
    for item in result[2]:
        print("           " + item)
except socket.error as e:
    print("Failed to look up hostname:", e)

 

運行:查詢 127.0.0.1 ,得到了域名

(python3) ➜  dns_anti_found python foundip.py 127.0.0.1      
Primary hostname: localhost
Addresses: 
           127.0.0.1

 

運行:查詢百度的ip 115.239.211.110,發現是Unknown host

(python3) ➜  dns_anti_found python foundip.py 115.239.211.110
Failed to look up hostname: [Errno 1] Unknown host

 

我猜測,不是每一個IP地址都存在反向的映射(事實上很多IP地址就沒有對應的域名),后面查了一下,發現這個猜測是錯誤的,

手動在/etc/hosts下增加一下映射

發現域名可以查詢出來了

查詢網上資料之后,得出結論,要使用socket.gethostXxx( )函數,本地要有反向解析的服務。如果你使用的不是服務器,是沒有反向解析服務的,如果你使用本地電腦,肯定沒有域名解析服服務。那么 本地的/etc/hosts就會提供DNS服務。你添加上記錄,那么能查詢出來,你沒添加上去,那么就什么都沒有,只能報錯了。

 

參考#

https://www.cnblogs.com/wunaozai/p/3753731.html
https://www.dnsqueries.com/zh/reverse_lookup.php
https://blog.csdn.net/t_tzz/article/details/79779226

 
轉自https://www.cnblogs.com/mysticbinary/p/13344930.html

喜歡這篇文章?歡迎打賞~~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM