Pull to refresh

Реверс-инжиниринг клиента Dropbox

Reading time 3 min
Views 37K
Original author: Michael Kassner
imageДо последнего времени существовали сомнения относительно возможности реверс-инжиниринга сильно обфусицированных приложений, написанных на Python. Недавний реверс-инжиниринг двумя программистами клиента Dropbox доказал, что это возможно.

В феврале этого года на Mobile World Congress, CEO Дрю Хьюстон радостно сообщал, что Dropbox, известный сервис для хранения данных, преодолел отметку в 100 миллионов пользователей, и эти 100 миллионов пользователей загружают более миллиона файлов на сервера Dropbox каждый день. Еще два года назад у Dropbox было всего 25 миллионов пользователей и гораздо меньше загрузок в день.

С какой целью я упомянул обо всем этом? Успех Dropbox наступил не без преодоления нескольких проблемных моментов, и похоже у команды сервиса теперь появится новая головная боль — и все из-за Dhiru Kholia и Przemysław Węgrzyn.

Заглядываем под капот

В своем отчете "Взгляд внутрь (Drop) box", Dhiru и Przemysław переходят сразу к делу:
«Мы описываем методы для обхода двухфакторной аутентификации Dropbox и для воровства Dropbox-аккаунтов. Кроме того, приводятся базовые принципы перехвата данных, передаваемых с помощью SSL, при помощи техник code injection и Monkey-Patching»

Dhiru и Przemysław достигли подобного результата благодаря реверс-инженирингу клиента Dropbox. Казалось бы, в этом ничего удивительного, но только если не учитывать главного — уникальность их работы в том, что им удалось выяснить, как можно сделать реверс-инжиниринг обфусицированного приложения на Python.

Клиент состоит из модифицированного интерпретатора Python, выполняющего обфусицированный байткод на Python. Однако, Dropbox — проприетарная платформа, исходные коды которой закрыты от клиентов, и более того — даже API, используемый клиентом, нигде не задокументирован. Поэтому все прошлые попытки реверс-инжениринга не увенчивались особым успехом. На этот же раз Dhiru и Przemysław не только умудрились достичь заметных результатов, но и выйти за рамки одного приложения, на что и намекает отчет:
«Описанные техники можно применить для реверсинга других закрытых приложений на Python»

Последствия

Исследователям удалось раскрыть много секретов Dropbox. Сначала они занялись изучением процессов регистрации, логина и функцией «Launch Dropbox Website» для кражи аккаунта. Затем им удалось выяснить еще и следующее:
  • Как перехватывать SSL трафик с серверов Dropbox
  • Как обходить двухфакторную аутентификацию Dropbox
  • Как создать open-source Dropbox клиент

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

Авторы исследования надеются, что проведенный инжиниринг вынудит разработчиков Dropbox сделать возможность его повторения в разы сложнее. В то же время, они ясно дают понять, что особого смысла в закрытом коде нет:
При этом, нам неясно, зачем Dropbox прилагает такие усилия для того, чтобы реверсинг стал невозможен. Большая часть их «секретных ингридиентов» все равно хранится на стороне сервера, который уже и так неплохо защищен. Мы не уверены, что меры по анти-реверсингу приносят какую-то пользу и пользователям, и Dropbox.

Как сообщают другие специалисты, в документе содержится пошаговые инструкции для «распаковки» исходного кода клиента Dropbox, чего явно не желала сама компания. Теперь же многие смогут взять этот исходный код и использовать его в своих целях. Другое дело в том, что нам неизвестно, не проделывал ли кто-то подобное и раньше, используя потом полученный реверсинг в своих целях.
Tags:
Hubs:
+66
Comments 18
Comments Comments 18

Articles