در این مقاله میخوایم به بررسی تکنیک هایی که بدافزار نویس ها استفاده میکنن برای حفظ دسترسی بدافزارشون رو باهم بررسی میکنیم که برای تیم های آبی مرجع خوبیه که با این تکنیکا آشنا بشن و برای تیم های قرمزم شروع خوبیه که بفهمن چیکار باید بکنن ولی به اینا نباید بسنده کنن :)
اگر یه بدافزار روی سیستم بیاد و نویسندش به بحث Persistence توجه نکنن بعد یه ریبوت ساده بدافزار فعال نمیشه و عملا بی فایده میشه ، واسه همین بدافزار نویس ها سراغ تکنیک های متعددی میرن که بدافزارشون بعد ریستارت یا همون ریبوت سیستم باز خودشو اجرا کنه و بتونه ادامه بده به فعالیتش
قبل اینکه به خوندن ادامه بدید بدک نیست این مقاله رو بخونید :
مقاله : معرفی پردازش های مهم ویندوز برای امنیت کار ها
Windows Registry
ریجستری ویندوز یکی از اصلی ترین جاهاییه که بدافزارا سراغش میرن ، ریجستری یک بخشیه که تنظیمات سیستم و کاربرا رو تو خودش ذخیره میکنه ، نکته ای که هست اینه که بعد ریبوت سیستم یکی از جاهایی که میتونه برنامه هارو بالا بیاره ریجستریه حالا بریم سراغ برخی از مکان هایی که ممکنه بدافزارا توش برن برای ریجستری
NTUSER.DAT\Software\Microsoft\ Windows\CurrentVersion\Run |
HKCU\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Windows |
*\HKLM\Software\Microsoft\Windows\CurrentVersion\RunOnce |
*\HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Run |
*\HKLM\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\RunOnce |
*\HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run |
در ادامه بیشتر کار میکنیم با ریجستری برنامه های مهم و در ادامه ریجستری رو بیشتر بررسی میکنیم
Task Scheduling
بحث بعدی برنامه زمان بندی ویندوز یا Task Scheduling ویندوز هست که توش بدافزار میاد و مشخص میکنه که خب بعد خاموش روشن دوباره اجرا بشه دیگه، میتونیم با دستور schtasks اینکارو بکنیم
schtasks /create /tn svchost /tr C:\Users\<victimuser>\AppData\Local\<Name>\svchost.exe /sc ONSTART /f
دستور بالا میاد و یه تسک برنامه ریزی شده رو سیو میکنه و میگه برنامه در زمان بوت بیاد بالا (ONSTART) ، یه بدافزاری هم ک آدرسشو دادیم اجرا میشه و دیگه
این تسک ها در C:\Windows\System32\Tasks ذخیره میشن و با نرم افزارهایی مثل autoruns میشه رصدشون کرد
نکته : در بحث شناسایی بدافزارهایی که اقدام به Perstistence میکنن استفاده از نرم افزار Autoruns خیلی موثره
Startup Folders
یکی دیگه از جاهایی که ممکنه دسخوش حمله بدافزارا بشه بحث استارتاپ و برنامه هاییه که تو استارتاپ میاد بالا ، وقتی یوزری لاگین میکنه قبل رویت دستکاپ یه سری برنامه ها میان بالا ، به اون مرحله میگن استارتاپ
پوشه startup به دو بخش تقسیم میشه : user-level و system-level ، اگر برنامه ای توی پوشه user-level قرار بگیره ، موقع استارتاپ فقط برای یک یوزر اجرا میشه (یوزر همون پوشه ای که توشه) ولی اگر توی پوشه system-level قرار بگیره برای تمامی یوزرا اجرا میشه
یکی از راه هایی که میشه این پردازش هارو شناسایی کرد از طریق دستور shell:startup در ران هست
پوشه system-level startup هم مسیرش اینه :
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
پوشه user-level startup هم مسیرش اینه :
C:\Users\<Username>\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup
WinLogon
این برنامه مسئول logon/logoff - shutdown -startup - و قفل صفحس ، من در یک مقاله پردازش های مهمی که بدافزار نویسا بهش حمله میکنن رو جدا توضیح دادم :
مقاله : معرفی پردازش های مهم ویندوز برای امنیت کار ها
این پردازش هم برای بحث حفظ دسترسی عالیه ، بدافزارا با تغییر registry entries میان و بدافزار خودشونم اضافه میکنن به userinit.exe این پردازش توسط winlogon اجرا میشه و مسئول اجرای اسکریپتای مورد نیاز سیستمه ، حالا این userinit قصه ما در اینجای ریجستری کنترل میشه :
اگر بعد اون کاما "," آدرس فایل مخربی بیاد با userinit اجرا میشه (ببینید بحث Persistence اینطوریه که شما همزمان با پردازش اصلی یه پردازش فرعی رو اجرا میکنید ، مثلا فک کنید دونفر میخوان وارد یه سازمان بشن ، نفر اول احراز شدست ولی نفر دوم مجور ورود نداره ، وقتی میخوان وارد شن نفر اول به نگهبانی میگه که نفر دوم با منه و باهم وارد میشن ، همین فرایندو ما توی بحث Persistence داریم)
userinit مسئول استارت shell یوزره موقعی که یوزر لاگین کرد ، که منظور از شل همون explorer.exe هست و این مقدارم توسط یه ریجستری ولیو دیگه کنترل میشه به نام shell این آدرس
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
AppInit_DLLs
کنترل میکنه که چه dll ای لود بشه برای هر پردازشی که از کتابخونه user32.dll استفاده کنه و چون تقریبا دومین کتابخونه پر استفاده ویندوزه و اکثر توابع توشه میتونه برای بحث حفظ سطح دسترسی استفاده بشه
دوتا مکان ریجستری وجود داره :
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows
HKLM\Software\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\Windows
بر اساس داکیومنت های مایکرسافت این مقدار به صورت پیشفرض غیرفعاله از ویندوز 8 به بعد اگر سیستم از secure boot استفاده کنه
DLL Search Order
میرسیم به یه جای بسیار حساس و خوب دیگه ، dll ها یا با اپلیکیشن جدیدی که روی سیستم میاد نصب میشن یا توی ویندوز به صورت پیشفرض هستن ، هروقت یه پردازش تو ویندوز میخواد یه dll ای رو لود کنه ، ویندوز یه سری سلسله مراتب خاص برای اینکار داره ، جستجوی dll قانونمنده و صف خاصی داره و از همین رو میتونه توسط بدافزار نویسا جعل بشه :
اول ویندوز میره سراغ dll هایی که توی memory لود شدن ، بعد میره سراغ dll هایی که شناخته شدن (KnownDLLs) در مسیر زیر
HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs
بعد میره سراغ دایرکتوری یا پوشه ای که برنامه از تو اون لود شده (پوشه خود برنامه)
بعد میره سراغ دایرکتوری سیستمی "C:\Windows\System32"
بعد "C:\Windows\System"
بعد "C:\Windows"
بعد سراغ دایرکتوری فعلی ای که توش درحال فعالیته
آخر سر دایرکتوری ای که متغییر های محلی توشه "PATH environment variable"
معمولا دوتای اولی بیشتر بهشون حمله میشه !
Windows Service
سرویس درواقع برنامه هایین که در پس زمینه اجرا میشن (در ریجستری هم مقادیرشون ثبت میشن) و درواقع کاربر با سرویس ها مستقیم ارتباط ندارن ، بدافزارا میتونن به عنوان سرویس اجرا بشن تا به Persistence برسن
به این صورت به این هدف میرسن که بدافزار رو به عنوان یه فایل اجرایی مستقل اجرا کنن (standalone executable) یا به عنوان dll که لود میشه داخل svchost.exe یا درایور هسته (kenrel driver)
از خط فرمان و دستور sc میشه استفاده کرد یا محیط گرافیکی services.msc مثلا ما یه بدافزار به اسم اسکایپ میسازیم که اجرا بشه
sc create Skype binPath = C: Windows system32 Skype skype.exe start= auto && sc start Skype
و میتونیم توسط services.ms در ران چک کنیم ، سرویس ها در این مسیر ریجستری ان :
HKLM\SYSTEM\CurrentControlSet\Services
سرویس ها در ویندوز از کانتینر svchost.exe استفاده میکنن ، در واقع svchost مسئول گروهی از سرویساست ، با استفاده از svchost مدیریت سرویس هارو به آسونی مدیریت میکنه ، بدافزارام از کانتینر استفاده svchost.exe میکنن برای اجرای بدافزارشون به عنوان سرویس مخصوصا بدافزار های DLL ای !!
حالا مثلا میریم سراغ netsvcs به عنوان مثالی از گروه سرویس ها در svchost.exe ، اگر دوبار کلیک کنیم روی مقدارش میتونیم کل سرویسای که زیر نظر این گروه اجرا میشن رو ببینیم ، میریم سراغ schedule
تنظیمات services در این بخش ریجستریه :
HKLM\SYSTEM\CurrentControlSet\Services\Schedule
آدرس image سینتکسش اینطوریه : SystemRoot%\System32\svchost.exe –k GroupName%
سرویس باید یک مقدار پارامتر داشته باشه و یه مقدار Service DLL ، این ها میان و کانفیگ و مسیر فایل سرویس رو معلوم میکنن که قراره لود بشه ، و بدافزارام این مقادیرو ادیت میکنن برای کارای خبیث :)
برای شکار این حملات این مقاله خیلی میتونه کمکتون کنه :
مقاله : معرفی پردازش های مهم ویندوز برای امنیت کار ها
امید وارم براتون مفید بوده باشه ، اگر سوالی بود در خدمتم ;)
نظرات کاربران (0)