Geek

روز نوشت هایی در مورد امنیت

Geek

روز نوشت هایی در مورد امنیت

پیوندهای روزانه

تشخیص ترافیک های رمز شده در جریان بسته ها

جمعه, ۳۰ آبان ۱۳۹۳، ۰۲:۳۲ ب.ظ

تشخیص ترافیک های رمز شده در جریان بسته ها
همان طور که میدانیم پروتکل های متعددی برای رمزگذاری بسته ها در جریان شبکه استفاده می شوند مانند IPsec یا SSL . این پروتکل ها در قالب RFC های مختلف ، استاندارد شده اند . در این پست قصد داریم تا این ترافیک ها را بر اساس استاندارهای تعریف شده در RFC ، در جریان شبکه شناسایی کنیم . شاید سوال کنید که این شناسایی کجا به کار می آید ؟  این شناسایی میتواند در نوشتن ابزارهایی که مسئول دریافت جریان داده ها و تحلیل آن هستند ( مثلا IDPS ها ) بسیار کارا باشد . همچنین ابزارهایی مانند Wireshark دقیقا بر اساس همین نوع شناسایی نوشته شده اند . ما در این پست تنها پروتکل های امنیتی را بررسی میکنیم حال آنکه ابزاری مانند Wireshark ، تمامی پروتکل ها را به همین شکل بررسی میکند و به در نهایت به صورت گرافیکی نمایش میدهند. در این پست قصد بررسی مروری ترافیک های IPsec ، SSL و SSH را به صورت کاملا خلاصه داریم


شناسایی پروتکل SSL

این بخش بر روی پروتکل SSL v3  و TLS v1 تمرکز دارد . اگر بخواهیم پروتکل SSL  را مستقل از پورت بررسی کنیم ( پورت 443) باید به موارد زیر توجه داشته باشیم . یک پروتکل SSL در شروع کار ، با 5 بایت مشخص شروع می شود.

نکته : این موارد در IPv4 بررسی می شود و همچنین قسمت Data از بسته ها مورد نظر است



حال به بررسی Data بسته های پروتکل SSL میپردازیم.

  • بایت 0 شامل موارد زیر میتواند باشد.
0×14: SSL_Change_Cipher_Spec
0×15: SSL_Alert
0×16: SSL_Handshake
0×17: SSL_Application_Data


به تصویر زیر دقت کنید



در تصویر بالا ، نوع ترافیک از نوع application data میباشد . به همین دلیل مقدار 17 ( در مبنای هگز ) در پکت قرار میگیرد. البته در وایرشاک مقدار دسیمال آن یعنی 23 نمایش داده شده ولی ذکر شده که نوع آن Application data است 

  • بایت 1 و 2 شامل نسخه مورد استفاده SSL است 
0×0300: SSLv3
0×0301: TLSv1


به تصویری از ترافیک ضبط شده توسط wireshark دقت کنید.



همان طور که در تصویر میبینید که در این ترافیک ، نسخه TLS برابر نسخه 1 بوده سپس مقدار آن 0x0301 در پکت ها مشاهده می شود. نسخه SSL یا TLS در تمامی ترافیک های این پروتکل وجود دارد و قابل مشاهده است .

  • بایت 3 و 4 نیز شامل طول پکت رمز شده می باشد.
  • در ادامه نیز محتوای ترافیک رمز شده قرار دارد

پس در مجموع یک راهکار برای شناسایی پروتکل SSL در ترافیک شبکه این صورت زیر است .


tshark -r dec20.pcap -R "data.data[0:1] >= 14 && data.data[0:1] <= 17 && (data.data[1:2] == 0300 || data.data[1:2] == 0301)"

این یک دستور از ابزار tshark است که عملکرد کلی آن به این صورت است که در ترافیک شبکه ، ابتدا پکت را میخواند و بایت 0 آن را  بررسی میکند که بین 14 تا 17 ( در مبنای هگز ) باشد و همچنین مقدار بایت بعدی آن 0300 یا 0301  باشد . به این ترتیب پکت های رمز شده با پروتکل SSL قابل شناسایی هستند.
حال اگر بخواهیم مشخصات ارتباطات مانند handshake ها و ... را پیدا کنیم ، مجددا میتوانیم مانند بالا عمل کرده و مشخصات را استخراج کنیم . به تصویر زیر دقت کنید



تصویری از یک عملیات handshaking را مشاهده میکنید . حال اگر بخواهیم مقادیر موجود در cipher را استخراج کنیم که از چه الگوریتم های رمزنگاری پشتیبانی میکند ، ابتدا کافی است با همان روش های توضیح شده در بالا ، شناسایی کنیم پکت مربوط به پروتکل SSL است ، آنگاه مقادیر بایت های آن را به راحتی استخراج کنیم .


بررسی ترافیک SSH

در این پروتکل نیز ارتباطات به صورت رمز شده مبادله میگردد. اما در برقراری ارتباط اولیه بین clinet و server ، عملیات handshaking و توافق بر سر پروتکل های مورد استفاده به صورت clear انجام می شود تا client و server به یک توافق برای برقراری ارتباط امن برسند. تنها بخش قابل استخراج و ملموس ترافیک SSH همین عملیات ابتدایی آن است .
به تصویر زیر که یک ارتباط اولیه بین سرور و کلاینت است دقت کنید . در اینجا کلاینت یک درخواست TCP به پورت 22 سرور ارسال کرده است و سرور در پاسخ ، موارد زیر را برگشت داده است.



همان طور که مشاهده میکنید ، سرور،  نسخه SSH مورد استفاده خود را به کاربر برگردانده است . کاربر نیز در مقابل اپلیکیشن مورد استفاده خود را برمیگردانند ( مثلا putty ) . این توافقات تا آنجا ادامه پیدا میکند که هر دو طرفین به یک نقطه مشترک برسند و ارتباط امن برقرار شود.



در تصویر بالا مشاهده میکنید که کلاینت،  لیست الگوریتم های مورد پشتیبانی را برای سرور ارسال میکند. در مجموع شناسایی ترافیک SSH مشکل نبوده  و تنها کافی است تا کلمات کلیدی آن و مبنای هگز الگوریتم های مورد استفاده استخراج شود و پکت ها برای این نوع کلمات فیلتر شوند.
در مجموع برای شناسایی کل ترافیک یک ارتباط SSH ،  کافی است تا ارتباط اولیه شناسایی شود سپس تا زمان قطع ارتباط TCP آن به جمع آوری پکت های آن پرداخت.


شناسایی ترافیک IPSec و مشخصات آن

پروتکل IPSec پروتکلی است که یک تونل امن میان یک مبدا و مقصد خاص ایجاد میکند تا ارتباطات به صورت رمزنگاری شده انجام شود . همان طور که میدانیم پروتکل IPsec از پروتکلهای زیر برای تامین امنیت داده ها درشبکه استفاده میکند.
سرآیند احراز هویت (AH): این پروتکل تمامیت و احراز هویت مبداء دادهها را برای بسته های داده IP را فراهم کرده و از داده ها درمقابل حملات Replay محافظت میکند.
بسته بندی امن داده (ESP ): این پروتکل ، محرمانگی ،احراز هویت مبدأ داده ها ،تمامیت ویک سرویس ضد بازپخشی (replay) را ارائه مینماید.
مدیریت امنیت (SA): یک مجموعه از الگوریتم ها و داده ها ارائه میدهد که این مجموعه ،پارامترهای ضروری برای مدیریت کردن عملکرد پروتکل AH و یا پروتکل ESPرا فراهم میکند.  پروتکل ISAKMP، یک چهارچوب برای عملیات احراز هویت و تبادل کلید ارائه میدهد که در واقع این کلیدها یا به وسیله تنظیم دستی توسط کلیدهای از پیش به اشتراک گذاشته شده اند و یا از طریق Internet Key Exchange (IKE) تهیه میگردند.
حال برای اینکه تشخیص دهیم که آیا بسته موجود از پروتکل IPSec بهره میبرد میتوانیم به نوع پروتکل بسته رجوع کنیم . تعدادی پروتکل استاندارد توسط IANA تعریف شده اند که شماره این پروتکل ها در درون یک بسته قرار میگیرد. به فیلد proto در یک بسته IPv4 دقت کنید.شماره پروتکل در این فیلد قرار میگیرد.



اکنون به جدول زیر دقت کنید که شماره بعضی پروتکل های مطرح در آن قرار دارد.



همان طور که در جدول مشاهده میکنید ، پروتکل های ESP و AH مربوط به پروتکل IPSec شماره های 50 و 51 را به خود اختصاص داده اند که میتوان بسته های آن را با این پارامتر به راحتی تشخیص داد. حال نگاهی به محتوای بسته در وایرشاک داشته باشیم. در شکل زیر یک بسته را مشاهده میکنید که محتوای آن با IPSec رمزنگاری شده است.



همان طور که ملاحظه میکنید ، مقدار این فیلد عدد 50 و پروتکل ESP را نشان میدهد که یک بسته رمزنگاری شده با پروتکل IPSec است . البته مقدار هگز آن در بسته مقدرا 32 است و 50 مقدار دسیمال آن تنها برای نمایش است .
محتوای پروتکل AH در شرایط مختلف متفاوت است . همان طور که میدانیم IPSec در 2 مد Tunnel و Transport میتواند عمل کند. که در این 2 شرایط میتواند متفاوت باشد. به شکل زیر توجه کنید



در مد Tunnel نیز به صورت زیر خواهد بود .







نظرات  (۱)

سلام
ممنون از مطلب مفیدتان

ایا VPN هایی که به عنوان فیل کش استفاده می شوند، ترافیک را رمز می کنند؟ استاندارد معینی برای این کار دارند؟

پیشاپیش از پاسخگویی شما تشکر می کنم

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی