Проект DeMono преследует цель исследования и решения задачи поиска уязвимостей в машинном коде с помощью восстановления алгоритмов работы последнего (аналога декомпиляции). При этом, наиболее вероятной областью применения исследуемого программного обеспечения является телекоммуникационное оборудование.

Введение

В рамках проекта разрабатывается такой метод поиска и программа восстановления, автоматизирующая этот процесс, которая носит название – утилита DeMono.
Проект затрагивает следующие области информационных технологий:

  • реверс-инжиниринг (или обратная разработка) – позволяющая исследовать работу программного обеспечения, не имеющего (или закрытого) исходного кода;
  • поиск уязвимостей – необходимый для проверки используемого программного обеспечения на его ошибочную или злонамеренную работу (с применением ручного и автоматизированного способов поиска);
  • телекоммуникационное оборудование – повсеместно применяемое для обработки информации, критичной с точки зрения безопасности, и имеющее потенциально-опасное программное обеспечение.

Происхождение названия

Проект и утилита носят название DeMono, состоящее из английских слов «De» (рус. Раз-) и «Mono» (рус. единый), которое может быть переведено как «раскрытие монолитного».
В данном случае имеется ввиду следующее – программа из однородного бинарного образа машинного кода воссоздает сложную структуру функций, объектов и алгоритмов и их взаимодействия.
Название может записываться в виде смайлика De-mono~.

Метод

Полное название метода звучит как «Метод алгоритмизации машинного кода телекоммуникационных устройств».
Его суть заключается в восстановлении алгоритмов работы машинного кода, специфичного для телекоммуникационного оборудования, с целью последующего анализа на наличие уязвимостей.

На первоначальном этапе метод приводит машинный код (являющийся бинарным) к текстовому виду – ассемблеру.
Далее такой вид обрабатывается автоматизированным средством восстановления алгоритмов – утилитой DeMono.
На выходе программа получается описание алгоритмов работы кода в виде, хорошо понятном человеку.
Также программа делает в коде пометки о местах, подозрительных на наличие уязвимостей.
На последнем этапе, специалисты (например, аналитики безопасности) исследуют сгенерированный программой код, делают выводы о наличии уязвимостей, определяют их характер (случайный или злонамеренный) и принимают меры для их ликвидации.

Утилита

Утилита DeMono представляет собой программу для восстановления алгоритмов машинного кода.
Программа принимает на вход ассемблер в текстовом виде и генерирует на выходе описание алгоритмов в специально разработанной нотации, близкой к языку С.
Данное средство по решаемым задачам схоже с декомпиляторами, однако оно не может быть отнесено к ним полностью, поскольку его целью является получение именно описания алгоритмов работы кода, а не компилируемого исходного текста программы.
Также, в процессе работы, программа может помечать подозрительный на наличие уязвимостей код. Это позволит аналитику безопасности программного обеспечения обратить на него первоочередное внимание.

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

Заключение

Данный проект (соответственно, как и упомянутые метод с программой восстановления) предлагает новый способ повышения безопасности критичной информации, объединяя в себе достоинства ручного и автоматизированного поисков уязвимостей в коде программного обеспечения.
Также, он делает еще один шаг на пути изучения и использования такой плохотеоретизируемой и малопрактикуемой области, как реверс-инжиниринг.

Дополнительная информация

  • Посмотреть небольшую презентацию, объясняющую вышеизложенное в шутливом и понятным для не специалистов виде, можно в разделе Презентация.
  • Опубликованные статьях, относящиеся к проекту, расположены в разделе Статьи.
  • Перейти на интернет-ресурсы, посвященные теории декомпиляции, сторонним программам и затронутым на сайте областям, можно в разделе Ссылки.
  • Связаться с создателями проекта и самой программы, а также оказать финансовую помощь, можно в разделе Контакты.