DNS پنهان بانام “Crouching Tiger”
DNS پنهان بانام “Crouching Tiger“:در زمان کار در بخش پشتیبانی، ممکن است برای مشتریان و کاربران هرگونه مشکلی پیش بیاید که در برخی موارد آنها جالب هستند. در هفتههای گذشته ما شاهد یک دزدی (Hijack) DNS بودهایم که سیستم قربانی را بر روی سرورهای DNS خاص تنظیم میکند. این حمله شاید خیلی مهم به نظر نرسد و بهآسانی اصلاح گردد اگر برای کاربر آشکار باشد. اما اگر تنظیمات بهگونهای باشد که بر روی سرورهای DNS اصلی و ثانوی در فیلدهای موردنظر GUI دیده نشود، مشکلات به وجود خواهد آمد. تنظیمات آشکار اعلام میکنند که شما از DHCP استفاده میکنید که امری معمولی است، اما داستان چیز دیگری است.
این کار در حال حاضر توسط یک برنامه احتمالی و ناخواسته (PUA یا Potentially Unwanted Application) بانام DNS Unlocker و چندین تهدید دیگر انجام میگردد. DNS Unlocker تنظیمات شبکه قربانی را با استفاده از یک سرور DNS غیرواقعی تغییر میدهد. وقتیکه مرورگر قربانی به دنبال google-analytics.com میگردد این سرور DNS را به یک سرور مخرب Injection با Javascript اضافه هدایت میکند. این امر انجام میشود تا DNS Unlocker از طریق تبلیغات به داخل صفحه وب وارد شود که از Google Analytics استفاده میکنند. سیستمهای آلودهشده یک تبلیغات میبینند که در قسمت پایین آن یادداشتی با مظنون (Ads by DNSUnlocker) یا موردی مشابه وجود دارد و چندین نوع برنامه کلاهبرداری بهصورت Popup دیده میشود.
شکل 1- تبلیغات تزریقشده در صفحه وب
شکل 2- برنامه کلاهبرداری پشتیبانی برای ترساندن کاربر
تغییرات در تنظیمات DNS
دزدی (Hijack) DNS پدیدهای جدید نیست و آنقدر اهمیت ندارد. آنچه که ورژن های جدید DNS Unlocker را جالب میسازد این است که آنها از روشی استفاده میکنند که مخفیانه DNS سیستم قربانی را تنظیم میکند. در زمان بررسی مشخصههای TCP/IPv4 در ویندوز، هر نوع ورودی استاتیک DNS در قسمت پایین پنجره پانل کنترل دیده میشود (شکل 3). اگر از گزینه ” Use the following DNS server addresses” استفاده کنیم باید یک آدرس IP در فیلد ” Preferred DNS server” وجود داشته باشد و ممکن است که حتی یک فیلد انتخابی ” Alternate DNS server” دیده شود. اما اگر از DHPC برای دریافت آدرس DNS استفاده شود. گزینه “Obtain DNS Server address automatically” انتخاب خواهد شد (شکل 3).
شکل 3- پنجره TCP/IPv4 در پانل کنترل با تنظیمات عادی
DNSUnlocker PUA تنظیمات قربانی را بهگونهای انجام میدهد که به نظر میرسد کاربر آنرا را بهطور خودکار دریافت میکند. درواقع دستور “ipconfig /all” از command line نشان میدهد که شما از DHCP استفاده میکنید، اما میتوانید آدرسهای DNS استاتیک را مشاهده کنید. در زمان استفاده از ipconfig بااینکه میتوان آدرسهای DNS استاتیک را دید، روشی برای تشخیص اینکه آیا یک آدرس استاتیک است یا در GUI بهطور اتوماتیک استفادهشده است وجود ندارد. در این صورت به نظر میرسد که شما از یک آدرس DNS دادهشده اتوماتیک استفاده میکنید که درواقع آن استاتیک یا پنهان است. این موضوع مرتبط با DNS استاتیک در registry ویندوز میباشد.
DNS در registry ویندوز
این مسیر را در registry بررسی کنید.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\
احتمالاً خواهید دید که تنظیماتی برای چندین رابط شبکه وجود دارد و هرکدام با GUID شناساییشده است. این تنظیمات برای هر آداپتور شبکه متفاوت است و میتواند دارای ارزشهای DhcpNameServer و NameServer باشد. ارزش NameServer در اینجا بررسی میگردد. اگر میخواهید از DNS استاتیک استفاده کنید، آنرا در Control panel تنظیم نمایید یا از طریق دستور netsh انجام دهید. با این کار آدرسهای DNS شما در Nameserver registry بهعنوان یک لیست با ویرگول مانند مثال زیر ذخیره دیده خواهد شد.
192.168.1.21,192.168.1.22
اگر مانند مثال ذیل از لیست بدون ویرگول استفاده کنید، ویندوز آنرا خواهد شناخت اما بهعنوان گزینه دوم خود در نظر خواهد گرفت.
192.168.1.21 192.168.1.22
GUI ویندوز قادر نیست که نشان دهد که کامپیوتر از DNS استاتیک در بخش پایین پانل کنترل استفاده میکند (شکل 3)، اما سیستم نشان میدهد که کامپیوتر از DHCP برای DNS استفاده میکند که درواقع حقیقت ندارد. مشکل در اینجاست که اگر با یک مشتری کار میکنید که تبلیغات به سایتهای او inject میگردد یا در حال کار با اینترنت بهجای دیگر هدایت میشود، در زمان تست برای تنظیمات DNS، تنظیمات دستی در control panel کمک نخواهد کرد.
چون ویندوز فکر میکند که سرورهای DNS اولیه و ثانویه تنظیمشدهاند (اما پنهان هستند) پس از پر کردن فیلدهای Prefered و Alternate، ویندوز آنها را به آخر لیست در registry اضافه میکند، مانند مثال ذیل:
192.168.1.21 192.168.1.22,208.67.222.123,208.67.220.123
بدین ترتیب ویندوز از ویرگول برای space delimitation برای فیلدهای سوم و چهارم سرور DNS استفاده میکند، اما فواصل موجود مابین delimiter های آدرسهای اول و دوم را باقی میگذارد. دلیل این مسئله مشخص نیست اما توضیح مایکروسافت به شرح ذیل است.
“اگر ارزش Nameserver Valid باشد، آن بر ارزش DhcpNameServer اولویت دارد (منبع: مقاله DhcpNameServer در سایت Technet)
چون DhcpNameServer میتواند که space delimitation داشته باشد، Nameserver نیز همین اجازه را خواهد داشت. به نظر میرسد که ارزش Nameserver برای لیستهای delimited space در نظر گرفتهشده است. درواقع اینیک property غیراستاندارد در ویندوز میباشد که control panel قادر به اجرا درست آن در GUI نمیباشد. control panel به شما اجازه واردکردن لیست space-delimited یا یک لیست comma-delimited را نمیدهد.
آنیک لیست comma-delimited از هر آنچه کاربر در GUI در فیلدهای Prefered و Alternate وارد میکند میسازد، اما بقیه کد درجاهای دیگر (که این ارزش registry را میخواند و آنرا بهصورت حالت space-delimited قبول میکند) است و با هر دو delimiter درست عمل میکند. پانل کنترل GUI به همین روال عمل نمیکند چون ورودیهای space delimited را بهغیراز در Advanced Tab نشان نمیدهد.
DNS در تنظیمات شبکه
قابلیت بالا توسط PUA ها برای ادامه استفاده اجباری از سرورهای DNS خود بهجای سرورهای اصلی بر روی کامپیوترهای آلوده قرار میگیرد. درواقع اینیک دزدی DNS محسوب میگردد که با استفاده از سرورهای پنهان DNS میباشد. درواقع سرورهای استاتیک DNS آن تنظیمات را در لیستهای عادی فیلدهای Primary و Secondary مشخصات TPC/IPv4 نشان نمیدهد و برای همین پنهان محسوب میگردد.
با دانستن اینکه چگونه DNS نادرست در Registry تنظیم میگردد به یک بخش دیگر مشخصات TPC/IPv4 میپردازیم که پنجره تنظیمات “Advanced TCP/IP” میباشد (شکل 4(. قسمت بالای این tab دارای یک لیست است که ترتیب استفاده سرورهای DNS را تعیین میکند و به شما اجازه میدهد که استفاده از بیش از 2 آدرس IP در سرور DNS را مشخص کنید. هر آدرس باید بر روی line خود باشد. اگر آدرس DNS سرقت شده و پنهان باشد، تنظیمات TCP/IP مانند شکل 4 خواهند بود.
شکل 4- تنظیمات پیشرفته TCP/IPDNS در control panel با تنظیمات DNS پنهان
میبینید که دو آدرس در یک line وجود دارد و توسط space از هم جداشده است. اگر سعی کنید با گزینه Add دو آدرس دیگر را با ویرگول وارد کنید، خطای ” Invalid IP Address” را دریافت میکنید و نمیتوانید آنها را اضافه کنید. اگر بخواهید دستی سرورهای DNS را در فیلدهای “Preferred DNS server “و ” Alternate DNS server ” در صفحه مشخصات TCP/IPv4 وارد کنید و DNS پنهان باشد، میبینید که متن شما زیر اطلاعات DNS پنهان واردشده است(شکل 5).
شکل 5- تنظیم دستی ورودیهای DNS وقتیکه تنظیمات DNS پنهان باشد
ترمیم و جبران
میتوانید که آدرسهای DNS نامناسب را در صفحه تنظیمات Advanced TPC/IP حذف کنید.
جمعبندی
چون ویندوز از یک لیست space-delimited سرورهای DNS برای ارزش NameServer در رابط استفاده میکند و آنرا میخواند، بهجای اجرا جدی یک لیست دارای ویرگول، PUA ها میتوانند از این روش برای پنهان کردن تنظیمات DNS در سیستم کاربر استفاده کنند. این روش در اواخر سال 2015 در DNS Unlocker و ویندوزهای XP، Vista، 7، 8/8.1 و 10 شناخته شد.
نشانههای نقض (IoC)
ورژن های DNS Unlocker در برنامه MSIL/Adware.CloudGuard.C. استفاده از آدرسهای IP ذیل برای سرقت DNS.
• 199.203.131.145
• 199.203.131.150 to 199.203.131.152
• 82.163.142.2 to 82.163.142.7
• 82.163.142.66 to 82.163.142.70
• 82.163.142.130 to 82.163.142.189
• 82.163.143.131 to 82.163.143.190
• 95.211.158.129 to 95.211.158.135
• 95.211.158.145 to 95.211.158.151
آدرسهای IP استفادهشده برای سرورهای HTTP برای تزریق Javascript مخرب که در تبلیغات صفحات وب نشان داده میشوند.
• 82.163.143.23 to 82.163.143.250
• 209.88.193.133 to 209.88.193.141
بدافزارهایی که از این تکنیک استفاده میکنند.
SHA-1 ESET Detection Name NameServer values used
E7108973D9AE0BDB97801C959622E1ECECDCE80E MSIL/Adware.CloudGuard.C application 82.163.143.17 182.163.142.173
AEEEA6C3697D983337598E2D3B940DB0225A05CB Win32/Agent.XSF trojan 199.203.131.145 82.163.143.167
A9AC712B4D31F20AC3DEFC066D66C2982A4ADC0C Win32/DNSChanger.NDI trojan 199.203.131.151 82.163.143.181
1A1764F7AA3E9F81B23997982E1BDB300D3707B1 Win32/Adware.Adposhel.F application 82.163.142.3 95.211.158.130