Наша дослідницька подорож розпочалася з вивчення Waasremediation Com клас, який підтримує Idispatch Інтерфейс. Цей інтерфейс дозволяє клієнтам виконувати запізнення. Зазвичай клієнти COM мають визначення інтерфейсу та типу для об'єктів, які вони використовують визначені під час компіляції. Натомість, пізнє обов'язкове забезпечення дозволяє клієнту відкривати та викликати методи на об'єкт під час виконання. Idispatch включає Gettypeinfo метод, який повертає Itepeinfo Інтерфейс. Itepeinfo Має методи, які можна використовувати для виявлення інформації про тип для об'єкта, що його реалізує.
Якщо клас COM використовує бібліотеку типу, клієнт може запитувати Itypelib (Отримано з ItypeInfo-> getConstaringTypelib) для отримання інформації про тип. Крім того, бібліотеки типу також можуть посилатися на інші бібліотеки типу для отримання додаткової інформації.
Відповідно до публікації в блозі Forshaw, Waasremediation Посилання Бібліотека типу Waasremediationlib, які в свою чергу стадоль (Автоматизація оле). Waasremediationlib використовує два класи COM з цієї бібліотеки, Stdfont і Stdpicture. Виконуючи комбінезон на Stdfont об'єкт за допомогою модифікації його Лікування Ключ реєстру, клас вказує на інший клас COM на наш вибір, наприклад Система.Object У .NET Framework. Зверніть увагу, Форшоу це вказує Stdpicture не є життєздатним, оскільки цей об’єкт виконує перевірку на інстанцію поза процесом, тому ми тримали свою увагу на використанні Stdfont.
.Net об'єкти нам цікаві через Система.Object' GetType метод. Через GetType, Ми можемо виконати .net Deplelect, щоб зрештою доступ Асамблея.load. В той час Система.Object Був обраний, цей тип є коренем ієрархії типу в .NET. Тому може бути використаний будь -який об'єкт .NET COM.
З початковим набором етапу було два інших значень dword під HKLM \ Software \ Microsoft \ .netframework Ключ, необхідний для того, щоб зробити наш сприйнятий випадок використання реальністю:
- AllowDcomreflection: Як зазначає Forshaw, це дозволене значення дозволяє нам виконувати довільне відображення для виклику будь -якого методу .NET. Зазвичай .NET відбиття над DCOM запобігається через пом'якшення, розглянуті в MS14-009.
- Onyselatestclr: Використання Procson, Ми виявили, що це значення повинно бути включене для завантаження останньої версії .NET CLR (версія 4), інша версія 2 завантажується за замовчуванням.
Підтвердивши, що остання версія CLR та .NET може бути завантажена в наші початкові зусилля з тестування, ми знали, що ми на правильному шляху.