December 23, 2018

Конференция BLACK HAT. Как сделать шпионский телефон. Часть 1

Ведущий: Кевин Макнами является директором Лаборатории исследований проблем безопасности Bell Labs, которая является частью компании Alcatel-Lucent. Его презентация называется «Как сделать шпионский телефон», и если у вас есть какие-либо вопросы, пожалуйста, приберегите их до конца выступления, чтобы мы знали, что у нас на них остаётся достаточно времени.

Кевин Макнами: приветствую всех, я рад, что сегодня здесь выступаю. Я собираюсь говорить о том, как сделать хороший шпионский телефон, но думаю, что основой интерес для вас будет представлять то, как можно взять этот шпионский телефонный модуль SpyPhone и поместить его в приложение для Android.

Моё выступление будет состоять из 3-х частей. Первая – это демонстрация SpyPhone в действии, затем мы немного поговорим о специальном дизайне «шпионского телефона». Третья часть разговора будет посвящена тому, как можно осуществить инъекцию сервиса SpyPhone в приложение, и в конце я подобью итоги и отвечу на вопросы.

На следующем слайде показано, как раньше люди воспринимали «шпионский телефон». В основном они считали, что такой телефон позволяет шпионить за другими людьми.

Современный шпионский телефон выглядит по-другому, это обычный смартфон под управлением ОС «Андроид». Android представляет собой очень гибкую платформу, с которой легко работать, она очень открыта и позволяет проделывать множество вещей. Итак, вот как выглядит современный SpyPhone. Я думаю, что то же самое можно проделать и с телефонами под управлением iOS, но я сосредоточил свои усилия именно над Android.

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

Это очень мощный вид устройства для кибернаблюдения. Если чей-то телефон заражен этим шпионским приложением и этот человек приносит его в офис, вы можете следить за этим человеком на работе, наблюдать за деловыми встречами и так далее. Управление и контроль за шпионским устройством осуществляется через сеть интернет. Шпионский модуль не требует никакого специального дополнительного оборудования, всё расположено внутри телефона. Когда ему есть что передать интересного, он связывается с вами через сайт command & control и передаёт информацию. Позже я покажу вам демо, как это работает.

Теперь рассмотрим контрмеры. В старину для предотвращения подслушивания использовали так называемый «конус тишины». Если за вами кто-то шпионил, вы всегда могли войти в «конус тишины» и общаться с собеседником совершенно свободно.

Сегодняшний «конус тишины» выглядит немного по-другому. Компания, в которой я работаю, разработала технологию, которую можно разместить в сети и которая автоматически обнаруживает трафик типа command & control, посредником передачи которого выступает телефон на платформе Android.

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

Смартфон является очень мощным устройством. Он обеспечивает доступ к вашему местоположению, связывает с интернетом практически из любого места, имеет микрофон, камеру, подсоединяется к локальным сетям через Wi-Fi, и всё это делает его идеальной платформой для шпионажа.

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

Думаю, что достаточно рассказал об этом, поэтому давайте перейдём к демонстрации. Слева вы видите скриншот с экрана телефона, который скоро станет шпионским, это телефон, которым я сейчас пользуюсь. Справа вы видите консоль управления command & control, которой будет пользоваться человек, отслеживающий этот телефон.

Итак, мы взяли вредоносное ПО, модуль SpyPhone, и внедрили его в копию очень популярной игры Angry Birds. Затем мы отправили одному парню письмо по электронной почте, в котором сказано, что он может скачать эту крутую игру и сыграть в неё. Мы также можем разместить эту зараженную игру на сторонних сайтах, откуда пользователь сможет её скачать. Сейчас я зайду на своём телефоне в браузер, чтобы просмотреть полученное письмо.

Итак, когда этот парень получает письмо, то он нажимает на ссылку и попадает в реальный рабочий магазин приложений для «Андроид» на страницу с нашей игрой. Мы решили назвать её Very Angry Birds («Очень злые птицы»), потому что она содержит модуль SpyPhone.

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

Здесь написано, что приложению требуется доступ к вашему местоположению, персональной информации, сетевым коммуникациям, хранилищу данных, платным сервисам, телефонным звонкам. Так как пользователь хочет установить приложение, он обычно не обращает внимания на все эти разрешения, которые постоянно появляются при установке программ, и просто жмёт на кнопку «Установить». Сейчас на экране видно, как проходит процесс установки приложения. Далее мы запускаем установленное приложение. Сейчас слева вы видите запущенную игру, а справа – информацию сайта command & control, что смартфон находится под контролем, и вы можете услышать звуки, которыми сопровождается игра.

Я отключу звук, потому что он меня раздражает. Итак, обратите внимание, что игра идёт как обычно, здесь нет ничего экстраординарного, что могло бы привлечь внимание пользователя. Нет никаких доказательств того, что с телефоном происходит что-то странное.

Пользователь играет, это очень круто, но даже когда он прекратить играть и закроет игру, шпионский модуль продолжит свою работу в фоновом режиме. Даже если перезагрузить телефон, служба SpyPhone будет перезапущена, теперь она постоянно присутствует на этом смартфоне. Итак, этот телефон инфицирован кибершпионом и теперь отображается здесь, в консоли сайта command & control. Если я щелкну по этой строчке, сайт выдаст мне информацию, хранящуюся на этом устройстве. Мы можем получить карту с местоположением данного устройства – это Лас-Вегас.

Позвольте мне подчеркнуть, что здесь связь между телефоном и компьютером осуществляется не напрямую, а через интернет с использованием веб-сервера, который расположен в Оттаве, где я работаю. Единственная причина, по которой я соединил этот телефон кабелем с компьютером – это необходимость делать скриншоты. Консоль показывает, что у нас есть и другие телефоны, работающие в это же время. Вот один из них, расположенный в Китае, так что вы можете создать международную сеть «шпионских телефонов» и контролировать их все время, пока они находятся в сети.

Итак, вернёмся к нашему телефону в Лас-Вегасе. Вы видите, что здесь приведен адрес электронной почты аккаунта владельца телефона, телефонный номер, стандарт связи CDMA, тип сети, IMEI, страна сотового оператора, его название, состояние sim-карты, координаты местоположения и контакты владельца телефона. Вся эта информация загружена на сервер command & control, и мы можем отслеживать владельца этого телефона 24 часа в сутки 7 дней в неделю и пользоваться всей информацией, которую предоставляет телефон, в том числе загрузить список контактов этого конкретного человека. Это даст нам перечень других потенциальных целей, если мы используем своего рода промышленный кибершпионаж, когда мы хотим узнать, с кем общается владелец телефона и с кем ведёт дела. Мы могли бы использовать этот список контактов для целевого нападения на конкретных людей.

Можно представить, что злоумышленник распространяет эту игру по всем магазинам Android — приложений, и после того, как люди её скачают, вы сосредотачиваетесь на каком-то работнике конкретной компании, на списке его контактов и так далее.

Ещё одно, что мы можем делать – это обновлять установленное шпионское ПО и посылать сообщения на зараженный телефон. Можно использовать его для других целей, например, просто пугать людей такими сообщениями. Мы можем получить доступ к SMS-сообщениям и электронной почте, определить локацию телефона. Все эти операции указаны в верхней части консоли управления захваченным телефоном, они выделены интерфейсом синего цвета. Ещё одно, что можно сделать – это включить камеру телефона, я попытаюсь сделать это прямо сейчас. Я беру телефон в руки и кликаю по функции «Peep» в консоли управления, это займёт некоторое время, так как требуется сделать фото и переслать его на сайт command & control. Как видите, сначала появляется моя фотография, сделанная фронтальной камерой, за ней фотография этого зала, сделанная тыловой камерой. Таким образом, я могу удалённо фотографировать на зараженный телефон и получать эти фото.

Если вы заметили, игра всё ещё идёт на экране, так что человек даже не заметит, что была сделана фотография. Это сделано в фоновом режиме без ведома пользователя. Мы можем использовать ту же технологию, чтобы снимать видео. Последнее, что я хочу продемонстрировать – это функцию прослушивания. Итак, я произношу в телефон «Это тест, один, два три, это тест, один, два, три». Затем я щелкаю по кнопке «Воспроизвести аудио», соединение занимает немного времени, и сейчас вы слышите повторение моих слов.

Итак, я записал разговор через микрофон телефона и загрузил его на сайт command & control, так что все это довольно круто. Итак, это была демонстрация того, что способна делать технология SpyPhone.

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

Во-первых, мы захотели объединить наше вредоносное ПО с оригинальными функциями телефона и создать шпионскую программу троянского типа с удалённым доступом, которая работала бы с телефоном на платформе Android. Мы взяли за основу демо-приложение под названием «Searchable dictionary» и модифицировали его так, чтобы в него можно было вставить шпионский модуль, и реализовали его как обычное приложение для «Андроид».

То есть мы придерживались дизайна оригинальных программ для «Андроид», использующих Java. Нам нужно было, чтобы оно содержало все необходимые компоненты внутри себя, работало в фоновом режиме, даже если приложение было остановлено, запускалось при загрузке телефона. Второй нашей задачей стало обеспечить легкое встраивание SpyPhone в официальные приложения. Это сработало, и наше вредоносное ПО совершенно не вмешивалось в работу других приложений, установленных на телефоне. В качестве командно-административного сервера command & control мы выбрали NodJS веб-сервер с передачей данных по протоколу HTTP. Для команд управления нашей программой мы использовали JS интерфейс, а сами команды выглядели так:

update – послать информацию на сервер,

toast – отобразить сообщение на экране,

shutdown – остановить работу SpyPhone,

sms – послать смс-сообщение контакту,

location – послать на сервер информацию о местоположении телефона,

peep – сделать фото и послать его на сервер,

listen – записать звук и послать на сервер.

Всё это было довольно легко запрограммировать, так как создатели Android обеспечили свою систему довольно мощным полным набором средств разработки SDK. Этот набор предоставляет интерфейс для всего, что вы только захотите. Мы никогда не занимались разработкой программ для Android, но благодаря такому SDK нам даже не пришлось ничего изучать и мы разработали эту вещь за несколько недель.

На следующем слайде показан первоначальный дизайн «Searchable dictionary», на основе которого мы создали SpyPhone, использовав коды Java, которые вы здесь видите. Мы добавили в это приложение часть, названную droidwhisper.

Это та часть, которую позже мы собирались вырезать и вставить в подходящее приложение. У нас не было опыта создания особых эксплойтов, которые использовали бы уязвимости приложений, поэтому мы импортировали стандартный API, который предоставляет Android:

Информация о пользователе

— импорт android.accounts.Account;

– импорт android.accounts.AccountManager.

Телефон и SMS

–импорт android.telephony.SmsManager;

–импорт android.telephony.TelephonyManager.

Местоположение

–импорт android.location.Location;

–импорт android.location.LocationListener;

–импорт android.location.LocationManager;

Запись медиафайлов (аудио и видео)

— импорт android.media.MediaRecording.

Фотокамера

–импорт android.hardware.Camera;

–импорт android.hardware.Camera.PictureCallback;

–импорт android.hardware.Camera.PreviewCallback;

–импорт android.hardware.Camera.Size;

–импорт android.media.AudioManager;

–импорт android.view.SurfaceHolder;

–импорт android.view.SurfaceView.

Интернет

–импорт org.apache.http.HttpResponse;

–импорт org.apache.http.NameValuePair;

–импорт org.apache.http.client.ClientProtocolException;

–импорт org.apache.http.client.HttpClient.

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

Заставить работать камеру немного сложней, поэтому мы использовали целый набор классов, например AudioManager, SurfaceHolder и тому подобное. Нам пришлось предусмотреть временно отключение звука щелчка, когда делается фотография, чтобы не привлекать внимания пользователя, если в настройках его камеры активирована эта функция. Кроме того, мы предусмотрели, чтобы сделанные шпионские фотографии или видео отображались в галерее телефона в виде миниатюр размером 1 пиксель, чтобы пользователь не мог их разглядеть. Так что нам пришлось использовать несколько трюков, чтобы обеспечить незаметную работу нашего шпионского модуля. Как я уже заметил, практически всё для обеспечения связи с сервером command & control содержится в самом телефоне. Мы также использовали некоторые из слабых сторон безопасности Android.

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

Итак, это было краткое описание дизайна, который мы использовали при создании приложения. Сейчас я расскажу вам о процессе внедрения, то есть как мы взяли свой вредоносный модуль и вставили его в приложение.

Первое, что мы сделали – это выбрали игру Angry Birds. Мы выбрали её не потому, что это очень хорошая игра, а из-за её популярности. Наш модуль SpyPhone можно ввести в абсолютно любое приложение. В первую очередь нам нужна копия оригинального файла .apk. Это архив, содержащий все компоненты приложения. Внутри файла приложения находится код Java, вернее, не совсем Java — это код для работы виртуальной машины Dalvik. Этот код можно заменить другим содержимым, это называется уязвимостью «мастер-ключа». Итак, мы должны раскрыть этот файл .apk и деассемблировать его, то есть иметь список всех компонентов, подлежащих разборке.

Итак, в первую очередь мы извлекаем все компоненты приложения Angry Birds 2000.

Затем в директорию smali мы вставляем свою директорию example/android/droidwhisper, и именно в конечной папке droidwhisper находятся модифицированные файлы приложения «Searchable dictionary», содержащие в себе наш шпионский модуль.

Саму игру Angry Birds мы загрузили с Google Play Market и сделали её копию. Следующее, о чём мы побеспокоились – это о ключах подписей. Все эти файлы вы видите в нашей директории под названием inject.

В процессе деассемблирования мы пользовались программой Apk_tools – это инструмент для управления файлами .apk. Сейчас с помощью командной строки я показываю, как мы приступили к деассемблированию Angry Birds.

Далее мы приступили непосредственно к разборке приложения. Мы создали каталог Angry Birds, куда вставляли все компоненты приложения. Так как это демо, придётся немного подождать, пока не закончится процесс разборки. Итак, вы видите рад каталогов, первым расположена папка assets, в ней находятся такие вещи, как звуки, далее имеются папки resourses, библиотеки lib, но ключевой для нас является директория smali, в которой содержится код и расположен формат языка ассемблирования.

23:00 мин

Конференция BLACK HAT. Как сделать шпионский телефон. Часть 2