SOT

Security Orchestration Tools

SIEM
Security Information and Event Management

Мониторинг событий ИБ

EDR
Endpoint Detection and Response

Защита конечных точек

SOAR
Security Orchestration, Automation and Response

Автоматизация реагирования на инциденты ИБ

NG SOAR
Next Generation SOAR

Автоматизация реагирования на инциденты ИБ со встроенной базовой корреляцией, сбором сырых событий непосредственно с СЗИ, динамическими плейбуками, выстраиванием цепочки атаки и объектно-ориентированным подходом

AM
Asset Management

Инвентаризация и управление ИТ-активами

VM
Vulnerability Management

Устранение уязвимостей с автопатчингом

VS
Vulnerability Scanner

Поиск технических уязвимостей на активах

SPC
Security Profile Compliance

Управление конфигурациями безопасности активов

ГосСОПКА
Государственная Система Обнаружения Предупреждения и Ликвидации Последствий Компьютерных Атак

Двустороннее взаимодействие с НКЦКИ

FinCERT
Financial Computer Emergency Response Team

Двустороннее взаимодействие с ЦБ

Напишите нам на sales@securityvision.ru или закажите демонстрацию

Реверс-инжиниринг и безопасность приложений

Реверс-инжиниринг и безопасность приложений


  |  Слушать на Google Podcasts  |   Слушать на Mave  |   Слушать на Яндекс Музыке  |  


Руслан Рахметов, Security Vision


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

 

Реверс-инжиниринг (англ. reverse engineering) называется также обратным проектированием или обратной разработкой и означает вскрытие и анализ определенного объекта для того, чтобы понять, как он устроен и как работает. В публикации «Reverse Engineering and Design Recovery: A Taxonomy» («Реверс-инжиниринг и восстановление дизайна: Таксономия») приводится следующее определение: реверс-инжиниринг – это процесс последовательного изучения образцов системы для обнаружения компонентов системы и их взаимосвязей, описания системы на определенных уровнях абстракции, разработки набора спецификаций. В общем случае, у реверс-инженеров нет доступа к детальной информации об исследуемом объекте – конструкторской документации, принципиальных электрических схем, исходному коду программ. Реверс-инжиниринг, как и обфускация, применяем к программному и аппаратному обеспечению – в случае с аппаратным обеспечением принципы обратной разработки можно спроецировать на промышленность, машиностроение, автомобилестроение, аэрокосмическую и судостроительную отрасли и иные сферы производства конструктивно сложных физических объектов.

 

I. Объектами аппаратного реверс-инжиниринга (англ. hardware reverse engineering) можно назвать различные сложные устройства (двигатели, турбины, компрессоры, приборы, автомобили, самолеты), микроэлектронные устройства (микросхемы, микроконтроллеры, процессоры), электроника и бытовая техника. Целями аппаратного реверс-инжиниринга могут быть:


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


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


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


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


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


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


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


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


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


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


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


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

 

Этапы аппаратной обратной разработки включают в себя:


1. Получение объекта: методы могут быть как вполне правомерными (добросовестное приобретение, аренда, безвозмездное получение в академических целях), так и нелегальными (кража, перехват, получение под надуманным предлогом с участием фиктивных лиц и т.д.).


2. Разборка объекта на составные элементы: снятие корпуса, защитных элементов, навесного оборудования и т.д., очистка компонентов.


3. Анализ: получение информации о линейных размерах объекта (снятие геометрии) с помощью измерительных приборов и координатно-измерительных машин, определение состава материала с помощью методов элементного анализа (спектроскопии, спектрометрии, хроматографии), изучение изделия с помощью электронных микроскопов и промышленных компьютерных томографов (для анализа внутренней структуры изделия без его разрушения/декорпусирования), анализ принципов и особенностей работы устройства.


4. Документирование: фиксация полученных на предыдущем этапе результатов анализа, составление CAD/3D-модели с помощью 3D-сканеров, формирование схем и чертежей изделия, создание спецификации и описания работы устройства.


5. Создание прототипа (образца) реплицированного изделия, сравнение его характеристик со свойствами оригинала, доработка моделей и документации при необходимости.

 

II. Объектами программного реверс-инжиниринга (англ. software reverse engineering) могут быть отдельные файлы (произвольных форматов), программное обеспечение, драйверы, протоколы взаимодействия, операционные системы, прошивки (микропрограммы) устройств. К целям программного реверс-инжиниринга можно отнести:


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


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


  • Конкурентный анализ: легальным образом получив программный объект, исследователи могут изучить работу конкурирующего решения – при этом актуальными становятся правовые вопросы, которые мы обсудим далее.


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


  • Разработка вредоносного ПО: крупные киберпреступные кластеры и APT-группировки инвестируют значительные ресурсы в реверс-инжиниринг ПО в целях обнаружения уязвимостей и разработки эксплойтов. Цена эксплойтов для популярного ВПО может достигать десятков и сотен тысяч долларов, а обнаружение уязвимости (или цепочки уязвимостей) и разработка эксплойта для проприетарного специфического ПО (например, для АСУТП или киберфизической системы) настолько трудозатратны, что могут выполняться только спецслужбами и проправительственными группами хакеров. При этом некоторые ИБ-вендоры работают и в подобной «серой зоне», на профессиональном уровне занимаясь реверс-инжинирингом для обнаружения уязвимостей и разработки эксплойтов для них с последующей продажей в виде программного комплекса – например, Pegasus от NSO Group, Hermit от RCS Lab, Predator от Cytrox, Graphite от Paragon Solutions, продукты компании Memento Labs (ранее Hacking Team) и некоторые другие.


  • Взлом программ: исторически компании-разработчики ПО полагались не только на технические меры защиты своих продуктов от несанкционированного копирования или использования в нарушение лицензионных ограничений, но и на организационные меры, включая различные законодательные нормы о защите интеллектуальной собственности и авторских прав. Западные игроки, приходя на новые рынки, не всегда могли защищать свои интересы в правовом поле, поскольку в 1990-х и начале 2000-х годов законодательство многих стран не было готово к работе с нарушениями копирайтов и условий лицензий на программные продукты, в том числе в силу низкого уровня цифровизации экономики. В силу этой правовой неопределенности и невысоких финансовых возможностей пользователей развивающихся стран возник спрос на обход лицензионных ограничений путем взлома защитного функционала программ с помощью различных «кряков», «кейгенов», «серийников» и «эмуляторов». Для обхода ограничений ПО энтузиасты-исследователи («crackers», от англ. crack – раскалывать) применяли методы реверс-инжиниринга полученных образцов программ и компьютерных игр, что в простейшем случае позволяло найти в исполняемом файле алгоритм проверки вводимого пользователем серийного номера легально купленного экземпляра программы и либо изменить исполняемый файл программы на «пропатченный» (в котором проверка не производится), либо создать генератор ключей (которые проходили проверку подлинности). В дальнейшем производители ПО совершенствовали методы защиты – добавляли привязку к оригинальному CD-диску, поставляли лицензии на USB-токенах, включали онлайн-проверку лицензии и привязку активации ключа к аппаратному обеспечению и т.д., а взломщики ПО объединялись в warez-группы и занимались обходом лицензионных ограничений уже не для пользовательского софта и игр, а для дорогих бизнес-систем. В настоящее время подобное компьютерное пиратство практически исчезло, но реверс-инжиниринг в среде пользовательского ПО продолжает применяться – например, для получения root-прав на последних моделях смартфонов и для обхода античит-ограничений компьютерных игр.


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


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


  • Разработка защитных мер и решений: реверс-инжиниринг используется в кибербезопасности для анализа вредоносного ПО, эксплойтов, хакерского инструментария, что позволяет понять, как они работают, а затем создать сигнатуры, поведенческие признаки, индикаторы компрометации и индикаторы атаки для успешного обнаружения ВПО защитными решениями. Реверс-инжиниринг позволяет «заглянуть» внутрь вредоноса и понять, что он делает, какие уязвимости эксплуатирует, с какими внешними ресурсами взаимодействует, какие дополнительные модули подгружает, на какие задачи ориентирован (кража данных, шифрование, шпионаж, скрытый удаленный доступ и т.д.), а в некоторых случаях ИБ-аналитик сможет понять, какая кибергруппа стоит за созданием того или иного образца ВПО, и использовать полученные сведения для аналитики киберугроз с помощью решения TIP.

 

Этапы программной обратной разработки включают в себя:


1. Получение объекта: в случае с вредоносным ПО аналитики получают сэмпл (образец) малвари из «песочниц», из решений honeypot/honeynet и систем класса TDP/DDP (Threat Deception Platform/Distributed Deception Platform), из дампа сетевого трафика, из «карантина» сетевых и хостовых СЗИ, либо же из памяти или диска атакованного устройства с использованием инструментов форензики. Если же требуется реверс-инжиниринг недоступного широкой публике ПО, то применяются инструменты конкурентного анализа и промышленного шпионажа.


2. Неинвазивный анализ: изучить работу программы можно по косвенным признакам – за счет наблюдения за сетевым и программным окружением (системные вызовы ОС, запускаемые процессы, работа с памятью, используемые библиотеки, изменяемые файловые объекты, реестр, DCOM-объекты, переменные среды). Например, с использованием сниффера можно изучить сетевой трафик устройства с установленной анализируемой программой и понять, какие внешние и локальные сетевые ресурсы она использует, а также исследовать обмен данными устройства с периферией (например, с USB-устройствами).


3. Динамический анализ: анализ программы с использованием отладчика (дебаггера) позволит изучать её поведение после запуска. Установка точек останова, трассировка, работа с памятью и регистрами ЦПУ в дебаггере позволяют не только выявить ошибки при работе программы, но и понять принцип её работы при реверс-инжиниринге. Примерами популярных дебаггеров являются OllyDbg, GDB, LLDB, x64dbg, WinDbg, а также устаревший, но некогда крайне популярный SoftICE. Однако, следует знать, что большинство защищенных программ и ВПО обнаруживают запуск под отладчиком и не функционируют стандартным образом или преждевременно завершают свою работу.


4. Статический анализ: для глубокого анализа структуры программы используются методы дизассемблирования и декомпиляции. Дизассемблер переводит машинный код бинарного файла в низкоуровневый ассемблерный код, т.е. в перечень данных и команд для процессора, при этом сложность понимания полученного кода крайне высока. Примерами дизассемблеров являются IDA Pro, Binary Ninja, Ghidra, Hiew, Radare2. Декомпилятор переводит машинный код бинарного файла в человекочитаемый код на языке высокого уровня (например, C или Java), что снижает сложность понимания кода, который, однако, будет далек от оригинала из-за особенностей работы компиляторов, оптимизаторов, обфускаторов. Примерами декомпиляторов являются ILSpy, dotPeek, uncompyle6, JEB decompiler.


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


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

 

В заключение остановимся на правовых аспектах обратной разработки. Реверс-инжиниринг в контексте защиты интеллектуальной собственности означает процесс извлечения ноу-хау или знаний из продукта. Данная практика традиционно считалась юридически приемлемой и рассматривалась как научное исследование законно продаваемых и покупаемых продуктов, в противовес хищению секретов производства путем промышленного кибершпионажа, подкупа и т.д. С развитием технологий появились новые регуляторные нормы, запрещающие взлом или обход защитных мер – скажем, лицензии на ПО могут включать запреты на реверс-инжиниринг, декомпиляцию, дизассемблирование, однако в Евросоюзе Директива 2009/24/EC прямо запрещает наложение ограничений на анализ и изучение программ законным пользователем. В России права пользователей программных продуктов регулируются Статьей 1280 ГК РФ, в которой указано, что правомерный владелец программы может без согласия правообладателя и без выплаты дополнительного вознаграждения выполнить декомпиляцию, но исключительно для обеспечения совместимости и взаимодействия с другими программами. Организационные меры защиты исходного кода и логики программы могут включать в себя применение законодательных норм о защите секрета производства (ноу-хау) (Статья 1465 ГК РФ) и о государственной регистрации программы в Роспатенте (Статья 1262 ГК РФ) компанией-разработчиком.

ИБ для начинающих Анализ защищенности и пентесты Управление ИБ Подкасты ИБ

Похожие статьи

Security Vision SIEM: от контроля качества данных до расследования и реагирования в едином контуре
Security Vision SIEM: от контроля качества данных до расследования и реагирования в едином контуре
Анализ защищенности и пентесты
Анализ защищенности и пентесты
Процессы ИБ в ITIL
Процессы ИБ в ITIL
CMDB: что это такое и почему база управления конфигурациями является фундаментом ИБ
CMDB: что это такое и почему база управления конфигурациями является фундаментом ИБ
Инвентаризация как системообразующий элемент современной безопасности: роль в SOAR, VM и CMDB
Инвентаризация как системообразующий элемент современной безопасности: роль в SOAR, VM и CMDB
Реализация требований и мер обеспечения безопасности персональных данных с помощью автоматизации
Реализация требований и мер обеспечения безопасности персональных данных с помощью автоматизации
Масштабное обновление Security Vision SIEM
Масштабное обновление Security Vision SIEM
От тактических индикаторов к стратегическим решениям: обзор Security Vision TIP
От тактических индикаторов к стратегическим решениям: обзор Security Vision TIP
Анализ защищённости
Анализ защищённости
CyBOK. Глава 3. Законы и регуляторные нормы. Часть 5
CyBOK. Глава 3. Законы и регуляторные нормы. Часть 5
Сценарии реагирования на инциденты в кибербезопасности. Часть 2: ранбуки, плейбуки, динамические сценарии
Сценарии реагирования на инциденты в кибербезопасности. Часть 2: ранбуки, плейбуки, динамические сценарии

Похожие статьи

Security Vision SIEM: от контроля качества данных до расследования и реагирования в едином контуре
Security Vision SIEM: от контроля качества данных до расследования и реагирования в едином контуре
Анализ защищенности и пентесты
Анализ защищенности и пентесты
Процессы ИБ в ITIL
Процессы ИБ в ITIL
CMDB: что это такое и почему база управления конфигурациями является фундаментом ИБ
CMDB: что это такое и почему база управления конфигурациями является фундаментом ИБ
Инвентаризация как системообразующий элемент современной безопасности: роль в SOAR, VM и CMDB
Инвентаризация как системообразующий элемент современной безопасности: роль в SOAR, VM и CMDB
Реализация требований и мер обеспечения безопасности персональных данных с помощью автоматизации
Реализация требований и мер обеспечения безопасности персональных данных с помощью автоматизации
Масштабное обновление Security Vision SIEM
Масштабное обновление Security Vision SIEM
От тактических индикаторов к стратегическим решениям: обзор Security Vision TIP
От тактических индикаторов к стратегическим решениям: обзор Security Vision TIP
Анализ защищённости
Анализ защищённости
CyBOK. Глава 3. Законы и регуляторные нормы. Часть 5
CyBOK. Глава 3. Законы и регуляторные нормы. Часть 5
Сценарии реагирования на инциденты в кибербезопасности. Часть 2: ранбуки, плейбуки, динамические сценарии
Сценарии реагирования на инциденты в кибербезопасности. Часть 2: ранбуки, плейбуки, динамические сценарии