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

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

حمله DNS Exfiltration یک روش در آموزش هک برای استخراج داده از شبکه داخلی از طریق پروتکل DNS است. در این حمله، داده‌های حساس به‌صورت قطعه‌قطعه در درخواست‌های DNS قرار گرفته و به یک سرور تحت کنترل مهاجم ارسال می‌شوند. مهاجم معمولاً از subdomain encoding برای ارسال داده‌ها استفاده می‌کند. در سمت سرور، درخواست‌ها دریافت شده و داده‌ها دوباره سرهم‌بندی می‌شوند. برای پیاده‌سازی، مهاجم به یک دامنه تحت کنترل و یک سرور DNS سفارشی نیاز دارد.

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

سرفصل های این مطلب
  1. مفهوم DNS Exfiltration چیست؟
  2. پیاده سازی حمله DNS Exfiltration به صورت اتوماتیک
  3. پیاده سازی حمله DNS Exfiltration به روش دستی
    1. آماده سازی سیستم جهت حمله DNS Exfiltration
    2. ساخت یک DNS Exfiltration Listener

طبق گزارش های که سالیانه ارائه میشود پروتکل 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 ابزار DNSteal میباشد که به نوعی میشود گفت یکی از ساده ترین روش ها جهت پیاده سازی DNS Exfiltration است که تمامی مراحل اتوماتیک انجام میشود.
برای استفاده از این ابزار ابتدا آن را از Github این ابزار دانلود میکنیم

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

پس از دانلود این ابزار آن را اجرا سازی میکنیم

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

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

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

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

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

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

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

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

  • مرحله دوم

  • مرحله سوم

  • مرحله چهارم

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

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

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

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

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

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

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

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

تکمیل شدن این فرآیند چند دقیقه تا 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

پس از پیدا کردن بخش 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 ساده به زبان پایتون برای پیاده سازی حمله خودمان ایجاد کنیم به شکل زیر:

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

بیشتر بخوانید: CSIRT چیست؟ تیم پاسخگویی به حوادث امنیتی

حمله روز تولد ( Birthday Attack ) چیست؟ از تئوری تا واقعیت

در حوزه حملات مبتنی بر الگوریتم های رمزنگاری ، حمله ای با عنوان روز تولد یا Birthday Attack وجود دارد . اگر بخواهیم در خصوص این حمله که بیشتر به عنوان یک تئوری تا یک حمله واقعی مطرح می شود صحبت کنیم ، باید بگوییم که بیشتر از اینکه یک حمله باشد ، یک دیدگاه معماری نرم افزار و طراحی بانک اطلاعاتی سطح کلان است. اول بیایید بصورت کاملا خلاصه و بدون درگیر شدن به مسائل ریاضی ، تئوری روز تولد را با هم بررسی کنیم و سپس به بررسی مشکلاتی که ممکن است از داخل این تئوری برای ما پیش بیاید بپردازیم.

تئوری روز تولد چیست؟

ایده اولیه تئوری روز تولد یا Birthday Theory به این شکل است که اگر فرض کنیم که 367 نفر درون یک کلاس حضور داشته باشند واین یعنی 2 نفر بیشتر از تعداد روزهای سال ، به احتمال قطع به یقین ما حداقل 2 نفر را در این اتاق داریم که تاریخ تولد ( روز و ماه ، نه سال ) یکسانی داشته باشند. درست است؟

این درست است اما پارادوکس قضیه اینجاست که ما باید احتمالات را چک کنیم ، احتمال با یقین متفاوت است . بگذارید با مثال دیگری بحث را بازتر کنیم. حتی اگر 23 نفر درون یک کلاس درس باشند ، احتمال اینکه 2 نفر از این 50 نفر تاریخ تولد یکسانی داشته باشند نزدیک به 50 درصد است !!! اینکه چگونه چطور به این نتیجه میرسیم یک عملیات ریاضی و محاسبه است که در لینک زیر می توانید بصورت کامل نحوه محاسبه این میزان احتمال را مشاهده کنید :

حمله روز تولد چیست؟ آیا Birthday Attack واقعی است یا تئوری؟

حمله روز تولد در واقع یک تئوری حمله و معرفی یک آسیب پذیری یا بهتر بگوییم ضعف در طراحی پروتکل رمزنگاری ( Hashing ) ای به نام MD5 است. الگوریتم هشینگ MD5 به دلیل ضعف در طراحی و تبدیل کردن مقادیر ( فایل ها و رشته های و ... ) به Hash این احتمال را دارد که در حجم عظیمی از داده ها ، تداخل Hash داشته باشد.

به زبان ساده تر این امکان در الگوریتم هشینگ MD5 وجود دارد که دو فایل با دو سورس کد مختلف با دو شکل مختلف ، دو رشته مختلف ، مقدار Hash مشابهی را در خروجی داشته باشند. با توجه به همین نقطه ضعف الگوریتم MD5 عملا منسوخ شده به حساب می آید و البته که هنوز مورد استفاده و محبوب می باشد. با آموزش هک می توان با بیشترین مفاهیم در این رابطه آشنا شوید.


در تئوری ممکن است شما بتوانید یک فایل مخرب و آلوده را با Hash یکسان با یک فایل قابل اعتماد جایگزین کنید و از این طریق حمله خود را انجام دهید اما اینکار چندان هم ساده نیست. حمله روز تولد عملا یک نوع حمله Brute Force برای الگوریتم رمزنگاری MD5 است که احتمال به وقوع پیوستن آن بسیار بسیار کم است اما تئوری احتمال وجود آن در داده های کلان وجود دارد. در میزان داده های کم این تداخل یا Hash Collision احتمال وقوع بسیار پایینی دارد اما در سطح کلان ممکن است این تداخل به وجود بیاید. به همین دلیل اساسا الگوریتم های سری SHA به کلی جایگزین MD5 شدند.


, آموزش هک ،آموزش هک قانونمند ،آموزش CEH ،دوره آموزشی CEH ،دوره آموزش هک قانونمند،آموزش سکیوریتی پلاس ، دوره آموزشی سکیوریتی پلاس،آموزش Security،آموزش امنیت شبکه