Безопасность мобильных устройств: интервью с экспертом Positive Technologies
Недавно в гостях у канала AUTHORITY побывал руководитель отдела перспективных технологий Positive Technologies Николай Анисеня.
Поговорили с экспертом о безопасности мобильных устройств, о последних тенденциях и угрозах в области мобильной безопасности. Кроме того, Николай поделился советами для начинающих специалистов.
Расскажите пару слов о себе, про свой путь. Как пришли в ИБ и выбрали область мобильной безопасности?
Меня зовут Николай Анисеня, я руковожу отделом перспективных технологий в компании Positive Technologies, занимаюсь безопасностью мобильных приложений. Об этом и не только пишу в телеграм-канале @xyuriti.
Программированием я увлекся еще в подростковом возрасте: мы с другом модифицировали различные игровые файлы — переозвучивали, меняли текст (это в принципе все, на что нам хватало навыков в 12 лет). Позже я узнал, что есть специальность «компьютерная безопасность», и решил, что однозначно хочу поступить именно туда — притягивал романтический образ хакера. Уже будучи студентом познакомился с ребятами из студенческой CTF-команды SiBears, которые каждую неделю устраивали лекции и тренировки по практической безопасности. Стал ходить к ним на занятия, даже, было дело, ночевал в универе во время соревнований (большинство соревнований тогда проводились днем в США, а у нас в Сибири это была глубокая ночь, и мы могли поучаствовать в них онлайн).
Через два года я вошел в основной состав команды и поехал на свои первые очные соревнования RuCTF в Екатеринбург. Там познакомился с русскоязычным сообществом в ИБ, узнал о профессии пентестера, и мои цели на будущее скорректировались: я решил стать специалистом в области offensive security.
Еще через пару лет при помощи товарищей по команде SiBears получил приглашения на свои первые фриланс-проекты по пентесту и анализу защищенности веб-приложений. И к окончанию университета у меня уже был некоторый опыт в пентесте, аудите внутрянки, веба и даже мобилок.
Когда в 2014 году в Томске компания Positive Technologies решила открыть свой филиал, мне предложили попробовать пройти собеседование на хакера, но вакансий на веб в компании не оказалось, зато были вакансии на мобильные приложения. Я решил попробовать, за пару недель подготовился и прошел. Так я оказался в Positive Technologies, где и до сих пор работаю в теме мобилок.
Тернистый путь получился. Давайте поговорим о мобильной безопасности. Какие основные угрозы безопасности существуют для мобильных устройств, по вашему мнению? Какие наиболее часто встречаются при исследованиях?
Опираясь на личный опыт, а не на какие-то статистические данные, могу назвать основные слабые места мобильных приложений:
как правило, API мобильных приложений защищены слабее, чем API веб-приложений;
по моим ощущениям, разработчики 90% мобильных приложений вообще никак не защищают свой код от анализа, а это необходимый этап поиска уязвимостей, создания клонов или просто изучения тонкостей реализации тех или иных функций приложения;
обработка deeplink — наиболее распространенная точка входа для атаки на приложения.
Что чаще всего встречается при исследованиях, так это, как правило, не самые опасные уязвимости. Рассмотрим тут только уязвимости клиентской части мобильного приложения:
различные недостатки конфигурации: разрешен бэкап, захардкоженные ключи, токены, адреса, пароли;
отсутствие защиты от анализа кода: запуск на устройствах с jailbreak (root), возможность перепаковки;
хранение чувствительных данных, извлечь которые можно только при наличии jailbreak (root) или дополнительных уязвимостей.
Все это уязвимости низкого или информационного уровня риска. Все, что касается более интересных багов, — почти всегда что-то уникальное, состоящее из нескольких недостатков и требующих нескольких техник для эксплуатации. Обычно это уязвимости, связанные с межпроцессным взаимодействием.
А какие вызовы и задачи в области мобильной безопасности вы считаете наиболее интересными и хотели бы исследовать в будущем?
С точки зрения атакующего мне больше всего интересно исследовать hidden API / private API — это те функции ОС, которыми может воспользоваться приложение, но они слабо задокументированы и задуманы для использования системными приложениями. Они есть и в Android, и в iOS. Все это может сильно пополнить арсенал техник, с помощью которых можно докручивать различные недостатки до полноценных цепочек эксплуатации. Это то, что может продвинуть эту область далеко вперед.
С точки зрения безопасности приложений я понимаю, что большое упущение — это отсутствие применения даже элементарных техник защиты кода на практике. По опыту багхантеров (специалистов по поиску уязвимостей) могу сказать, что стена из более-менее сносной защиты кода сильно снижает интерес атакующего к конкретному приложению, и он с большей вероятностью переключится на какое-то другое приложение. Штурмуют эти стены только самые замотивированные, что не может не отражаться на стоимости атаки. Поэтому, на мой взгляд, огромный нереализованный потенциал защиты мобилок лежит именно в области применения протекторов мобильных приложений.
Немного коснемся корпоративной среды. Какие, на ваш взгляд, риски, связанные с использованием мобильных устройств для доступа к корпоративным ресурсам, наиболее актуальны в настоящее время?
У мобильных устройств есть несколько свойств, делающих их идеальной целью для атаки на компанию через ее сотрудников:
это устройство путешествует вместе с владельцем и подключается к различным сетям. Сетевой вектор атаки может быть применен в любой из них, не говоря уже о физическом. Это справедливо для случаев использования гаджетов и для работы, и для личных целей;
люди крайне редко разделяют рабочее и личное устройство, в большинстве случаев это один и тот же девайс. На нем соседствуют корпоративные мессенджеры и пиратские игры, почта и соцсети. При наличии уязвимостей одни приложения могут атаковать другие внутри одного устройства;
мобильный телефон нередко является роутером и может маршрутизировать трафик вредоносов в корпоративную сеть, если у вас установлен рабочий VPN. Банальное сканирование уже не выглядит чем-то сложным в этом случае;
на мобильных телефонах почти нет мониторинга, сигнализирующего компании о вредоносной активности, особенно если эта активность проводится внутри устройства и не связана с сетью напрямую.
Насколько мне известно, закон не позволяет включать личные устройства сотрудников в скоуп для проведения пентеста. Однако этот закон совершенно точно не останавливает злоумышленников, и кто знает, как часто они пользуются подобными свойствами мобильных устройств для проведения атак на компании?
Сейчас наибольший урон бизнесу по всему миру приносят два вида вредоносного ПО: шифровальщики и стилеры (в контексте кражи данных, обладающих коммерческой тайной). Актуальны ли эти атаки для мобильных устройств?
Я не специализируюсь на мобильных вредоносах, однако могу предположить, что бесконтрольный доступ к хранимым файлам на мобильном устройстве получить гораздо сложнее, чем на десктопах. Связано это с тем, что права на общедоступные хранилища (файлы, фото) выдаются отдельно друг от друга. Кроме того, существует изоляция внутренних хранилищ файлов приложения (контейнеризация).
Для схожего с десктопами импакта, скорее всего, нужен привилегированный доступ: root или jailbreak. Таких устройств в мире немного (по разным оценкам в разные года — от доли процента до 7% от общего числа устройств). Такие атаки работают за счет массовости: чем больше устройств поразили, тем больше жертв по итогу заплатят выкуп. Как видим, с массовостью могут быть проблемы.
Насколько реален сценарий получения первичного доступа к инфраструктуре компании через эксплуатацию мобильного устройства?
Такие случаи мне не известны, хотя наверняка они бывали, пусть и не случались массово. Сейчас никого не удивить работой на удаленке, как и работой с телефона. VPN, почта, мессенджеры, видеозвонки, прочие внутренние сервисы — все или часть таких приложений есть у каждого сотрудника даже небольшой компании со своей инфраструктурой. Как я уже говорил, в случае компрометации устройства или даже единичного приложения телефон превращается в роутер, способный достучаться до корпоративной сети через включенный VPN — это как минимум сканирование сети.
Сами приложения для работы с документами, чатами, почтой и прочей корпоративной информацией тоже могут содержать уязвимости, через которые злоумышленник может получить доступ к данным или даже захватить корпоративный аккаунт. Повторюсь еще раз: хоть такие атаки мне кажутся правдоподобными, обнаружить их гораздо сложнее ввиду эксплуатации уязвимостей на стороне мобильного телефона в клиентской части приложений — такое сейчас просто не детектится.
Расскажите про инструменты и технологии, которые вы используете для тестирования безопасности мобильных устройств.
Думаю, как и все. Декомпиляторы: jadx, Hopper Disassembler, IDA Pro, Apktool, androguard. Средства для динамической инструментации: frida, lsposed. Для поиска уязвимостей в API приложений большинство использует burp suite. Ну, а далее идут самописные инструменты поверх всего этого или какие-то ситуативные плагины и проекты на GitHub — строго под задачу.
Поговорим немного про ИИ. Какие методы атак с использованием ИИ вам встречались? Можете рассказать о своем опыте работы с технологиями ИИ в контексте мобильной безопасности?
Считаю, что у ИИ, в частности больших языковых моделей (LLM), огромный потенциал в анализе кода. Они уже могут находить несложные уязвимости. А еще очень помогают в реверсе. Вот случай из личного опыта. Как-то в мобильном приложении я обнаружил зашитый токен от сервиса, который ранее не встречал. Потратил пару часов на чтение документации и реверс, но так и не понял, как мне с помощью этого токена хоть что-то достать. На помощь пришел ChatGPT, который по коду из jadx написал мне команду curl, и уже через нее я смог проэксплуатировать уязвимость.
Встречались ли вам заложенные бэкдоры, намеренно ослабленное шифрование или что-то подобное?
Пару раз встречал неочевидный вход в дебаг-меню, в котором можно было перенастроить приложение. Самое опасное в такой перенастройке — указать свой сервер вместо оригинального. Считается ли это бэкдором — не знаю. Еще регулярно находили накрутку денег в банковских приложениях. Иногда эксплуатация была настолько простой, что невольно задумаешься: не специально ли оставили такую возможность? Но это также бездоказательно.
Насколько сейчас реально на не «рутованном» устройстве получить полный контроль? Это происходит в результате эксплуатации бинарных или логических уязвимостей?
Думаю, такие уязвимости присутствуют, но массово такие эксплойты не гуляют по интернету. И кажется, все дело в том, что zero-click-исполнение кода для Android и iOS стоит сейчас 2 и 1,5 миллиона долларов соответственно. Вероятно, это побуждает создателей эксплойтов иногда не делать свои наработки публичными, а продавать их за хорошие деньги брокерам уязвимостей.
В мире разработки вредоносного ПО существует термин «бесфайловые атаки». Реально ли провести что-то подобное и закрепиться в мобильной системе без установки дополнительного приложения? Если да и если политика компании позволяет, расскажите об опыте обнаружения уязвимостей, приводящих к подобного рода атакам.
Насколько я понимаю, речь идет о вредоносах, которые существуют только в оперативной памяти. Сам я с такими атаками не сталкивался, но могу предложить несколько сценариев:
динамическая загрузка кода. Приложение загружает часть кода по сети, а атакующий может повлиять на это через уязвимость: провести небезопасную передачу данных (MitM) или передать URL на загрузку вредоносного кода с помощью deeplink;
блиц-приложения или App Clips (iOS) и Instant Apps (Android) — это приложения, которые запускаются без установки. В этом случае скачивается и запускается ровно та часть приложения, которая необходима для выполнения определенного действия, например оплаты парковки. Далее это приложение действует уже как приложение, установленное на устройстве, хоть и с урезанными правами.
Хотя реальных случаев, конечно, я привести не могу.
Насколько сейчас полезны антивирусы на мобильных устройствах?
Да простят меня коллеги, которые занимаются антивирусами. Считаю, что на мобильных устройствах они практически бесполезны. Сигнатурный анализ еще может худо-бедно работать на Android, а вот в динамике отслеживать поведение приложений практически невозможно. Все дело в том, что мобильные операционки не дают столько привилегий приложениям, как это делают десктопные ОС.
Не могли не пройти мимо этого вопроса. Что безопаснее: IOS или Android?
И там и там существуют уязвимости критичного уровня риска. И там и там можно писать безопасный код. Но уязвимостей в самом Android и в приложениях под него находят больше просто ввиду открытости платформы и простоты анализа таких приложений.
Пара слов о багбаунти. Участвовали ли и если нет, то почему? Расскажите о своем опыте. Или расскажите о своем первом детектированном баге.
Раньше участвовал. Не очень успешно, но и не совсем печально. Самая большая выплата была от Reddit — 3750$ за уязвимость в Android-приложении, позволяющую угонять аккаунты через модификацию файлов в общедоступной директории.
Самая первая уязвимость была в приложении Instagram* и в целом уязвимостью не являлась. В разделе Terms and Conditions соглашение открывалось в WebView по HTTP (без шифрования), из которого можно было выйти на произвольный веб-сайт. Открытие произвольного сайта внутри WebView — уязвимость с низкой степенью риска, и тут злоумышленнику надо было находиться в одной сети с жертвой, чтобы подменить страницу на свою в целях фишинга (в WebView жертва не видит адреса страницы и думает, что взаимодействует с приложением, а не с сайтом внутри него). Но так как минимальное баунти у Instagram было 500$, столько мне и заплатили даже за такую слабую багу.
* Instagram принадлежит компании Meta Inc., которая признана экстремистской и запрещена в РФ
Какое будущее, по вашему мнению, ждет мобильные устройства?
Мобильные устройства из года в год обрастают новыми фичами, которые неизбежно расширяют поверхность атаки. Уверен, исследователям и багхантерам еще долгое время будет что поизучать и какие уязвимости или ошибки найти. И именно благодаря таким энтузиастам безопасность этих технологий будет «поспевать» за их бурным развитием.
И по традиции — пять советов начинающим) Как стать исследователем безопасности мобильных устройств?
Начните с OWASP Top 10 Mobile. Если у вас есть понимание основ веб-безопасности, будет сильно проще вкатиться в мобилки, начав с server-side. Осваивать iOS проще после Android, так как многие вещи сделаны по аналогии.
Читайте дисклозы уязвимостей по мобильным приложениям, находите старые версии, где уязвимость присутствовала, и воспроизводите своими руками — так быстрее всего прокачаетесь.
Читайте профильные блоги, например PT SWARM и блог моего бывшего коллеги Сергея Тошина, который является топовым хакером Android-приложений и основал свою компанию Oversecured — я сам у него многому научился.
Автор интервью телеграм-канал AUTHORITY
На вопросы отвечал руководитель отдела перспективных технологий Positive Technologies Николай Анисеня (SbX | Security by Xyurity)