انتقال اطلاعات از اینترنت در سیستم های بدون اینترنت

در زمان انجام تست نفوذ گاهی اوقات سیستم هایی وجود دارند که دسترسی به اینترنت ندارند ولی نیاز است که حتما دسترسی به اینترنت برای این سیستم ها فراهم نماییم تا داده های خود را دریافت کنیم. در این آموزش ما کد خود را از طریق DNS به ماشینی که دسترسی اینترنت ندارد منتقل می کنیم.

دستگاه ما به اینترنت متصل نیست اما در داخل شبکه شرکتی میزبانی شده است. دستگاه به سرور DNS متصل است که می‌تواند جستجوهای DNS دامنه‌ی مبتنی بر اینترنت را resolve کند. در اینجا، برای وارد کردن فایل یا کد باینری مخرب، درخواست DNS خود را به سرور داخلی DNS ارسال می کنیم. سرور DNS داخلی جستجو را از طریق اینترنت انجام داده و خروجی را به دستگاه کاربر بازمی‌فرستد. دقت باید داشت که دستگاه میزبان نمی‌تواند به نام دامنه‌ های اینترنتی دسترسی داشته باشد.

اما وقتی کاربر جستجوی DNS را انجام می‌دهد، از طریق یکی ازسرورهای DNS داخلی، مسیریابی انجام میشود و نام دامنه resolve می‌شود.

دریافت دادهها از اینترنت با استفاده از رکورد DNS TXT

رکورد DNS TXT این امکان را برای کاربر فراهم می‌کند تا متن را برای نام دامنه مشخص کند. تعریف ارائه شده توسط ویکیپدیا عبارت است از:

«یک رکورد TXT (کوتاه شده text record) نوعی از رکورد های نام دامنه است که در DNS برای فراهم کردن امکان پیوند متن دلخواه با هاست یا نام دیگر نام ها مانند اطلاعات قابل خواندن انسان در مورد سرور، شبکه، مرکز داده یا سایر اطلاعات صاحب دامنه بکار می‌رود».

ما از این رکورد برای ارتباط با سیستم مورد نظر استفاده خواهیم کرد به همین دلیل یک رکورد TXT را برای نام دامنه ی دلخواه خود که اینجا  “box.ourdomian.org” است، اضافه کردیم.

فرمان NSLOOKUP امکاناتی برای انجام جستجوی رکورد DNS TXT برای یک دامنه دارد. با استفاده از این فرمان ما داده های خود را می خواهیم دریافت کنیم. برای انجام جستجوی رکوردTXT ، از دستور زیر استفاده می کنیم:

nslookup -querytype = txt domain_name

که در تست ما نتیجه این گونه خواهد بود:

رکوردTXT محدودیتی در نوع یا متنی که کاربر تعیین می کند، ندارد. کاربر می‌تواند متن رمزگذاری شده‌ی base64 یا حتی باینری را ایجاد کند:

با توضیحات قبل اگر دوباره جستجو را انجام دهیم، داده‌ها را بدست خواهیم آورد:

رمزگشایی متن با استفاده از  PowerShell

برای بدست آوردن داده‌های واقعی، باید رمزگشایی base64 را انجام دهیم و می‌توان با استفاده از Powershell آن را انجام دهیم. کد Powershell اشاره شده در زیر به ما کمک می‌کند تا داده‌های رمز شده‌ی base64 را Decode و دریافت کنیم.

$all = “base64_encoded_string_goes_here” $text = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String($all)) $text

وارد کردن متن بزرگ

برای وارد کردن متن، ما  از سرویس مدیریت دامنه “Namecheap” استفاده کردیم ولی روند کار در همه سرویس ها یکسان خواهد بود اما ممکن است در بعضی از سرویس ها محدودیت در ورودی داده‌های رکورد TXT وجود داشته باشد. در صورتی که بدلیل محدودیت داده های ورودی قادر به وارد کردن متن کامل نبودید، می‌توانید چند رکورد TXT تعیین نمایید و داده های خود را در چند رکورد قرار دهید. در تصویر زیرداده‌های فایل باینری  به base64 تبدیل شده و در پرونده TXT قرار گرفته اند:

رای گرفتن داده‌های خود در رکوردTXT ، کافیست یک جستجوی DNS در سیستم بدون اینترنت خود انجام دهیم:

کافیست طبق مراحل قبل مراحل قبل عملیات decode کردن با Powershell را انجام دهید و خروجی را در یک فایل ذخیره کنید.

در سناریو بالا با یک مورد سناریو خیلی ساده در جهت اجرا دستورات خود از طریق DNS آشنا شدیم و صرفا برای آشنایی کلی شما با این روش ها است.

ضعف و نفوذپذیریهای DNS و نحوه دفاع از این نوع حملات

سه نفوذپذیری عمده در رابطه با DNS  وجود دارد که باید حواسمان به آن ها باشد چرا که مهاجمان معمولا از آن‌ها برای سوء استفاده از DNS بهره می‌برند:

1) سرورهای داخلی DNS تمام اسامی سرورها و آدرس‌های IP را برای دامنه‌های خود نگه داشته و آن‌ها را با هر کسی که آن‌ها را درخواست کنند به اشتراک می‌گذارد. این کار باعث می‌شود DNS منبع مهمی از اطلاعات در هنگام شناسایی توسط مهاجمان باشد.

2) کش‌های DNS به صورت authoritative نیستند و می‌توان آن‌ها را دستکاری کرد. اگر سرور DNS شما با رکوردهای بد دستکاری شود، ممکن است سیستم ها دچار اشتباه شده و به مکان‌های اشتباه بروند.

3) DNS سرور شما اطلاعات جستجو شده از ایستگاه‌های کار داخلی را از طریق سرورهای خارجی resolve می‌کند، و به این ترتیب مهاجمان می‌توانند از این رفتار DNS سرور برای ایجاد «covert channel ها» برای ارتباطات استفاده کنند.

کافیست شما DNS سرور خود را به گونه ای تنظیم نمایید که توضیحات داده شده در بالا را به صورت بهینه شده و سفارشی انجام دهد.