◄ BACK TO PROTOCOLS
HTB Academy · Module 112 · Section 9/21
Footprinting Port 53 Zone Transfer Recon
DNS — DOMAIN NAME SYSTEM
PROTOCOL ANALYSIS · RECORDS · ZONE TRANSFER · SUBDOMAIN ENUM
Port
TCP/UDP 53
Root Servers
13 فقط
Encrypted?
لا ⚠️
AXFR
Zone Transfer
NS = DC?
غالباً ✅
Tool
dig / dnsenum
نظرة عامة
ما هو DNS؟

Domain Name System — يحول أسماء الدومينات لـ IP addresses. ما عنده قاعدة بيانات مركزية — موزع على آلاف السيرفرات حول العالم مثل مكتبة بها كتب هاتف كثيرة.

كيف يشتغل
أنت تكتب: google.com
Resolver يسأل DNS Server
DNS يجاوب: 142.250.185.46
جهازك يتصل بالـ IP ✅
ليش مهم في Pentest؟
🗺️ Zone Transfer = خريطة كاملة للشبكة
🎯 NS Record = غالباً Domain Controller
📧 MX Record = mail server = phishing
🔍 TXT Record = خدمات + IPs داخلية
⚠️ DNS غير مشفر افتراضياً — كل استعلام يمشي clear-text على الشبكة!
🔌 /etc/resolv.conf — مهم في Pentest
cat /etc/resolv.conf nameserver 8.8.8.8 ← Google DNS nameserver 1.1.1.1 ← Cloudflare DNS
💡 لو وصلت لجهاز مخترق — cat /etc/resolv.conf يكشف DNS server الداخلي = غالباً Domain Controller! 🎯
أنواع DNS Servers
📋 الأنواع الستة
النوعالوظيفةأهمية في Pentest
Root Server مسؤول عن الـ TLDs (.com, .se, .htb). 13 سيرفر فقط في العالم تديرهم ICANN آخر من يُسأل
Authoritative المصدر الرسمي لـ zone معين. جوابه = حقيقي 100% هدف الـ Zone Transfer!
Non-authoritative يجمع معلومات من سيرفرات ثانية — ممكن تكون قديمة (outdated) معلومات ممكن تكون غلط
Caching يحفظ الإجابات مؤقتاً حسب الـ TTL DNS Cache Poisoning
Forwarding يحول السؤال لسيرفر ثاني فقط محدود
Resolver على جهازك أو الـ router — أول من يستقبل سؤالك /etc/resolv.conf = DC!
🔄 مسار الـ DNS Query الكامل
💻
جهازك
google.com؟
🔄
Resolver
/etc/resolv.conf
💾
Cache
موجود؟
🌍
Root Server
اسأل .com
Authoritative
142.250.x.x
⏱️ TTL — Time To Live

مدة صلاحية المعلومة في الـ cache. بعد انتهاؤها يُحذف ويُطلب من جديد.

TTL طويل (86400 = يوم)
المعلومة تبقى في الـ cache يوم كامل
DNS Cache Poisoning تأثيره أطول!
TTL قصير (60 ثانية)
الشركة تغير IPs كثيراً
= Load Balancer أو Cloud Infrastructure
DNS Records
🗺️ السيناريو — تهاجم inlanefreight.com

كل record = سؤال مختلف عن البنية التحتية للشركة:

# خريطة كاملة من DNS records: dig A inlanefreight.com → IP الموقع الرئيسي dig MX inlanefreight.com → mail server = phishing target dig NS inlanefreight.com → DNS servers = غالباً DC! dig TXT inlanefreight.com → خدمات + IPs داخلية dig axfr inlanefreight.com → كل شيء دفعة وحدة 💥
A
IPv4 Address
يحول domain → IPv4
dig A google.com → 142.250.185.46
🎯 IP داخلي (10.x.x.x) = جهاز على الشبكة الداخلية
AAAA
IPv6 Address
نفس A بس لـ IPv6 (128-bit)
dig AAAA google.com → 2607:f8b0:4004::71
🎯 نادر الاستخدام في pentest
MX
Mail Exchange
اسم الـ mail server للدومين
dig MX inlanefreight.com → mail1.inlanefreight.com
🎯 Phishing + Username Enumeration من الإيميلات
NS
Name Server
أسماء الـ DNS servers للدومين
dig NS inlanefreight.com → ns1.inlanefreight.com → ns2.inlanefreight.com
🎯 غالباً = Domain Controller! + هدف Zone Transfer
TXT
Text Record
معلومات متنوعة: SPF, DMARC, verification
"v=spf1 ip4:10.129.124.8" "atlassian-domain-verification=..." "MS=ms97310371"
🎯 يكشف: خدمات الشركة (Atlassian, Microsoft) + IPs داخلية!
CNAME
Canonical Name (Alias)
اسم بديل لدومين ثاني
ftp.inlanefreight.com → CNAME → server1.inlanefreight.com
🎯 خدمات متعددة على نفس الجهاز = اخترق واحد = اخترق الكل
PTR
Pointer (Reverse Lookup)
عكس A — يحول IP → domain
dig PTR 10.129.34.16 → dc1.internal.inlanefreight.htb
🎯 من IPs تعرف وظيفة الجهاز (dc1=DC, vpn=VPN...)
SOA
Start of Authority
مين المسؤول عن الـ DNS zone
dig soa inlanefreight.com → ns-161.awsdns-20.com. awsdns-hostmaster@amazon.com
🎯 إيميل المسؤول + cloud provider (AWS/Azure/GCP)
الإعدادات — Bind9
ملفات الإعداد

أشهر DNS server على Linux هو Bind9. ملفاته الرئيسية:

الملفالوظيفة
named.conf.localتعريف الـ zones المحلية
named.conf.optionsالإعدادات العامة
named.conf.logإعدادات الـ logging
/etc/bind/db.domain.comZone file — كل الـ records
Zone File مثال
cat /etc/bind/db.domain.com $ORIGIN domain.com $TTL 86400 @ IN SOA dns1.domain.com. hostmaster.domain.com. ( 2001062501 ; serial 21600 ; refresh 6h 3600 ; retry 1h 604800 ; expire 1 week 86400 ) ; min TTL IN NS ns1.domain.com. IN NS ns2.domain.com. IN MX 10 mx.domain.com. IN A 10.129.14.5 server1 IN A 10.129.14.5 server2 IN A 10.129.14.7 ftp IN CNAME server1 www IN CNAME server2
💡 Zone file = دفتر هاتف السيرفر — كل الأسماء والـ IPs
Dangerous Settings
⚠️ الإعدادات الخطيرة
الإعدادالخطر
allow-query { any; }أي شخص يسأل السيرفر
allow-recursion { any; }أي شخص يسأل recursive queries = DNS Amplification Attack
allow-transfer { any; }أي شخص يطلب Zone Transfer كامل 💀
zone-statistics yesيكشف إحصائيات الـ zone
💀 allow-transfer = any

الإعداد الأخطر — يسمح لأي شخص بـ Zone Transfer:

dig axfr inlanefreight.htb @10.129.14.128 app.inlanefreight.htb. → 10.129.18.15 internal.inlanefreight.htb. → 10.129.1.6 mail1.inlanefreight.htb. → 10.129.18.201 ns.inlanefreight.htb. → 10.129.34.136
Zone داخلية:
dig axfr internal.inlanefreight.htb @10.129.14.128 dc1.internal10.129.34.16 ← Domain Controller! dc2.internal10.129.34.11 ← Domain Controller! mail1.internal → 10.129.18.200 vpn.internal → 10.129.1.6 wsus.internal → 10.129.18.2 ← Windows Update Server ws1.internal → 10.129.1.34 ← Workstation ws2.internal → 10.129.1.35
💥 خريطة كاملة للشبكة الداخلية دفعة وحدة! dc1, dc2 = أهداف أولى
الأدوات
اختر الأداة:
🔍dig
💥Zone Transfer
🔄dnsenum
Brute Force
🔍 dig — الأداة الأساسية
استعلامات مهمة:
# NS records — إيجاد الـ DNS servers (= DC؟) dig ns inlanefreight.htb @10.129.14.128 # ANY — كل الـ records دفعة dig any inlanefreight.htb @10.129.14.128 # إصدار الـ DNS server dig CH TXT version.bind 10.129.14.128 → "9.10.6-P1-Debian" # SOA — مين المسؤول dig soa inlanefreight.htb @10.129.14.128 # PTR — من IP لاسم dig PTR 10.129.34.16 → dc1.internal.inlanefreight.htb
💡 @ في الأمر = حدد السيرفر اللي تسأله مباشرة
💥 Zone Transfer — AXFR
# Zone Transfer على الدومين الخارجي: dig axfr inlanefreight.htb @10.129.14.128 # Zone Transfer على الدومين الداخلي: dig axfr internal.inlanefreight.htb @10.129.14.128 # لو نجح — تشوف كل الأجهزة: dc1.internal → 10.129.34.16 ← DC! dc2.internal → 10.129.34.11 ← DC! vpn.internal → 10.129.1.6 wsus.internal → 10.129.18.2
💀 Zone Transfer ناجح = خريطة كاملة للشبكة الداخلية!
🔄 dnsenum — كل شيء تلقائي
dnsenum --dnsserver 10.129.14.128 \ --enum -p 0 -s 0 \ -o subdomains.txt \ -f /opt/useful/seclists/Discovery/DNS/subdomains-top1million-110000.txt \ inlanefreight.htb # تلقائياً: ✓ NS records ✓ MX records ✓ Zone Transfer محاولة ✓ Subdomain Brute Force ns.inlanefreight.htb. → 10.129.34.136 mail1.inlanefreight.htb. → 10.129.18.201 app.inlanefreight.htb. → 10.129.18.15
✅ dnsenum يجمع كل شيء دفعة وحدة — ابدأ بها!
⚡ Subdomain Brute Force

لو Zone Transfer فشل — جرب آلاف الأسماء واحدة وحدة:

# Bash Loop: for sub in $(cat /opt/useful/seclists/Discovery/DNS/subdomains-top1million-110000.txt); do dig $sub.inlanefreight.htb @10.129.14.128 \ | grep -v ';\|SOA' \ | sed -r '/^\s*$/d' \ | grep $sub | tee -a subdomains.txt done ns.inlanefreight.htb. IN A 10.129.34.136 mail1.inlanefreight.htb. IN A 10.129.18.201 app.inlanefreight.htb. IN A 10.129.18.15
💡 SecLists = قوائم جاهزة للـ pentest. تثبيت: sudo apt install seclists
Methodology
⛓️ خطوات الـ DNS Footprinting
1
NS Records — إيجاد الـ DNS Servers
أول خطوة — الـ NS servers هي هدفك الأساسي
dig ns inlanefreight.htb @10.129.14.128
في شبكة Windows: NS server = Domain Controller غالباً 🎯
2
Zone Transfer — الخريطة الكاملة
جرب AXFR — لو نجح انتهى الأمر!
dig axfr inlanefreight.htb @10.129.14.128 dig axfr internal.inlanefreight.htb @10.129.14.128
3
ANY Query — كل الـ Records
اجمع كل المعلومات المتاحة
dig any inlanefreight.htb @10.129.14.128
4
لو Zone Transfer فشل — Brute Force
استخدم SecLists لإيجاد subdomains مخفية
dnsenum --dnsserver 10.129.14.128 --enum \ -f /opt/useful/seclists/Discovery/DNS/subdomains-top1million-110000.txt \ inlanefreight.htb
5
PTR Lookup على الـ IPs
من IPs عرّف وظيفة كل جهاز
dig PTR 10.129.34.16 → dc1.internal.inlanefreight.htb
dc1/dc2 = Domain Controllers = أهداف أولى 💥
🗺️ ما تكشفه DNS كاملاً
# من DNS records فقط تعرف: NS → ns1.inlanefreight.com = 10.129.34.136 ← DC! MX → mail1.inlanefreight.com ← Mail = Phishing TXT → "ip4:10.129.124.8" ← IP داخلي! TXT → "atlassian-domain-verification=..." ← يستخدمون Jira TXT → "MS=ms97310371" ← Microsoft 365 AXFR→ dc1, dc2, vpn, wsus, ws1, ws2 ← كل البنية!
Explained — Q&A
🌐 الأساسيات
ليش DNS موزع على آلاف السيرفرات؟
سببين: أولاً السرعة — تتصل بالأقرب لك. ثانياً الموثوقية — لو سيرفر واحد وقع الباقين يكملون. لو كان سيرفر واحد فقط، أي هجوم عليه = الإنترنت كله يتوقف!
ليش /etc/resolv.conf مهم في pentest؟
لو وصلت لجهاز مخترق وشفت resolv.conf — الـ nameserver فيه هو DNS server الشبكة الداخلية. في شبكات Windows هاد غالباً = Domain Controller. يعطيك IP الـ DC مباشرة!
📋 DNS Records
ليش NS record يشير غالباً لـ Domain Controller؟
لأن الـ Domain Controller يشغّل خدمة DNS داخلياً. في شبكات Windows، DC يحل أسماء الأجهزة الداخلية. فالـ NS server هو نفسه الـ DC في معظم الحالات.
إيش تستفيد من TXT record في الـ pentest؟
يكشف خدمات الشركة (Atlassian = Jira، MS = Microsoft 365، mailgun = email service) وأهم شيء: IPs داخلية في SPF records. "ip4:10.129.124.8" = IP جهاز داخلي مكشوف!
💥 Zone Transfer
ما هو Zone Transfer وليش خطير؟
Zone Transfer = مزامنة DNS records بين Primary وSecondary servers. لو allow-transfer = any، أي شخص يطلب نسخة كاملة من كل الـ records. يعني: dc1, dc2, vpn, mail, wsus, ws1, ws2 كل البنية التحتية دفعة وحدة!
ما معنى @ في أمر dig؟
يحدد أي DNS server تسأل مباشرة. بدونه dig يسأل الـ DNS الافتراضي (8.8.8.8) اللي ما يعرف الدومينات الداخلية. مع @ تسأل السيرفر الداخلي اللي يعرف كل شيء.
لو Zone Transfer فشل — إيش البديل؟
Subdomain Brute Force — تجرب 110,000 اسم من SecLists واحداً وحدة. أبطأ بكثير لكن يكشف subdomains مخفية مثل admin.company.com أو dev.company.com.