در این مقاله میخوایم به بررسی تکنیک هایی که بدافزار نویس ها استفاده میکنن برای حفظ دسترسی بدافزارشون رو باهم بررسی میکنیم که برای تیم های آبی مرجع خوبیه که با این تکنیکا آشنا بشن و برای تیم های قرمزم شروع خوبیه که بفهمن چیکار باید بکنن ولی به اینا نباید بسنده کنن :)
اگر یه بدافزار روی سیستم بیاد و نویسندش به بحث Persistence توجه نکنن بعد یه ریبوت ساده بدافزار فعال نمیشه و عملا بی فایده میشه ، واسه همین بدافزار نویس ها سراغ تکنیک های متعددی میرن که بدافزارشون بعد ریستارت یا همون ریبوت سیستم باز خودشو اجرا کنه و بتونه ادامه بده به فعالیتش
قبل اینکه به خوندن ادامه بدید بدک نیست این مقاله رو بخونید :
مقاله : معرفی پردازش های مهم ویندوز برای امنیت کار ها
ریجستری ویندوز یکی از اصلی ترین جاهاییه که بدافزارا سراغش میرن ، ریجستری یک بخشیه که تنظیمات سیستم و کاربرا رو تو خودش ذخیره میکنه ، نکته ای که هست اینه که بعد ریبوت سیستم یکی از جاهایی که میتونه برنامه هارو بالا بیاره ریجستریه حالا بریم سراغ برخی از مکان هایی که ممکنه بدافزارا توش برن برای ریجستری
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 ویندوز هست که توش بدافزار میاد و مشخص میکنه که خب بعد خاموش روشن دوباره اجرا بشه دیگه، میتونیم با دستور 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 به دو بخش تقسیم میشه : 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
این برنامه مسئول 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
کنترل میکنه که چه dll ای لود بشه برای هر پردازشی که از کتابخونه user32.dll استفاده کنه و چون تقریبا دومین کتابخونه پر استفاده ویندوزه و اکثر توابع توشه میتونه برای بحث حفظ سطح دسترسی استفاده بشه
دوتا مکان ریجستری وجود داره :
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Windows
HKLM\Software\Wow6432Node\Microsoft\WindowsNT\CurrentVersion\Windows
بر اساس داکیومنت های مایکرسافت این مقدار به صورت پیشفرض غیرفعاله از ویندوز 8 به بعد اگر سیستم از secure boot استفاده کنه
میرسیم به یه جای بسیار حساس و خوب دیگه ، 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"
معمولا دوتای اولی بیشتر بهشون حمله میشه !
سرویس درواقع برنامه هایین که در پس زمینه اجرا میشن (در ریجستری هم مقادیرشون ثبت میشن) و درواقع کاربر با سرویس ها مستقیم ارتباط ندارن ، بدافزارا میتونن به عنوان سرویس اجرا بشن تا به 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 ، این ها میان و کانفیگ و مسیر فایل سرویس رو معلوم میکنن که قراره لود بشه ، و بدافزارام این مقادیرو ادیت میکنن برای کارای خبیث :)
برای شکار این حملات این مقاله خیلی میتونه کمکتون کنه :
مقاله : معرفی پردازش های مهم ویندوز برای امنیت کار ها
امید وارم براتون مفید بوده باشه ، اگر سوالی بود در خدمتم ;)
عاشق امنیت و نفوذ ، رد تیم و دوستدار بزن بکش :)
کارشناس تست نفوذ سنجی ، علاقه مند به امنیت تهاجمی و رد تیمینگ | عضو انجمن بین المللی ورزش های رزمی کشور آلمان و دارای احکام بین المللی و داخلی کمربند مشکی در سبک های کیوکوشین ، هاپکیدو ، کیک بوکسینگ و چند تام قهرمانی کشوری
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود