ویرگول
ورودثبت نام
روزبه نوروزی
روزبه نوروزی
روزبه نوروزی
روزبه نوروزی
خواندن ۴ دقیقه·۹ روز پیش

حملات بزرگ و شناخته‌شده جهانی که در آن‌ها Environmental Variables نقش مستقیم یا غیرمستقیم داشته اند

متغیرهایی هستند که توسط سیستم‌عامل، شِل یا برنامه‌ها ذخیره می‌شوند و اطلاعات مهمی مانند مسیرها، تنظیمات، شناسه‌ها و متغیرهای پیکربندی را در خود نگه می‌دارند. این متغیرها معمولاً خارج از کد برنامه ذخیره می‌شوند تا توسعه‌دهندگان مجبور نباشند مقادیر حساس را داخل کد قرار دهند. برای مثال، اطلاعاتی مثل Token‌ ها، API Keyها، رمزهای پایگاه داده، مسیر فایل‌ها، تنظیمات کاربری، و پارامترهای سرویس‌ها در قالب Environmental Variable ذخیره می‌شود.

مزیت اصلی این روش، جداسازی کد از تنظیمات و امکان تغییر سریع مقادیر بدون نیاز به دستکاری برنامه است. اما این ساختار یک ریسک بزرگ امنیتی دارد: اگر مهاجم به محیط سیستم دسترسی پیدا کند، می‌تواند این متغیرها را مشاهده یا سرقت کند. به همین دلیل Environmental Variables یکی از اهداف رایج در حملات APT، مهاجمان ابری (Cloud Attackers) و بدافزارهای مدرن هستند.

بررسی ۵ نمونه حمله بزرگ و شناخته‌شده جهانی که در آن‌ها Environmental Variables نقش مستقیم یا غیرمستقیم در موفقیت حمله داشته‌اند.

۱) حمله SolarWinds (SUNBURST) – سوءاستفاده از Environment Variables برای مخفی‌سازی رفتار و فرار از تحلیل

حمله SolarWinds که در سال ۲۰۲۰ کشف شد، یکی از پیچیده‌ترین عملیات‌های APT تاریخ بود که به صدها سازمان دولتی آمریکا نفوذ کرد. در این حمله، Backdoor موسوم به SUNBURST از Environment Variables برای تصمیم‌گیری در مورد فعال شدن، نوع رفتار، و مکانیزم فرار از تحلیل استفاده می‌کرد.

مهاجمین برای جلوگیری از شناسایی در Sandboxes و Endpoint Security، رفتار بدافزار را به متغیرهای محیطی وابسته کرده بودند:

اگر Environment Variableهای مربوط به ابزارهای تحلیل وجود داشت → بدافزار خاموش می‌ماند.

اگر کامپیوتر در محیط Domain معتبر بود → Payload فعال می‌شد.

SUNBURST از «USERNAME»، «COMPUTERNAME»، و «PROCESSOR_ARCHITECTURE» برای گرفتن fingerprint امنیتی سیستم استفاده می‌کرد.

این تکنیک باعث شد بدافزار در آزمایشگاه‌ها و محیط‌های sandbox رفتار متفاوتی داشته باشد و بسیاری از سیستم‌های تحلیل نتوانند شاخص‌های واقعی حمله را ثبت کنند.

۲) Log4Shell (CVE-2021-44228) – سوءاستفاده از Environment Variables در JNDI Lookup

در حمله تاریخی Log4Shell، مهاجمان از قابلیت Log4j برای resolve کردن رشته‌های حاوی ${env:...} سوءاستفاده کردند. این یک نقطه‌ضعف بسیار خطرناک بود زیرا Log4j اجازه می‌داد از طریق رشته‌های Log، Environment Variables سرور بازیابی شوند.

با استفاده از Payloadهایی مثل:

${env:AWS_SECRET_ACCESS_KEY}

${env:DB_PASSWORD}

${env:JAVA_HOME}

مهاجم می‌توانست اطلاعات بسیار حساسی را استخراج کند. بسیاری از کسب‌وکارها (به‌خصوص Cloud) رمزهای بسیار مهمی را در Environment Variable نگه می‌داشتند، و Log4Shell این متغیرها را بدون نیاز به کد اضافی لو می‌داد.

در ادامه حملات پیشرفته‌تری انجام شد که:

  • ابتدا Environment Variables را استخراج کردند

  • سپس براساس آن‌ها exploit chain بعدی را تنظیم نمودند

مثلاً اگر KUBERNETES_SERVICE_HOST وجود داشت → حمله به K8s ادامه پیدا می‌کرد

۳) حملات Kubernetes / Docker Breakouts – سوءاستفاده گسترده از ENV برای دسترسی به توکن‌ها

در حملات گسترده‌ای که علیه Kubernetes و Docker رخ داده، یکی از رایج‌ترین تکنیک‌ها سوءاستفاده از Environment Variables بوده است.

در سال‌های ۲۰۱۹ تا ۲۰۲۳، چندین موج حملات بزرگ گزارش شد که از طریق استخراج ENV VARIABLES در کانتینرها انجام شده بود:

K8S_SERVICE_ACCOUNT_TOKEN

AWS_ACCESS_KEY_ID

AWS_SECRET_ACCESS_KEY

GCP_SERVICE_ACCOUNT

DATABASE_URL

REDIS_PASSWORD

مهاجم با اجرای دستورات ساده زیر می‌توانست کل توکن‌های سرویس را بدست آورد:

printenv

env | grep KEY

cat /proc/1/environ

حمله مشهور Tesla Kubernetes Breach نیز دقیقاً از این روش استفاده کرده بود. یک image اشتباه در K8s توکن AWS را داخل Environment قرار داده بود و مهاجم توانست به هزاران سرور تسلا دسترسی پیدا کند.

این حمله نشان داد که قرار دادن اسرار امنیتی در ENV VARIABLES یک ضدالگوی بسیار خطرناک است.

۴) حمله مشهور Apache Struts / Equifax Breach – استفاده از ENV برای شناسایی سیستم هدف

در حمله Equifax، مهاجمان از آسیب‌پذیری Apache Struts S2-052 استفاده کردند. این آسیب‌پذیری اجازه می‌داد مهاجم روی سرور:

دستورات سیستم عامل اجرا کند

Environment Variables را استخراج کند

مهاجمین ابتدا با اجرای دستوراتی مانند:

env

set

printenv

اطلاعات حیاتی شامل:

  • مسیرهای حیاتی سرور

  • نسخه جاوا

  • دسترسی‌های سیستم

  • توکن‌های سرویس

  • پیکربندی دیتابیس

را بدست آوردند و سپس زنجیره حمله را کامل کردند.

اگر ENV حساس در آن سیستم ذخیره نمی‌شد، حمله Equifax تا این حد عمیق و مخرب نبود. این حمله نشان داد که مهاجمان از ENV به‌عنوان مرحله Recon اولیه استفاده می‌کنند.

۵) حملات APT0x / بدافزارهای Python RAT – استفاده از ENV برای تشخیص Sandbox و تغییر رفتار (Evasion)

بسیاری از APTهای مدرن از Environmental Variables برای Evasion استفاده می‌کنند. مخصوصاً Backdoorهای مبتنی بر Python مانند:

Snake / Turla Framework

APT29 Python Loader

MuddyWater Python Implants

Lazarus Python Stagers

این بدافزارها با کدهایی مثل:

if "VBOX" in os.environ.get("PATH", ""):

exit()

if os.environ.get("USERNAME") in ["sandbox", "test", "malware"]:

exit()

یا:

if os.environ.get("APPDATA") is None:

exit()

تشخیص می‌دهند که سیستم:

  • در Sandbox است

  • کاربر جعلی دارد

  • ساختار PATH طبیعی نیست

  • حافظه و CPU کم است

در نتیجه، Payload فعال نمی‌شود.

این تکنیک با نام Environmental-based Anti-Analysis شناخته می‌شود و در بسیاری از حملات APT واقعی مشاهده شده است.

بدافزارتحلیلسیستم عامل
۰
۰
روزبه نوروزی
روزبه نوروزی
شاید از این پست‌ها خوشتان بیاید