آسیب پذیریهای FTP و روشهای امن سازی آنها
مقدمه
انتقال اطلاعات از یک کاربر به کاربر دیگر و یا به اشتراک گذاری محتوا و فایلها یکی از نیازهای روزافزون در شبکه های کامپیوتری می باشد که برای آن پروتکلهای استانداردی نظیر FTP به عنوان یکی از معروفترین و محبوترین آنها، تعریف شده است. FTP یا همان پروتکل انتقال فایل، اگرچه ویژگی های فنی بسیار خوبی دارد، اما متاسفانه فاقد امنیت کافی جهت رمزنگاری بر روی نام های کاربری و رمزعبور و همچنین فایل های انتقالی می باشد. در این مقاله سعی میکنیم ضمن بررسی کارکرد این پروتکل معروف به بیان آسیب پذیری های امنیتی موجود در آن و راهکارهای امن سازی مرتبط می پردازیم.
استفاده از فناوری اطلاعات و زیرساختهای آن در کنار امکانات و تسهیلاتی که در اختیار سازمانها میگذارد، آنان را در معرض مشکلات و خطراتی نیز قرار میدهد. امنیت اطلاعات یکی از مهمترین بخش های فناوری اطلاعات می باشد که هدف آن حفظ سرمایه های سازمانی (شامل اطلاعات و داده های کامپیوتری، منابع نرم افزاری، سخت افزاری، اطلاعاتی و ارتباطی و … ) در برابر ورود افراد غیر مجاز به شبکه و زیرساختهای سازمان و سوء استفاده از اطلاعات مبادله شده می باشد.
شبکههای کامپیوتری اگرچه یک بستر یکپارچه را برای ارتباط اجزای مختلف یک کسب و کار فراهم میآوردند، اما در صورتیکه مورد تهاجم نفوذگران قرار گیرند، به نقطه آسیبپذیری تبدیل خواهند شد. سارقان اینترنتی با نفوذ به برنامههای کاربردی – که پنجره ارتباطی سازمانها و مخاطبانشان هستند- عملکرد کسب و کار سازمانها و بنگاههای اقتصادی را مختل می کنند و با نفوذ به پایگاههای داده، اطلاعات حیاتی سازمانها و مشتریانشان را به سرقت میبرند.
در یک شبکه کامپیوتری سرویسهای زیادی راه اندازی شده و مورد بهره برداری قرار می گیرند (مانند DNS, DHCP, NTP). انتقال اطلاعات از یک کاربر به کاربر دیگر و یا به اشتراک گذاری محتوا و فایلها یکی از نیازهای روزافزون در شبکه است که برای آن پروتکلهای استانداردی نیز تعریف شده است و FTP یکی از آنهاست که رواج بسیاری یافته است.

FTP پروتکلی است برای انتقال فایل ها از یک سیستم به سیستم دیگر که دارای یک سرور و کلاینت های بسیاری است که به سرور متصل می شوند. اولین برنامه های کاربردی سرویس گیرنده FTP، برنامه های خط فرمان (Command Line) بودند که هیچگونه رابط گرافیکی نداشتند، اما امروزه این فایلها با رابط گرافیکی و با سیستم عامل های ویندوز، لینوکس و یونیکس ارسال می شوند. بصورت پیش فرض این سرویس بر روی پورت 21 فعال می شود.

امنیت در FTP
FTP اگرچه ویژگی های فنی بسیار عالی داشت، اما متاسفانه فاقد امنیت کافی جهت رمزنگاری بر روی نام های کاربری و رمزعبور و فایل های انتقالی بود. بنابراین برای پشتیبانی از زیرساختهای امنیتی در پروتکل فوق، پروتکلهای FTPS و SFTP توسعه داده شد. امروزه پس از سالها که از معرفی این پروتکلهای استاندارد می گذرد، سرویسهایی مانند Dropbox با پروتکل اختصاصی جهت به اشتراک گذاری اطلاعات بر روی بستر وب وجود دارند که مستقل از پروتکلهای فوق می باشند.
FTPs چیست؟
این پروتکل دقیقا مشابه FTP است، با این تفاوت که همه چیز در آن رمزنگاری شده است و بر همین اساس اگر کاربر غیرمجازی به مسیر ارتباطی FTP دسترسی پیدا کند، نمی تواند از آن اطلاعات استفاده نماید. FTPs برخلاف FTP از پورت 21 برای ارسال دستورات و از پورت 20 برای تبادل اطلاعات استفاده می کند.
SFTP چیست؟
در SFTP که به عنوان SSH FTP نیز شناخته می شود، کلیه دستورات و داده ها هنگام انتقال رمزگذاری می شود. SSH پروتکلی است که به کاربر امکان می دهد از راه دور به سیستم های دیگر متصل شده و از خط فرمان، دستورات را اجرا نماید. امنیت از ویژگیهای بارز این پروتکل ارتباطی است.
کدام پروتکل بهتر است؟
در جدول زیر مقایسه ای بین پروتکل های مختلف انجام شده است تا نقاط قوت و ضعف آنها در قیاس با یکدیگر مشخص شود.
| پروتکل | مزایا | معایب |
| FTP |
|
|
| FTPs |
|
|
| SFTP |
|
|
شناسایی سرویس FTP
یک مهاجم همیشه برای یافتن اطلاعات مهم (مانند نسخه نرم افزار استفاده شده) اقدام به شناسایی از طریق روش Banner Grabbing کرده و سپس وضعیت آسیب پذیری آن را در برابر هرگونه سوء استفاده شناسایی می کند. اگر در ابزار Nmap برای اسکن پورت 21 استفاده شده و این سرویس در سرور هدف فعال باشد، State آن در خروجی به صورت Open نمایش داده خواهد شد. تصویر زیر نمونه ای در این حوزه است.

حملات FTP
حملات عمومی
-
Anonymous Login
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 بر روی سرور مورد نظر فعال می باشد.

-
FTP Brute force Attack
یکی دیگر از روش های متداول برای سرقت credential ها، حمله Brute Force به FTP Server با استفاده از ابزار Hydra می باشد.
Linux Command: hydra -l root -P passwords.txt [-t 32] ftp

-
FTP sniffing Attack
در برخی مواقع اگرچه Admin بنر را پنهان کرده و کاربر anonymous را از کار انداخته است، اما با این وجود امکان سرقت credential برای دسترسی غیرمجاز وجود دارد. یک مهاجم با استفاده از ابزارهای sniffing می توانند پکت های انتقالی بین سرور و کلاینت در یک شبکه را بدست آورده و در صورت وجود credential در پکت های دریافتی، آنها را سرقت نماید. این حمله به شنود (sniffing) معروف است. از آنجا که به صورت پیش فرض اطلاعات احراز هویت کاربر در پروتکل FTP به صورت clear-text در شبکه منتقل می گردد، بنابراین در صورت دسترسی مهاجم به شبکه و شنود ترافیک آن، امکان سرقت credential وجود دارد.

-
FTP Bounce attack
دستور PORT برای اتصال به دیگر پورت های سرور FTP استفاده می شود و برخی از سرورهای FTP آنرا مجاز می دانند. بنابراین با استفاده از این دستور امکان اسکن دیگر پورت های سرور FTP امکانپذیر می باشد. جهت بررسی این آسیب پذیری مراحل زیر انجام می شود:
- اتصال به سرور آسیب پذیر FTP
- استفاده از دستور PORT یا EPRT جهت ایجاد درخواست ارتباط با سرور و پورت مورد نظر
- استفاده از دستور LIST جهت ارسال درخواست به سرور و پورت مورد نظر و چک کردن پاسخ برگشتی: 150 File status okay(به معنی باز بودن پورت) یا 425 No connection established (به معنی بسته بودن پورت)
به طور مثال در تصویر زیر با استفاده از دستور PORT پورت های 8080 و 7777 اسکن شده است.

به طور مثال در تصویر زیر با استفاده از دستور EPRT پورت های 8080 و 7777 اسکن شده است.

حملات تخصصی
به طور کلی مهاجمان همواره در تلاش هستند تا با بررسی تخصصی سرویسها و نرمافزارهایی که از این پروتکل و سرویسهای مذکور استفاده میکنند، اقدام به پیدا کردن آسیبپذیریها و بهرهبرداری از آنها کنند. آسیبپذیریهای تخصصی شامل مواردی مانند حملات عمومی نظیر Brute Force و یا Default Credentials و Default Configuration نمیشود و شامل مواردی خواهد بود که کشف آسیبپذیری و اکسپلویت آن از طریق آزمایشگاههای امنیتی میسر شده است.
از نظر نوع شناسایی، آسیب پذیری ها به دو گروه تقسیم می شوند:
- دسته اول آسیبپذیریهای (روز صفرم) 0-day هستند که فقط خود شخص محقق امنیت سایبری یا مهاجم آنرا یافته است و اقدام به بهرهبرداری از آن میکند.
- دسته بعدی آسیبپذیریهای عمومی شده (یا به اصطلاح روز یکم (1-Day)) میباشند که به تازگی از یک سرویس، پروتکل و یا نرمافزار منتشر شده و برای آن معمولاً اقدام به ثبت و دریافت CVE میشود. بعد از منتشر شدن عمومی آسیبپذیری تخصصی یافت شده از سرویس مورد نظر، افراد اقدام به نوشتن و انتشار تکه کدهایی میکنند که از آن به عنوان Exploit یاد میشود و بهرهبرداری از آسیبپذیری را ممکن می سازد. تصویر زیر نمونههایی از این آسیب پذیری ها را نشان می دهد.


با توجه به ماهیت متنوع حملات موجود در سطح شبکه و به ویژه FTP، لازم است ترافیک شبکه و نحوه عملکرد تجهیزات با دقت بررسی و تحلیل شود تا هرگونه رفتار غیرطبیعی با سرعت بررسی شده و از تبعات غیرقابل جبران آنها جلوگیری شود. به این منظور استفاده از یک مرکز عملیات امنیت (SOC) می تواند بسیار راهگشا باشد.
امن سازی سرویس FTP
پس از راه اندازی سرویس FTP و با توجه به آسیب پذیری شناسایی شده برای آن، جهت امن سازی مجموع ای از راهکارها قابل پیشنهاد است که از جمله آنها میتوان به موارد زیر اشاره کرد:
نصب آخرین وصله های امنیتی
نصب اخرین Patch های امنیتی منتشر شده، همیشه یکی از راههای اصلی برای پیشگیری از وقوع حملات است. این وصله ها بر اساس آسیب پذیری های شناسایی شده و توسط سازنده یا توسعه دهنده سرویس پیشنهادی می شود تا رخنه های امنیتی را پوشش دهد.
جلوگیری از اتصال anonymous
جهت جلوگیری از اتصال به سرور FTP به صورت anonymous مراحل زیر پیشنهاد می شود:
- در پنجره ” Internet Information Services (IIS) Manager”، سرور مورد نظر انتخاب می شود.
- با دوبار کلیک بر روی ” FTP Authentication”، این پنجره باز شده و با راست کلیک کردن روی گزینه “Anonymous Authentication” امکان “Disabled” کردن این نوع اتصال فراهم می شود.


جلوگیری از حملات Brute Force و Default Credentials
جهت جلوگیری از حملات Brute Force و Default Credentials، قبل از هر چیز پیشنهاد می شود از نام های کاربری و رمزعبورهای ساده و قابل حدس استفاده نشود. همچنین جهت جلوگیری از حمله Brute Force در تنظیمات FTP محدودیت بر روی وارد کردن رمزعبور اشتباه پیاده سازی گردد.
جهت اعمال تنظیمات اضافی مراحل زیر قابل انجام است:
- در پنجره ” Internet Information Services (IIS) Manager”، سرور مورد نظر انتخاب شود.
- بر روی ” FTP Logon Attempt Restrictions” راست کلیک شده و گزینه “Enable FTP Logon Attempt Restrictions ” فعال می شود.
- گزینه ” maximum number of failed login attempts” جهت تعیین حداکثر وارد کردن تعداد رمزعبور اشتباه می باشد.
- گزینه ” Time period (in Seconds)” تعیین کننده مدت زمان مسدود شدن کاربر پس از وارد کردن تعداد رمزعبور اشتباه می باشد.
- در صورت فعال بودن گزینه ” deny ip address based on the number of failed login attempts” باعث مسدود سازی IP Address کاربر خواهد شد.
- در صورت فعال بودن گزینه ” write to the log only will not restrict clients even if maximum failed attempts are exceeded “، پس از گذر از تعداد محدودیت، دسترسی کاربر محدود نمی شود اما Log کاربر ثبت می گردد.


راه اندازی SSL
بعد از راه اندازی سرویس FTP اطلاعات به صورت پیش فرض به صورت Clear Text منتقل می شود؛ لذا پیشنهاد می شود که سرویس SSL بر روی آن فعال شود. جهت فعال سازی SSL می توان به ترتیب مراحل زیر عمل نمود:
- از پنجره ” Internet Information Services (IIS) Manager” سرور مورد نظر انتخاب می شود.
- با کلیک بر روی ” FTP SSL Settings”، فرم مربوطه باز خواهد شد که در بخش “SSL Certificate” گواهینامه امنیتی مورد نظر آدرس دهی می شود. در پایین این بخش 3 گزینه وجود دارد که با توجه به سیاست سازمانی، می توان گزینه مناسب را انتخاب نمود.
- Allow: اتصال به صورت ایمن را مجاز می داند؛ اما به معنی الزام نیست.
- Require: اتصال به صورت ایمن را الزام می کند.
- Require only for credentials: فقط اطلاعات هویتی کاربری (نام کاربری و رمزعبور) را در بستر SSL انتقال می دهد.
- انتخاب گزینه “Apply” این تنظیمات را ثبت خواهد کرد.


جلوگیری از FTP Bounce attack
جهت جلوگیری از آسیب پذیری FTPBounce attack پیشنهاد می شود 2 دستور “EPRT” و “PORT” بر روی سرور FTP مسدود گردد. جهت مسدود سازی این دستورات مراحل زیر قابل انجام است:
- از پنجره ” Internet Information Services (IIS) Manager” سرور مورد نظر انتخاب می شود.
- با کلیک بر روی ” FTP Request Filtering” و از بخش “Commands”، گزینه “Deny Command” که مربوط به اعمال این محدودیت است، قابل مشاهده است.
- در پنجره باز شده Command مورد نظری که قرار است مسدود شود، وارد شده و کلیک بر روی دکمه OK آنرا ثبت می کند.


جلوگیری از تشخیص FTP Server
جلوگیری از قابل تشخیص بودن FTP Server یکی از روشهایی است که مهاجم را در برابر اهداف، دچار سردرگمی می کند. به این منظور باید در تنظیمات FTP Server بنر مورد نظر مخفی شده و به کاربران نمایش داده نشود. برای این کار مراحل زیر به این منظور پیشنهاد می شود:
- از پنجره ” Internet Information Services (IIS) Manager” سرور مورد نظر انتخاب می شود.
- با کلیک بر روی ” FTP Messages”، صفحه جدیدی باز شده و گزینه ” Suppress Default Banner” فعال می شود.
- کلیک بر روی دکمه “Apply” در منوی سمت راست، تغییرات را ثبت خواهد کرد.


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