資產收集對抗-子域名爆破

飄渺紅塵✨發表於2022-03-03

  子域名爆破,是發現多資產的一個很好的方法,在子域名爆破中,經常會遇到泛解析問題

  什麼是泛解析呢(參考百度百科)?

泛域名解析是:*.域名解析到同一IP。
域名解析是:子域名.域名解析到同一IP。

  這為我們去做子域名爆破,帶來了極大的不便,以前子域名爆破常用的是layer子域名挖掘機. 不過layer子域名挖掘機,在跑具有泛解析的站的時候,就不是那麼適用

   最近做漏洞挖掘的時候,發現跑的很多資產都是無效資產,解決這個問題,對資訊收集很有幫助

   前幾天朋友給我發了一個他自己寫的子域名爆破工具,用了下,感覺不錯,這裡簡單解讀下:

   這裡以淘寶和百度為例子:ping 一個絕對隨機不可能存在的域名,他解析了,那麼說明他大概率使用了泛解析

  

  

  結論:說明淘寶可能存在泛解析問題

  以百度為例子:

    

 

    結論:說明百度可能不存在泛解析問題

  針對百度,我們可以直接使用layer子域名挖掘機等子域名爆破工具,而針對淘寶的資產,我們不能使用layer子域名挖掘機等常規工具

  那麼我們需要做第一步,識別泛解析:

  這邊的思路如下:

    

  

 

  

 

   這裡使用到的python3庫:aiodns,他很強大,aiodns支援的查詢型別: A, AAAA, ANY, CAA, CNAME, MX, NAPTR, NS, PTR, SOA, SRV, TXT.

  五次完全A記錄解析成功,認為存在泛解析,如果不存在泛解析問題,就常規子域名收集一把梭,如果檢測出泛解析,就使用破泛解析的子域名爆破工具

   破泛解析實現思路:

   

 

   

  剛剛演示了泛解析判斷是否存在,仍然以資產淘寶為例子:

  測試Demo:

import asyncio
import aiodns
import sys
loop = asyncio.get_event_loop()
resolver = aiodns.DNSResolver(loop=loop)

async def query(name, query_type):
    return await resolver.query(name, query_type)

try:
    coro = query(str(sys.argv[1]), 'CNAME')
    result = loop.run_until_complete(coro)
    print(result)
except Exception as e:
    print(e)

  CNAME查詢幾個不存在的淘寶域名,也是一樣的思路,迴圈多次不存在的域名,如果訪問不存在的域名,CNAME為shop.taobao.com

  

 

   

  

 

   那麼在子域名爆破的時候可以先判斷CNAME,這裡可以自己維護的特定廠商的CNAME列表

   程式碼實現:

    

 

   先查詢CNAME記錄,如果包含shop.taobao.com就跳過

  

  同理方法3:A記錄查詢命中次數:

  如果A記錄查詢,命中相同ip>10,後續的爆破A記錄解析的域名就不展示記錄

   

 

 

 

  通過這種思路,域名泛解析的問題已經可以解決了

  域名深度問題:replace提取上一次的域名字首,加入到下一次fuzz+上一次的域名字首

   

 

 

   

 

  

 

   

  題外話: 判斷是否是真實業務?

    當域名很多的時候,探測域名是否是真實業務,顯得很重要,現在很多網站上門戶跳轉了,點選任意子域名都會走sso/portal,防止仍然存在泛解析問題:

  思路如下:

    

 

 

   

  效果如下:

      

 

  參考:

   (1)常用域名記錄參考:https://blog.51cto.com/hashlinux/1663860

   (2)處理泛解析子域名爆破工具參考:https://github.com/ldbfpiaoran/subdns

相關文章