انتقال اطلاعات از یک کاربر به کاربر دیگر و یا به اشتراک گذاری محتوا و فایلها یکی از نیازهای روزافزون در شبکه های کامپیوتری می باشد که برای آن پروتکلهای استانداردی نظیر FTP به عنوان یکی از معروفترین و محبوترین آنها، تعریف شده است. FTP یا همان پروتکل انتقال فایل، اگرچه ویژگی های فنی بسیار خوبی دارد، اما متاسفانه فاقد امنیت کافی جهت رمزنگاری بر روی نام های کاربری و رمزعبور و همچنین فایل های انتقالی می باشد. در این مقاله سعی میکنیم ضمن بررسی کارکرد این پروتکل معروف به بیان آسیب پذیری های امنیتی موجود در آن و راهکارهای امن سازی مرتبط می پردازیم.
استفاده از فناوری اطلاعات و زیرساختهای آن در کنار امکانات و تسهيلاتی که در اختيار سازمانها میگذارد، آنان را در معرض مشکلات و خطراتی نيز قرار میدهد. امنیت اطلاعات یکی از مهمترین بخش های فناوری اطلاعات می باشد که هدف آن حفظ سرمایه های سازمانی (شامل اطلاعات و داده های کامپیوتری، منابع نرم افزاری، سخت افزاری، اطلاعاتی و ارتباطی و … ) در برابر ورود افراد غیر مجاز به شبکه و زیرساختهای سازمان و سوء استفاده از اطلاعات مبادله شده می باشد.
شبکههای کامپیوتری اگرچه یک بستر یکپارچه را برای ارتباط اجزای مختلف یک کسب و کار فراهم میآوردند، اما در صورتیکه مورد تهاجم نفوذگران قرار گیرند، به نقطه آسیبپذیری تبدیل خواهند شد. سارقان اینترنتی با نفوذ به برنامههای کاربردی – که پنجره ارتباطی سازمانها و مخاطبانشان هستند- عملکرد کسب و کار سازمانها و بنگاههای اقتصادی را مختل می کنند و با نفوذ به پایگاههای داده، اطلاعات حیاتی سازمانها و مشتریانشان را به سرقت میبرند.
در یک شبکه کامپیوتری سرویسهای زیادی راه اندازی شده و مورد بهره برداری قرار می گیرند (مانند DNS, DHCP, NTP). انتقال اطلاعات از یک کاربر به کاربر دیگر و یا به اشتراک گذاری محتوا و فایلها یکی از نیازهای روزافزون در شبکه است که برای آن پروتکلهای استانداردی نیز تعریف شده است و FTP یکی از آنهاست که رواج بسیاری یافته است.
FTP پروتکلی است برای انتقال فایل ها از یک سیستم به سیستم دیگر که دارای یک سرور و کلاینت های بسیاری است که به سرور متصل می شوند. اولین برنامه های کاربردی سرویس گیرنده FTP، برنامه های خط فرمان (Command Line) بودند که هیچگونه رابط گرافیکی نداشتند، اما امروزه این فایلها با رابط گرافیکی و با سیستم عامل های ویندوز، لینوکس و یونیکس ارسال می شوند. بصورت پیش فرض این سرویس بر روی پورت 21 فعال می شود.
FTP اگرچه ویژگی های فنی بسیار عالی داشت، اما متاسفانه فاقد امنیت کافی جهت رمزنگاری بر روی نام های کاربری و رمزعبور و فایل های انتقالی بود. بنابراین برای پشتیبانی از زیرساختهای امنیتی در پروتکل فوق، پروتکلهای FTPS و SFTP توسعه داده شد. امروزه پس از سالها که از معرفی این پروتکلهای استاندارد می گذرد، سرویسهایی مانند Dropbox با پروتکل اختصاصی جهت به اشتراک گذاری اطلاعات بر روی بستر وب وجود دارند که مستقل از پروتکلهای فوق می باشند.
این پروتکل دقیقا مشابه FTP است، با این تفاوت که همه چیز در آن رمزنگاری شده است و بر همین اساس اگر کاربر غیرمجازی به مسیر ارتباطی FTP دسترسی پیدا کند، نمی تواند از آن اطلاعات استفاده نماید. FTPs برخلاف FTP از پورت 21 برای ارسال دستورات و از پورت 20 برای تبادل اطلاعات استفاده می کند.
در SFTP که به عنوان SSH FTP نیز شناخته می شود، کلیه دستورات و داده ها هنگام انتقال رمزگذاری می شود. SSH پروتکلی است که به کاربر امکان می دهد از راه دور به سیستم های دیگر متصل شده و از خط فرمان، دستورات را اجرا نماید. امنیت از ویژگیهای بارز این پروتکل ارتباطی است.
در جدول زیر مقایسه ای بین پروتکل های مختلف انجام شده است تا نقاط قوت و ضعف آنها در قیاس با یکدیگر مشخص شود.
یک مهاجم همیشه برای یافتن اطلاعات مهم (مانند نسخه نرم افزار استفاده شده) اقدام به شناسایی از طریق روش Banner Grabbing کرده و سپس وضعیت آسیب پذیری آن را در برابر هرگونه سوء استفاده شناسایی می کند. اگر در ابزار Nmap برای اسکن پورت 21 استفاده شده و این سرویس در سرور هدف فعال باشد، State آن در خروجی به صورت Open نمایش داده خواهد شد. تصویر زیر نمونه ای در این حوزه است.
anonymous FTP روشی برای دسترسی کاربران به پرونده ها است تا نیازی به احراز هویت در سمت سرور نداشته باشند. معمولاً می توان هر عبارت یا ترکیبی از کاراکترها را بعنوان رمزعبور استفاده کرد. اگر anonymous login توسط Admin بر روی سرور FTP فعال باشد، هر شخصی می تواند به سرویس FTP متصل گردد. جهت بررسی این موضوع می توان از Metasploit استفاده کرد.
Use auxiliary/scanner/ftp/anonymous
msf auxiliary(anonymous) >set rhosts 192.168.0.106
msf auxiliary(anonymous) >exploit
همانطور که در تصویر زیر مشاهده می شود دسترسی anonymous بر روی سرور مورد نظر فعال می باشد.
یکی دیگر از روش های متداول برای سرقت credential ها، حمله Brute Force به FTP Server با استفاده از ابزار Hydra می باشد.
Linux Command: hydra -l root -P passwords.txt [-t 32] ftp
در برخی مواقع اگرچه Admin بنر را پنهان کرده و کاربر anonymous را از کار انداخته است، اما با این وجود امکان سرقت credential برای دسترسی غیرمجاز وجود دارد. یک مهاجم با استفاده از ابزارهای sniffing می توانند پکت های انتقالی بین سرور و کلاینت در یک شبکه را بدست آورده و در صورت وجود credential در پکت های دریافتی، آنها را سرقت نماید. این حمله به شنود (sniffing) معروف است. از آنجا که به صورت پیش فرض اطلاعات احراز هویت کاربر در پروتکل FTP به صورت clear-text در شبکه منتقل می گردد، بنابراین در صورت دسترسی مهاجم به شبکه و شنود ترافیک آن، امکان سرقت credential وجود دارد.
دستور PORT برای اتصال به دیگر پورت های سرور FTP استفاده می شود و برخی از سرورهای FTP آنرا مجاز می دانند. بنابراین با استفاده از این دستور امکان اسکن دیگر پورت های سرور FTP امکانپذیر می باشد. جهت بررسی این آسیب پذیری مراحل زیر انجام می شود:
به طور مثال در تصویر زیر با استفاده از دستور PORT پورت های 8080 و 7777 اسکن شده است.
به طور مثال در تصویر زیر با استفاده از دستور EPRT پورت های 8080 و 7777 اسکن شده است.
به طور کلی مهاجمان همواره در تلاش هستند تا با بررسی تخصصی سرویسها و نرمافزارهایی که از این پروتکل و سرویسهای مذکور استفاده میکنند، اقدام به پیدا کردن آسیبپذیریها و بهرهبرداری از آنها کنند. آسیبپذیریهای تخصصی شامل مواردی مانند حملات عمومی نظیر Brute Force و یا Default Credentials و Default Configuration نمیشود و شامل مواردی خواهد بود که کشف آسیبپذیری و اکسپلویت آن از طریق آزمایشگاههای امنیتی میسر شده است.
از نظر نوع شناسایی، آسیب پذیری ها به دو گروه تقسیم می شوند:
با توجه به ماهیت متنوع حملات موجود در سطح شبکه و به ویژه FTP، لازم است ترافیک شبکه و نحوه عملکرد تجهیزات با دقت بررسی و تحلیل شود تا هرگونه رفتار غیرطبیعی با سرعت بررسی شده و از تبعات غیرقابل جبران آنها جلوگیری شود. به این منظور استفاده از یک مرکز عملیات امنیت (SOC) می تواند بسیار راهگشا باشد.
پس از راه اندازی سرویس FTP و با توجه به آسیب پذیری شناسایی شده برای آن، جهت امن سازی مجموع ای از راهکارها قابل پیشنهاد است که از جمله آنها میتوان به موارد زیر اشاره کرد:
نصب اخرین Patch های امنیتی منتشر شده، همیشه یکی از راههای اصلی برای پیشگیری از وقوع حملات است. این وصله ها بر اساس آسیب پذیری های شناسایی شده و توسط سازنده یا توسعه دهنده سرویس پیشنهادی می شود تا رخنه های امنیتی را پوشش دهد.
جهت جلوگیری از اتصال به سرور FTP به صورت anonymous مراحل زیر پیشنهاد می شود:
جهت جلوگیری از حملات Brute Force و Default Credentials، قبل از هر چیز پیشنهاد می شود از نام های کاربری و رمزعبورهای ساده و قابل حدس استفاده نشود. همچنین جهت جلوگیری از حمله Brute Force در تنظیمات FTP محدودیت بر روی وارد کردن رمزعبور اشتباه پیاده سازی گردد.
جهت اعمال تنظیمات اضافی مراحل زیر قابل انجام است:
بعد از راه اندازی سرویس FTP اطلاعات به صورت پیش فرض به صورت Clear Text منتقل می شود؛ لذا پیشنهاد می شود که سرویس SSL بر روی آن فعال شود. جهت فعال سازی SSL می توان به ترتیب مراحل زیر عمل نمود:
جهت جلوگیری از آسیب پذیری FTPBounce attack پیشنهاد می شود 2 دستور "EPRT" و "PORT" بر روی سرور FTP مسدود گردد. جهت مسدود سازی این دستورات مراحل زیر قابل انجام است:
جلوگیری از قابل تشخیص بودن FTP Server یکی از روشهایی است که مهاجم را در برابر اهداف، دچار سردرگمی می کند. به این منظور باید در تنظیمات FTP Server بنر مورد نظر مخفی شده و به کاربران نمایش داده نشود. برای این کار مراحل زیر به این منظور پیشنهاد می شود:
با توجه به موارد فوق، باید توجه داشت که امن سازی یک فعالیت مستمر است و باید بصورت دورهای و بر اساس چک لیستهای امن سازی منطبق بر استانداردها، تکرار شود. از طرف دیگر لازم است با تستهای نفوذ پذیری و انجام ارزیابی های امنیتی دوره ای بر روی شبکه و سایر زیرساختهای فناوری اطلاعات، رخنه های امنیتی احتمالی آنها را شناسایی و رفع نمود.