iT邦幫忙

2024 iThome 鐵人賽

DAY 3
0
Security

資安這條路:系統化學習網站安全與網站滲透測試系列 第 3

資安這條路:Day 3 深入探索 DNS:從基礎概念到資安風險

  • 分享至 

  • xImage
  •  

Day 3

前兩篇文章我們已經設定好環境,並更深入了解前後端的概念。現在,我們繼續拆解,當我們面對一個網站時,還會發現哪些架構呢?

以我們的 nodelab.feifei.tw 為例,上一篇提到了域名和子域名的概念,接下來針對域名進行詳細說明。

域名的存在是為了讓我們更容易記住並找到所需的資源,其背後對應著一組 IP 位址。

在討論域名前,先來了解一下 IP 位址的概念。

什麼是 IP 位址

IP 位址(Internet Protocol Address)是指派給網路上每個設備的獨特數字識別碼。其主要功能包括:

  1. 識別設備:在網路中唯一標識一台電腦或設備。
  2. 定位設備:協助資料封包在網路中找到正確的目標設備。

前兩篇提到的 HTTP 所傳送的內容,就是封包。

IP 位址的類型

  1. IPv4(Internet Protocol version 4)

    • 格式:由四組數字組成,每組數字介於 0-255 之間,用點號分隔。
    • 範例:192.168.1.1
    • 總數:約 43 億個獨特位址。
  2. IPv6(Internet Protocol version 6)

    • 格式:由八組四位十六進位數組成,用冒號分隔。
    • 範例:2001:0db8:85a3:0000:0000:8a2e:0370:7334
    • 總數:約 340 無量大數 個獨特位址(遠多於 IPv4)。

IP 位址的重要性

  1. 網路通訊:所有的網路通訊都依賴 IP 位址來識別來源和目標。
  2. 路由:IP 位址用於決定資料封包應該如何在網路中傳輸。
  3. 網路設定:IP 位址是設定網路設備(如路由器、伺服器)的關鍵部分。

為什麼需要域名?

雖然 IP 位址對網路通訊至關重要,但它們不容易被人記住和使用。

這就是我們需要域名系統(DNS,Domain Name System)的原因:

  1. 容易記憶:域名(如 www.example.com)比 IP 位址(如 203.0.113.1)更容易記住。
  2. 靈活性:域名允許網站在不改變其公開位址的情況下更換 IP 位址。
  3. 虛擬主機:多個網站可以共用同一個 IP 位址,透過不同的域名來區分。
  4. 負載平衡:一個域名可以對應多個 IP 位址,用於分散流量。
  5. 品牌識別:域名可以包含公司名稱或品牌,提高辨識度。

IP 位址和域名的關係

  • DNS 伺服器負責將域名轉換為相應的 IP 位址。
  • 當你在瀏覽器中輸入一個域名時,你的設備會查詢 DNS 伺服器來獲取對應的 IP 位址。
  • 取得 IP 位址後,我們的設備才能與目標伺服器建立連線。

image

在 Windows 和 Linux 系統中,都可以使用以下指令:

nslookup nodelab.feifei.tw

image

網站安全與域名的關係

在進行網站安全滲透測試時,域名往往是獲取目標資訊的重要起點。

透過對域名的深入分析,可以取得大量資訊。

子域名列舉

許多企業會為不同的服務或部門使用不同的子域名。

像 Sublist3r、Amass 等工具可用於自動化子域名發現。

測試環境(如 test.example.com)往往安全措施較弱,是潛在的突破口。

許多工程師為了測試網站,也會將測試伺服器的 IP 對應到 test 或 testweb 這種子域名。

線上工具可能會使用 DNSDumpster.com 來檢查對應的資訊。

DNSDumpster 截圖

輸入對應的「主要域名」就可以透過該工具查詢相關資訊。

DNS 伺服器

DNS 伺服器有不同的廠商可供使用,可以是自己架設的 DNS 伺服器,也可以放在購買域名的廠商處:

DNS Server

如圖所示,可以看到 feifei.tw 是放在 CDN 廠商 CloudflareNet 中。

DNS 記錄分析

DNS 伺服器中有許多不同種類的記錄:

  1. A 記錄:直接指向 IP 位址,可能揭露內部網路結構。
  2. MX 記錄:郵件伺服器資訊,可能成為社交工程攻擊的目標。
  3. TXT 記錄:常包含 SPF、DKIM 等郵件安全設定,也可能包含敏感資訊。
  4. CNAME 記錄:可能顯示使用的第三方服務。

A 記錄可能讓我們得知機器的位置,甚至是機器廠商。

image

A 記錄(Address Record)

  • 定義:A 記錄將域名直接對應到一個 IPv4 位址。

  • 範例

    example.com.    IN    A    203.0.113.1
    
  • 資安考量

    • 可能揭露內部網路結構:
      • 多個子域名指向相近的 IP 範圍,可能暴露網路拓撲。
      • 可能洩露內部伺服器的 IP 位址。
    • 可能成為直接攻擊目標:
      • 攻擊者可以直接針對這些 IP 進行掃描或攻擊。
  • 安全建議

    • 使用防火牆和入侵檢測系統保護公開的 IP 位址。
    • 考慮使用 CDN 或反向代理來隱藏真實 IP。

MX 記錄(Mail Exchanger Record)

  • 定義:MX 記錄指定負責處理該域名郵件的郵件伺服器。

  • 範例

    example.com.    IN    MX    10    mail.example.com.
    
  • 資安考量

    • 社交工程攻擊的目標
      • 攻擊者可能利用這些資訊進行釣魚或冒充攻擊。
    • 郵件系統可能成為攻擊焦點
      • 暴露的郵件伺服器可能遭受垃圾郵件或暴力破解攻擊。
  • 安全建議

    • 加強郵件過濾和防護措施。
    • 使用 SPF、DKIM 和 DMARC 強化郵件安全。
防禦措施
  1. SPF(Sender Policy Framework)

    • 目的:防止郵件詐騙和垃圾郵件。

    • 運作方式:指定哪些郵件伺服器被授權發送該域名的電子郵件。

    • 範例

      v=spf1 ip4:192.0.2.0/24 include:_spf.example.com -all
      
    • 解釋:此 SPF 記錄允許來自 192.0.2.0/24 IP 範圍的伺服器發送郵件,同時包含另一個 SPF 記錄,並拒絕所有其他來源。

  2. DKIM(DomainKeys Identified Mail)

    • 目的:驗證郵件的完整性,確保郵件在傳輸過程中未被篡改。

    • 運作方式:使用簽章來驗證郵件。

    • 範例

      v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC...
      
    • 解釋:這是 DKIM 的公鑰,用於驗證郵件的數位簽章。實際的 TXT 記錄會更長,包含完整的公鑰。

  3. DMARC(Domain-based Message Authentication, Reporting & Conformance)

    • 目的:結合 SPF 和 DKIM,提供更完整的郵件驗證策略。

    • 範例

      v=DMARC1; p=quarantine; rua=mailto:dmarc-reports@example.com
      
    • 解釋:此 DMARC 策略指示接收方將未通過驗證的郵件隔離,並將報告發送到指定的信箱。

TXT 記錄(Text Record)

  • 定義:TXT 記錄用於儲存文字資訊,常用於各種驗證和安全設定。

  • 範例

    example.com.    IN    TXT    "v=spf1 ip4:203.0.113.0/24 -all"
    
  • 資安考量

    • 可能包含敏感資訊
      • 可能包含 API 金鑰、驗證 Token 等敏感資料。
    • 郵件安全設定
      • SPF、DKIM、DMARC 設定對郵件安全至關重要。
  • 安全建議

    • 定期審核 TXT 記錄,確保不包含敏感資訊。

CNAME 記錄(Canonical Name Record)

  • 定義:CNAME 記錄將一個域名指向另一個域名。

  • 範例

    blog.example.com.    IN    CNAME    example.bloghost.com.
    
  • 資安考量

    • 洩露第三方服務使用情況
      • 可能洩露組織使用的雲服務或其他外部服務。
    • 潛在的相依風險
      • 如果指向的服務受損,可能影響該域名。
  • 安全建議

    • 謹慎選擇和監控第三方服務。
    • 定期審核 CNAME 記錄,確保它們仍然有效且安全。

歷史 DNS 記錄

image

網址:https://viewdns.info/iphistory/?domain=feifei.tw

可以透過 viewdns.info 免費使用,但查詢次數有限制。

可能發現已廢棄的系統

舊的 A 記錄可能指向已停用但未完全移除的系統。

這些系統可能未及時更新,存在安全漏洞。

識別組織結構變化

DNS 記錄的變更可能反映出組織架構或基礎設施的變化。

例如,MX 記錄的變更可能表示郵件系統遷移。

追蹤資產變動

透過歷史記錄可以了解組織的 IP 位址範圍變化。

有助於識別可能被遺忘的資產。

域名的層級結構

域名系統使用層級結構,從右到左閱讀:

  1. 頂級域名(Top-Level Domain,TLD)

    • 通用頂級域名(gTLD):如 .com、.org、.net

      • com:公司相關
      • org:組織
    • 國家頂級域名(ccTLD):如 .tw、.uk、.jp

  2. 二級域名(Second-Level Domain,SLD)

    • 位於 TLD 左側,如 example.com 中的 "example"
  3. 三級域名(Third-Level Domain)

  4. 更多子域名

    • 可以繼續向左增加,如 blog.shop.example.com

流程

napkin-selection (9)

  1. 輸入域名

    • 使用者在瀏覽器或應用程式中輸入網址(如 www.example.com
    • 系統首先檢查本地快取(瀏覽器快取、作業系統快取)
  2. 查找附近的 DNS 伺服器

    • 如果本地快取中沒有,系統會聯繫預設的 DNS 伺服器
    • 這通常是由網際網路服務供應商(ISP)提供的 DNS 伺服器
  3. 查詢對應 IP

    • DNS 伺服器開始遞迴查詢過程
    • 如果需要,會詢問其他 DNS 伺服器(根域名伺服器、頂級域名伺服器等)
  4. 回傳 IP

    • DNS 伺服器取得 IP 位址後,將其回傳給使用者的設備
    • 設備將這個 IP 位址存入本地快取中
  5. 進行連線

    • 使用取得的 IP 位址,設備與目標伺服器建立連線

快取

比較容易理解的比喻:

你去一家便利商店買東西。第一次去的時候,你可能需要四處尋找才能找到你要的商品。但是,下次再去的時候,你已經記住了商品的位置,可以直接走過去拿。這就像你的腦袋裡有了「商品位置的快取」。

快取的好處

  1. 提高速度:快取可以大幅減少域名解析的時間。
  2. 負載平衡:快取可以幫助分散對 DNS 伺服器的請求,實現一定程度的負載平衡。

工具使用

DNS 列舉和分析工具

1. Fierce

簡介

  • Fierce 是一個輕量級的 DNS 列舉工具。
  • 是 nmap、unicornscan、nessus 的前身。
  • 不支援 IPv6(AAAA)記錄。

安裝

sudo apt-get install fierce

image

使用

fierce --domain feifei.tw

image

2. DNSmap

簡介

  • DNSmap 是一個域名暴力列舉工具,可以找出 IP、域名、電子郵件或電話號碼等。
  • 主要用於字典檔暴力破解。

安裝

sudo apt-get install dnsmap

image

使用

dnsmap zonetransfer.me
dnsmap zonetransfer.me -w wordlist.txt
dnsmap zonetransfer.me -d 20  # 設定查詢間隔為 20ms

下載字典檔:

https://raw.githubusercontent.com/rbsec/dnscan/master/subdomains-100.txt

image

主要參數

  • -w FILE:指定字典檔,預設使用 dnsmap 內建字典。
  • -d Nms:設定兩次查詢的間隔時間,可以避免觸發 IDS/IPS,預設為 10ms。

3. DNSenum(速度較快)

簡介

  • 功能全面的 DNS 列舉工具。
  • 可以進行子域名暴力破解、區域傳輸(Zone Transfer)。
  • 透過 Google 搜尋對 Class C 網段進行 whois 查詢與反查。

安裝

sudo apt-get install dnsenum

image

使用

dnsenum feifei.tw
dnsenum feifei.tw --noreverse --dnsserver 8.8.8.8
dnsenum feifei.tw -f /path/to/wordlist.txt
dnsenum feifei.tw -r

image

主要參數

  • --noreverse:不進行名稱反向解析。
  • --dnsserver:指定 DNS 伺服器進行 A、NS、MX 查詢。
  • -f FILE:指定暴力破解用的字典檔。
  • -r:對 NS 查找到的網域再進行子網域查找。

輸出解析

  • NS 記錄:顯示域名伺服器資訊。
  • MX 記錄:顯示郵件交換伺服器資訊。
  • Zone Transfer & BIND:嘗試進行區域傳輸並顯示結果。
  • Brute Force & Class C:顯示暴力破解和 Class C 網段掃描結果。

使用建議

  1. 在進行任何掃描或列舉之前,請確保您有適當的授權。
  2. 使用這些工具可能會觸發目標系統的安全警報,請小心使用。
  3. 在正式環境中使用時,建議先在測試環境中熟悉工具的功能和輸出。
  4. 結合多個工具的結果可以取得更完整的資訊。

DNS 區域傳輸攻擊與防禦

背景介紹

DNS 區域傳輸(Zone Transfer)是一種允許 DNS 伺服器之間複製區域檔案的機制。

如果設定不當,可能被攻擊者利用來獲取整個域的 DNS 記錄。

攻擊目標

攻擊目標:zonetransfer.me

攻擊步驟

檢測名稱伺服器(Name Servers)

目的:查看目標域名有哪些名稱伺服器。

Linux 指令
dig +nostats +nocomments +nocmd NS zonetransfer.me

image

Windows 指令
nslookup -type=ns zonetransfer.me

image

確認區域傳輸的可行性

目的:檢查是否可以從外網存取 DNS 伺服器並執行區域傳輸。

Linux 指令
dig axfr zonetransfer.me @nsztm1.digi.ninja

dig

Windows 指令
nslookup
server nsztm1.digi.ninja
ls -d zonetransfer.me

nslookup

如果 ls -d zonetransfer.me 指令成功執行並回傳域名的詳細記錄,表示區域傳輸是允許的。

SOA(Start of Authority)記錄:包含有關區域的管理資訊。

SOA

防禦措施

修改 DNS 伺服器設定檔案以限制區域傳輸:

設定檔案路徑:/etc/named.conf

新增以下設定:

options {
    allow-transfer {
        1.2.3.4;
        5.6.7.8;
    };
};

這將限制區域傳輸只能從指定的 IP 位址執行。

實戰練習

  1. 請找出並輸入 nsztm1.digi.ninja. 之外的另一個名稱伺服器。
  2. 請查找並輸入 zonetransfer.me. 的 A 記錄對應的 IP 位址。

安全建議

  • 定期審核 DNS 設定。
  • 僅允許受信任的 IP 進行區域傳輸。
  • 監控異常的 DNS 查詢活動。
  • 使用 DNSSEC 加強 DNS 安全性。

總結

在這篇文章中,我們深入探討了域名系統(DNS)的重要性及其在網路安全中的角色。

學習:

  1. IP 位址和域名的基本概念及其關係
  2. DNS 的工作原理和解析流程
  3. 不同類型的 DNS 記錄(A、AAAA、NS、MX、TXT、CNAME)及其安全含義
  4. DNS 快取的作用和重要性
  5. 常見的 DNS 相關安全威脅,如 Zone Transfer 漏洞
  6. 各種 DNS 枚舉和分析工具的使用方法(Fierce、DNSmap、DNSenum)

嘗試做看看

  1. DNS 記錄分析:選擇一個你經常使用的網站,使用 nslookupdig 命令查詢其 A、MX、TXT 和 CNAME 記錄。分析這些記錄可能揭示的安全風險。
  2. 子域名列舉練習:使用 Sublist3r 或類似工具,對一個大型組織的網域進行子域名列舉(要有權限)。思考發現的子域名可能帶來哪些安全隱患。

思考題

  1. DNS 快取中毒攻擊是如何進行的?它對網站安全有什麼影響?請提出至少三種防禦此類攻擊的方法。
  2. 在進行網站滲透測試時,為什麼 DNS 記錄分析通常是初始階段的重要步驟?列舉至少五種可以從 DNS 記錄中取得的有價值資訊。
  3. 設想一個場景:你是一家中型企業的網路安全顧問,最近發現公司的某個子域名被用於釣魚攻擊。請詳細描述你會採取哪些步驟來調查、緩解和防止此類事件再次發生。
  4. CDN 的使用如何影響 DNS 解析過程?它對網站安全有什麼潛在的影響,無論是正面還是負面的?

上一篇
資安這條路:Day 2 了解使用者輸入與輸出與前端關係
下一篇
資安這條路:Day 4 深入理解 HTTP 協定中的 CRLF 與漏洞實作
系列文
資安這條路:系統化學習網站安全與網站滲透測試13
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言