• دوره‌های آموزشی
  • مسیرهای آموزشی
  • خدمات سازمانی
    • خدمات جامع آگاهی‌رسانی امنیت سایبری
    • آموزش سازمانی
      • دوره‌ی امنیت سایبری برای مدیران کسب‌وکار
      • دوره‌ی Open Source Intelligence
      • دوره‌ی‌ فریم‌ورک MITRE ATT&CK
      • دوره‌ی JAVA Secure Coding
    • مشاوره‌ی امنیت سایبری
    • تحقیقات امنیت سایبری
  • دوره‌های رایگان
    • دوره‌ی Security Essentials
    • دوره‌ی Hack With Kali
  • وبلاگ
  • تقویم آموزشی
آکادمی راوینآکادمی راوین
  • دوره‌های آموزشی
  • مسیرهای آموزشی
  • خدمات سازمانی
    • خدمات جامع آگاهی‌رسانی امنیت سایبری
    • آموزش سازمانی
      • دوره‌ی امنیت سایبری برای مدیران کسب‌وکار
      • دوره‌ی Open Source Intelligence
      • دوره‌ی‌ فریم‌ورک MITRE ATT&CK
      • دوره‌ی JAVA Secure Coding
    • مشاوره‌ی امنیت سایبری
    • تحقیقات امنیت سایبری
  • دوره‌های رایگان
    • دوره‌ی Security Essentials
    • دوره‌ی Hack With Kali
  • وبلاگ
  • تقویم آموزشی

APT

  • خانه
  • APT
  • پایدارسازی دسترسی در ویندوز با استفاده از Context-Menu

پایدارسازی دسترسی در ویندوز با استفاده از Context-Menu

  • تاریخ آوریل 26, 2020

مقدمه

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

Persistent به چه معناست؟

در زمینه‌ی امنیت سایبری Persist به این معناست که مهاجم بعد از گرفتن دسترسی اولیه به سرور یا سامانه‌ی کاربر، در راستای محافظت از دسترسی خود اقدام به پیاده‌سازی فرآیندهایی می‌کند که این امکان را به او بدهد تا هر زمان که  لازم باشد، بتواند به سرور  یا سامانه‌ی کاربر قربانی بازگردد. تکنیک‌های بسیاری در زمینه‌ی Persistent به صورت Public و Private (که به آنها 0Day نیز گفته می شود) وجود دارد. به‌طور خلاصه Persist یعنی نگهداری از دسترسی جهت سو استفاده در زمان‌های مختلف.

Windows Context-Menu چیست ؟

Context-Menu یا منوی زمینه ، بخشی از رابط کاربری ویندوز است که اغلب با «کلیک راست» موس در قالب یک منو مشابه شکل زیر برای کاربر نمایش داده می‌شود.

روشی که در این مقاله یاد شرح داده شده، عبارت است از این‌که چطور می‌توانیم روی این Context-Menu یک فرآیند Persist پیاده سازی کنیم. شاید کمی متعجب شده باشید اما در ادامه خواهید دید که چگونه این روش توسط مهاجمان استفاده می‌شود.

سیستم‌عامل ویندوز به نرم‌افزارهای مختلف این امکان را می‌دهد تا بتوانند یک Handler (به عبارت ساده‌تر یک گزینه) به Context-menu جهت تعامل راحت‌تر کاربران خود، اضافه کنند. برای مثال اگر به عکس بالا توجه کنید متوجه می‌شوید که با نصب شدن نرم افزار 7-zip یک گزینه به منوی راست کلیک ویندوز اضافه شده است.

DLL Proxy چیست؟

نوعی DLL Hijacking است که در آن رفتار یک نرم‌افزار را بدون اختلال در عملکرد آن کنترل می‌کنیم. به این صورت که ابتدا یکی از DLL نرم افزار آسیب‌پذیر را بررسی کرده سپس DLL دیگری با همان نام می‌سازیم به‌گونه‌ای که تمام توابع مورد نیاز نرم‌افزار مورد نظر را با استفاده از Forwarder به DLL اصلی منتقل کند. این کار با هدف ایجاد قابلیت  Intercept  فراخوان‌های نرم‌افزار انجام می‌شود. یعنی DLL را طوری می‌سازیم که در عین برآورده کردن نیازهای نرم‌افزار، کد مخرب ما را نیز اجرا کند. به DLL مربوطه که با این روش ساخته شود، DLL Wrapper نیز گفته می‌شود. این فرآیند به صورت ساده در شکل زیر نمایش داده شده است.

به طور کلی فایل‌های DLL دارای جدولی از Function‌ها یا توابع هستند، این جدول Export Table نامیده می‌شود. در این جدول آدرس تمام توابع قرار دارد که در اصل ورودی‌های فایل DLL هستند. حال زمانی که نرم‌افزار یکی از این توابع را فراخوانی کند،این جدول (Export Table) به آدرس تابع مورد نظر اشاره خواهد کرد.

نکته ی مهمی که در این‌جا وجود دارد این است که این جدول می‌تواند شامل Forwarderها هم باشد یعنی به جای اشاره به آدرس توابع، به یک رشته اشاره می‌کند که تابع مورد نظر آنجا قرار دارد. در واقع اصل کار ما هم همین نکته است ، یعنی یک DLL باید بسازیم تا هر تابعی که نرم افزار درخواست کرد، آن را Forward کند به DLL اصلی تا بتوانیم روند اجرای توابع را کنترل کنیم. توجه داشته باشید که DLL اصلی نرم‌افزار هم‌چنان کار خودش را انجام می‌دهد اما در واقع این DLL ماست (و نه خود نرم افزار) که درخواست‌ها را دریافت و به آن ارسال می‌کند. در حالت کلی از Forwarder ها جهت حرکت بین DLL‌ها استفاده می‌شود و ما هم از همین قابلیت استفاده می‌کنیم تا بتوانیم کد مخرب مورد نظر را هم در این بین اجرا نماییم. برای درک بهتر این فرآیند به شکل زیر توجه کنید.

حال که با این مفاهیم آشنا شدیم به موضوع اصلی می‌پردازیم. همان‌طور که احتمالا می‌دانید زمانی‌که ویندوز Boot می‌شود همواره یک سری از فایل‌های مورد نیاز خود را اجرا می‌کند، مانند Explorer.exe که رابط کاربری سیستم‌عامل را مدیریت می‌کند. Explorer.exe از نظر ویندوز یک برنامه‌ی کاملا قابل اعتماد است. Context-Menu نیز یکی از Object‌های Explorer.exe می‌باشد. هرHandler که در Context-Menu باشد چه استفاده شود و چه استفاده نشود، در اولین درخواست Context-Menu (یعنی زمانی که اولین راست کلیک انجام شود) DLL‌های مربوط به خود را اجرا می‌کند. بدین معنی که به عنوان مثال اگر نرم افزاری مانند 7-zip یا Notepad++ روی ویندوز نصب شده باشند بعد از بوت شدن ویندوز، DLL مربوط به آن‌ها در اولین راست کلیک (چه مورد استفاده قرار بگیرند یا خیر) اجرا خواهد شد.

همان‌طور که در شکل بالا مشاهده می‌کنید آدرس آن DLL هایی که در زمان راست کلیک توسط Context-Menu اجرا می‌شوند به دست آمده است که ما با این DLLها کار خود را شروع کنیم. وقتی با این روش، عملیات Persist را پیاده‌سازی کنیم چون همه‌ی این DLLها به عنوان زیر مجموعه‌ای از Explorer.exe اجرا می‌شوند لذا نمی‌توانیم آن‌ها را Kill یا End Task کنیم مگر این‌که Threadهای آن‌ها را ببندیم و یا به‌طور کلی Explorer.exe را Kill کنیم که در این صورت User Interface ویندوز را از دست می‌دهیم. حال متوجه شدید که این روش چقدر می‌تواند به سود مهاجمان باشد. از آن‌جایی‌که Explorer.exe در هر بار راه‌اندازی ویندوز اجرا شده و هر کاربر نیز به احتمال بسیار زیاد حداقل یک‌بار در ویندوز راست کلیک می‌کند بنابراین DLL مخرب مهاجم اجرا می‌شود و مهاجم ضمن حفظ دسترسی خود به اطلاعات شما نیز همواره دسترسی خواهد داشت.

در ادامه، اجرای عملی این روش به همراه روش‌های مقابله و شناسایی آن در ویدیوی زیر نمایش داده شده است. همچنین در صورت نیاز، اسکریپت‌ها و کدهای مورد استفاده در این ویدیو را می‌توانید از آدرس زیر دریافت کنید:

https://github.com/ravinacademy/DllFunctionProxy

نویسنده:

https://twitter.com/Milad_Pc

برچسب:APT, Backdoor, Persistence

  • اشتراک گذاری:
ravinacademy
ravinacademy

    مطلب قبلی

    سرویس Burp Collaborator
    آوریل 26, 2020

    مطلب بعدی

    وبینار خود ارزیابی امنیت سایبری، پیش از مهاجمین
    می 6, 2020

    ممکن است همچنین دوست داشته باشید

    1068
    APT28 Campaign Against Ukraine
    3 سپتامبر, 2022
    IsaacWiper and HermeticWizard New wiper and worm targeting Ukraine
    IsaacWiper and HermeticWizard: New wiper and worm targeting Ukraine
    28 ژوئن, 2022
    XDLoc Pattern Of Life Geolocation Information
    XDLoc : Pattern Of Life Geolocation Information
    11 ژوئن, 2022

      2 نظر

    1. Avatar
      محمدرضا
      ژوئن 16, 2020
      پاسخ

      مرسی خیلی پست خوبی بود
      یکی از راه های جلوگیری از بارگذاری DLL ها (شایدم موثرترین راه) اینه که با یه ابزاری روی اون DLL بعضی پارامترها چک بشن.
      مکانیزمی وجود داره که بشه این کنترل رو دور زد ؟ یعنی مثلا مثل sign کردن فایل های apk برای اندروید، بشه با یه Certificate مشخص که حالا ممکنه Certificate تایید شده ای هم نباشه، اون DLL رو sign کرد.
      به نظرم تاثیر گذارترین راه اینه که این checking ها زیاد بشه و گرنه این موضوع DLLProxy خیلی چیز جالب و باحالیه.

      • ravinacademy
        ravinacademy
        ژوئن 22, 2020
        پاسخ

        با سلام خدمت شما دوست عزیز
        یکی از چالش‌های امروزه شرکت‌های تولید کننده آنتی ویروس، شناسایی این نوع از تکنیک‌های بارگزاری فایل‌های آلوده است. استفاده از فایل‌های Sign نشده در کناره فایل‌های Sign شده هم یک امر رایج می‌باشد که شناسایی این نوع از حملات را دشوار تر می‌کند. اما برای دور زدن مکانیزم‌های اعتبار سنجی Sign میتونین از مطلب زیر استفاده کنید و تکنیک زیر یکی از روش‌های Sign Hijacking می‌باشد و برای این نوع از تکنیک‌ها روش‌های دیگری هم وجود دارد:
        https://github.com/netbiosX/Digital-Signature-Hijack

    نظر بدهید لغو پاسخ

    نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

    دسته‌ها

    • APT
    • APT27
    • Bug Bounty
    • exploit
    • Learning Road Map
    • Live Stream
    • Mobile Security
    • Persistence
    • Security Awareness
    • Threat Hunting
    • Web Security
    • دسته‌بندی نشده
    • وبینار

    منابع

    • مسیرهای آموزشی
    • پرسش‌های رایج
    • تخفیف‌ها
    • وبینارها
    • پخش زنده
    • کتابچه
    • هکرهای دوست‌ داشتنی

    همکاری با ما

    • تدریس در آکادمی راوین
    • همکاری در تولید محتوا
    • استخدام

    خدمات سازمانی

    • آموزش سازمانی
    • مشاوره‌ی امنیت سایبری
    • تحقیقات امنیت سایبری

    آکادمی راوین

    • خانه
    • درباره‌ی ما
    • تماس با ما

        

    [email protected]
    Twitter
    Telegram
    Linkedin
    Instagram
    Github

    تمام حقوق این وب سایت به آکادمی راوین تعلق دارد.