Enumeration کردن FTP و TFTP
دیوار رو بشکن، اطلاعات رو بکش بیرون!
خب رفقا، امروز میخوایم بریم سراغ یکی از قدیمیترین و البته مهمترین بخشهای شبکه: انتقال فایل. وقتی حرف از جابجایی فایل میشه، دو تا اسم همیشه میدرخشن: FTP و TFTP. شاید فکر کنید این پروتکلها دیگه قدیمی شدن، اما هنوزم تو خیلی از سرورها باز هستن و اگه خوب بلد باشید باهاشون کار کنید (یا بهتر بگم، انامریتشون کنید)، میتونید اطلاعات فوقالعادهای مثل یوزرنیمها، پسوردها و فایلهای حساس رو بیرون بکشید.
پس کمربندها رو ببندید که میخوایم با ابزارهای خفن مثل Nmap، Metasploit و Hydra بیفتیم به جون پورتهای ۲۰، ۲۱ و ۶۹!
FTP Enumerate (پورتهای ۲۰ و ۲۱)
اول از همه بگم FTP یا همون File Transfer Protocol چیه. این پروتکل دو تا پورت اصلی داره:
- TCP 21: مغز متفکره! مسئول کنترل ارتباط و گرفتن دستورات از شماست.
- TCP 20: کارگر ماجراست! مسئول انتقال خودِ دادهها (تو حالت Active) هست.
هدفمون از Enumeration FTP چیه؟
ما الکی وقت نمیذاریم؛ دنبال این چهارتا چیزیم:
- چه خبره؟ (شناسایی نوع و نسخه سرور مثل vsftpd یا proftpd برای پیدا کردن باگها).
- کی اونجاست؟ (پیدا کردن یوزرها و دایرکتوریهای باز).
- در بازه؟ (بررسی اینکه آیا ورود Anonymous یا ناشناس فعاله یا نه).
- نقطه ضعف داره؟ (استفاده از اکسپلویتهای خاص روی نسخههای قدیمی).
جعبه ابزار و دستورات FTP Enumerate
بریم سراغ اصل مطلب و دستورات فنی.
🔖۱. Nmap: آچار فرانسه
اولین قدم همیشه اسکن با Nmap هست تا ببینیم چی به چیه.
اسکن ساده نسخه:
nmap -p 21 -sV target-IP
این دستور نسخه سرور رو بهت لو میده.
استفاده از اسکریپتهای NSE:
انمپ یه سری اسکریپت آماده داره که کار رو راحت میکنه:
- بررسی ورود ناشناس (Anonymous):
nmap –script ftp-anon -p 21 target-IP
بررسی اطلاعات سیستمی:
nmap –script ftp-syst -p 21 target-IP
اسکریپت
ftp-bruteهم هست که خودش سعی میکنه پسوردها رو حدس بزنه.
۲. Netcat: ارتباط دستی و مستقیم
اگه میخوای ببینی سرور دقیقاً چطوری جواب میده، با Netcat وصل شو:
nc <target-IP> 21
بعد از اینکه وصل شدی، میتونی دستوراتی مثل `USER`، `PASS`، `SYST` و `HELP` رو تایپ کنی و ببینی سرور چی میگه.
۳. Metasploit: حرفهای و تمیز
متاسپلویت ماژولهای آماده داره که کار رو شسته و رفته انجام میده.
پیدا کردن نسخه FTP:
use auxiliary/scanner/ftp/ftp_version
set RHOSTS target-IP
run
چک کردن لاگین Anonymous:
use auxiliary/scanner/ftp/anonymous
set RHOSTS target-IP
run
۴. Hydra: حمله سنگین (Brute Force)
اگه یوزرنیم رو داری و دنبال پسوردی، یا جفتش رو نداری، هایدرا (Hydra) خدای این کاره:
hydra -l <username> -P <password-list> ftp://target-IP
اینجا `<username>` نام کاربری هدفه و `<password-list>` لیست پسوردهاییه که میخوای تست کنی.
۵. Medusa
مدوسا هم یه ابزار دیگه برای Brute Force کردنه که خیلی سریعه:
medusa -h <target-IP> -u <username> -P <password-list> -M ftp
۶. دستور FTP (در لینوکس)
سادهترین راه هم استفاده از خود کلاینت FTP تو لینوکسه:
ftp target-IP
بعد از وصل شدن، با دستوراتی مثل `ls` (لیست گرفتن)، `get` (دانلود) و `put` (آپلود) حالشو ببر.
خطرات و روشهای دفاع (Blue Team)
اگه ادمین شبکه هستید، اینا رو رعایت کنید تا هک نشید:
۱. Anonymous ممنوع: قابلیت ورود ناشناس رو غیرفعال کنید.
۲. خداحافظ FTP، سلام SFTP: از پروتکلهای امن مثل SFTP (روی SSH) یا FTPS (با TLS) استفاده کنید تا اطلاعات رمزنگاری بشه.
۳. محدودیت بذارید: فقط IPهای خاصی بتونن به پورت ۲۱ وصل بشن.
۴. پسورد قوی: نذارید یوزرها پسورد “۱۲۳۴۵۶” بذارن!
۵. لاگها رو چک کنید: همیشه حواستون به لاگها باشه تا حملات Brute Force رو ببینید.
TFTP Enumerate (پورت ۶۹)
حالا بریم سراغ برادر کوچکتر و سادهلوح FTP، یعنی TFTP (Trivial File Transfer Protocol). این پروتکل روی پورت UDP 69 کار میکنه و چون خیلی ساده است (معمولاً احراز هویت نداره)، خوراک هکرهاست برای کش رفتن فایلهای کانفیگ روترها و سوئیچها.
ابزارها و دستورات TFTP Enumerate
۱. Nmap (باز هم قهرمان)
اسکن پورت و نسخه:
nmap -p 69 -sV target-IP
پیدا کردن فایلهای قابل دسترسی:
nmap –script tftp-enum -p 69 target-IP
این اسکریپت سعی میکنه ببینه چه فایلهایی رو میشه دانلود یا آپلود کرد.
۲. TFTP Client
با کلاینت خود TFTP خیلی راحت وصل شو:
tftp target-IP
بعدش دستورات `get` و `put` کار میکنن. نکته مهم اینه که تو TFTP معمولاً دستور `ls` کار نمیکنه، یعنی باید اسم فایل رو حدس بزنی!
۳. Netcat (نسخه UDP)
چون TFTP از UDP استفاده میکنه، باید به Netcat سوییچ `-u` بدیم:
nc -u <target-IP> 69
۴. Metasploit
متاسپلویت اینجا هم ماژول داره:
use auxiliary/scanner/tftp/tftp_enum
set RHOSTS target-IP
run
۵. Hydra (برای TFTP)
اگر (و تنها اگر) سرور TFTP پسورد گذاشته باشه، هایدرا به کار میاد:
hydra -l <username> -P <password-list> tftp://target-IP
Port Query (کارآگاه پورتها)
گاهی وقتا نیاز داری خیلی سریع و دقیق وضعیت یه پورت رو چک کنی ببینی Open (باز)، Closed (بسته) یا Filtered (پشت فایروال) هست. اینجا ابزاری مثل PortQry (مخصوص ویندوز) به کار میاد.
چطوری کار میکنه؟
این ابزار بسته میفرسته و منتظر جواب میمونه. اگه جواب اومد، پورته بازه. اگه نیومد، احتمالاً فیلتر شده.
نمونه دستور با PortQry:
cmd
portqry -n <target-IP> -p tcp -e port_number
مثلا برای چک کردن پورت ۸۰:
cmd
portqry -n 192.168.1.1 -p tcp -e 80
این دستور خیلی دقیق بهت میگه وضعیت اون پورت چیه و تکلیف فایروال رو مشخص میکنه.