Поздравляем с Новым Годом!
   
Телефон: 8-800-350-22-65
WhatsApp: 8-800-350-22-65
Telegram: sibac
Прием заявок круглосуточно
График работы офиса: с 9.00 до 18.00 Нск (5.00 - 14.00 Мск)

Статья опубликована в рамках: CXXXVIII Международной научно-практической конференции «Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ» (Россия, г. Новосибирск, 06 июня 2024 г.)

Наука: Информационные технологии

Скачать книгу(-и): Сборник статей конференции

Библиографическое описание:
Трушкина Е.А. ПЛАГИНЫ ДЛЯ АНАЛИЗА ПРОГРАММ В IDA PRO // Научное сообщество студентов XXI столетия. ТЕХНИЧЕСКИЕ НАУКИ: сб. ст. по мат. CXXXVIII междунар. студ. науч.-практ. конф. № 6(136). URL: https://sibac.info/archive/technic/6(136).pdf (дата обращения: 27.12.2024)
Проголосовать за статью
Конференция завершена
Эта статья набрала 61 голос
Дипломы участников
Диплом Интернет-голосования

ПЛАГИНЫ ДЛЯ АНАЛИЗА ПРОГРАММ В IDA PRO

Трушкина Екатерина Александровна

студент, кафедра безопасности информационных систем, Механико-математический факультет, Самарский университет имени академика С.П. Королёва,

РФ, г. Самара

PLUGINS FOR PROGRAM ANALYSIS IN IDA PRO

 

Ekaterina Trushkina

student, Faculty of Mechanics and Mathematics, Department of Information Systems Security, Samara University named after Academician S.P. Korolyov,

Russia, Samara

 

АННОТАЦИЯ

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

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

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

ABSTRACT

The issue of analyzing programs without access to their source code has been addressed using specialized software tools such as IDA Pro, along with subsequent automation of the analysis process when searching for undisclosed capabilities in software products. Plugins have been developed in Python to simplify code analysis for vulnerabilities and provide visual assistance for specialists navigating disassembled code. It has been demonstrated, through a simple example, that by understanding the structural and algorithmic aspects of a program using specialized tools and the aforementioned plugins, it is possible to modify it without having access to the original source code, thereby implementing a software backdoor.

 

Ключевые слова: информационная безопасность, дизассемблирование, реверс-инжиниринг, программные закладки.

Keywords: information security, disassembly, reverse engineering, software bookmarks.

 

Введение

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

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

Поэтому необходимо использовать реверс-инжиниринг, ведь он не только способствует поиску каких-либо уязвимостей в программном обеспечении, но также и выполняет и другие не менее важные задачи, такие как:

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

Общие сведения

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

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

Согласно ГОСТу Российской Федерации, под программной закладкой понимают преднамеренное внесение в программное обеспечение недекларированных возможностей, работа которых инициируется при определенных условиях [1]. Также под программной закладкой понимаются и модификации фрагментов программы, что позволяет злоумышленнику осуществить несанкционированный доступ к ресурсам защищаемой системы.

Опасность и защита от программных закладок. Основные понятия дизассемблирования

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

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

Поэтому защита от программных закладок сводится к стратегии:

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

Именно на шаге выявления программной закладки используется реверс-инжиниринг, а точнее остановимся на анализе программ с помощью инструмента IDA Pro.

Под дизассемблированием понимается преобразование кода программы на машинном языке в код на ассемблере. Под декомпилированием понимается также преобразование машинного или ассемблерного кода в код на языке более высокого уровня [3].

Использование дизассемблеров необходимо для анализа стороннего программного обеспечения, когда доступ к исходному коду отсутствует. Целью такого анализа является выявление функциональности программы и возможных угроз безопасности, включая программные закладки. Существуют два основных метода анализа кода: статический и динамический.

IDA Pro – специализированная программа для обратной разработки программного обеспечения. В него встроены:

  • механизм дизассемблирования, что позволяет преобразовать машинных код в читаемый код на языке ассемблер, что позволит понять функциональную составляющую программного обеспечения;
  • автоматическое построения графа управления потоком, который позволит выявить аномалии и подозрительные участки кода программы;
  • анализ вызовов функций, так как IDA Pro автоматически определяет стандартные функции из различных библиотек и языков, а также анализируя действия функции, может присвоить имя, которая будет отображать её действия;
  • анализ структур данных, таких как массивы, указатели;
  • поддержка плагинов, которые могут быть написаны на специальном языке программирования для IDA Pro, также есть дополнительный плагин, который позволяет загружать свои скрипты и плагины, написанные на языке Python, что позволяет расширить функциональные возможности анализа программ и автоматизировать определенные задачи [2].

Плагины для автоматизации процесса дизассеблирования

Основные плагины, которые могут понадобиться для начального этапа анализа программного кода, могут делиться на условно две группы:

  • визуальное изменение программного кода и выделения определенных подозрительных мест для облегчения ручного анализа;
  • автоматизация изменения функционала программы, для проверки работы различных входных данных.

Поэтому далее будут предложены плагины, которые могут впоследствии помочь автоматизировать анализ программного кода.

Плагин для изменения цвета кода и данных

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

Плагин для поиска потенциально опасных функций

В любой программе используется достаточно много функций, как стандартных, так и написанных самим автором программы. Поэтому поиск и анализ функций, которые могут потенциально нанести вред системе – основная работа при анализе программного кода. Поэтому плагин, который может искать и выделять функции (для работы с памятью, файлами, сетью), будет полезен. IDA Pro скорее всего сможет их инициализировать и дать имя, похожее на стандартные функции, используемые в данных областях. Это впоследствии можно будет использовать для поиска потенциально опасных функций для систем.

Плагин для изменения имени функции

В среде IDA Pro существует возможность изменять названия функций с помощью встроенных инструментов. Допустим, специалист долго анализировал алгоритм некой функции в программе и после анализа решил ее назвать определенным именем для дальнейшего использования. Это можно сделать и средствами самой IDA Pro, но что если код слишком большой, а данная функция используется в нескольких местах? Именно для сокращения времени на переименования функций можно использовать подобный плагин, который пройдет весь код программы и при обнаружении данной функции переименует ее согласно настройкам.

Плагин для вычисления размера стека для каждой функции

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

Плагин для обхода парольной защиты

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

 

а)

б)

Рисунок 1. Иллюстрация работы программы

(а – до исправления кода, б – после исправления кода)

 

Разработанный патч ищет в дизассемблированном коде строку, где выдается на экран пользователю подтверждающее корректность набранного пароля сообщение, и в дальнейшем идет выше по коду, осуществляя поиск строки, где идет условный переход на другую метку. Затем заменяет данную команду на «пустышку», тем самым при повторном запуске программы на любой набранный пароль программа пишет, что пароль «корректный» и дает возможность записи в файл (Рисунок 1-б).

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

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

Рекомендации

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

Выводы

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

 

Список литературы:

  1. ГОСТ Р 51275-2006 Защита информации. Объект информатизации. факторы, воздействующие на информацию: введён приказом Федерального агентства по техническому регулированию и метрологии от 27 декабря 2006 г. № 374: дата введения 01.02.2008. – URL: https://docs.cntd.ru/document/1200057516 (дата обращения 10.03.24)
  2. Игл, К. IDA PRO – неофициальное руководство по самому популярному дизассемблеру в мире / пер. с англ.  В.Л. Верещагин / К. Игл. – URL: https://seckey.filumena.ru/application/files/8215/3797/2477/Chapter_I_ver.0201.pdf
  3. Касперски, К. Искусство дизассемблирования / К. Касперски, Е. Рокко – СПб: БХВ-Петербург, 2008. – 212 с.
Удалить статью(вывести сообщение вместо статьи): 
Проголосовать за статью
Конференция завершена
Эта статья набрала 61 голос
Дипломы участников
Диплом Интернет-голосования

Оставить комментарий