
در این بخش از دوره SEC504 از موسسه SANS به آشنایی با مبحث پاک کردن رد پا یا Covering Tracks اشاره و در این بخش به پاک کردن ردپا در شبکه می پرازیم.
Covering Tracks on the Network
تا اینجا به نحوه پاک کردن ردپای نفوذگران ( Covering Tracks ) در سسیتمعاملهای یونیکس و ویندوز پرداختیم و اکنون به اینکه نفوذگران چگونه در شبکه میتوانند ردپای خود را مخفی نمایند میپردازیم.
Tunneling and Covert Channels
یکی از رایجترین شیوه پنهان کردن اطلاعات هنگام انتقال در شبکه، استفاده از تکنیکی به نام Tunneling است. با استفاده از Tunneling، یک پروتکل داخل یک پروتکل دیگر انتقال مییابد. به عنوان مثال شما میتوانید دستورات شل را داخل ترافیک وب منتقل نمایید. همچنین شما میتوانید ترافیک شل را داخل بستههای ICMP منتقل کنید.
Reverse HTTP Shells
در برخی از موارد امکان استفاده از Bind Shell و Reverse Shell وجود ندارد. در این صورت شما میتوانید از Reverse HTTP Shell استفاده کنید. در این حالت شما باید یک برنامه را در سیستم قربانی اجرا کنید که این برنامه مربوط به Reverse HTTP Shell میباشد.
در سیستم نفوذگر هم Command Line Interface قرار دارد که دستورات در آن جا وارد میشود. در سمت سیستم قربانی که داخل شبکه قرار دارد، در فواصل زمانی از پیش تعیین شدهای به اینترنت درخواست ارسال نموده تا دستورات را از سیستم مهاجم دریافت نماید.
مهاجم دستورات را در محیط دستوری خود وارد میکند و این دستورات توسط ماشین قربانی دریافت میشود و پس از اجرا خروجی آن به نفوذگر نمایش داده میشود.
لازم به ذکر است که این مراحل با استفاده از پروتکل HTTP صورت میگیرد.
ICMP Tunnels
علاوه بر انتقال اطلاعات از طریق HTTP، روش دیگر استفاده از پروتکل ICMP برای انتقال اطلاعات است. بسیاری از شبکهها اجازه خروج بستههای ICMP و دریافت بستههای مرتبط با آن را میدهند. استفاده از بستههای Ping یک راه مفید برای ارسال اطلاعات به صورت مخفی میباشد. ابزارهای متعددی برای این منظور وجود دارد که از جمله آنها میتوان به ابزارهای Ptunnel، Loki، PingChat، ICMPShell و ICMPCmd اشاره کرد.
آشنایی با Covering Tracks در ویندوز
به عنوان نمونه ابزار Ptunnel یکی از ابزارهای مفید جهت انجام ICMP Tunnel میباشد. این ابزار توسط Daniel St0dle نوشته شده است و بر روی ویندوز و لینوکس قابل اجرا میباشد.
این ابزار ارتباطات TCP را داخل بستههای ICMP Echo و ICMP Reply انتقال میدهد. نویسنده این ابزار میگوید: ” این ابزار برای زمانی طراحی شده است که همه چیز مسدود شده است “
Ptunnel
ابزار Ptunnel شامل دو بخش Ptunnel Client و Ptunnel Proxy میباشد. نفوذگر Ptunnel Client را به گونهای تنظیم میکند که بر رو یک پورت TCP به اینترفیس Localhost به گوش باشد. علاوه بر این نفوذگر باید Ptunnel Proxy که بر روی ماشین خارجی اجرا میشود را به گونهای تنظیم کند که از طریق بستههای Ping ارسال شده از Ptunnel Client قابل دسترس باشد. در نهایت نفوذگر Ptunnel Client را با یک آدرس مقصد نهایی تنظیم میکند.
سپس نفوذگر یک برنامه مبتنی بر TCP را بر روی سیستم خود اجرا میکند و آن را به سمت اینترفیس Localhost و پورتی که قبلا به گوش نموده است، هدایت میکند. Ptunnel Client بستههای TCP را میگیرد و آنها را در قالب بستههای ICMP Echo اصطلاحا کپسوله (Encapsulate) میکند و بسته تولید شده را به Ptunnel Proxy منتقل میکند.
لازم به ذکر است که از دیدگاه شبکه فقط بستههای Ping در حال انتقال هستند و دیده میشوند. در ادامه Ptunnel Proxy عملیات خارج کردن از کپسوله (De-Encapsulate) بستهها را انجام میدهد و آنها را با استفاده از پروتکل TCP به مقصد نهایی هدایت میکند. به همین ترتیب Ptunnel Proxy نیز هرگونه پاسخ دریافتی از مقصد را کپسوله نموده و داخل بستههای ICMP Echo Reply قرار داده و به سمت کلاینت هدایت میکند.
شما میتوانید Ptunnel Proxy را برای احراز هویت Ptunnel Client پیکربندی نمایید که این کار با الگوریتم MD5-based challenge/response انجام میشود ولی در حال حاضر ابزار Ptunnel قابلیت رمزنگاری را پشتیبانی نمیکند ولی اگر نفوذگر از ارتباطات رمزنگاری شده مانند HTTPS یا SSH استفاده نمایید تا حدودی میتواند از دادههای خود محافظت نماید.
Covert TCP
در بخش پیشین به روش هایی اشاره شد که به وسیله آنها میتوانستیم از طریق کانالهای مخفی یا Covert Channel یک پروتکل را داخل یک پروتکل دیگر مخفی نمود. علاوه بر این شما میتوانید با استفاده تکنیکهای دیگر، دادههای مورد نظر خود را داخل بخش های استفاده نشده از پروتکل یا سوء استفاده از بخش Header پروتکل مخفی نمایید.
مجموعه پروتکلهای TCP/IP برای انتقال در کانالهای مخفی بسیار مفید هستند. بسیاری از فیلدهای Header مربوط به پروتکلهای TCP و IP دارای امکانات فراوانی هستند که از طریق آنها میتوان دادهها را ارسال نمود. البته پروتکلهای دیگری مانند DNS، QUICK یا Quick UDP Internet Connection و SCTP یا Stream Control Transmission Protocol نیز در فرآیندهای مربوط به Covert Channel مورد استفاده قرار میگیرند.
یک ابزار جالب که استفاده از هدرهای TCP/IP را برای ایجاد کانال های مخفی به ما نمایش میدهد، ابزار Covert_TCP میباشد. این ابزار توسط Craig H.Rowland نوشته شده و همچنین به عنوان بخشی از مقاله وی برای نشان دادن انتقال داده از کانالهای مخفی از طریق پروتکل TCP/IP میباشد. اگرچه این ابزار چند سال پیش معرفی شده است ولی مفاهیم مهم مربوط به Covert Channel را به خوبی نمایش میدهد.
ابزار Covert_TCP اجازه انتقال اطلاعات توسط ورودیهای ASCII در جریان هدرهای TCP/IP زیر را میدهد.
• هدر IP Identification
• هدر TCP Initial Sequence Number
• هدر TCP Acknowledgement Sequence Number
فیلد IP Identification برای تقسیم بندی یا اصطلاحا Fragmentation مورد استفاده قرار میگیرد. هنگامیکه یک سیستم به صورت قانونی بستهها را تقسیم میکند، از فیلد IP Identification برای ایجاد یک شماره منحصر به فرد برای تمایز ایجاد نمودن بین بستههای ارسالی استفاده میشود و نمایش میدهد که این بستهها مجموعا مربوط به یک بسته میباشند و تنها به صورت تکه تکه در آمدهاند تا از کانالهای ارتباطی عبور کنند.
فیلد Sequence Number شماره ترتیب آخرین بایتی که در فیلد داده از بسته جاری قرار دارد را نشان میدهد که به منظور جلوگیری از، از دست رفتن ارتباط و انتقال اطلاعات استفاده میشود.
به عنوان مثال اگر در این فیلد عدد 34231 قرار گرفته باشد یعنی دادهها تا بایت 34231 درون این فیلد داده قرار دارد.
فیلد Acknowledgement Number شماره ترتیب بایتی را که فرستنده بسته منتظر دریافت آن است تعیین میکند.
به عنوان مثال اگر در این فیلد عدد 34231 قرار گرفته باشد یعنی از رشته دادهها تا شماره 34230 صحیح و کامل دریافت شده و منتظر بایتهای از 34231 به بعد میباشد.
نفوذگر میتواند اطلاعات را داخل این فیلدها بارگذاری نموده و از آن برای انتقال دادهها در شبکه با ابزار Covert_TCP استفاده نماید. البته اجزای دیگر هدر مربوط به پروتکلهای IP، TCP و حتی UDP نیز میتوانند برای انتقال دادهها استفاده شوند برخی از این هدرها مانند Reserved، Window، Code Bits، Options و یا Padding میتوانند برای انتقال اطلاعات مورد استفاده قرار گیرند ولی ابزار Covert_TCP تنها سه فیلد مذکور را پشتیبانی مینماید.
جلوگیری از حملات Cover Channel
برای جلوگیری از این حملات ابتدا باید سیستم نفوذگر را شناسایی نموده و آن را متوقف کنید.
پروسسهای فعال بر روی ماشین های خود را بررسی کرده و موارد مشکوک را متوقف کنید.
در شبکه میتوانید از سیستم های تشخیص نفوذ مبتنی بر شبکه به منظور تشخیص رفتارهای نامعمول در شبکه استفاده کنید. شما باید ترافیکهای غیر معمول در ICMP، تغییر غیر معمول در فیلدهای IP ID ها و Sequence Number و Acknowledgement Number را نیز مورد بررسی قرار دهید.