محمد حسن پزشکیان
عاشق امنیت و نفوذ ، رد تیم و دوستدار بزن بکش :)

معرفی پردازش های مهم ویندوز برای امنیت کار ها

در این مقاله به بررسی پردازش های مهم ویندوز میپردازیم که هدف بسیاری از هکرها هستن و ، هکر ها با آلوده کردن این پردازش ها (Processes) بدافزار خودشون رو به پردازش های اصلی و مهم ویندوز میچسبونن که از اهداف مختلفی نشات میگیره ، از اختفا و گریز از مکانیزمای امنیتی گرفته تا حفظ سحط دسترسی و ماندگاری و ...

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران

شناسایی این پردازش ها و نحوه کارشون ، به همراه جزئیات دیگه به تیم های قرمز این دید رو میده که چه پردازش هایی رو بعد حمله (Post Exploitation) مد نظر بگیرن برای Process Injection و حملات دیگه

از طرفی شناسایی این پردازش ها برای تیم های آبی میتونه مفید باشه که هکر ها چه پردازش هایی رو مورد حمله قرار میدن و چطوری اونارو شکار کنن و موارد مشکوک رو زودتر شناسایی کنن

قبل از شروع حتما برنامه Process Hacker و Process Explorer رو نصب کنید و با سطح دسترسی ادمین (Run as Admin) اجراشون کنید

معرفی پردازش های مهم ویندوز

برای مشاهده خیلی از مسائل ما میتونیم به Task Manager خود ویندوز اعتناء کنیم ولی یه سری موارد رو نشون نمیده ، واسه همین باید از Process Explorer و Process Hacker استفاده کنیم 

SYSTEM 

 اکثر نخ ها (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)

این نکات رو برای کل پردازش هایی که میگم مد نظر داشته باشید چون پردازش های آلوده اینطوری نیستن ! 


smss.exe

این پردازش مسئول مدیریت سشن یا همون نشست هست (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 باید بدونید رو براتون نوشته

 

csrss.exe

این برنامه client server runtime/subsystem هست و در سطح user mode توسط kernel اجرا میشه (توسط smss)، این پردازش خیلی مهمه و اگر منهدم بشه سیستم به مشکل میخوره ، این پردازش مسئول مدیریت ، ایجاد و حذف پردازش ها و نخ هاست (این dll هام همراه با هرکدوم از این پردازش اجرا میشن : csrsrv.dll - basesrv.dll -winsrv.dll)

همچنین اجرای API ها هم به عهده همین پردازشه ، وظیفه map کردن حروف درایو ها(mapping drive letters)، وظیفه ایجاد فایل های موقت یا TEMP،  و وظیفه خاموش کردن سیستم هم با این پردازشه 

دقت کنید که این پردازش نباید هیچ Parent ای داشته باشه و به مسیرش دقت کنید 

معرفی پردازش های مهم ویندوز برای امنیت کار ها

موارد بیشتر در MINDMAP انتهای این مطلب


winlogon.exe

این پردازش مسئول لود کردن 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 انتهای این مطلب


wininit.exe 

رسیدیم به یک پردازش مهم و کاربردی در سیستم عامل ویندوز که پایه و اساس و پدر خیلی از پردازش هاست

یک پردازشیه برای اجرای services.exe, lsass.exe, and lsm.exe در session 0 

معرفی پردازش های مهم ویندوز برای امنیت کار ها

نکته : دقت کنید که اکثر پردازش های مهم ویندوز یک سری مکانیزم امنیتی (ASLR,DEP,...) دارن برای جلوگیری از حمله ولی خب به حد کافی ، کافی نیستند :) (در سربرگ General هر پردازش قابل مشاهدس)

معرفی پردازش های مهم ویندوز برای امنیت کار ها

موارد بیشتر در MINDMAP انتهای این مطلب


lsm.exe

یک پردازش جالب برای ویندوز 7 و مرموز برای ویندوز 8 به بعد !!!!

Local Session Manager یک پردازشه برای کار با سشن یا همون نشست و با smss ارتباط مستقیم داره و در بحث مدیریت ، ایجاد یا از بین بردن سشن یا نشست جدید کاربرد داره ، دقیق تر بخوام بگم برای بحث logon/logoff ، شروع و پایان نشست یا قفل یا باز کردن دسکتاپ فعالیت داره 

نکته مهمی که هست اینه که lsm.exe از ویندوز 7 به بعد دیگ به عنوان پردازش وجود نداره و به عنوان کتابخونه در ویندوز 8 به بعد هست تحت عنوان lsm.dll 

معرفی پردازش های مهم ویندوز برای امنیت کار ها

موارد بیشتر در MINDMAP انتهای این مطلب


lsass.exe

این پردازشم مربوط به بحث احراز هویت و ایناست ، Local Security Authority Subsystem برای احراز هویت کاربرا و صادر کردن token کاربرد داره ، مشخص کرد policy یا محدود سازی دسترسی یوزر به یه چیزی یا محدود سازی یه پردازش داخل یه یوزر برای دسترسی به چیزی و.. ، دیگه باید بدونید که این پردازش میاد و token امنیتی برای دسترسی درست میکنه برای Active Directory یا SAM و Netlogon و لاگ مربوطشم توی security event log مینویسه 

معرفی پردازش های مهم ویندوز برای امنیت کار ها

مثلا یکی از حملاتی که میشه اینکه که با استفاده از حمله به Password Filter DLL بیایید و پسورد یوزر رو بعد عوض کردن بدست بیارید

معرفی پردازش های مهم ویندوز برای امنیت کار ها

برای خوندن جرئیات بیشتر از این حمله این لینک رو دنبال کنید

ابزار هایی مثل mimkatz هم با استفاده از این پردازش و ریجستری هاش برای موارد گوناگی استفاده میکنن از قبیل دامپ پسوردا گرفته تا مخفی کردن پردازش و..


dwm.exe

این پردازش desktop windows manager برای پردازش و نمایش اطلاعات (رندر) روی صفحه نمایش هست

معرفی پردازش های مهم ویندوز برای امنیت کار ها

موارد بیشتر در MINDMAP انتهای این مطلب


services.exe

این پردازش برای مدیریت سرویس ها در ویندوز استفاده میشه (لود سرویس ، شروع و پایان ، تعامل با سرویس ها و..) و توسط فرمان sc در خط فرمان میتونید سرویس هارو مدیریت کنید

معرفی پردازش های مهم ویندوز برای امنیت کار ها

سرویس ها همگی در این مسیر در ریجستری نگه داری میشن

(الان یک سری شاید بپرسن خب این به چه دردی میخوره؟ چه حمله ای ممکنه اتفاق بیفته ؟ سرویس هر برنامه وظیفه اجرای اون برنامه در پس زمینه رو داره ، وقتی سرویس ها در ریجستری نگه داری میشن یعنی شما اگر به ریجستری حمله کنی میتونی سرویس اون برنامه رو از کار بندازی، چه برنامه ای سرویسش از کار بیفته خطرناکه؟ مثلا برنامه های آنتی ویروس !! اگر یه ارتقا سطح دسترسی داشته باشیم بعد نفوذ ، راحت میشه حمله Service Overwritten رو پیاده کرد که باعث میشه سرویس آنتی ویروس از دسترس بیفته)

پردازش services.exe برای auto start درایور هاست داخل مموری (device driver) ، نکته ای که هست اینه که این پردازش با ریجستری هاش به شدت مورد حمله قرار میگیره برای امیال Persistence (بدافزار بعد بوت لود بشه و مهاجم بتونه دسترسی رو حفظ کنه )

معرفی پردازش های مهم ویندوز برای امنیت کار ها

وقتی یک یوزر با موفقیت داخل سیستم وارد میشه و احراز میشه این کلید ریجستری میاد و مقدار خودشو آپدیت میکنه و این لاگین موفقیت آمیزو تو خودش سیو میکنه

این پردازش و svchost که بعد این بهش اشاره میکنم چون خیلی فرزند داره معمولا بدافزار ها به عنوان child این پردازش قرار میگیرن یا بقل یکی از child ها قرار میگیرن که باهم اجرا بشن

معرفی پردازش های مهم ویندوز برای امنیت کار ها

تو فیلم شرلوک هلمز یه دیالوگ هست که میگه : بهترین راه پنهان شدن درمعرض دید بودنه

موارد بیشتر در MINDMAP انتهای این مطلب


svchost.exe

رسیدیم به شلوغ ترین پردازش ویندوز ، خانه بدافزار ها ، سوزنی در انبار کاه !

مسئول مدیریت سرویس هاست بعلاوه مسئول لود 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 انتهای این مطلب


taskhost.exe

یک محلیه برای اجرای پردازش هایی که exe نیستن و dll ای هستن ، در بدو بوت این پردازش میاد و سرویس هارو چک میکنه برای گرفتن سرویس هایی که به dll نیاز دارن برای لود و اونارو ران میکنه

مایکروسافت در وین 8 اسمشو کرده  taskhostex.exe

تو وین 10 اسمشو کرده  taskhostw.exe
معرفی پردازش های مهم ویندوز برای امنیت کار ها

موارد بیشتر در MINDMAP انتهای این مطلب


explorer.exe

میزاره پوشه ها و فایلای تو سیستمو ببینی دیگه ! تسک بار و منوی استارتو اینام باهاشه

تولدش اینطوریه که Winlogon میاد و userinit رو اجرا میکنه و بعدش userinit میاد و explorer رو اجرا میکنه و همشون منهدم میشن واسه همین بچم یتیمه بابا نداره :/

نقشه ذهنی پردازش های مهم ویندوز

معرفی پردازش های مهم ویندوز برای امنیت کار ها

برای دسترسی به لینگ گیت هاب اینجا کلیک کنید

چند تا نکته :

  •  عدد هر پردازش یا PID اون منحصر بفرده ، برای پردازش سیستم این عدد 4 هست و ثابته ولی برای بقیه پردازش ها متغییره
  • به مسیر اجرایی هر پردازش دقت کنید ، اگر پردازشی در مسیر دیگه ای اجرا میشد ، پردازش مخربه !
  • به والد و فرزند های پردازش ها دقت کنید ! بدافزار ها ممکنه والد پردازش هایی بشن که به ظاهر سیستمین ولی الکین ! یا برعکس ، والد قانونی و سیستمیه ولی فرزندش مخربه
  • یوزر نیم اکثر پردازش های سیستم 1-5-18 هست که نشانگر اینه که پردازش سطح سیستمیه !
  • یه مسئله دیگه زمان اجرا اون پردازشه که نشون میده اکثرشون برای بحث Persistence هدف مناسبی هستن
  • تعداد اجراشونه که باید حواستون باشه اگر مثلا smss باید 1 دونه ازش باشه و دوتا بود سریع بفهمید دومیه مخربه !
  • مورد بعدی تعویض اسمه که بدافزارا ممکنه اسامی پردازش مخرب رو نزدیک به پردازش اصلی در بیارن ، مثلا lsass پردازش اصلیه و شما ممکنه lssass یا lssas ببینید !
  • به ردیف Migitations دقت کنید که اگر خالی باشه یعنی پردازش اصلی ویندوزی نیست ! چون این مکانیزما امنیتی رو ویندوز میزاره برای پردازش های اصلی و مهمش !
  • مورد آخر بحث اولویت یا همون Base Prority هست که درکل میشه گفت هرچی عدد کمتر باشه یعنی اولویت پردازش برای اجرا بالاتره ، این عدد ممکنه تغییر کنه (Dynamic Prority) و باز از سطح اهمیت اون پردازش برای سیستم عامل میتونید بفهمید کدوم پردازش برای بدافزار مکان بهتریه !! برای اطلاعات بیشتر اینجا کلیک کنید

اگر بعضی از مفاهیم یا کلمات رو نفهمیدید هیچ ناراحت و ناامید نباشید چون مطالب مرتبط با Windows Internals هست و مفاهیم سطح بالا ویندوزی محسوب میشه و نیاز به مطالعه و کنکاش زیاد داره ;)

شکار پردازش های آلوده در ویندوز

من یه نقشه ذهنی دیگه آماده کردم برای شکار چیان تهدیدات که راحت تر شناسایی کنن پردازش های آلودرو که میتونن از این لینک توی گیت هاب بهش دسترسی داشته باشن


اگر سوالی چیزی بود در خدمتم ;)


محمد حسن پزشکیان
محمد حسن پزشکیان

عاشق امنیت و نفوذ ، رد تیم و دوستدار بزن بکش :)

کارشناس تست نفوذ سنجی ، علاقه مند به امنیت تهاجمی و رد تیمینگ | عضو انجمن بین المللی ورزش های رزمی کشور آلمان و دارای احکام بین المللی و داخلی کمربند مشکی در سبک های کیوکوشین ، هاپکیدو ، کیک بوکسینگ و چند تام قهرمانی کشوری

نظرات