Jenkins یک ابزار Open Source است که برنامهنویسان از آن بهعنوان محلی برای Automation، Test، Build، Deployment Phases استفاده میکنند.
با استفاده از نسخه قدیمی یا پیکربندیهای نادرست Jenkins بهعنوان مثال تنظیم نادرست مکانیزم احراز هویت مهاجم با Exploit کردن Jenkins Script Console میتواند Script های آلوده خود را به سرور Inject کند که منجر به RCE شود و میتواند با دانلود Miner Binary و قراردادن آن توی Cron Jobs و Systemd-Run به Persistence برسد.
بهصورت پیشفرض Jenkins Console برای Administrator و کاربرهای احراز هویت شده است؛ ولی امکان دارد مکانیزم احراز هویت بهدرستی تنظیم نشده باشد؛ مثلاً اگر گزینه Sign Up یا Registration فعال باشد ممکن است دسترسی به Consol ایجاد شود و منجر به RCE شود.
با یک سرچ سریع در Shodan میتوان تعداد بسیار زیادی سرور Jenkins را پیدا کرد که در اینترنت قابلدسترسی هستند و احتمالاً قابل Exploit کردن باشند. در کشورهایی مانند چین آمریکا هند آلمان و…تعداد بسیار زیادی سرور آسیبپذیر وجود داد.
پس از برسی سرورهای Compromise شده اطلاعات زیر بهدستآمده:
در ابتدا Script چک میکند که آیا BusyBox در حال اجراست یا خیر که اگر BusyBox در حال اجرا بود از اسکریپت خارج میشود.
با استفاده از تابعی قابلیت Writable بودن Location ها را چک میکند و سپس تابع با گرفتن یک پارامتر ورودی بهعنوان Path و درستکردن یک فایل در آن Location و نوشتن یک کد برای پرینت در آن فایل و دادن Permission به فایل و اجرای آن قابلیت نوشتن در آن لوکیشن را تست میکند.
درمرحله بعد با استفاده از اسکریپتی چک میکند که سیستم منابع کافی برای انجام Mining را دارد یا خیر و برای این کار ابتدا CPU سیستم را تا 90% مصرف میکند و سپس Process را Kill میکند.
سپس با استفاده از تکه کدی دیگر و تابعی که برای چککردن قابلیت نوشتن بود Directory هایی که میتوان در آنها Miner را دانلود کرد چک میکند /dev/shm، /proc/sys اگر هیچ یک از Directory های نامبرده قابلاستفاده نبود از /tmp استفاده میکند و حداکثر Permission را به آن میدهد.
در ابتدا سعی میکند فایل Miner Binary را با Curl دانلود و اگر به error برخورد با wget سعی میکند و اگر دوباره به error برخورد با openssl سعی میکند دانلود کند که یک HTTP GET Request به آن URL میفرستد و سپس پاسخ سرور را میگیرد و 2481008 byte آخر Response سرور را میگیرد و در فایلی ذخیره میکند.
پس از دانلود و ذخیرهسازی Miner Binary در فایل موردنظر، مهاجم برای حفظ Persistence خود و اجرای Mining طبق برنامه خود از Cronjob و Systemd-Run استفاده میکند.
ابتدا با ساخت یک Cronjob و استفاده از ابزار Flook برای قفلکردن فایل و از verl.lock برای اطمینان از اینکه فقط یک نسخه از آن در حال اجراست.
با دادن پارامترهای دیگر از جمله آدرس Wallet خود که تمام اینها را در یک متغیر ذخیره میکند و در نهایت پس از گذاشتن از awk ‘! a [$0] ++’ که برای حذف تمام ورودیهای تکراری استفاده میشود که این گامی دیگر برای اطمینان از اجراشدن تنها یک نمونه از Corn است به Crontab اضافه میشوند.
مهاجم از Systemd-Run برای اجرای CryptocurrenCy mining Application در ابتدای هر ساعت استفاده میکند.
اگر تمام اینها جواب ندهد مهاجم یک Method دیگری استفاده میکند که در ابتدا یک سیگنال kill -9 به برنامه Miner خود میفرستد تا مطمئن شود که متوقف شده و سپس بهصورت دستی ماینر را اجرا میکند.
راه هایی برای کاهش این خطر پذیری
عدم اتصال مستقیم Jenkins Server به اینترنت
استفاده از ویژگیهای تأیید اسکریپت که توسط Jenkins ساخته شده
استفاده از قابلیت Audit Logging ارائه شده توسط Jenkins
روش های تشخیص این حمله
در صورت استفاده از سیستم شناسایی و پاسخ در نقاط پایانی هوپان (EDR) که یکی از اساسی ترین ماژول های راهکار گسترده شناسایی و پاسخ نخجیرپان (XDR) میباشد، تحلیل فعالیت های مرتبط و هشدارهای زیر مشاهده می گردد:
- نظارت بر پروسسهای مشکوک در حال اجر
- نظارت بر ترافیک خروجی از شبکه
- نظارت بر وصلشدن به دامنههای مخرب
این تهدید از تکنیک های زیر که در جدول مایتر اتک موجود می باشد استفاده نموده است.
Initial Access | Persistence | Defense Evasion | Discovery | Command and Control | Impact |
Content Injection | Account Manipulation | Abuse Elevation Control Mechanism | Account Discovery | Application Layer Protocol | Account Access Removal |
Drive-by Compromise | BITS Jobs | Access Token Manipulation | Application Window Discovery | Communication Through Removable Media | Data Destruction |
Exploit Public-Facing Application | Boot or Logon Autostart Execution | BITS Jobs | Browser Information Discovery | Content Injection | Data Encrypted for Impact |
External Remote Services | Boot or Logon Initialization Scripts | Build Image on Host | Cloud Infrastructure Discovery | Data Encoding | Data Manipulation |
Hardware Additions | Browser Extensions | Debugger Evasion | Cloud Service Dashboard | Data Obfuscation | Defacement |
Phishing | Compromise Host Software Binary | Deobfuscate/Decode Files or Information | Cloud Service Discovery | Dynamic Resolution | Disk Wipe |
Replication Through Removable Media | Create Account | Deploy Container | Cloud Storage Object Discovery | Encrypted Channel | Endpoint Denial of Service |
Supply Chain Compromise | Create or Modify System Process | Direct Volume Access | Container and Resource Discovery | Fallback Channels | Financial Theft |
Trusted Relationship | Event Triggered Execution | Domain or Tenant Policy Modification | Debugger Evasion | Hide Infrastructure | Firmware Corruption |
Valid Accounts | External Remote Services | Execution Guardrails | Device Driver Discovery | Ingress Tool Transfer | Inhibit System Recovery |
Hijack Execution Flow | Exploitation for Defense Evasion | Domain Trust Discovery | Multi-Stage Channels | Network Denial of Service | |
Implant Internal Image | File and Directory Permissions Modification | File and Directory Discovery | Non-Application Layer Protocol | Resource Hijacking | |
Modify Authentication Process | Hide Artifacts | Group Policy Discovery | Non-Standard Port | Service Stop | |
Office Application Startup | Hijack Execution Flow | Log Enumeration | Protocol Tunneling | System Shutdown/Reboot | |
Power Settings | Impair Defenses | Network Service Discovery | Proxy | ||
Pre-OS Boot | Impersonation | Network Share Discovery | Remote Access Software | ||
Scheduled Task/Job | Indicator Removal | Network Sniffing | Traffic Signaling | ||
Server Software Component | Indirect Command Execution | Password Policy Discovery | Web Service | ||
Traffic Signaling | Masquerading | Peripheral Device Discovery | |||
Valid Accounts | Modify Authentication Process | Permission Groups Discovery | |||
Modify Cloud Compute Infrastructure | Process Discovery | ||||
Modify Registry | Query Registry | ||||
Modify System Image | Remote System Discovery | ||||
Network Boundary Bridging | Software Discovery | ||||
Obfuscated Files or Information | System Information Discovery | ||||
Plist File Modification | System Location Discovery | ||||
Pre-OS Boot | System Network Configuration Discovery | ||||
Process Injection | System Network Connections Discovery | ||||
Reflective Code Loading | System Owner/User Discovery | ||||
Rogue Domain Controller | System Service Discovery | ||||
Rootkit | System Time Discovery | ||||
Subvert Trust Controls | Virtualization/Sandbox Evasion | ||||
System Binary Proxy Execution | |||||
System Script Proxy Execution | |||||
Template Injection | |||||
Traffic Signaling | |||||
Trusted Developer Utilities Proxy Execution | |||||
Unused/Unsupported Cloud Regions | |||||
Use Alternate Authentication Material | |||||
Valid Accounts | |||||
Virtualization/Sandbox Evasion | |||||
Weaken Encryption | |||||
XSL Script Processing | |||||