امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

پس از گرفتن دسترسی غیرمجاز از سمت یک کامپيوتر نیاز است که داده های مربوط به سیستم را از آن استخراج کنیم که این امر را به عنوان Data exfiltration میشناسیم. به واسطه فرآيند Data exfiltration ما توانایی استخراج داده های موجود در یک سیستم را داریم که این امر می‌تواند استخراج داده ها از سمت یک سیستم با دسترسی فیزیکی ما باشد و حتی میتواند یک سیستم و یا یک شبکه بزرگ آلوده شده به بد افزار باشد.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟طبق گزارش های که سالیانه ارائه میشود پروتکل DNS و Port 53 پرچم‌دار در حملات Data Exfiltration میباشند و به واسطه این پروتکل این حمله و این فرآيند استخراج داده ها از سازمان بسیار مورد توجه هکرها و بدافزارها قرار میگیرد زیرا که تجهیزات مدرن مانند NGFW ها ( فایروال های نسل بعدی )، IDS/IPS ها ( سیستم های تشخیص و جلوگیری از نفوذ ) تمرکز عمیقی بر روی این پروتکل ندارند و این پروتکل دراغلب موارد به صورت پیش فرض مجاز میباشد و ارتباطش کاملا باز است اما از این جهت تیم های امنیتی امروزی باید نگاه خود را بیشتر بر روی این پروتکل و اطلاعات آن قرار دهند. ما در این مقاله قصد داریم که بررسی کنیم مفهوم DNS Exfiltration چیست و چگونه پیاده سازی میشود.

مفهوم DNS Exfiltration چیست؟

تا به جای اینجا ما متوجه شدیم که فرآيند Data Exfiltration چیست اما این فرآيند بیشتر یک Tactic میباشد و DNS Exfiltration یک Technique جهت پیاده سازی کردن حمله و فرآيند Data Exfiltration جهت استخراج کردن داده ها از سمت سازمان یا کامپیوتر آسیب دیده

پیاده سازی این فرآيند بسیار ساده اما در عین حال خطرناک میباشد برای مثال یک بار واسطه حمله Dependency Confusion شرکت های بزرگ از حمله Apple و Microsoft و Adobe تحت تاثیر حملات سایبری قرار گرفته بودند و فرد هکر جهت اینکه بتواند اطلاعات و داده های حساس را استخراج کند از حمله DNS Exfiltration استفاده کرده بوده است.

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟


پیاده سازی حمله DNS Exfiltration به صورت اتوماتیک

یکی از ابزارهای پرکاربرد در بحث DNS Exfiltration ابزار DNSteal میباشد که به نوعی میشود گفت یکی از ساده ترین روش ها جهت پیاده سازی DNS Exfiltration است که تمامی مراحل اتوماتیک انجام میشود.
برای استفاده از این ابزار ابتدا آن را از Github این ابزار دانلود میکنیم

git clone https://github.com/m57/dnsteal

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟پس از دانلود این ابزار آن را اجرا سازی میکنیم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟به منظور کارکردن با این ابزار باید از دستور زیر جهت ساخت قرار دادن آدرس خودمان درحالت Listen استفاده کنیم و همچنین از سوییچ -z به منظور اینکه فایل ها از حالت Zip خارج شوند زیرا که به صورت پیش فرض در حالت Zip میباشند.

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟در بالا میبینیم که دستوراتی برای ما تولید شده است و ما به شکل زیر میتوانیم این دستورات را در سیستم هدف اجرا سازی کنیم و فایل را بر روی سیستم خودمان دریافت کنیم. برای مثال فایلی که قرار است دریافت کنیم TOSINSO.txt میباشد و حاوی رمز عبور 12345 است.

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

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟و حالا بر روی سیستم امنیتی خودمان بررسی میکنیم که آیا فایل TOSINSO.txt دریافت شده است یا خیر درصورت دریافت شدن از کنترل C به منظور ذخیره شدن آن استفاده میکنم و فایل را بازمیکنیم مانند تصویر زیر و مقدار 12345 را به راحتی دریافت میکنیم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

پیاده سازی حمله DNS Exfiltration به روش دستی

در این روش تمامی فرآيندها و مراحل به صورت کاملا دستی انجام میشود و شما در اینجا نیاز به دو چیز دارید:

  • یک نام دامنه ( میتوانید از دامنه های رایگان استفاده کنید )
  • یک آدرس IP Static ( میتوانید از یک VPS استفاده کنید و از آدرس IP Public آن استفاده کنید )

در ابتدا ما به سراغ ایجاد و ثبت یک نام دامنه رایگان در وب سایت Freenom.com میرویم و مراحل را به شکل زیر دنبال میکنیم:

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

  • مرحله دوم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

  • مرحله سوم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

  • مرحله چهارم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

  • مرحله پنجم (نهایی)

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

در تصویر بالا ( تصویر آخر ) میبینید که اینجا ما یک نام دامنه با عنوان exfi.tk را ایجاد کردیم و به صورت فعال میباشد. حالا باید برویم سراغ متصل کردن آدرس IP یا به نوعی Route کردن تمامی درخواست های DNS مربوط به این دامنه به سمت آدرس IP خودمان که اینکار را به واسطه CloudFlare انجام میدهیم و با ساخت یک اکانت رایگان در CloudFlare میتوانیم این موضوع را طی کنیم. دلیل استفاده ما از CloudFlare این میباشد که بقیه سرویس دهنده های رایگان DNS اغلب امکان استفاده و ایجاد NS Record در آنها وجود ندارد.

به همین دلیل ما به سراغ CloudFlare میرویم که با یک حساب رایگان میتوانیم فرآيندمان را به راحتی انجام دهیم و دامنه خودمان را پس ساخت اکانت CloudFlare مانند تصویر زیر ثبت کنیم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

  • نکته: CloudFlare پس از دریافت نام دامنه به منظور بررسی کردن دامنه و اطمینان از این موضوع که دامنه کاملا به ثبت رسیده است از چند دقیقه تا 24 ساعت زمان لازم دارد پس باید صبور باشید تا CloudFlare این دامنه را تایید کند.

حال قسمت رایگان CloudFlare را انتخاب میکنیم و روی گزینه Continue کلیک میکنیم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

توجه کنید که تمامی پارامترهای قرمز رنگ تکمیل شده باشند.

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

پس از این فرآيند وارد قسمت Management Tools میشویم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

در بخش NameServer و NameServer های CloudFlare را از صفحه باز شده کپی و در قسمت NameServer پیست میکنیم و بر روی گزینه Change NameServer میزنیم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

تکمیل شدن این فرآيند چند دقیقه تا 24 ساعت زمان میبرد.

حالا برای تایید این موضوع که NameServer ها تغییر کرده اند میتوانیم از ابزار dig استفاده کنیم و اگر خروجی به شکل زیر بود متوجه میشویم که ماجرا به انجام رسیده است

$ dig @8.8.8.8 +short NS exfi.tk

dawn.ns.cloudflare.com.

jack.ns.cloudflare.com.
  • نکته: درصورتی که اروری مبندی وجود نداشتن دستور dig‌ گرفتید ( Dig: Command Not Found ) از دستور apt install dig جهت نصب آن استفاده کنید ( برای سیستم های Debian Based )

آماده سازی سیستم جهت حمله DNS Exfiltration

برای این موضوع ابتدا بررسی میکنیم که Port 53 متعلق به DNS Server آزاد میباشد یا خیر که اینکار را به واسطه دستور lsof به شکل زیر انجام میدهیم

$ sudo sof -i :53

COMMAND  PID      USER  FD  TYPE DEVICE SIZE/OFF NODE NAME

systemd-r 722 systemd-resolve  12u IPv4 15755   0t0 UDP localhost:domain 

systemd-r 722 systemd-resolve  13u IPv4 15756   0t0 TCP localhost:domain (LISTEN) 

بعد از این ماجرا وارد مسیر زیر میشویم و به دنبال بخش Resolve میگردیم

$ sudo nano /etc/systemd/resolved.conf

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

پس از پیدا کردن بخش Resolve مقدار DNSStubListener برابر با no میگذاریم (مانند تصویر و زیر)

DNSStubListener=no

بعد از این ماجرا وارد Resolve.conf میشویم و NameServer متعلق به CloudFlare را اضافه میکنیم (8.8.8.8).

$ sudo nano /etc/resolv.conf
nameserver 8.8.8.8

ساخت یک DNS Exfiltration Listener

حالا فقط کافیست یک DNS Exfiltration Listener ساده به زبان پایتون برای پیاده سازی حمله خودمان ایجاد کنیم به شکل زیر:

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟

این کد نویسی را در قالب فایل .py قرار میدهیم و بر روی سیستم اجرا سازی میکنیم و بر روی سیستم مقابل میرویم و داده های که قصد داریم انتقال دهیم را بر روی دامنه ای که ثبت کردیم انتقال میدهیم و در سمت مقابل دریافت میکنیم

حمله DNS Exfiltration چیست و چگونه پیاده سازی میشود؟


امیرحسین تنگسیری نژاد
امیرحسین تنگسیری نژاد

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

متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/

نظرات