روابط عمومی شرکت ایدکو (توزیعکنندهی محصولات کسپرسکی در ایران)؛ اگر تستکنندهی نفوذباشید، احتمالاً میدانید که حرکت جانبی در شبکهها روزبهروز دشوارتر میشود، بهخصوص در محیطهایی که بهخوبی ایمنسازی شدهاند. یکی از روشهای رایج برای اجرای دستور از راه دور، استفاده از[1]DCOM بوده است. به زبان ساده، DCOM فناوریای در ویندوز است که اجازه میدهد یک برنامه روی یک کامپیوتر، از راه دور به اجزا و سرویسهای یک کامپیوتر دیگر دسترسی داشته باشد و آنها را اجرا کند؛ طوری که انگار همهچیز روی همان سیستم محلی اجرا میشود.در طول سالها، اشیای DCOM مختلفی شناسایی شدهاند. برخی از آنها بر پایهی اجزای درونسازهای ویندوز هستند، برخی به نرمافزارهای جانبی مانند Microsoft Office وابستهاند و برخی دیگر اشیای مستندسازینشدهای هستند که از طریق مهندسی معکوس کشف شدهاند. با اینکه بعضی از این اشیا هنوز قابل استفادهاند، اما تعدادی از آنها در نسخههای جدید ویندوز دیگر کار نمیکنند.این پژوهش یک شیء DCOM جدید و پیشتر توصیفنشده را معرفی میکند که میتوان از آن هم برای اجرای دستور و هم برای ماندگاری استفاده کرد. این تکنیک جدید، از روشهای قدیمی دسترسی اولیه و ماندگاری از طریق آیتمهای کنترل پنل سوءاستفاده میکند.
ابتدا فناوری COM را توضیح میدهیم. سپس وضعیت فعلی اسکریپت dcomexec از مجموعه Impacket را بررسی و روی اشیایی تمرکز میکنیم که هنوز کار میکنند. در ادامه، اصلاحات و بهبودهای احتمالی را بررسی میکنیم و به سراغ روشهای شناسایی اشیای COM و DCOM روی سیستم میرویم. پس از آن، آیتمهایکنترل پنلرا بررسی میکنیم، توضیح میدهیم مهاجمان چگونه از آنها برای دسترسی اولیه و ماندگاری استفاده کردهاند و نشان میدهیم چگونه میتوان از این آیتمها، از طریق یک شیء DCOM، برای اجرای دستور بهره برد.در پایان نیز راهکارهای شناسایی و مقابله با این نوع فعالیتها را بررسی خواهیم نمود. با ما همراه بمانید.
COM مخفف Component Object Model است؛ فناوریای از مایکروسافت که یک استاندارد باینری برای تعاملپذیری تعریف میکند. این فناوری امکان ایجاد اجزای نرمافزاری قابلاستفادهی مجدد را فراهم میکند که میتوانند در زمان اجرا با هم تعامل داشته باشند، بدون اینکه لازم باشد کتابخانههای COM مستقیماً در یک برنامه کامپایل شوند.این اجزا بر اساس مدل کلاینت–سرور کار میکنند. یک شیء COM قابلیتهای خود را از طریق یک یا چند رابط ارائه میدهد. رابط در واقع مجموعهای از توابع مرتبط با هم است. COM همچنین امکان ارتباط بین پردازههایی را که روی یک سیستم اجرا میشوند فراهم میکند. این ارتباط از طریق RPC محلی انجام میشود.برای درک بهتر ساختار COM، چند اصطلاح مهم را مرور میکنیم.رابط COM قابلیتی را تعریف میکند که یک شیء COM ارائه میدهد. هر رابط با یک GUID یکتا به نام IID شناخته میشود. همهی رابطهای COM در رجیستری ویندوز و زیر مسیر HKEY_CLASSES_ROOT\Interface ذخیره شدهاند.کلاس COM پیادهسازی واقعی یک یا چند رابط COM است. هر کلاس نیز یک GUID یکتا دارد که به آن CLSID گفته میشود. این شناسه برای پیدا کردن و فعالسازی کلاس استفاده میشود. همهی کلاسهای COM در رجیستری زیر مسیر HKEY_CLASSES_ROOT\CLSID ثبت شدهاند.زیر هر CLSID ممکن است چندین زیرکلید وجود داشته باشد. InprocServer32 یا LocalServer32 مسیر فایل سروری را مشخص میکند که کلاس در آن تعریف شده است. InprocServer32 برای DLLها و LocalServer32 برای فایلهای اجرایی استفاده میشود. ProgID یک نام خوانا برای کلاس است. TypeLib توصیف باینری کلاس را در بر میگیرد و AppID برای تنظیمات امنیتی کلاس به کار میرود.سرور COM ماژولی است که کلاس COM در آن قرار دارد. این سرور میتواند به شکل DLL یا EXE پیادهسازی شود. COM برای پیدا کردن و اجرای این سرورها از رجیستری ویندوز استفاده میکند.
در مدل درونپردازهای، سرور به صورت DLL در فضای حافظهی پردازهی کلاینت بارگذاری میشود و اجرای توابع بهصورت مستقیم انجام میگیرد. این روش کارآمد و سریع است.در مدل برونپردازهای، سرور یک فایل اجرایی است که در پردازهای جداگانه اجرا میشود. ارتباط بین کلاینت و سرور از طریق ALPC انجام میشود. DCOM نسخهی توزیعشدهی COM است. این فناوری امکان اجرای کلاینت و سرور روی سیستمهای متفاوت را فراهم میکند، در حالی که از دید برنامهنویس، این تفاوت محسوس نیست. در پشت صحنه، DCOM از TCP بهعنوان لایهی انتقال RPC استفاده میکند.برای اینکه یک شیء COM بتواند بهصورت DCOM استفاده شود، باید دارای کلید AppID در رجیستری باشد. این کلید به مسیر HKEY_CLASSES_ROOT\AppID اشاره میکند. در این مسیر، مقادیر AccessPermission و LaunchPermission تعیین میکنند چه کاربرانی اجازهی اجرا و دسترسی به شیء DCOM را دارند.
پس از نفوذ به یک سیستم، هدف مهاجم معمولاً نفوذ به سیستمهای دیگر است. این کار حرکت جانبی نام دارد. یکی از روشهای رایج برای حرکت جانبی، اجرای دستور از راه دور از طریق سوءاستفاده از اشیای DCOM است.در سالهای اخیر اشیای DCOM مختلفی برای این منظور شناسایی شدهاند. این پژوهش روی اشیایی تمرکز دارد که در اسکریپت dcomexec.py از مجموعه Impacket استفاده میشوند.برای شناسایی اشیای COM و DCOM، صرفاً لیست کردن آنها کافی نیست. این فرایند شامل پیدا کردن اشیای DCOM، شناسایی رابطها و بررسی توابع قابلاستفاده میشود. خودکارسازی این فرایند دشوار است، زیرا بسیاری از اشیای COM فاقد TypeLib هستند.یکی از روشها استفاده از پاورشل است. پاورشل میتواند با اشیای COM تعامل داشته باشد، به شرطی که شیء دارای TypeLib و رابط IDispatch باشد. در این حالت، میتوان توابع را در زمان اجرا فراخوانی کرد. با این حال، بسیاری از اشیای COM این شرایط را ندارند. روش دیگر استفاده از C++ است. در این روش، میتوان از رابط IUnknown و تابع QueryInterface برای بررسی پشتیبانی یک کلاس COM از رابطهای خاص استفاده کرد. این روش نیازی به TypeLib ندارد و حتی بدون دانستن تعریف دقیق رابط، میتوان وجود آن را تشخیص داد.روش سوم، بررسی دستی با ابزار OleViewDotNet است. این ابزار امکان مشاهدهی کلاسها، رابطها، ایجاد نمونه و فراخوانی توابع را فراهم میکند و برای تحلیل دستی بسیار مفید است.
آیتمهایکنترل پنلبه کاربران اجازه میدهند تنظیمات سیستم را مشاهده و تغییر دهند. این آیتمها معمولاً DLLهایی با پسوند cpl هستند. مهاجمان میتوانند از این فایلها برای دسترسی اولیه یا ایجاد ماندگاری استفاده کنند.با ثبت DLL در مسیرهای مشخصی از رجیستری، این DLL هر بار که Control Panel باز شود بارگذاری میشود. حتی DLLهایی که با استاندارد CPL سازگار نیستند نیز میتوانند از طریق نقطهی ورود DLL اجرا شوند. اجرای آیتمهای کنترل پنل میتواند از طریق دستور control.exe یا با دوبار کلیک روی فایل cpl انجام شود. در هر دو حالت، rundll32.exe در پشت صحنه استفاده میشود.در این پژوهش، شیء COMای به نام COpenControlPanel شناسایی شد که در shell32.dll قرار دارد. این شیء رابطی به نام IOpenControlPanel ارائه میدهد که تابعی به نام Open دارد. این تابع میتواند باعث بارگذاری DLLهایی شود که در رجیستری بهعنوان آیتم Control Panel ثبت شدهاند، حتی اگر نام ورودی تصادفی باشد.بررسیها نشان داد که این شیء یک DCOM است و تنظیمات امنیتی آن بهصورت پیشفرض اجازهی استفاده از راه دور را به اعضای گروه Administrators میدهد.در نتیجه، میتوان یک DLL را روی سیستم هدف آپلود کرد، آن را از طریق Remote Registry ثبت کرد و سپس با فراخوانی تابع Open از راه دور، باعث بارگذاری DLL شد. این DLL از طریق پردازهی dllhost.exe اجرا میشود.
این تکنیک هم اجرای دستور را ممکن میکند و هم ماندگاری ایجاد میکند. این ماندگاری میتواند هم با باز شدن Control Panel و هم بهصورت راه دور فعال شود.برای شناسایی این فعالیتها، باید مسیرهای رجیستری مربوط به Control Panel پایش شوند، اجرای غیرعادی dllhost.exe بررسی شود و استفاده ازرجیستری ریموتتحت نظر قرار گیرد. همچنین اجرای dllhost.exe سیودوبیتی روی سیستمهای شصتوچهاربیتی میتواند نشانهای مشکوک باشد.در جمعبندی، DCOM سطح حملهی بزرگی را در ویندوز ایجاد میکند. بسیاری از اشیای DCOM مستند نشدهاند و میتوانند از طریق مهندسی معکوس مورد سوءاستفاده قرار گیرند. آیتمهای کنترل پنل همچنان یک مسیر کمتر نظارتشده برای ماندگاری هستند و تفاوت معماری ۳۲بیتی و ۶۴بیتی میتواند سرنخهای ارزشمندی برای شناسایی حمله فراهم کند.
نتیجهگیری
در مجموع، این پژوهش نشان میدهد که DCOM همچنان یکی از سطوح حملهی مهم و کمتر مورد توجه در سیستمعامل ویندوز است. معرفی یک شیء DCOM جدید و مستندسازینشده نشان میدهد که حتی در نسخههای جدید ویندوز نیز امکان سوءاستفاده برای اجرای دستور از راه دور وجود دارد. استفاده از آیتمهای کنترل پنل بهعنوان بستر اجرا و ماندگاری، بیانگر آن است که روشهای قدیمی همچنان میتوانند در قالبهای جدید مورد استفاده قرار گیرند. این موضوع اهمیت شناسایی و پایش اشیای COM و DCOM را دوچندان میکند. همچنین نقش تنظیمات رجیستری و مجوزهای پیشفرض DCOM در افزایش سطح حمله قابلتوجه است. از دید طرفداران، نظارت پردازههایی مانند dllhost.exe و استفاده از Remote Registry اهمیت بالایی دارد. در نهایت، این تحقیق بر لزوم سختسازی بیشتر و بازنگری در سیاستهای امنیتی DCOM در محیطهای ویندوزی تأکید میکند.
[1] Distributed Component Object Model
کسپرسکی آنلاین (ایدکو)
کسپرسکی اسم یکی از بزرگترین شرکتهای امنیتی و سازنده آنتی ویروس است که برخی از کاربران اشتباهاً این شرکت و محصولات آنتی ویروس آن را با عناوینی نظیر کسپرسکای،کاسپرسکی، کسپراسکای، کسپراسکای، و یا کاسپراسکای نیز میشناسد. همچنین لازم به ذکر است مدیرعامل این شرکت نیز یوجین کسپرسکی نام دارد.