دوره SEC542 – بخش پنجم

دوره آموزشی SEC542

در این بخش از دوره آموزشی SEC542 از موسسه SANS به آشنایی با جمع آوری اطلاعات DNS و ابزارهای آن می پردازیم.

پروتکل Whois

پروتکل Whois یک پروتکل کلاینت سروری می باشد که امکان دسترسی به اطلاعات در مورد دامنه های اینترنتی و بلاک های آدرس IPv4 و IPv6 را فراهم می کند. این پروتکل از پورت 43 برای ارتباطات خود استفاده می نماید و توضیحات کامل آن در RFC3912 موجود می باشد.

معمولا ثبت کننده های اصلی منطقه ای (Major Regional Registrars) همانند ISPاها و برخی از سازمان های بزرگ سرورهای Whois را اجرا می کنند. سرورهای Whois ثبت کننده منطقه ای عبارتند از:

whois.afrinic.net (Africa)
whois.apnic.net (Asia Pacific, India, China and Australia)
whois.arin.net (US and Canada)
whois.lacnic.net (Mexico and Latin America)
whois.ripe.net (Europe, Greenland, Russia and the Middle East)

نکته: در فرآیند Whois، جست و جو ها به سرور مرکزی Whois ارسال شده و به موضوع پرس و جو یا همان تارگت مورد نظر ارسال نمی شود.

اغلب سیستم های مبتنی بر یونیکس و لینوکس به صورت پیش فرض دارای یک Whois Client می باشند. البته این ابزار در OS X هم موجود می باشد ولی در ویندوز این ابزار به صورت پیش فرض قرار ندارد و شما می توانند برای ویندوز از Whois Client موجود در مجموعه Sysinternals استفاده نمایید.

برای دانلود این ابزار می توانید به لینک زیر مراجعه نمایید:

https://docs.microsoft.com/en-us/sysinternals/downloads/whois

تصویر زیر نشان دهنده یک Whois از دامنه sans.org می باشد:

از اطلاعات به دست آمده بالا، شما می توانید به مشخصات ثبت کننده دامنه، آدرس، شماره تماس و Name Server های دامنه مورد نظر دست پیدا کنید. همچنین با استفاده Name Server های این دامنه می توان به اطلاعات دیگری در خصوص DNS آن دست پیدا نمود که برای این کار می توان از دستور dig در لینوکس استفاده کنید:

در تصویر بالا آدرس IP مربوط به Name Server قابل مشاهده می باشد که با استفاده از دستور Whois می توانید به بازه آدرس استفاده شده توسط شرکت هدف دست پیدا کنید. بدین منظور از دستور Whois با IP مربوط به Name Server استفاده می شود.

البته شما می توانید برای انجام موارد مطرح شده در این مرحله از ابزارهای خودکاری مانند Maltego استفاده کنید.

نکته: یکی از تفاوت های بین تست نفوذگر آماتور و حرفه ای زمانی مشخص می شود که هر دوی این افراد را از استفاده ابزار منع کنند و تنها یک لینوکس معمولی در اختیار آن ها قرار دهند. در این حالت معمولا کاری از افراد آماتور برنمی آید ولی افراد حرفه ای اصطلاحا آستین های خود را بالا زده و مشغول کار می شوند. در واقع افراد متخصصین می دانند که در پشت پرده ابزارها چه اتفاقی می افتد. این موضوع برای هر فرد حرفه ای درست است.

DNS

پروتکل DNS به منظور تبدیل نام به IP و بالعکس مورد استفاده قرار می گیرد. این پروتکل برای ارتباط از پورت 53 استفاده می نماید که به منظور ارسال Query از پروتکل UDP و برای Zone Transfer از پروتکل TCP استفاده می کند. هنگامی که حجم بسته های DNS از 512 بایت بیشتر شود، از ارتباط TCP برای انتقال اطلاعات استفاده می شود و این موضوع در Zone Transfer رخ می دهد.

ممکن است یک Zone Transfer با یک Zone کمتر از 512 بایت بوسیله پروتکل UDP انجام شود که ابزارهای انتقال باید این از قابلیت پشتیبانی نمایند. البته نسخه های جدید dig این گزینه را حذف کرده اند و تمام Transfer ها را از طریق پروتکل TCP انجام می دهند. برخی از سایت ها به راحتی پورت 53 TCP را مسدود می کنند که این موضوع باعث می شود که Zone Transfer هم مسدود شود. اغلب Zone ها بزرگتر از 512 بایت هستند بنابراین اکثر Transfer ها مسدود می شود اما در صورت وجود یک Zone با حجم کمتر از 512 بایت، این Zone منتقل خواهد شد.

نکته: توجه داشته باشید که 512 بایت محدودیت تاریخی است که برای انتقال DNS از طریق پروتکل UDP وجود دارد در حالی که Extension Mechanism for DNS یا EDNS شما را قادر می سازد تا 4096 بایت را از طریق UDP منتقل نمایید.

یکی از موارد دیگری که در ساختار DNS اهمیت دارد، TLD یا Top Level Domain است. TLD بیانگر ماهیت سایت یا دامنه می باشد که به عنوان مثال دامنه .org برای سازمان ها، دامنه .edu برای مراکز آموزشی و یا دامنه .com برای سایت های تجاری استفاده می شود. البته برای کشورهای مختلف هم TLD اختصاص داده می شود که مانند .ir اغلب شامل دو حرف می باشد.

لازم به ذکر است هز سازمانی که صلاحیت لازم را داشته باشد می تواند با هزینه ای معادل 185 هزار دلار، TLD سفارشی مخصوص خود را ثبت نماید. در حال حاضر TLD هایی مانند .cisco و .microsoft هم وجود دارند که توسط شرکت های آن ها به ثبت رسیده اند. شما می توانید جهت مشاهده لیست دامنه های ثبت شده به لینک زیر مراجعه نمایید:

http://data.iana.org/TLD/tlds-alpha-by-domain.txt

برای انجام یک Zone Transfer کامل (AXFR) با استفاده از دستور dig به صورت زیر عمل می کنیم:

dig sans.org -t axfr

برای انتقال از نوع Incremental یا IXFR که برای ارسال آخرین تغییرات می باشد، شما می توانید ابتدا از دستور زیر استفاده کنید که اطلاعات رکورد SOA را نمایش می دهد:

dig sans.org -t soa

در بخش ANSWER SECTION یک شماره سریال نمایش داده می شود که در مثال بالا 2018120501 است. فرمت این شماره به صورت YYYYMMDDNN است که YYYY معادل سال، MM برابر ماه، DD برابر روز و NN نشان دهنده تغییرات در DNS می باشد.

عبارت 00 در بخش انتهایی سریال برای اولین تغییر در یک روز و 01 برای تغییرات دوم است و به همین شکل ادامه پیدا می کند. افزایش این شماره سریال به DNS سرور Secondary می گوید که Zone باد بروزرسانی شود.

دستور زیر چیزی را دانلود نمی کند چراکه شماره سریال موجود در این دستور مطابق با شماره سریال سرور است:

dig sans.org -t ixfr=2018120501

با کاهش یک عدد از سریال، محتویات Zone در صورت وجود Zone Transfer دانلود می شود:

dig sans.org -t ixfr=2018120500

در مرحله جمع آوری اطلاعات استفاده از Zone Transfer برای ما بسیار مفید می باشد ولی اکثر شرکت ها این دسترسی را برای عموم محدود نموده اند و امکان انتقال Zone وجود ندارد.

با توجه به اینکه ما برای شناسایی سایت های دیگر قربانی و همچنین Virtual Host هایی که ممکن است وجود داشته باشد، نیاز به اطلاعات رکورد های DNS داریم، پس با وجود غیرفعال بودن ویژگی Zone Transfer چه کاری باید انجام دهیم؟
برای حل این مسئله دو روش وجود دارد که یکی Reverse DNS Scan یا استفاده از رکورد PTR و دیگری Brute Force نمودن DNS است که در ادامه به آن ها می پردازیم.

Reverse DNS Scan

اکثر مدیران سرورهای DNS معمولا یک رکورد PTR را برای هر رکورد A ایجاد می کنند. پس از شناسایی و جمع آوری اطلاعات از سرور هدف، می توان عملیات اسکن جهت Resolve رکورد های PTR برای هر آدرس IP را انجام داد.

ابزارهای بسیاری برای این موضوع طراحی شده اند که dnsrecon یکی از این ابزارها می باشد. به منظور استفاده از این ابزار جهت Reverse DNS از دستور زیر استفاده می شود:

dnsrecon –r 192.168.1.0/24

DNS Brute Force

اسکن DNS با روش Brute Force، یک تکنیک اضافی و برای شناسای نام های DNS مانند نام های مخفی که به صورت عمومی منتشر نشده و برای آن ها رکورد PTR تعریف نشده است، مورد استفاده قرار می گیرد.

اکثر سرورهای DNS عمومی دارای کارایی و Performance بالایی هستند و مشتریان متوجه اسکن های بزرگ DNS نمی شوند. ولی یک استثناء وجود دارد و آن هنگامی است که لاگ های مربوط به این حمله افزایش یافته و دیسک مربوط به ذخیره سازی آن را پر نماید که این موضوع موجب Crash شدن سرور خواهد شد.

به همین دلیل سعی کنید همیشه با مجوز لازم اسکن را انجام دهید و اطمینان حاصل کنید که هماهنگی های لازم با مسئولین و مدیران سرور صورت گرفته باشد و آن ها را از خطرات احتمالی اسکن DNS Brute Force در حجم های بالا آگاه کرده باشید.

ابزار dnsrecon دارای دیتابیسی از اسامی برای Brute Force سرور DNS می باشد که در مسیر نصب این ابزار با نام namelist.txt قرار دارد ولی این دیتابیس به تنهایی کافی نیست و شما باید از منابع دیگری نیز استفاده نمایید.

فردی با نام Ryan Dewhurst که با آی دی @ethicalhack3r شناخته می شود، یک Zone Transfer را برای بیش از 2000 هزار سایت دارای رتبه بالای یک میلیون سایت الکسا را انجام داده است که با این کار به یک دیتابیس بسیار مناسب از زیردامنه ها و اسامی که در سرور های DNS این سایت ها استفاده شده بود دست پیدا کرده است. وی این لیست را در آدرس سایت خود و همچنین صفحه Github خود برای دانلود قرار داده است که می توانید از طریق لینک زیر به آن مراجعه نموده و این فایل ها را دانلود نمایید:

https://github.com/ethicalhack3r/ethicalhack3r.github.io/blob/master/_posts/2013-08-08-zone-transfers-on-the-alexa-top-1-million-part-2.markdown

ابزار nslookup

یکی از ابزارهای ابتدایی که در محیط دستوری از آن استفاده می شود ابزار Nslookup می باشد. این ابزار در محیط های ویندوز و لینوکس وجود دارد و نیازی به نصب آن نیست. همچنین علاوه بر استفاده از این ابزار در استخراج اطلاعات DNS، از آن برای تست آسیب پذیری RCE هم استفاده می شود.

اغلب خروجی های DNS یا Outbound DNS مسدود نمی شوند. حتی شبکه هایی که به شدت ترافیک خروجی را کنترل می کنند، معمولا اجازه DNS Resolution را می دهند. در چنین حالتی یک تست نفوذگر وب می تواند با استفاده از DNS و دستور Nslookup حمله Blind Command Injection را انجام دهد و با مشاهده لاگ DNS و یا Sniff ترافیک نتایج را مشاهده نماید.

نکته: برخی از قابلیت های ابزار nslookup در نسخه های Bind حذف شده اند.

ابزار dig

ابزار dig client بخشی از سرویس BIND می باشد.

BIND نرم افزار متن بازی است که گروتکل های DNS را برای اینترنت پیاده سازی می نماید. این نرم افزار در برنامه هایی با حجم بالا و قابلیت اطمینان بالا استفاده می شود. نام BIND مخفف Berkeley Internet Name Domain است زیرا این نرم افزار در اوایل دهه 1980 در دانشگاه کالیفرنیا در برکلی آغاز به کار کرد.

برای دانلود سورس کد BIND شما می توانید به لینک زیر مراجعه نمایید:

https://www.isc.org/downloads/bind/

افرادی که تست نفوذ برنامه های تحت وب را انجام می دهند باید به نسخه BIND استفاده شده توجه نمایند.

اولاً به دلیل اینکه یک Name Server بروز نشده می تواند مشکلات بسیاری را برای یک سازمان به ارمغان آورد و سرور DNS هم باید دارای امنیت مناسبی باشد چراکه مسلما اهمیت سرورهای DNS از اجزای دیگر شبکه مانند فایروال پایین تر نیست.

دوماً تست نفوذ وب معمولا بخشی از یک پروژه تست نفوذ بزرگتر است که شامل بخش های دیگر سازمان نیز می گردد و به همین دلیل ممکن است وجود مشکل در سرور DNS منجر به دسترسی به سرورهای دیگر شده و در فرآیند تست نفوذ اجزای دیگر سازمان تاثیرگذار باشد.

در بخش های پیشین با برخی از دستورات dig آشنا شدیم و در ادامه به برخی از دستورات دیگر از این ابزار می پردازیم.

ساختار کلی دستورات در dig به صورت زیر است:

dig @nameserver example.com options

با استفاده از دستور زیر شما می توانید کلیه رکورد های سرور مورد نظر را استخراج نمایید:

dig @192.168.1.2 sans.org -t any

برای استخراج یک رکورد خاص از دستور زیر استفاده می شود:

dig @192.168.1.2 sans.org -t mx

جهت انجام فرآیند Zone Transfer از دستور زیر استفاده می شود:

dig @192.168.1.2 sans.org -t axfr

جهت انجام Reverse Lookup از دستور زیر استفاده می شود:

dig -x 192.168.1.2

برای به دست آوردن نسخه BIND برای سرور نام از دستور زیر استفاده می شود:

dig @192.168.1.2 version.bind chaos txt

Nmap DNS NSE Scripts

یکی از ابزارهای مهم که در تست نفوذ از آن استفاده می شود ابزار Nmap بوده که این ابزار علاوه بر استفاده در شناسایی شبکه و پورت، دارای اسکریپت هایی می باشد که در فرآیندهای مختلف تست نفوذ از آن ها استفاده می شود.

اگر از ابزار Nmap در کالی لینوکس استفاده نمایید، مسیر اسکریپت ها در /usr/share/nmap/scripts قرار دارد. برای مشاهده اسکریپت های مربوط به DNS از دستور زیر استفاده نمایید:

ls /usr/share/nmap/scripts/dns*

DNSRecon

ابزار دیگری که در فرآیند ارزیابی DNS از آن استفاده می شود، DNSRecon می باشد. این ابزار توسط Carlos Perez نوشته شده است و شما می توانید از لینک زیر به آن دسترسی داشته باشید:

https://github.com/darkoperator/dnsrecon

برخی از قابلیت های DNSRecon عبارتند از:

  • بررسی رکوردهای NS برای انجام Zone Transfer
  • جمع آوری رکوردهای DNS
  • Brute Force زیردامنه ها
  • انجام PTR Record Lookup
  • جمع آوری هاست ها و زیر دامنه ها با استفاده از گوگل
  • و قابلیت های دیگر

برای به دست آوردن اطلاعات DNS از طریق ابزار DNSRecon از دستور زیر استفاده می شود:

dnsrecon -d sans.org

درباره نویسنده: احسان نیک آور

ممکن است دوست داشته باشید