Найти в Дзене

Engineering Constellation Control Program (ECCP) от M-I SWACO, что же там внутри?

Текущая статья не является практическим руководством или руководством к действию. Представленный материал представлен исключительно в образовательных целях и несёт в себе концепцию «пища для размышления» не нарушая авторского и/или смежного права. Повторять описанные процессы не рекомендуется. Часть материала может быть полезна инженерам занимающихся различными вопросами и проблемами криптологии и криптоанализа. Некоторые материалы, находящиеся в теле статьи, являются собственностью их многоуважаемых авторов. Статья не претендует на полноту. Некоторые значения и параметры были сознательно изменены. M-I Swaco компания занимающаяся сопровождением буровых работ в контексте буровых растворов и утилизации буровых отходов, которая была выкуплена другой компанией, акулой в мире бурения - Schlumberger. Для своих нужд компания разработала комплексное программное обеспечение ECCP (Engineering Constellation Control Program), позволяющее упростить и ускорить расчеты ствола скважины и параметров по
Оглавление
Текущая статья не является практическим руководством или руководством к действию. Представленный материал представлен исключительно в образовательных целях и несёт в себе концепцию «пища для размышления» не нарушая авторского и/или смежного права. Повторять описанные процессы не рекомендуется. Часть материала может быть полезна инженерам занимающихся различными вопросами и проблемами криптологии и криптоанализа. Некоторые материалы, находящиеся в теле статьи, являются собственностью их многоуважаемых авторов. Статья не претендует на полноту. Некоторые значения и параметры были сознательно изменены.

Вступление

M-I Swaco компания занимающаяся сопровождением буровых работ в контексте буровых растворов и утилизации буровых отходов, которая была выкуплена другой компанией, акулой в мире бурения - Schlumberger. Для своих нужд компания разработала комплексное программное обеспечение ECCP (Engineering Constellation Control Program), позволяющее упростить и ускорить расчеты ствола скважины и параметров по буровым растворам. Программное обеспечение входит в комплекс OPTI-STRESS, познакомиться можно по адресу: ссылка тут, страница №10. Программа основана на "движке" от Microsoft Excel, однако имеет и свой примитивный интерфейс.

Статистика

Интерфейс

После установки программы попадаем на окно регистрации.

Рисунок 1. - Ярлык и окно регистрации.
Рисунок 1. - Ярлык и окно регистрации.

На момент написания статьи, указанные в форме адреса и явки были недоступны. При нажатии на кнопку License Request Form, открывается страница книги MS Excel.

Рисунок 2. - Регистрационная форма.
Рисунок 2. - Регистрационная форма.

При попытке изменить значения заполненных ячеек получаем предупреждение о защите листа книги.

Рисунок 3. - Сообщение о защите листа книги.
Рисунок 3. - Сообщение о защите листа книги.

Если есть необходимость снять защиту, используйте пароль на английской раскладке клавиатуры (4 символа): A1aa

Если переустановить программное обеспечение, с очисткой реестра, то получим совсем другой Your Current Computer System ID.

При формировании значения Your Current Computer System ID используется операция XOR со следующими полученными параметрами, представленными в виде байтов (указаны не все значения в списке):

  • Строка константа: 1891369255
  • Системная дата
  • Версия BIOS
  • Версия VideoBios
  • Комплект данных реестра HARDWARE\Description\System
  • Фрагмент значения реестра

У меня, например, фрагмент данных системы выглядит: AT/AT COMPATIBLE 04/24/18 03/08/11.

Значение Disk\Volume serial number находящееся в XLS файле, зависит только от конфигурации железа.

Реестр

В реестре создаётся ключ. Длина последовательности 520 байт.

Рисунок 4. - Фрагмент ключа реестра.
Рисунок 4. - Фрагмент ключа реестра.

В более удобном виде:

Рисунок 5. - Значение ключа реестра.
Рисунок 5. - Значение ключа реестра.

В общем случае создаётся две матрицы со значением от 00h до 0FFh и небольшой хвост. Начиная со значения 1Сh идёт код длиной в 160 байт (хэш-ключ). Есть предположение что это хэш значение системных настроек полученных алгоритмом RIPEMD-160 (но это домыслы, фактов пока нет). Вероятно 160 байт соединены с матрицей 00h .. FFh по XOR функции. После адреса (в реестре) 0EEh идут 12 байт. Которые, вероятно, участвуют в формировании Your Current Computer System ID. Однако предметно не изучалось.

При длине введённых данных в поле пароля более 86 символов – программа вываливается в ошибку.

По адресу 02000h находится значение 02, это значение указывает имя параметра в ключе реестра, смотри рисунок 4. Это значение так же указывает на первый символ последней тетрады в Your Current Computer System ID, это символ двойки в значении 2000. Изменение этого значения на другой символ 0..Fh, приводит к созданию дополнительного параметра ключа реестра с этим именем. Учитывая модульность программного обеспечения, это может быть номером модуля. У меня был модуль номер два.

Последние четыре байта используются как контрольная сумма ключа в реестре.

Изменение любого байта приводит к полному изменению ключа реестра и изменению Your Current Computer System ID. Перед манипуляциями надо сохранить снимок реестра.

Анализ

Основной файл, который будет изучаться. это PSecMessages.dll. Обычно находится по путям C:\Windows\System32 или C:\Windows\SysWOW64 в зависимости от разрядности системы. Очень удобно для дебагера заменить по адресу 00406D4Ch, код mov edx, eax на int 3. Если в машкодах то 8bd0h на cc90h.

Учитывая отсутствие оптимальности компиляторов, найти возможность поставить INT 3 в теле программы предостаточно, например:

Рисунок 6. - Пример места установки прерывания.
Рисунок 6. - Пример места установки прерывания.
Лирическое отступление. На удивление, в этом программном обеспечении, для преобразование HEX строкового значения в байт используется сопроцессор.
Рисунок 7. - Использование сопроцессора для выболнения Char To Byte.
Рисунок 7. - Использование сопроцессора для выболнения Char To Byte.

Механизм

Основа преобразований это побайтовая операция XOR.

Рисунок 8. - Операция XOR.
Рисунок 8. - Операция XOR.

Перед операцией XOR идёт преобразование CharToByte, функция представлена на рисунке 7.

Преобразование пароля, который вводит пользователь, происходит операцией циклического вращения влево - ROL. При этом младший байт указывает на какое количество разрядов сдвинуть старший байт. Таким образом для обратного преобразования командой ROR нужно значение только первого байта. Если, например, введённый пароль 11223344556677889900112233, то механизм преобразования выглядит следующим образом:

Рисунок 9. - Преобразование пароля операцией ROL..
Рисунок 9. - Преобразование пароля операцией ROL..

В итоге имеем, при инсталляции записывается значение в реестр, которое зависит от системных параметров и системной даты. Учитывая механизм копирование реестра на другое железо будет проблематично. При проверке пароля, читается значение реестра, ксорится с константой, вращается пароль пользователя и ксорится с преобразованным значением из реестра.

Рисунок 10. - Механизм проверки пароля пользователя.
Рисунок 10. - Механизм проверки пароля пользователя.

Результатом операции исключающего ИЛИ должна стать строка optionoption (6F7074696F6E6F7074696F6E).

Таким образом, если результатом операции XOR будет строка optionoption, тогда пароль пользователя введён верно.