بررسی امنیتی و حمله FTP|آسیب پذیری FTP
FTP مخفف File Transfer Protocol است و یکی از قدیمیترین و رایجترین پروتکلهای انتقال فایل در شبکه و اینترنت محسوب میشود ، FTP پروتکلی است که برای ارسال، دریافت و مدیریت فایلها بین دو سیستم (Client و Server) در یک شبکه یا اینترنت استفاده میشود. به زبان ساده و خودمونی، FTP مثل یک پل است که اجازه میدهد فایلها را از کامپیوتر خود به سرور منتقل کنید یا برعکس.
حالا روند کار این پروتکل اینجوری است که بر اساس مدل Client–Server عمل میکند: یعنی Client روی Server که قرار فایل ها در آن ذخیره شود فایل ارسال میکند و حتی میتونه از فایل های اشتراک گزاشته شده توسط Client های دیگر شبکه استفاده کند. که روند ارسال و دریافت فایل ها از طریق دو Connection انجام میشود.
1- Control Connection (برای ارسال دستورات)
2- Data Connection (برای انتقال فایلها)
این پروتکل از دو پورت 20 و 21 استفاده میکند همپنین پروتکل FTP به تنهایی بدون رمز نگاری است و استفاده از آن در شبکه چندان کاربردی نیست و برای استفاده ازش باید از FTPS , SFTP به عنوان جایگزون استفاده کنیم ، زیرا این دو پروتکل ایمن تر هستند و دیتا را رمزنگاری میکنند.
شناسایی FTP روی سرور =
ابتدای کار همیشه مرحله شناسایی است ، برای اینکه متوجه شویم پروتکل FTP روی سرور مورد نظر فعال است یا خیر میتوانیم از ابزار های مختلف در سیستم عامل های مختلف استفاده کنیم و اجازه بیکار بودن به آنها ندیم .
روش اول =
برای مثال اگر فرض کنیم سرور که دیتا در آن ذخیره است داری IP : 192.168.1.30 باشد ، اگر سیستم عامل ویندوز داری فقط کافیه PowerShell را باز کنید و دستور زیر را وارد کنید :
tnc 192.168.1.30 -port 21
اگر خروجی نمایش داده شده Trou بود یعنی روی سرور مورد نظر پورت فعال است ولی اگر خروجی نمایش داده شده Fals بود یعنی سرور این پورت روش فعال نیست یا توسط فایروال مدیریت شده است.
روش دوم =
اگر سیستم عامل ویندوز داری و خیلی بهش علاقه داری بیا و ابزار Zenmap را دانلود و روی سیستم ویندوزی خود نصب کن و بعد از اجرا کردن آن میتونی با دستور زیر اسکن شناسایی پروتکل را انجام دهید.
nmap -p 21 192.168.1.30
روش سوم =
اگر سیستم کالی لینوکس داری که چه بهتر و حرفه ای تر هست و با ابزار های مانند nmap , Metasploit , nc پروتکل مورد نظر را شناسایی کنید.(برای مثال استفاده از nmap , nc)
nmap -p 21 192.168.1.30
nc -nv 192.168.1.30 21
خروجی تقریبا مثل همون Zenmap میشه اما برای حرفه ای تر میتونی دستور زیرا را بزنی که هم پروتکل را شناسایی کند و هم ورژن پروتوکل را شناسایی کند.
Nmap -p 21 -sV -Pn 192.168.1.30
روش چهارم =
با سیستم عامل کالی میتونید با ابزار Metasploit روی هدف که همان FTP سرور مورد نظر ما است اسکن و شناسایی خوبی انجام دهیم . با استفاده از دستورات زیر :
use auxiliary/scanner/ftp/ftp_bounce
set RHOSTS 192.168.1.30
set RPORT 21
run
اتصال با روش های مختلف به سرور =
اول بیایم نحوه کانکت شدن به این پروتکل را توضیح بدیم :
ftp <target-ip> <target-port>
برای مثال اگر فرض کنیم سرور که دیتا در آن ذخیره است داری IP : 192.168.1.30 باشد به صورت زیر با پورت 21 به سرور متصل میشویم.
ftp 192.168.1.30 21
حالا بعضی افراد این مورد را دوست ندارن و میخوان یه روز جذاب تر بهشون بگیم ، خوب اگر میخوای با استفاده از مرورگر وب(مانند کروم) بهش متصل شویم با وارد کردن دستور زیر به FTP سرور متصل میشویم.
ftp://username:password@192.168.1.30
فقط کافیه یوزر و پسورد را داشته باشید تا به سرور متصل شوید.
حملات رایج پروتکل FTP =
این همه ما صحبت کردیم و روش های شناسایی و وصل شدن به سرور FTP را توضیح دادیم ولی خوب چون این پروتکل ایمن نیست میشه روی آن حملات مختلفی را اجرا کرد ، که الان مهم تر ین و پرکاربردی ترین آنها رو بررسی میکنیم :
حمله Sniffing :
از اونجایی که FTP هیچ رمزنگاری ندارد و اطلاعات را به صورت Plain Text نمایش میدهد میتوان اطلاعاتی مانند یوزر و پسورد و فایل های منتقل شده بین کاربر و سرور که به هم متصل شدند را شنود کرد .برای اجرای این نوع Attack(حمله) نیازمند ابزار Wireshark (وایرشارک) هستیم که با نصب آن و انتخاب کردن اینترفیس شبکه ای خود میتوان ترافیک را شنود کرد و بعد از شنود ترافیک با استفاده از فیلتر ftp یا ftp || ftp-data میتوان بسته های ارسالی را مشاهد و شنود کرد.
زمانی که کاربر به سرور ftp میزند و یوزر و پسورد خود را وارد میکند .(طبق تصویر زیر)
در اینجا حمله کنند با اجرا کردن وایرشارک و شنود ترافیک و قرار دادن فیلتر ftp به یوزر و پسورد کاربر که لاگین کرده دسترسی پیدا میکند.
اگر حمله کنند بخواهد دیتا ارسال و دریافتی کاربر را مشاهده کند فقط نیاز است در قسمت فیلتر وایرشارک ftp-data را تایپ کند و میبینید به دیتا دسترسی پیدا میکند.
حمله Broutforceing Credentials :
این نوع حمله جستجوی فراگیر شامل امتحان کردن رمزهای عبور یا نامهای کاربری متعدد برای یافتن رمز عبور مناسب برای دسترسی به یک سیستم است.ابزارهایی مانند Hydra برای نفوذ به شبکهها طراحی شدهاند و میتوانند روی این پروتکل حمله را انجام داد و مورد استفاده قرار گیرند. Hydra برای FTP اغلب یک حملهی دیکشنری انجام میدهد، به این معنی که از لیستی از نامهای کاربری و رمزهای عبور برای ورود به سیستم استفاده میکند.
برای اجرای این حمله اول از همه کافیه فایل یوزر و پسورد ساخته شود و با دستور زیر آن ها را اعمال کرد
hydra [-L users.txt or -l user_name] [-P pass.txt or -p password] -f [-S port] ftp://192.168.1.30
در این دستور L- لیست یوزر ساخته شده را میتوان روی قربانی انجام داد و l- فقی یک یوزر میتوان اعمال کرد و نیازی به لیست نیست. همچنین P- لیست پسورد ها را میتوان اعمال کرد و p- تنها یک پسورد را روی حمله میتوان قرار داد .
حتی میتوان از ابزار دیگر که همان nmap است برای این نوع حمله هم استفاده کرد و با استفاده از اسکریپ های که دارد این حمله را به صورت زیر اجرا کرد .
nmap -p 21 –script ftp-brute 192.168.1.30
حمله Anonymous :
مهاجم از فعال بودن Anonymous Login سوءاستفاده میکند و بدون احراز هویت واقعی وارد سرور FTP میشود.
این موضوع ناراحت کننده است زیرا اگر کسی با این یوزر وارد شود قابل شناسایی نبودن مهاجم و دسترسی ناخواسته به فایلها دارد و خطرناک است .
برای تست و اجرای این همه میتوان از ابزار Metasploit استفاده کرد و از ماژول خاص آن حمله را پیاده سازی کرد ، فقط کافیه این ابزار روی کالی نصب و اجرا شود با فعال کردن دیتابیس آن حمله را پیاده سازی کنید . دستورات به صورت زیر :
Use auxiliary/scanner/ftp/anonymous
set rhosts 192.168.0.106
set rport 21
run
در حالت عادی اجرای این حملات بدون مجوز رسمی غیر قانونی محسوب میشه و زمانی اجرا کنید که مجوز این کار را داشته باشید. ولی میتونی روی محیط تست خودت تمرین کنی و با این پروتکل آشنا بشی و ضعف های این پروتکل را درک کنی .
تیم آموزشی نت آموز
راهکارهای امنیتی برای جلوگیری از حملات FTP =
بررسی های لازم را روی پروتکل FTP انجام دادیم حالا نوبت نصیحت و راهکار های امن سازی سازمان برای این پروتکل داریم.
1- استفاده نکردن از FTP معمولی
طبق مباحثی که صحبت کردیم و حملات اجرا کردیم این پروتکل معمولی ضعف های را دارد و به جای آن از SFTP ,FTPS استفاده کنید .
2- غیرفعال کردن Anonymous FTP
یوزر Anonymous را روی سرور غیر فعال کنید تا از ورود بدون هویت و نشت اطلاعات اظمینان حاصل کنید. برای مثال روی IIS سرور های خود Authentication Anonymous را غیر فعال کنید.
3- محدودسازی دسترسی با Firewall
با استفاده از فایروال دسترسی کاربران چه در محیط Local و اینترنت نیز محدود و در صورت نیاز نداشتن کاربران نیز بررسی و غیر فعال کنید .
4- استفاده از رمز عبور قوی
از رمز های قوی استفاده کنید تا زمان اجرای حمله Broutforce از این حمله جلوگیری شود . مثلا حداقل 10 کاراکتری باشد و از حروف بزرگ ، کوچک ، اعداد و استفاده از نشانه گر ها باشد.
5- مانیتورینگ و لاگگیری
علاوه بر ایمن سازی و محدود سازی دسترسی نیز لاگ و ارتباط کاربان با سرور را پویش و حتی لحظه ای بررسی کنید.
6- محدود کردن تعداد تلاش ورود (Brute Force Protection)
بر اساس پالسی های امینتی سازمان روی تعداد تلاش کاربران یا ورود های ناموفق آنها پویش و Delay قراردهید مثلا بعد از 4 بار تلاش به مدت 5 دقیقه اتصال کاربر را غیر فعال کن.
7- بهروزرسانی مداوم سرور و سرویسها
نسخه های قدیمی داری آسیب پذیری هستند و این موضوع باعث حملات رایج در شبکه میشود پس سیستم عامل های که از سرویس FTP استفاده میکنند را آپدیت کنید و اگر سرویس مورد نظر روی سرور مورد نیاز نیست آن را حذف یا غیر فعال کنید .
8- استفاده از IDS / IPS (در سطح سازمانی)
استفاده از ابزار های امنیتی مانند فایروال ، IDS ، IPS و … نیز حملات و رفتار های غیر عادی شبکه را شناسایی و از آنها جلوگیری میکنند .
دیدگاهتان را بنویسید