Button Up

Как спрятать ахиллесову пяту в приложении

Михаил Калиниченко
Михаил Калиниченко
Генеральный директор ООО "Протекшен Технолоджи"
5 Дек 2018
Современное общество трудно представить без гаджетов. Многие мобильные приложения благодаря удобству в использовании стали неотъемлемой частью нашего существования. Растет популярность приложений для заказа всего на свете от такси до еды, оплаты банковских услуг, приложений для общения, которые всегда с нами в планшетах и телефонах.

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

Дело в том, что, приложения, защищенные паролем, не застрахованы от взлома. Возьмем, к примеру, приложения, «паролем» для которых служат биометрические данные: сканер отпечатков пальцев, фото пользователя или аутентификация по голосу. Например, приложение MasterCard Identity Check, в котором пользователю для подтверждения онлайн-платежа, достаточно показать свое лицо на камеру. Или другой пример — приложение AppLock, разработанное Sensory, в котором для защиты профиля пользователя в социальных сетях и финансовых счетов от злоумышленников, используется технология распознавания лиц и голоса.

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

Доступ к информационным системам со стороны клиента и хакера


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

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

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

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

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

Вариант защиты


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

Компания StarForce разработала несколько решений для защиты исходного кода. Например, продукт

StarForce C++ Obfuscator усложняет процесс реверс-инжиниринга. Решение предназначено для защиты программного обеспечения, к которому предъявляются повышенные требования по взломостойкости, например, защита ключей DRM или других данных. Решение предназначено для преобразования исходных текстов программ (кода), написанных на языках C и C++ для любых операционных систем.

В продукте StarForce C++ Obfuscator можно выделить основные методы обфускации, среди которых маскировка обращения к переменным, перемешивание графа исполнения кода, внедрение фиктивных узлов в граф исполнения, дублирование ветвей графа, динамическое ветвление графа. Главной особенностью решения является поддержка более чем 30 методов обфускации кода, которые можно включать, выключать и настраивать с помощью конфигурационного файла.

Другое решение —

StarForce Crypto — защищает участки кода и данные, которые представляют собой интеллектуальную собственность и которые критично важны с точки зрения бизнеса. StarForce Crypto обеспечивает надежную защиту кода, усложняя процесс расшифровки приложения и исключая подмену любых неизменяемых файлов данных. StarForce Crypto обеспечивает защиту исполняемого кода от анализа и модификации Windows-приложений, а также сокрытие / защиту от подмены любых неизменяемых файлов данных приложения. Решение рекомендуется для защиты Windows-приложений, которые могут распространяться на CD/DVD-дисках, USB-накопителях и через интернет, в том числе через Steam, от анализа, взлома, модификации и реверс-инжиниринга.

Существует возможность дополнительно защитить приложение от нелегального использования путем внедрения технологии привязки защищаемого объекта к оптическому носителю, персональному компьютеру или серверу, используя другие продукты StarForce.

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


Возврат к списку

Новости компании

15.11.2024
16.10.2024
09.10.2024
01.10.2024
������ ����� � ����� ��� macOS
������ ������ �� USB