سیر تا پیاز DNS Enumeration
نقشه گنج شبکه رو قبل از بقیه پیدا کن!
توی دنیای هک و امنیت، قبل از اینکه بخوای وارد یه سیستم بشی، اول باید بدونی اون سیستم کجاست و چه اجزایی داره. DNS Enumeration دقیقا حکم همون نقشهخوانی رو داره. این فرآیند یعنی جمعآوری اطلاعات حیاتی از رکوردهای DNS (Domain Name System) یک دامنه خاص.
🐾این اطلاعات شامل IPها، سرورهای ایمیل (MX)، سرورهای نام (NS)، رکوردهای متنی (TXT) و کلی چیز دیگه میشه. اگه بتونی DNS Enumeration رو خوب انجام بدی، نصف راه تست نفوذ رو رفتی چون نقاط ضعف و ساختار شبکه هدف رو شناختی.
🐽قدم اول: شناسایی رکوردهای DNS (الفبای کار)
اولین کاری که باید بکنی اینه که ببینی اصلا چه رکوردهایی برای اون دامنه ثبت شده. ابزار dig اینجا خیلی کمک دستت هست.
۱. گرفتن همه رکوردها:
با این دستور به سرور میگی “هر چی داری رو کن!”:
dig example.com ANY
۲. پیدا کردن IPها (رکوردهای A و AAAA):
رکورد A یعنی آدرس IPv4 و AAAA یعنی آدرس IPv6.
dig example.com A
dig example.com AAAA
۳. پیدا کردن سرورهای ایمیل (MX):
میخوای بدونی ایمیلهای سازمانی کجا میرن؟
dig example.com MX
۴. پیدا کردن رئیسها (NS Records):
این رکوردها نشون میدن کدوم سرورها مسئول مدیریت DNS این دامنه هستن.
dig example.com NS
۵. اطلاعات متنی و امنیتی (TXT):
اینجا معمولا اطلاعاتی مثل SPF و DKIM (برای امنیت ایمیل) قرار میگیره.
dig example.com TXT
🐽جعبه ابزار: ابزارهای آنلاین و خط فرمان (CLI)
فقط dig نیست! کلی ابزار دیگه هم هست که باید تو جیبت داشته باشی:
۱. استفاده از nslookup (قدیمی ولی کاربردی):
این ابزار رو تقریبا همه سیستمعاملها دارن.
nslookup -type=ANY example.com
یا اگه میخوای کلاس بذاری و تعاملی کار کنی:
nslookup
set type=ANY <
example.com <
۲. استفاده از host:
خیلی ساده و بیسروصدا:
host example.com
۳. استفاده از dig با سرور خاص:
مثلا میخوای از سرور گوگل (۸.۸.۸.۸) بپرسی:
dig @8.8.8.8 example.com ANY
۴. ابزارهای خودکار:
وقتی حال و حوصله نداری دستی کار کنی:
- DNSenum: خوراک جمعآوری اطلاعاته.
dnsenum example.com
Fierce: عالی برای پیدا کردن زیر دامنهها و شناساییهایی که حدس زدنشون سخته.
fierce –domain example.com
🐽شکار زیر دامنهها (Subdomains)
زیر دامنهها گنجن! ممکنه یه پنل ادمین روی admin.example.com یا یه سرور تست روی dev.example.com باز مونده باشه. برای پیدا کردنشون از ابزارهایی مثل Sublist3r یا Amass استفاده میکنیم.
مثال با Sublist3r:
sublist3r -d example.com
🐽غول مرحله آخر: ابزار DNSRECON
اگه دنبال یه ابزار متنباز و قدرتمند هستی که مو رو از ماست بکشه بیرون، DNSRECON خود جنسه.
نصب DNSRECON
اگه نداریش، اینطوری نصبش کن:
- دبیان/اوبونتو:
sudo apt-get install dnsrecon - با پایتون (pip):
pip install dnsrecon - از گیتهاب:
git clone https://github.com/darkoperator/dnsrecon.git
cd dnsrecon
sudo python3 setup.py install
دستورات طلایی DNSRECON
۱. اطلاعات پایه:
dnsrecon -d example.com
۲. شناسایی زیر دامنهها (با سوییچ r-):
dnsrecon -d example.com -r
۳. استفاده از دیکشنری (فایل متنی):
اگه خودت یه لیست خفن از زیر دامنهها داری:
dnsrecon -d example.com -D subdomains.txt
۴. شکار رکوردهای خاص (مثلا فقط MX):
dnsrecon -d example.com -t MX
۵. حملات Brute Force:
اگه لیست نداری، بذار خودش زور بزنه و پیدا کنه:
dnsrecon -d example.com -b
۶. ذخیره خروجی (خیلی مهمه!):
dnsrecon -d example.com -o output.txt
۷. بررسی امنیت DNSSEC:
dnsrecon -d example.com -s
🔥 مثال کامل و ترکیبی:
میخوایم زیر دامنهها رو دربیاریم و همه چیز رو تو فایل ذخیره کنیم:
dnsrecon -d example.com -r -o dns_output.txt
🐽تکنیکهای جاسوسی پیشرفته
۱. تکنیک DNS Cache Snooping (فضولی در کش)
این تکنیک یعنی بیایم ببینیم تو “کش” سرور DNS چی ذخیره شده. اگه رکوردی تو کش باشه، یعنی اخیراً یکی اون دامنه رو درخواست کرده. اینطوری میفهمی کاربرای اون شبکه کجاها میرن!
- دستور تست:
dig @<dns_server_ip> domain_name
تست انواع کوئری:
dig @<dns_server_ip> <domain_name> A
dig @<dns_server_ip> <domain_name> MX
۲. تکنیک DNS Zone Transfer (تیر خلاص!)
اینجا میری سراغ سرور DNS و میگی “لیست کل دامنهها و IPهات رو بده من!”. اگه ادمین سوتی داده باشه و دسترسی رو نبسته باشه، کل نقشه شبکه لو میره.
- با dig (پروتکل AXFR):
dig AXFR example.com @ns1.example.com
با nslookup:
nslookup > server ns1.example.com > ls -d example.com
با dnsenum:
dnsenum –enum example.com
۳. تکنیک DNSSEC Zone Walking
DNSSEC اومده امنیت بده، ولی اگه درست کانفیگ نشه خودش میشه حفره! با تحلیل رکوردهای NSEC میتونی دونه دونه دامنهها رو پیدا کنی (Walk کنی).
- گرفتن کلیدها (DNSKEY):
dig example.com DNSKEY - دیدن امضاها (RRSIG):
dig example.com RRSIG - پیدا کردن حفرهها (NSEC/NSEC3):
dig example.com NSEC # یا dig example.com NSEC3
بحث فنی: Recursive vs Non-Recursive
تو دنیای DNS دو مدل پردازش داریم:
- Recursive (بازگشتی): سرور مثل یه خدمتکار وفاداره. تو درخواست میدی، اون میره میگرده، از بقیه میپرسه و جواب حاضر و آماده رو بهت میده (بار روی سرور زیاده).
- Non-Recursive (غیر بازگشتی): سرور مثل یه کارمند تنبله. اگه جواب تو کش خودش باشه میده، اگه نباشه میگه “نمیدونم” یا آدرس یکی دیگه رو میده (بار روی سرور کمتره).
🐽ابزار تخصصی: LDNS (برای حرفهایها)
اگه برنامهنویسی یا محقق امنیتی هستی، LDNS یه کتابخونه عالیه.
- نصب:
./configureوmakeوsudo make install. - کوئری زدن با ldns-dig:
ldns-dig @8.8.8.8 example.com A
ساخت کلید امنیتی:
ldns-keygen -a RSASHA256 -b 2048 example.com
🐽چطور جلوی هکرها رو بگیریم؟ (اقدامات دفاعی)
- محدود کردن اطلاعات: اطلاعات اضافه نذارید تو رکوردهای DNS.
- بستن Zone Transfer: فقط سرورهای خودتون (Secondary DNS) باید بتونن زون ترنسفر کنن، نه هر کسی تو اینترنت!
- DNSSEC: استفاده کنید ولی درست کانفیگش کنید (NSEC3 بهتره).
- نظارت: لاگها رو چک کنید ببینید کی داره اسکن میکنه.