معرفی
روزانه بر روشهای #تزریق_کد به فرایندهای در حال اجرا افزوده میشود و معروف ترین و مؤثرترین روشی که تا به حال مورد استفاده قرار گرفته است، Reflective Memory Injection نام دارد.
هر کدام از روش های به کار رفته دارای ویژگیها و تکنیک های خاص خود میباشند و تنها نقطه مشترکی که میتوان به آن اشاره کرد که تقریبا در همه روشها یکسان مورد استفاده قرار گرفته است، API هایی است که مهاجمان برای تزریق و اجرای کد خود از آنها استفاده میکنند. و نکته جالب تر این است که تمام این API ها مربوط به خود OS قربانی است و این API ها به نوعی مجاز برای استفاده هستند در دسترس تمام برنامهها.
تزریقdll در فرایندهای در حال اجرا
برخی توابع تعریف شده در ویندوز API به صورت مستقیم به مهاجمان اجازه میدهند که عمل تزریق dll در دیگر فرایندها را انجام دهند. یعنی میتوان گفت که تزریق dll یک عمل پزیرفته شده توسط سازندگان ویندوز است و این روش در خیلی مواقع به صورت کاملا مجاز مورد استفاده قرار میگیرد. اما این توابع آسیب پذیری جدی در سیستم به وجود آوردهاند که به مهاجمان نیز این اجازه را میدهند تا از این APIها برای اهداف مخربانه خود استفاده کنند.
تزریق dll روش های مختلفی دارد که که همچنان نیز در حال توسعه ابداع روش های جدید میباشد. اما میتوان گفت که تقریبا همهی این روشها از یک مسیر مشخص باید عبور کنند که در ادامه ذکر شده است.
1. چسبیدن به فرایند قربانی
2. اختصاص دادن حجمی از حافظه در فرایند مهاجم به مقداری مشخص و مورد نیاز
3. کپی کردن dll در فرایند قربانی و مشخص کردن آدرسهای توبع مورد نیاز از dll بارگذاری شده در حافظه
4. اجرای dll با آموختن نحوه اجرای dll به فرایند قربانی
در تکنیکهای مختلف استفاده شده در تزریق dll ممکن است که این مراحل به شیوههای مختلفی پیادهسازی شوند و یا حتی برخی مراحل اضافه و یا حذف شوند اما عمدتا این مراحل برای کامل کردن مراحل تزریق لازم هستند.
در ادامه API های رایجی که در هر مرحله مورد استفاده قرار میگیرند به صورت تفکیک شده معرفی میشوند و یک مثال از یک تکنیک خاص و مؤثر در ادامه مطالب قرار داده شده است.
مراحل تزریق و رایج ترین API های استفاده شده در این مراحل
چسبیدن به فرایند قربانی
در اکثر مواقع برای انجام مرحلهی اول در تزریق dll از تابع موجود در API به نام OpenProcess استفاده میشود که با دادن مقدار شناسه فرایندی مشخص(قربانی) یک handle از فرایند برمیگرداند.
در این مرحله ممکن است نتوان تمام فرایندهای در حال اجرا را به این روش در معرض تزریق قرار داد به این دلیل که فرایندهای مختلف با سطوح دسترسی مختلف در سیستم ثبت میشوند که برخی فقط از سوی خود سیستم مورد استفاده قرار میگیرند و دیگر برنامهها قادر به استفاده از این روش در چسبیدن به این گونه فرایندها نیستند. البته با برخی تکنیک ها میتوان تا مقداری سطح دسترسی فرایند مهاجم را بالا برد تا بتواند به فرایندهای با سطح دسترسی بالاتر دست پیدا کند. اما افزایش سطح دسترسی تا حدی مجاز است و باز نمی توان به همهی فرایندها دسترسی پیدا خصوصا فرایندهایی که موبوط به سیستم عامل میباشند.
- 27