#Kernel_Land #Privilege #Shellcode (Win7)
یکی از روش های ایجاد یک پروسس با سطح دسترسی SYSTEM در سیستم عامل ویندوز ۷ اینه که با استفاده از explore کردن KPRC یا Kernel Processor Control بیایم و ProcbData رو که موقعیتش در ntdll!_KPCR+0x120 هست رو پیمایش کنیم و در موقعیت ProcbData+0x004 مقدار CurrentThread رو بدست بیاریم,
در مرحله بعد از ساختار _KTHREAD مقدار ApcState که در موقعیت +0x040 قرار داره رو هم بدست آورده و explore کنیم, در جریان explore کردن _KAPC_STATE در موقعیت +0x010 ما مقدار کرنل پروسس رو میتونیم در EAX برای ۳۲ بیت و RAX در ۶۴ بیت ذخیره کنیم,
در مرحله بعد میبایست UniqueProcessId مربوط به پروسسی که میخوایم ارتقاء بدیم رو با استفاده از تابع PsGetCurrentProcess بدست بیاریم, در نهایت هم از ساختمان EPROCESS میبایست موقعتی که توکن ها در آنها لحاظ میشوند رو بدست آورده و با استفاده از Flink که مربوط به اشاره گر پروسس قبل و بعد است رو بکار گرفته و یک توکن سیستمی رو پیدا و با توکن CurrentThread خودمون جا به جا کنیم...
@Unk9vvN
یکی از روش های ایجاد یک پروسس با سطح دسترسی SYSTEM در سیستم عامل ویندوز ۷ اینه که با استفاده از explore کردن KPRC یا Kernel Processor Control بیایم و ProcbData رو که موقعیتش در ntdll!_KPCR+0x120 هست رو پیمایش کنیم و در موقعیت ProcbData+0x004 مقدار CurrentThread رو بدست بیاریم,
mov eax, [fs:eax + 0x124]
در مرحله بعد از ساختار _KTHREAD مقدار ApcState که در موقعیت +0x040 قرار داره رو هم بدست آورده و explore کنیم, در جریان explore کردن _KAPC_STATE در موقعیت +0x010 ما مقدار کرنل پروسس رو میتونیم در EAX برای ۳۲ بیت و RAX در ۶۴ بیت ذخیره کنیم,
mov eax, [eax + 0x50]
در مرحله بعد میبایست UniqueProcessId مربوط به پروسسی که میخوایم ارتقاء بدیم رو با استفاده از تابع PsGetCurrentProcess بدست بیاریم, در نهایت هم از ساختمان EPROCESS میبایست موقعتی که توکن ها در آنها لحاظ میشوند رو بدست آورده و با استفاده از Flink که مربوط به اشاره گر پروسس قبل و بعد است رو بکار گرفته و یک توکن سیستمی رو پیدا و با توکن CurrentThread خودمون جا به جا کنیم...
@Unk9vvN