در این مقاله به بررسی پردازش های مهم ویندوز میپردازیم که هدف بسیاری از هکرها هستن و ، هکر ها با آلوده کردن این پردازش ها (Processes) بدافزار خودشون رو به پردازش های اصلی و مهم ویندوز میچسبونن که از اهداف مختلفی نشات میگیره ، از اختفا و گریز از مکانیزمای امنیتی گرفته تا حفظ سحط دسترسی و ماندگاری و ...
شناسایی این پردازش ها و نحوه کارشون ، به همراه جزئیات دیگه به تیم های قرمز این دید رو میده که چه پردازش هایی رو بعد حمله (Post Exploitation) مد نظر بگیرن برای Process Injection و حملات دیگه
از طرفی شناسایی این پردازش ها برای تیم های آبی میتونه مفید باشه که هکر ها چه پردازش هایی رو مورد حمله قرار میدن و چطوری اونارو شکار کنن و موارد مشکوک رو زودتر شناسایی کنن
قبل از شروع حتما برنامه Process Hacker و Process Explorer رو نصب کنید و با سطح دسترسی ادمین (Run as Admin) اجراشون کنید
برای مشاهده خیلی از مسائل ما میتونیم به Task Manager خود ویندوز اعتناء کنیم ولی یه سری موارد رو نشون نمیده ، واسه همین باید از Process Explorer و Process Hacker استفاده کنیم
اکثر نخ ها (threads) و handles های سطح هسته (kernel mode) سیستم رو رو این پردازش مدیریت میکنه
سیستم با PID عدد 4 که همیشه ثابته یک پردازشیه برای اجرای نخ های سطح هسته (Kenrel Mode Threads)، نخ های سطح هسته از خیلی جهات با نخ های سطح کاربر (User Mode Threads) شباهت داره (از لحاظ اشتراک Prority یا اولویت ، hardware context و ...) ولی از خیلی جهاتم تفاوت داره ، یکی از تفاوتش اینه که کد هایی که توی سطح هسته اجرا میشن (برای هر درایوری در سطح کرنل مثل ntoskrnl.exe و..) ولی نخ های سطح یوزر Process Address Space ندارن پس سیستم عامل برای اختصاص دادن حافظه باید از heap مایه بزاره
اگر در برنامه Process Hacker این پردازش رو باز کنه ما یه سری اطلاعات میبینیم :
در وهله اول Idle اصلا Process نیست (منبع : Windows Internals 7th edition p88) و سه تا پردازش دیگه (System - Secure System and Memory Compression) کاملا پردازش نیستن چون یک فایل اجرایی در سطح کاربر رو اجرا نمیکنن و به این شبه پردازش ها میگن minimal processes
پردازش SYSTEM همیشه آیدیش 4 هست و یوزری که رانش میکنه NT AUTHORITY/SYSTEM هست (این سطح دسترسی معمولا NT Authority\SYSTEM (S-1-5-18) هست(عکس سمت راست) که اعداد به سطح دسترسی system مربوط هستن (رفرنس))
در عکس سمت چپ میبینیم که توسط مایکروسافت تایید شده ، پایین تر مسیر اجراشو میبینید و فایل ntoskrnl ، پایین تر پدر یا والد این پردازش رو میبینید که Idle هست با PID عدد 0 ، و پایین تر مکانیزم های امنیتی ای که این پردازش داره برای جلوگیری از حملاتی که ممکنه بهش بشه و یه Session داریم با عدد 0 ، حالا این چیه ؟
ویندوز میاد و session 0 رو برای پردازش های خودش استفاده میکنه ولی برای یوزری که لاگین میکنه از اعداد دیگه ای استفاده میکنه ، مثلا برای یوزری که برای بار اول لاگین کرده پردازششو میزنه session 1 (منبع : Windows Internals 7th edition p353)
این نکات رو برای کل پردازش هایی که میگم مد نظر داشته باشید چون پردازش های آلوده اینطوری نیستن !
این پردازش مسئول مدیریت سشن یا همون نشست هست (Session Manager Subsystem) ، این پردازش اولین پردازشیه که توسط سیستم عامل استارت میشه در سطح کاربر (User Mode) توسط خود هسته سیستم عامل
smss اول میاد و csrss و wininit رو در session 0 ایجاد میکنه بعد csrss و winlogon رو در session 1 اجرا میکنه ، smss این کار رو به اینصورت میکنه که خودشو در سشن جدید کپی میکنه و بعد اینجاد دوتا پردازش ها خودشو منهدم میکنه (Self terminate)
در عکس های بالا به ترتیب csrss و wininit که در session0 ایجاد شدن و سپس csrss و winlogon که در session 1 ایجاد شدن رو میبینید (با کلیک راست روی هر پردازش و رفتن به Propertise و رفتن به سربرگ token میتونید session رو ببینید)
یکی دیگه از وظایف smss لود کردن ریجتسری و DLL های معمول مورد نیاز در قسمت مشترک حافظه است
به این مطالبی که در بالا خط قرمز کشیدم توجه کنید
در آخر این مطلب یک MINDMAP بهتون میدم که کامل تمام مواردی که درباره هر Process باید بدونید رو براتون نوشته
این برنامه client server runtime/subsystem هست و در سطح user mode توسط kernel اجرا میشه (توسط smss)، این پردازش خیلی مهمه و اگر منهدم بشه سیستم به مشکل میخوره ، این پردازش مسئول مدیریت ، ایجاد و حذف پردازش ها و نخ هاست (این dll هام همراه با هرکدوم از این پردازش اجرا میشن : csrsrv.dll - basesrv.dll -winsrv.dll)
همچنین اجرای API ها هم به عهده همین پردازشه ، وظیفه map کردن حروف درایو ها(mapping drive letters)، وظیفه ایجاد فایل های موقت یا TEMP، و وظیفه خاموش کردن سیستم هم با این پردازشه
دقت کنید که این پردازش نباید هیچ Parent ای داشته باشه و به مسیرش دقت کنید
موارد بیشتر در MINDMAP انتهای این مطلب
این پردازش مسئول لود کردن User Profile هست ، مسئول log in / log off هست و با لود کردن LogonUI.exe یوزر پسو از کاربر میگیره (مسئول Ctrl+Alt+Delete هم هست)، بعد گرفتن پسورد ، مقادیر رو به LSASS.EXE یا Active Directory یا SAM انتقال میده برای اهراز هویت
این پردازش با لود کردن NTUSER.DAT به داخل ریجستری با همکاری USERINIT.EXE ، پروفایل یوزر رو لود میکنه
این پردازش با session 1 لود میشه
نکته ای که بسیار مهمه و بدافزار نویس ها بسیار دنبالشن دستکاری این دو مقدار در ریجستریه که مرتبطه با این پردازش:
برای مثال یک پردازش آلوده الان همزمان با userinit لود میشه به نام pentestlab.exe که داخل یک پوشه هم هستن :(
موارد بیشتر در MINDMAP انتهای این مطلب
رسیدیم به یک پردازش مهم و کاربردی در سیستم عامل ویندوز که پایه و اساس و پدر خیلی از پردازش هاست
یک پردازشیه برای اجرای services.exe, lsass.exe, and lsm.exe در session 0
نکته : دقت کنید که اکثر پردازش های مهم ویندوز یک سری مکانیزم امنیتی (ASLR,DEP,...) دارن برای جلوگیری از حمله ولی خب به حد کافی ، کافی نیستند :) (در سربرگ General هر پردازش قابل مشاهدس)
موارد بیشتر در MINDMAP انتهای این مطلب
یک پردازش جالب برای ویندوز 7 و مرموز برای ویندوز 8 به بعد !!!!
Local Session Manager یک پردازشه برای کار با سشن یا همون نشست و با smss ارتباط مستقیم داره و در بحث مدیریت ، ایجاد یا از بین بردن سشن یا نشست جدید کاربرد داره ، دقیق تر بخوام بگم برای بحث logon/logoff ، شروع و پایان نشست یا قفل یا باز کردن دسکتاپ فعالیت داره
نکته مهمی که هست اینه که lsm.exe از ویندوز 7 به بعد دیگ به عنوان پردازش وجود نداره و به عنوان کتابخونه در ویندوز 8 به بعد هست تحت عنوان lsm.dll
موارد بیشتر در MINDMAP انتهای این مطلب
این پردازشم مربوط به بحث احراز هویت و ایناست ، Local Security Authority Subsystem برای احراز هویت کاربرا و صادر کردن token کاربرد داره ، مشخص کرد policy یا محدود سازی دسترسی یوزر به یه چیزی یا محدود سازی یه پردازش داخل یه یوزر برای دسترسی به چیزی و.. ، دیگه باید بدونید که این پردازش میاد و token امنیتی برای دسترسی درست میکنه برای Active Directory یا SAM و Netlogon و لاگ مربوطشم توی security event log مینویسه
مثلا یکی از حملاتی که میشه اینکه که با استفاده از حمله به Password Filter DLL بیایید و پسورد یوزر رو بعد عوض کردن بدست بیارید
برای خوندن جرئیات بیشتر از این حمله این لینک رو دنبال کنید
ابزار هایی مثل mimkatz هم با استفاده از این پردازش و ریجستری هاش برای موارد گوناگی استفاده میکنن از قبیل دامپ پسوردا گرفته تا مخفی کردن پردازش و..
این پردازش desktop windows manager برای پردازش و نمایش اطلاعات (رندر) روی صفحه نمایش هست
موارد بیشتر در MINDMAP انتهای این مطلب
این پردازش برای مدیریت سرویس ها در ویندوز استفاده میشه (لود سرویس ، شروع و پایان ، تعامل با سرویس ها و..) و توسط فرمان sc در خط فرمان میتونید سرویس هارو مدیریت کنید
سرویس ها همگی در این مسیر در ریجستری نگه داری میشن
(الان یک سری شاید بپرسن خب این به چه دردی میخوره؟ چه حمله ای ممکنه اتفاق بیفته ؟ سرویس هر برنامه وظیفه اجرای اون برنامه در پس زمینه رو داره ، وقتی سرویس ها در ریجستری نگه داری میشن یعنی شما اگر به ریجستری حمله کنی میتونی سرویس اون برنامه رو از کار بندازی، چه برنامه ای سرویسش از کار بیفته خطرناکه؟ مثلا برنامه های آنتی ویروس !! اگر یه ارتقا سطح دسترسی داشته باشیم بعد نفوذ ، راحت میشه حمله Service Overwritten رو پیاده کرد که باعث میشه سرویس آنتی ویروس از دسترس بیفته)
پردازش services.exe برای auto start درایور هاست داخل مموری (device driver) ، نکته ای که هست اینه که این پردازش با ریجستری هاش به شدت مورد حمله قرار میگیره برای امیال Persistence (بدافزار بعد بوت لود بشه و مهاجم بتونه دسترسی رو حفظ کنه )
وقتی یک یوزر با موفقیت داخل سیستم وارد میشه و احراز میشه این کلید ریجستری میاد و مقدار خودشو آپدیت میکنه و این لاگین موفقیت آمیزو تو خودش سیو میکنه
این پردازش و svchost که بعد این بهش اشاره میکنم چون خیلی فرزند داره معمولا بدافزار ها به عنوان child این پردازش قرار میگیرن یا بقل یکی از child ها قرار میگیرن که باهم اجرا بشن
تو فیلم شرلوک هلمز یه دیالوگ هست که میگه : بهترین راه پنهان شدن درمعرض دید بودنه
موارد بیشتر در MINDMAP انتهای این مطلب
رسیدیم به شلوغ ترین پردازش ویندوز ، خانه بدافزار ها ، سوزنی در انبار کاه !
مسئول مدیریت سرویس هاست بعلاوه مسئول لود dll هایی است که سرویس ها نیاز دارن ! هر سرویس یه سری registry entries داره که dll ای که نیاز داره توشون هست و svchost میاد و از طریق خوندن این dll ها از داخل ریجستری این dll هارو برای سرویس ها لود میکنه
یا خدا !!! تازه خیلی بیشتر از این بود ولی من همینقدرشو عکس گرفتم ،بازم ارزش داره یاد آوری کنیم که شرلوک یه دیالوگ داره که میگه : بهترین راه پنهان شدن درمعرض دید بودنه
نکته ای که هست در بین این همه پردازش شلوغ اون -k ای هست که علامت زدم ، خوشبختانه میتونید سریع با نگاه کردن به -k بفهمید کدوم پردازش الودست یا نه ، پردازشی که -k نداشته باشه به احتمال خیلی زیاد یا آلودس یا آلوده شده
فلسفه این -k برای اینه که ویندوز بیاد و سرویس های مشابه و یکسان رو گروه بندی کنه واسه اینکه همشون یه پردازش رو به اشتراک بزارن و همشون در واقع زیر شاخه یه پردازش باشن ، چون اگر یه سیستم 64 بیت باشه (رمش بیشتر از 3.5 گیگ باشه ، هر پردازش دیگه سرویس های خودشو اجرا میکنه و این -k اگر نباشه خیلی بهم میریزه همه چی (منبع : Windows Internals 7th edition p460)
lsm.dll رو یادتونه بالاتر گفتم ؟
با کلیک راست روی یکی از پردازش های svchost در سربرگ Processes و با انتخاب گزینه Service ,و انتخاب گزینه Go to Service میریم به سربرگ Services و میتونیم ببینیم چه dll ای داره استفاده میکنه و با چک کردن مسیرش در ریجستری میتونیم مطمئن بشیم که پردازش آلوده ای در کنارش اجرا نشده باشه
موارد بیشتر در MINDMAP انتهای این مطلب
یک محلیه برای اجرای پردازش هایی که exe نیستن و dll ای هستن ، در بدو بوت این پردازش میاد و سرویس هارو چک میکنه برای گرفتن سرویس هایی که به dll نیاز دارن برای لود و اونارو ران میکنه
مایکروسافت در وین 8 اسمشو کرده taskhostex.exe
تو وین 10 اسمشو کرده taskhostw.exe
موارد بیشتر در MINDMAP انتهای این مطلب
میزاره پوشه ها و فایلای تو سیستمو ببینی دیگه ! تسک بار و منوی استارتو اینام باهاشه
تولدش اینطوریه که Winlogon میاد و userinit رو اجرا میکنه و بعدش userinit میاد و explorer رو اجرا میکنه و همشون منهدم میشن واسه همین بچم یتیمه بابا نداره :/
برای دسترسی به لینگ گیت هاب اینجا کلیک کنید
اگر بعضی از مفاهیم یا کلمات رو نفهمیدید هیچ ناراحت و ناامید نباشید چون مطالب مرتبط با Windows Internals هست و مفاهیم سطح بالا ویندوزی محسوب میشه و نیاز به مطالعه و کنکاش زیاد داره ;)
من یه نقشه ذهنی دیگه آماده کردم برای شکار چیان تهدیدات که راحت تر شناسایی کنن پردازش های آلودرو که میتونن از این لینک توی گیت هاب بهش دسترسی داشته باشن
اگر سوالی چیزی بود در خدمتم ;)
عاشق امنیت و نفوذ ، رد تیم و دوستدار بزن بکش :)
کارشناس تست نفوذ سنجی ، علاقه مند به امنیت تهاجمی و رد تیمینگ | عضو انجمن بین المللی ورزش های رزمی کشور آلمان و دارای احکام بین المللی و داخلی کمربند مشکی در سبک های کیوکوشین ، هاپکیدو ، کیک بوکسینگ و چند تام قهرمانی کشوری
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود