ونڈوز ALPC آسان تحقیق

Windows Alpc Simple Research



0x00

یہ مضمون ALPC کا ایک سادہ مطالعہ ہے۔ محدود وقت کی وجہ سے ، اب بھی بہت ساری تفصیلات موجود ہیں جو واضح نہیں ہیں ، اور بہت ساری غلطیاں ہیں۔ مجھے امید ہے کہ میں جیڈ کو متاثر کرنے میں اپنا کردار ادا کرسکتا ہوں ، اور میں ماہرین کو گفتگو کرنے اور سیکھنے کے ل to مل سکتا ہوں۔
ALPC (ایڈوانسڈ / ایسینکرونس لوکل پروسیجر کال) مائیکروسافٹ کے ذریعہ تیار کردہ ایک C / S ماڈل ٹکنالوجی ہے جس نے ایل پی سی کو آبائی RPC کی جگہ لینا ہے۔ لیکن صارفین کے ل you ، آپ صرف آر پی سی تصور ہی دیکھ سکتے ہیں ، اور شاذ و نادر ہی ALPC دیکھ سکتے ہیں۔
آئیے ایک عام ALPC ہم وقت ساز کال اسٹیک کو دیکھیں:
تصویر
اس نام سے دیکھا جاسکتا ہے کہ RPCRT4.dll آر پی سی کی رن ٹائم لائبریری ہے۔ میں ذاتی طور پر محسوس کرتا ہوں کہ اگر میں سی کی طرف RPC استعمال کرنا چاہتا ہوں تو ، میں بنیادی طور پر اس لائبریری سے نمٹتا ہوں۔
جیسا کہ اسٹیک کی فنکشن کال سے دیکھا جاسکتا ہے ، آر پی سی پہلے ایل آر پی سی میں داخل ہوتا ہے اور پھر ALPC میں داخل ہوتا ہے۔ ونڈوز میں ، آر پی سی ایل آر پی سی (دیسی ریموٹ پروسیجر کال) اور ملٹی مشین آر پی سی میں تقسیم ہے۔
بنیادی طور پر آر پی سی کی دو اقسام کی اچھی تفہیم ہے۔ اس مشین کے لئے ، آئی پی سی کے پاس مواصلات کے مختلف طریقے ہیں اور مجموعی طور پر ماحول آسان ہے۔ مختلف ٹرمینلز کا آئی پی سی بنیادی طور پر ٹی سی پی / آئی پی پروٹوکول کا استعمال کرتا ہے۔ نیٹ ورک کے ماحول کی رعایت کو سنبھالنا زیادہ پیچیدہ ہے۔
ایل آر پی سی کا اطلاق ALPC کے ذریعے کیا جاتا ہے۔
ونڈوز کے جدید ماحول میں ، ALPCs کا استعمال زیادہ تر لوگوں کے خیال سے کہیں زیادہ ہوسکتا ہے۔ APIs جو واقف ہوسکتے ہیں وہ ALLC کے ذریعہ دیگر اطلاق (خاص طور پر svchost) کے لئے داخلی طور پر نافذ کیے جاتے ہیں۔ اسکین2014 میں ایلکس آئونسکو کی تقریر کے مطابق ، یہاں تک کہ ونڈوز کے آسان ترین پروگراموں میں بھی ALPC کنکشن ہوگا۔
آپ ہر عمل کے لئے ALPC Port کا نام دیکھنے کے لئے procexp.exe کھول سکتے ہیں۔

0x01

ALPC کا مجموعی فن تعمیر مندرجہ ذیل ہونا چاہئے:
تصویر
http://www.zer0mem.sk/؟p=542
جیسا کہ آپ اعداد و شمار سے دیکھ سکتے ہیں ، کلائنٹ پورٹ سرور پورٹ سے منسلک ہوتا ہے تاکہ ایک الپسی کنکشن بنایا جاسکے۔ موکل پیغام کو پیغام کی قطار تک پہنچاتا ہے۔ یہ اندازہ لگایا گیا ہے کہ میسج کے ذریعہ ڈاٹا ڈیٹا نسبتا large بڑا ہے ، لہذا اعداد و شمار کی کاپی کو کم کرنے اور کارکردگی کو بہتر بنانے کے لئے مخصوص اعداد و شمار کو سیکشن میں منتقل کیا جاتا ہے۔
ALPC کے استعمال کا آسان طریقہ ذیل میں ہے:
سرور سائیڈ NtAlpcCreatePort کو سرور پورٹ بنانے کے ل calls فون کرتا ہے ، اور پھر کلائنٹ کنکشن کا انتظار کرنے NtAlpcAcceptConnectPort پر کال کرتا ہے۔ کلائنٹ فریق NtAlpcConnectPort پر رابطہ قائم کرنے کی کوشش کرنے کے لئے فون کرتا ہے۔ اگر سرور سائیڈ اجازتوں ، ایس آئی ڈی اور دیگر معلومات کو چیک کرتا ہے اور پھر کنکشن کی اجازت دیتا ہے تو پھر پورٹ کنکشن قائم ہوجاتا ہے۔
ایک دوسرے کو پیغامات بھیجنے اور وصول کرنے کے لئے موکل اور سرور NtAlpcSendWaitReLivePort پر کال کرسکتے ہیں۔



ALPC کا اطلاق پرت انٹرفیس دیکھا جاسکتا ہے: https://processhacker.sourceforge.io/doc/ntlpcapi_8h.html
ALPC کے مخصوص نفاذ کے بارے میں ، وقت کے رشتے کی وجہ سے ، صرف IDA پلٹ گیا ، کوئی خاص دریافت نہیں ہے ، یہ بدصورت پیش کرنے کے لئے سامنے نہیں آئے گا۔



0x02

اگلا ، _ALPC_PORT اور _KALPC_MESSAGE کے ڈیٹا ڈھانچے پر ایک نظر ڈالیں:
تصویر
تصویر
ALPC_PORT میں زیادہ اہم فیلڈز:
1 ، پورٹ لسٹ انٹری کو اس فیلڈ کے ذریعے سسٹم میں ALLC کی تمام بندرگاہوں کو عبور کرنے کے قابل ہونا چاہئے
2 ، مواصلت انفو ، اس فیلڈ کے ذریعے ہم دوسرے سرے پر پورٹ کی معلومات حاصل کرسکتے ہیں
3 ، قطار میں معلومات کی مختلف اقسام
4 ، اوونر پروسس ، جس عمل سے یہ ظاہر ہوتا ہے کہ اس پورٹ نے کس عمل کو تشکیل دیا
5 ، مختلف قطاروں کے غیر عمل شدہ پیغام کی لمبائی ، مثال کے طور پر ، میں نے جس ڈمپ میں تجزیہ کیا ہے اس میں زیربحث کیوئ لینتھ
0x3cd ہے ، جس کے نتیجے میں ALPC ہر وقت مسدود رہتا ہے ، اور پورا اے پی پی پھنس گیا ہے۔
تصویر
تصویر
1. مالک پورٹ موجودہ پیغام کس بندرگاہ سے وابستہ ہے۔
2 ، ویٹنگ ٹریڈ ، کون سا تھریڈ اس وقت اس پیغام کے مکمل ہونے کا انتظار کر رہا ہے ، عام طور پر وہ تھریڈ جس نے NtAlpcSendWaitReਸੀPort پر کال شروع کی تھی
3 ، سرور تھریڈ اس ALPC MSG پر کارروائی کرنے کے لئے کون سا تھریڈ ذمہ دار ہے۔ مندرجہ ذیل اندازہ لگانے والا مواد ہے ، براہ کرم تنقید کریں: اے ایل پی سی پورٹ پر براہ راست قطار اور زیر التوا قطار ہے ، براہ راست قطار ایک مخصوص کارکن دھاگے کے ذریعہ کارروائی کی جاسکتی ہے زیر التوا قطار تھریڈ پول میں بے ترتیب تھریڈ کے ذریعہ عملدرآمد کیا جاسکتا ہے ، یعنی اس سے منسلک ایک تھریڈ پول ALPC کا مکمل پورٹ ، ایونٹ موصول ہونے کے بعد ڈیٹا پروسیسنگ کریں۔ اس سے پہلے کہ سی طرف دانی میں داخل ہونے کی درخواست شروع کرے ، سی طرف یہ نہیں جان سکتا کہ سرور ٹریڈ کون ہے۔ یہ فیلڈ بہت نازک ہے۔ اگر میسج فیلڈ خالی نہیں ہے ، لیکن اے ایل پی سی کال واپس نہیں کی گئی ہے ، تو آپ براہ راست سرور ٹریڈ تھریڈ اسٹیک پر جاسکتے ہیں کہ یہ کیوں پھنس گیا ہے۔
4. میسج آئی ڈی ، عالمی سطح پر منفرد ALPC میسج ID۔



0x03

ونڈبیگ میں ALPC کی معلومات کو دیکھنے کے لئے ایک خصوصی! alpc کمانڈ ہے۔
عام طور پر ، اگر اے پی پی طویل عرصے سے NtAlpcSendWaitReসেپ پورٹ پر کال کرتا ہے تو ، دانا براہ راست / ڈمپ ڈیبگ (! پروس پروڈ_ڈیڈر) درج ذیل معلومات دکھائے گا۔
ALPC پیغام [KALPC_MESSAGE شامل کنندہ] کے جواب کے منتظر ہیں
اس پیغام کے ل we ، ہمیں اس کی پرواہ ہے کہ ونڈ بی جی کی پوزیشن کیسے ہے۔ ہم kdexts.dll پر براہ راست دیکھ سکتے ہیں۔
چونکہ تھریڈ کی معلومات پرنٹ کرتے وقت یہ پیغام ظاہر ہوتا ہے ، آپ IDA میں دھاگے سے متعلقہ فنکشن کو تلاش کرسکتے ہیں ، خاص طور پر ڈمپ ٹریڈ فنکشن میں ، جو دراصل _EETREAD ڈھانچے کا AlpcMessageId فیلڈ ہے۔
IDA میں الپسی کی تلاش ، ہم الپ کمانڈ کی کارروائی عمل دیکھ سکتے ہیں۔

0x04

آر پی سی کی ڈیبگنگ کے ل Microsoft ، مائیکروسافٹ کے پاس مزید مفصل دستاویزات بھی موجود ہیں ، لیکن یہ براہ راست ڈیبگ ہونا ضروری ہے۔ دیکھیں:
https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/overview-of-rpc-debugging
ALPC اور RPC پیغامات دیکھنے کے ل for ٹولز بھی موجود ہیں۔
http://blogs.mic Microsoft.co.il/pavely/2017/02/12/monmitted-lpc-messages/
https://github.com/silverf0x/RpcView