![image](https://habrastorage.org/getpro/habr/post_images/bfd/ece/6d6/bfdece6d64a193974aa1a0df4cb7dedd.jpg)
В феврале этого года на 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, чего явно не желала сама компания. Теперь же многие смогут взять этот исходный код и использовать его в своих целях. Другое дело в том, что нам неизвестно, не проделывал ли кто-то подобное и раньше, используя потом полученный реверсинг в своих целях.