Программа для андроид для создания вирусов
Первый экспериментальный образец полноценного трояна для Android был представлен летом 2010 года на конференции DEF CON 18. С тех пор прошло уже более четырех лет, и за это время количество вирусов для мобильной ОС от Google выросло в тысячи раз, а Google успела придумать десятки различных методов противостояния угрозам. В этой статье мы детально исследуем мир вредоносов для Android и проследим противостояние поискового гиганта и хакеров.
До нашей эры, или как написать вирус за 15 минут
Первые попытки создать вредоносный софт для Android и доказать несостоятельность гугловской мобильной платформы с точки зрения безопасности начались с публикации первых предварительных версий Android SDK в 2007 году. Молодые студенты писали софт, который использовал стандартную функциональность смартфона для чтения SMS’ок, а «исследовательские» команды, вроде Blitz Force Massada, демонстрировали аж «30 векторов атак на Android», показывая, как можно использовать стандартные API Android во вредоносных целях.
Более-менее настоящий троян был реализован только в 2010 году секьюрити-компанией Trustwave, которая продемонстрировала его на конференции DEF CON 18. Впрочем, Америки они не открыли; троян был всего лишь стандартным модулем ядра Linux, который перехватывал системные вызовы write() , read() , open() и close() , а также создавал реверсивный шелл по звонку с определенного номера. Вся эта функциональность позволяла подключиться к смартфону удаленно и скрытно использовать его возможности в своих целях, в том числе читать конфиденциальную информацию.
Для установки руткита требовался физический доступ к устройству, root-права и смартфон HTC Legend (модуль был совместим только с его ядром), поэтому ни о каком практическом применении руткита речи не шло. Proof of concept, который доказал только то, что ядро Linux и в смартфоне остается ядром Linux.
Настоящий троян в «дикой природе» (не маркете) был найден только в августе 2010 года. Правда, это был совсем не тот тип трояна, о котором принято писать в нашем журнале, а всего лишь SMS-троян, то есть, по сути, обычное приложение, которое шлет SMS на платные номера без ведома юзера. Игрушка, которую хороший программист напишет за полчаса, но очень опасная, попади она к обычному юзеру.
Троян, получивший имя Trojan-SMS.AndroidOS.FakePlayer.a, прикидывался видеоплеером под незамысловатым названием Movie Player и с иконкой стандартного проигрывателя из Windows. Приложение требовало права доступа к карте памяти, отправке SMS и получению данных о смартфоне, о чем система сообщала перед его установкой. Если все это не смущало пользователя и он соглашался с установкой и запускал приложение, оно повисало в фоне и начинало отправку SMS на номера 3353 и 3354, каждая из которых обходилась в пять долларов. Номера эти, кстати, действовали только на территории России, так что нетрудно догадаться о корнях автора данного «произведения».
В октябре был обнаружен другой тип SMS-трояна. На этот раз зловред использовал смартфон не для опустошения кошелька жертвы, а для кражи его конфиденциальных данных. После установки и запуска троян уходил в фон и пересылал все входящие SMS на другой номер. В результате злоумышленник мог не только завладеть различной конфиденциальной информацией пользователя, но и обойти системы двухэтапной аутентификации, которые для входа требуют не только логин и пароль, но и одноразовый код, отправляемый на номер мобильного телефона.
Geinimi и все-все-все
Первый по-настоящему профессионально написанный и обладающий защитой от анализа вредонос для Android был обнаружен только в декабре 2010 года компанией Lookout. Троян, получивший имя Geinimi, качественно отличался от всего, что было написано ранее, и обладал следующими уникальными характеристиками:
- Распространение в составе легитимного ПО. В отличие от всех остальных зловредов, которые только прикидывались настоящими программами и играми, Geinimi на самом деле внедрялся в реально существующие игры. В разное время троян был найден в составе таких приложений, как Monkey Jump 2, President Versus Aliens, City Defense and Baseball Superstars 2010, разбросанных по местным маркетам Китая и различным torrent-трекерам. Функциональность оригинального приложения полностью сохранялась, поэтому пользователь даже не догадывался о заражении смартфона.
- Двойная защита от анализа. Код трояна был пропущен через обфускатор, что затрудняло его анализ, а все коммуникации с удаленным сервером шифровались (справедливости ради стоит сказать, что использовался ущербный алгоритм DES с ключом 12345678).
- Возможность использования для организации ботнета. В коде Geinimi было найдено более 20 управляющих команд, которые позволяли выполнять такие операции, как установка и удаление приложений (правда, на это требовалось разрешение пользователя), получение списка всех установленных программ или запуск приложений.
Geinimi стал родоначальником полнофункциональных троянов для Android, и после его первого обнаружения на просторах интернета стали все чаще появляться зловреды с аналогичной или похожей функциональностью. Вскоре была найдена модификация Geinimi под названием ADRD, троян Android.Pjapps и множество других. Все они распространялись через различные сайты, torrent-трекеры, китайские неофициальные магазины, поэтому защититься от них можно было, просто не устанавливая приложения из неизвестных источников. Однако все изменилось, когда был обнаружен троян DroidDream, распространявшийся в составе более чем 50 приложений, опубликованных в официальном Android Market.
DroidDream и начало борьбы за чистоту маркета
Факт проникновения малвари в Android Market (а после DroidDream в маркете было обнаружено еще несколько вирусов) заставил Google серьезно задуматься над безопасностью своего репозитория приложений, а так как вручную они ничего делать не привыкли, то в результате в начале 2012 года выкатили сервис Bouncer, который проверял приложения на безопасность с помощью запуска в виртуальной машине. Задача Bouncer состояла в том, чтобы производить многократный запуск софтины, симулировать работу пользователя с приложением и анализировать состояние системы до и после работы с приложением. Если никаких странных и подозрительных действий софтина себе не позволяла, то она пропускалась в маркет, в противном случае публикация блокировалась.
Если верить Google, то сразу после запуска Bouncer сократил количество вредоносов в маркете на 40% Однако позднее выяснилось, что его можно легко обойти, просто проанализировав некоторые характеристики системы, такие как email-адрес владельца «смартфона», версию ОС и так далее, а затем создав приложение, которое при их обнаружении будет действовать абсолютно законно и делать грязную работу только на настоящем смартфоне. Скорее всего, Google уже разработала схему противодействия обнаружению Bouncer (например, с помощью генерации уникальных виртуальных окружений для каждого приложения).
Конец 2011 года: начало стремительного роста количества вирусов для Android
Другие статьи в выпуске:
Zeus-in-the-Mobile
Пять лет назад по компам пользователей начал свое победоносное шествие троян под названием Zeus. Благодаря изощренному дизайну и продвинутым техникам маскировки, делавшим его обнаружение невероятно трудной задачей, он смог распространиться на миллионы машин по всему миру и создать один из самых крупных ботнетов в истории; только в США было зафиксировано более трех с половиной миллионов случаев заражения.
Так выглядел интерфейс первой обнаруженной версии Zeus
Основная задача Zeus состояла в организации атаки типа man-in-the-browser, то есть использования техник кейлоггинга и формграббинга для перехвата частной пользовательской информации и ее отправки на удаленные серверы. За время своей работы Zeus смог утащить сотни тысяч логинов и паролей от популярных сервисов (Facebook, Yahoo!, hi5, metroFLOG, Sonico, Netlog) и, конечно же, множества онлайн-банков.
Тем не менее мобильная версия Zeus все-таки смогла наделать много шума в СМИ, но, как можно видеть, троян был сильно переоценен.
А так выглядела версия, обнаруженная спустя десять месяцев
Первый IRC-бот
В середине января 2012 года сотрудники «Лаборатории Касперского» сообщили, что обнаружен первый в истории Android IRC-бот. Приложение распространялось в виде установочного APK-файла размером чуть больше 5 Мб и выдавало себя за игру Madden NFL 12. Интересное отличие этого трояна от других было в том, что, по сути, вся его логика работы заключалась в нативных приложениях Linux, которые никак не светились в окне стандартного диспетчера задач Android и к тому же использовали локальный эксплойт для получения прав root.
Во время запуска приложение создавало каталог /data/data/com.android.bot/files , в котором размещало три файла: header01.jpg, footer01.jpg, border01.jpg, а затем ставило на них бит исполнения и запускало первый файл — эксплойт Gingerbreak для получения прав root на устройстве. Если была установлена уже рутованная прошивка, приложение пыталось получить права root штатными средствами, в результате чего у пользователя запрашивалось предоставление повышенных привилегий (тот случай, когда рутованный смартфон безопаснее залоченного).
Согласно заявлению сотрудников «Лаборатории Касперского», это было первое приложение такого класса для Android. Однако, по их мнению, опасность его была невелика, так как распространялся он только через серые маркеты, а эксплойт работал только в ранних версиях Android 2.3.
Первый полиморфный троян
В феврале 2012-го компания Symantec сообщила, что обнаружила первый полиморфный троян для платформы Android, который на тот момент не мог быть найден ни одним мобильным антивирусом, кроме ее собственного (сюрприз). Троян, названный Android.Opfake, распространялся через различные веб-сайты, находившиеся преимущественно на территории России и стран СНГ, в виде бесплатной версии популярного приложения или игры.
Полиморфным он был только условно, так как изменение трояна происходило на стороне сервера. При каждой новой загрузке файла содержимое APK-файла изменялось с помощью различных методов, таких как модификация файлов данных, включение в пакет приложения «мусорных файлов», а также изменение имен файлов. Все это затрудняло обнаружение мобильными антивирусами, которые в то время использовали примитивные техники идентификации, типа сверки контрольных сумм и проверки на наличие специфических файлов в пакете.
Различия в контрольных суммах файлов пакета с трояном, скачанных в разное время
Вирус-матрешка
Неделей раньше, а именно 1 февраля 2012 года, на сайте Виктор Чебушев опубликовал заметку, посвященную обнаружению нового типа вируса, распространяемого через магазин Google Play. Вирус маскировался под приложение Superclean, способное, по словам разработчиков, очистить память устройства и таким образом поднять производительность смартфона или планшета. На тот момент приложение имело уже от 1000 до 5000 установок и хороший рейтинг в 4,5 звезды.
Как выяснилось, Superclean действительно выполнял очистку памяти, но делал это простым перезапуском всех фоновых приложений с помощью всего пяти строк на языке Java. На этой «сложной» задаче полезное действие приложения заканчивалось, а самое интересное начиналось дальше. Анализируя код, сотрудник «Лаборатории Касперского» обнаружил, что при запуске приложение соединялось с удаленным сервером и загружало на карту памяти три файла: autorun.inf, folder.ico и svchosts.exe.
Первые два автоматически превращали подключаемый к USB-порту компа смартфон в самозагружаемую флешку, с которой запускался файл svchosts.exe. Сам svchosts.exe на поверку оказался бэкдором Backdoor.MSIL.Ssucl.a, который слушает микрофон компьютера и отправляет все полученные с его помощью данные на удаленный сервер.
Все, что выводит Superclean на экран
Очередной ответ Google, или принудительная проверка всех приложений
К концу 2012 года ситуация с зловредами для Android стала уже настолько накаленной, что Google решила пойти на очередной кардинальный шаг. В сентябре без лишней огласки был приобретен сервис онлайн-проверки приложений на вирусы VirusTotal, а 29 октября выпущена версия Android 4.2, одним из новшеств которой стала автоматическая проверка любого устанавливаемого не через Google Play приложения на вирусы через удаленный сервис.
Трудно сказать, использовала ли Google купленный VirusTotal для этой задачи, или у них есть собственный сервис проверки, однако не нужно быть сотрудником Google, чтобы понять, что VirusTotal так или иначе был использован для защиты Android от вирусов.
А как же другие мобильные ОС?
Затем был обнаружен первый вирус для систем на базе Windows CE под названием Virus.WinCE.Duts. Он поражал PocketPC 2000, PocketPC 2002, PocketPC 2003, не умел распространяться через Bluetooth или MMS, но инфицировал все найденные приложения на самом устройстве. Как и Cabir, он был детищем 29A и также был создан для демонстрации возможности существования подобного рода зловредов.
Впоследствии количество известных вирусов начало стремительно возрастать, и многие из них использовали многочисленные уязвимости в Symbian. Например, Trojan.SymbOS.Locknut, получивший известность в России как Govno, использовал некорректную проверку исполняемых файлов, чтобы блокировать работу всей ОС. Trojan.SymbOS.Fontal заменял системные шрифты на модифицированные версии, из-за чего ОС также отказывалась загружаться. Trojan.SymbOS.Dampig и Trojan.SymbOS.Hoblle подменяли системные приложения, а Trojan.SymbOS.Drever был способен блокировать работу антивирусных приложений.
Самый продвинутый троян
В июне этого года сотрудники «Лаборатории Касперского» обнаружили наиболее сложный и продвинутый в техническом плане троян для Android из всех, что встречались до этого. Троян получил имя Backdoor.AndroidOS.Obad.a. Это было независимое приложение, не внедряемое в легитимный софт и, судя по всему, распространяемое под видом известных приложений.
После соглашения пользователя с длинным списком полномочий, установки и запуска он запрашивал права администратора устройства (речь идет не о root, а о собственной системе безопасности Android), которые были нужны только для двух вещей: самостоятельной блокировки экрана и защиты от удаления. Последнее троян делал особенно изысканно. Используя ранее неизвестный баг в Android, он удалял себя из списка приложений с полномочиями администратора, из-за чего его невозможно было лишить этих прав и, как следствие, удалить.
При попытке анализа кода трояна обнаружилось использование множества техник защиты от анализа. Во-первых, троян эксплуатировал неизвестный ранее баг в утилите dex2jar, из-за которого декомпиляция кода трояна происходила некорректно. Во-вторых, троян использовал еще один неизвестный баг в Android, позволяющий создать файл Manifest.xml, в котором содержится метаинформация о приложении, таким образом, чтобы он противоречил стандартам Google, но при этом корректно обрабатывался при запуске приложения. Из-за этого многие инструменты анализа просто не срабатывали.
Backdoor.AndroidOS.Obad.a требует множество полномочий для работы
А плюс ко всему еще и запрашивает права администратора
В качестве одного из методов полиморфизма в найденном Symantec трояне использовалась включаемая в разные файлы фотография того самого Свидетеля из Фрязино.
Выводы
Количество вирусов для Android сегодня исчисляется тысячами, и некоторые из них действительно представляют интерес для исследователя как образцы хорошего программирования и знания архитектуры Android. Вот только бояться их не стоит. Автор данной статьи уже более шести лет использует смартфоны на Android без всяких антивирусов и ни разу не поймал на них заразу. Главное — читать полномочия приложений и ставить их только из маркета.
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.
Термином RAT (Remote Access Tool) принято называть утилиты удаленного администрирования. Они могут использоваться в благих целях по своему прямому назначению, как, например, популярный TeamViewer, а могут устанавливаться хакерами в тайне от пользователя.
В подобных случаях RAT нередко расшифровывают как Remote Access Trojan, и прямой перевод английского слова rat — «крыса» — тут приходится как нельзя кстати.
Как создать RAT для Android
AhMyth RAT (Remote Access Trojan) — это приложение с открытым исходным кодом, в данный момент находится на стадии бета-версии. Инструмент ориентирован на пользователей ОС Windows, но на GitHub можно скачать исходники AhMyth и для Unix-подобных платформ.
Программа для создания RAT для Android AhMyth состоит из двух компонентов.
- Серверное приложение, с помощью которого можно управлять зараженным устройством и создавать файлы APK с вредоносным кодом. Создано оно на Electron framework — фреймворке, разработанном на площадке GitHub для создания простых графических приложений.
- Клиентский APK, содержащий вредоносный код, который позволяет получить удаленный доступ к зараженному Андроид-устройству. То есть созданный APK-файл будет выполнять функции бэкдора.
Установка AhMyth RAT
Серверная часть устанавливается очень просто, тем более автор RAT-конструктора выложил в свободный доступ бинарники. Но при желании можно скомпилировать ее из исходников. В моем случае тесты проходили на компьютере с Windows 10.
Создание зараженного APK
Чтобы создать файл APK для Android, откройте вкладку APK Builder. Внешний вид конструктора для создания RAT для Android показан ниже:
Вкладка с конструктором APK
Пользоваться конструктором AhMyth RAT очень легко. В окне Source IP надо ввести IP-адрес атакующей машины (этот адрес потом легко вычисляется \ при криминалистическом анализе вредоноса). В поле Source Port можно указать порт, который будет зарезервирован машиной для прослушивания подключений. По умолчанию используется порт 42 474.
Есть также опция Bind With Another Apk, которая позволяет склеить APK-файл с другим приложением.
Для этого надо отметить флажок Bind With Another Apk, выбрать необходимый APK и указать метод интеграции вредоноса в телефон. Есть два метода: при запуске зараженного APK или при перезагрузке телефона после установки RAT. Авторы программы рекомендуют второй вариант.
Осталось нажать кнопку Build — по умолчанию зараженный файл сохраняется в папку:
Распространение RAT для Android
Как распространяются собранные таким методом вредоносы — это отдельная тема для дискуссий. Отмечу только, что в Google Play регулярно обнаруживают зараженные RAT программы и столь же регулярно их оттуда выпиливают, что не мешает малвари появляться в этом каталоге снова. Кроме того, методы социальной инженерии никто не отменял. Но имейте ввиду, что для активации RAT после установки приложения обязательно нужно запустить или перезагрузить зараженное устройство (в зависимости от настроек билдера).
Запуск RAT ahmyth на устройстве
Для успеха также требуется, чтобы в настройках целевого устройства был отключен параметр «Установка только из доверенных источников».
Соединение с зараженным устройством
Теперь нужно перейти во вкладку Victims и вбить в поле тот же порт, что мы указывали раньше, чтобы сервер ждал подключений от зараженных устройств. Опять же если вы ничего не меняли при сборке APK, то ничего не надо указывать и здесь.
Нажимаем на Listen, и, если наш APK успешно заразил мобильное устройство, мы увидим новое подключение.
Доступные устройства в AhMyth
Программа также логирует все действия в консоли, расположенной в нижней части окна. Значения колонок журнала в целом очевидны.
- Country — страна, в которой работает зараженное устройство.
- Manuf — компания — изготовитель девайса.
- Model — код или название модели устройства.
- Release — версия операционной системы зараженного девайса (в моем случае это Android 10).
- IP — IP-адрес устройства, а Port — порт, через который инфицированный девайс подключился к атакующей машине.
Теперь пора переходить к активным действиям — для этого смело нажимаем на кнопку Open The Lab.
Использование RAT AhMyth
Нашему вниманию будет предложено меню из семи пунктов, которое открывает доступ к разным функциям программы.
Камера
Для начала заглянем в раздел Camera. Выберите камеру: фронталку (Front) или основную (Back) — и можете сделать снимок нажатием на кнопку Snap. Правда, у меня почему-то не получилось толком сфотографировать, хотя все мои камеры на устройстве были успешно инициализированы.
Камера работает в AhMyth
Файловый менеджер
Файловый менеджер здесь не такой продвинутый, как в других RAT для Андроид и Windows, однако все равно это очень полезная вещь. С его помощью можно как минимум скачивать нужные нам файлы с зараженного устройства. Как видите, начальная директория — это корневой каталог, к которому есть доступ только с правами администратора.
Файловый менеджер ahmyth
Микрофон
Эта функция позволяет использовать микрофон устройства в фоновом режиме и записать все, что «слышит» телефон в течение указанного времени (в окне Seconds нужно числом задать продолжительность записи в секундах). Далее жмем Record и ждем. Полученный файл можно прослушать прямо в окне программы или сохранить себе на машину.
Работа с микрофоном
Геопозиция
На мой взгляд, это самая интересная возможность AhMyth. Если на инфицированном устройстве включена передача геоданных, вы сможете узнать геопозицию человека с точностью до десяти метров. Известно, что неопытные пользователи очень редко вспоминают об этом параметре и оставляют его включенным. Плюс некоторые приложения (те же карты), использующие передачу геоданных, когда-нибудь да заставят человека включить эту функцию.
Геопозиция пользователя
Контакты
С помощью этой функции можно вытащить весь список контактов, которые записаны в телефоне. Есть возможность скачать весь список контактов себе на машину.
Получение списка контактов
Эта функция может быть использована для сброса паролей учетных записей владельца зараженного устройства, например, для взлома «Вконтакте» или Instagram.
Журнал вызовов
Этот раздел дает возможность просмотреть список телефонных вызовов. Тут представлено четыре блока информации о каждом вызове: номер, с которым связывалось зараженное устройство; название контакта, к которому привязан этот номер на зараженном устройстве; время длительности вызова (в секундах); тип вызова (входящий или исходящий).
Журнал вызовов
Очень полезный инструмент.
Как защититься от RAT на Андроид?
Как бы банально это ни звучало, никогда не давайте свой телефон в чужие руки и не устанавливайте сомнительные приложения. На самом деле это практически единственный способ обеспечить собственную безопасность и защититься от RAT на Android. И конечно же, всегда обращайте внимание на предупреждения системы о возможном вреде, который может причинить устройству скачанное приложение.
Заключение
Надеюсь, что вы будете использовать утилиту AhMyth RAT только в исследовательских целях на своих личных устройствах. Не забывайте: «Чем больше сила, тем больше и ответственность»!
Android принято называть рассадником вредоносных программ. Каждый день здесь выявляют более 8 тысяч новых образцов вирусов. И эти цифры постоянно растут.
Но задумывались ли вы, как эти вредоносные программы работают? Сегодня мы разберемся с этим, изучив приложение для Android, способное собирать информацию об устройстве, его местоположении, делать фотографии и записывать аудио. И все это с удаленным управлением.
Как написать троян на Андроид
Итак, наша цель — разобраться, как работают современные зловредные приложения. А лучший способ это сделать — посмотреть, как создается похожий софт. Как и боевой троян, наш пример при желании сможет наблюдать и передавать информацию о целевом устройстве на сервер.
Возможности трояна будут следующие:
- сбор информации о местоположении;
- получение списка установленных приложений;
- получение СМС;
- запись аудио;
- съемка задней или фронтальной камерой.
Все эти данные наше приложение будет отправлять на удаленный сервер, где мы сможем проанализировать результаты его работы.
Важно! Создание и распространение вредоносных программ карается лишением свободы до четырех лет (статья 273). Мы не хотим, чтобы вы сломали себе жизнь в местах не столь отдаленных, поэтому публикуем статью исключительно в образовательных целях. Ведь лучший способ разобраться в работе зловредного ПО — это узнать, как оно создается.
По понятным причинам я не смогу привести полный код приложения в статье, поэтому некоторые задачи вам придется выполнить самим (для этого потребуются кое-какие знания в разработке приложений для Android).
Каркас
На этом этапе задача следующая: создать приложение с пустым (или просто безобидным) интерфейсом. Сразу после запуска приложение скроет свою иконку, запустит сервис и завершится (сервис при этом будет продолжать работать).
Начнем. Создайте приложение, указав в манифесте следующие разрешения:
В «build.gradle» укажите «compileSdkVersion 22» и «targetSdkVersion 22». Так вы избавите приложение от необходимости запрашивать разрешения во время работы (22 — это Android 5.1, обязательный запрос разрешений появился в 23 — Android 6.0, но работать приложение будет в любой версии).
Теперь создайте пустую Activity и Service. В метод «onStartCommand» сервиса добавьте строку «return Service.START_STICKY». Это заставит систему перезапускать его в случае непреднамеренного завершения.
Добавьте их описание в манифест (здесь и далее наше приложение будет называться com.example.app):
Всю злобную работу мы будем делать внутри сервиса, поэтому наша Activity будет очень проста:
pm . setComponentEnabledSetting ( cn , PackageManager . COMPONENT_ENABLED_STATE_DISABLED , PackageManager . DONT_KILL_APP ) ;
Этот код запустит сервис сразу после запуска приложения и отключит активность. Побочным эффектом последнего действия станет завершение приложения и исчезновение иконки из лаунчера. Сервис продолжит работу.
Информация о местоположении
Теперь мы должны добавить в сервис код, который будет собирать интересующую нас информацию.
Начнем с определения местоположения. В Андроид есть несколько способов получить текущие координаты устройства: GPS, по сотовым вышкам, по WiFi-роутерам. И с каждым из них можно работать двумя способами: либо попросить систему определить текущее местоположение и вызвать по окончании операции наш колбэк, либо спросить ОС о том, какие координаты были получены в последний раз (в результате запросов на определение местоположения от других приложений, например).
В нашем случае второй способ намного удобнее. Он быстрый, абсолютно незаметен для пользователя (не приводит к появлению иконки в строке состояния) и не жрет аккумулятор. Кроме того, его очень просто использовать:
LocationManager lManager = ( LocationManager ) context . getSystemService ( Context . LOCATION_SERVICE ) ;
android . location . Location locationGPS = lManager . getLastKnownLocation ( LocationManager . GPS_PROVIDER ) ;
android . location . Location locationNet = lManager . getLastKnownLocation ( LocationManager . NETWORK_PROVIDER ) ;
Данная функция спрашивает систему о последних координатах, полученных с помощью определения местоположения по сотовым вышкам и по GPS, затем берет самые свежие данные и возвращает их в форме объекта Location.
Далее можно извлечь широту и долготу и записать их в файл внутри приватного каталога нашего приложения:
OutputStreamWriter outputStreamWriter = new OutputStreamWriter ( context . openFileOutput ( locationFile , Context . MODE_PRIVATE ) ) ;
Когда придет время отправлять данные на сервер, мы просто отдадим ему этот и другие файлы.
Список установленных приложений
Получить список установленных приложений еще проще:
Метод получает список всех приложений и сохраняет его в файл apps внутри приватного каталога приложения.
Дамп СМС
Уже сложнее. Чтобы получить список всех сохраненных СМС, нам необходимо подключиться к БД и пройтись по ней в поисках нужных записей. Код, позволяющий дампнуть все СМС в файл:
Cursor cursor = context . getContentResolver ( ) . query ( Uri . parse ( "content://sms/" + box ) , null , null , null , null ) ;
Использовать его следует так:
Записи в файле будут выглядеть примерно так:
Скрытая запись аудио
Записать аудио с микрофона можно с помощью «API MediaRecorder». Достаточно передать ему параметры записи и запустить ее с помощью метода «start()». Остановить запись можно с помощью метода «stop()». Следующий код демонстрирует, как это сделать. В данном случае мы используем отдельный спящий поток, который просыпается по истечении заданного тайм-аута и останавливает запись:
Использовать его можно, например, так:
Данный код сделает 15-секундную запись и поместит ее в файл audio-ДАТА-И-ВРЕМЯ.3gp.
Скрытая съемка
С камерой сложнее всего. Во-первых, по-хорошему необходимо уметь работать сразу с двумя API камеры: классическим и Camera2, который появился в Android 5.0 и стал основным в 7.0. Во-вторых, API Camera2 часто работает некорректно в Android 5.0 и даже в Android 5.1, к этому нужно быть готовым. В-третьих, Camera2 — сложный и запутанный API, основанный на колбэках, которые вызываются в момент изменения состояния камеры. В-четвертых, ни в классическом API камеры, ни в Camera2 нет средств для скрытой съемки. Они оба требуют показывать превью, и это ограничение придется обходить с помощью хаков.
Учитывая, что с Camera2 работать намного сложнее, а описать нюансы работы с ней в рамках данной статьи не представляется возможным, я просто приведу весь код класса для скрытой съемки. А вы можете либо использовать его как есть, либо попробуете разобраться с ним самостоятельно (но я предупреждаю: вы попадете в ад):
Благодаря стараниям Илона Маска сегодня можно управлять «Теслой», не умея водить машину. А благодаря разработчику, который скрывается под ником AhMyth (и так же назвал свою программу), любой желающий может создать троян для Android, совершенно не умея программировать. Как? Сейчас покажу.
Термином RAT (Remote Access Tool) принято называть утилиты удаленного администрирования. Они могут использоваться в благих целях по своему прямому назначению, как, например, знаменитый TeamViewer, а могут устанавливаться злодеями в глубокой тайне от пользователя. В подобных случаях RAT нередко расшифровывают как Remote Access Trojan, и прямой перевод английского слова rat — «крыса» — тут приходится как нельзя кстати.
AhMyth RAT (Remote Access Trojan) — это приложение с открытым исходным кодом, в настоящее время находится на стадии бета-версии. Программа ориентирована на пользователей Windows, но на GitHub можно найти исходники и для Unix-подобных платформ.
AhMyth RAT состоит из двух компонентов.
Серверное приложение, с помощью которого можно управлять зараженным устройством и генерировать файлы APK с вредоносным кодом. Создано оно на Electron framework — фреймворке, разработанном в GitHub для создания простых графических приложений.
Клиентский APK, содержащий вредоносный код, который позволяет получить удаленный доступ к зараженному устройству. То есть наш APK будет выполнять функции бэкдора.
Установка AhMyth RAT
Серверная часть устанавливается очень просто, тем более автор выложил в свободный доступ бинарники программы. Но при желании можно скомпилировать ее из исходников. Лично я проводил свои тесты на машине под управлением Windows 10.
Для работы утилиты нам необходима виртуальная машина Java. Устанавливаем ее с официального сайта Java. Затем нужно скачать бинарники самой AhMyth. Их ты можешь найти в официальном репозитории проекта на GitHub, вкладка Assets. При скачивании лучше отключить антивирус, чтобы его не хватил удар от происходящего.
Создаем зараженный APK
Чтобы создать файл APK для Android, открой вкладку APK Builder. Внешний вид конструктора вредоносных мобильных приложений показан на следующей иллюстрации.
Вкладка с конструктором APK
Пользоваться этим инструментом очень просто. В окне Source IP мы прописываем IP-адрес атакующей машины (этот адрес потом легко вычисляется при исследовании вредоноса). В поле Source Port ты можешь указать порт, который будет зарезервирован машиной для прослушивания подключений. По умолчанию используется порт 42 474.
WARNING
Помни, что распространение вирусов и вредоносных программ — незаконное действие и влечет за собой уголовную ответственность. Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не призывают к использованию полученных знаний в практических целях и не несут ответственности за любой возможный вред, причиненный материалом.
Без использования дополнительной опции Bind With Another Apk ты сгенерируешь мобильное приложение только с вредоносным кодом. И это практически бесполезно, поскольку заставить юзера установить такую программу можно разве что под пытками.
Но есть проверенный способ создания малвари, который используют все продвинутые вирмейкеры: найти в интернете какой-нибудь APK и склеить его с вредоносом. Для этого поставь флажок Bind With Another Apk, выбери нужный APK и укажи метод интеграции вредоноса в телефон. Есть два метода: при запуске зараженного APK или при перезагрузке телефона после установки RAT. Авторы программы рекомендуют второй вариант.
Осталось нажать кнопку Build — по умолчанию зараженный файл сохраняется в папку C:\Users\\AhMyth\Output .
Продолжение доступно только участникам
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Вариант 2. Открой один материал
Как бы ни старались инженеры Google сделать Android более безопасной ОС, когда дело касается юзабилити, им приходится идти на уступки. Вроде бы можно заставить пользователя применять длинный пароль на экране блокировки, но это создаст неудобства; можно зашифровать содержимое карты памяти, но как быть, если юзер вставит ее в другой смартфон? Компромиссы, компромиссы, компромиссы… А если самим сделать то, что Google не может?
Смартфон, планшет, умные часы. Все это мобильные гаджеты, которые теряются, крадутся, вымогаются, продаются первому встречному. Хранить важные для себя данные в таком девайсе не то что опасно, а сродни выставлению на всеобщее обозрение: взял чужой телефон и за пять минут узнал, с кем человек общается, кому и что пишет, его пароли на сайтах и количество оставшихся денег на счете и кредитной карте (ну ладно, платить по NFC еще нельзя, и то хорошо).
Понятно, что от непрошеных гостей можно поставить пин на экране блокировки, однако для человека, обладающего хоть десятью граммами серого вещества, не составит труда обойти все эти пины вместе с фейсконтролями (да и отпечаток пальца в iPhone 5s, чего уж там). Шифрование данных? Да, в Android с недавнего времени есть возможность настроить шифрование всех пользовательских данных, да так, что ни один математик не вскроет. Проблема только в том, что они расшифровываются при включении смартфона и остаются открытыми все время его работы. А карта памяти так и вообще доступна всем и вся, даже если ее физически нет в смартфоне (это я про эмуляцию карты памяти в нексусах).
Вообще говоря, все виды защиты смартфона (да и всего что угодно) можно разделить на две простые логические группы: те, что применяются как заблаговременные превентивные меры, перекрывающие доступ к какой-либо информации (пин, пароль, шифрование), и те, что должны сработать уже после того, как злоумышленник получил доступ к смартфону. Ко второму типу в основном относятся разного рода системы удаленной блокировки и поиска, но это также и более изощренные системы, например те, что умеют делать незаметные снимки фронтальной камерой и совершать обратный звонок. Мы рассмотрим их позже, а пока разберемся с тем, как и что мы можем защитить заблаговременно.
Первое, что приходит на ум, когда речь заходит о защите информации, — это, конечно же, пароли. Android в смысле обращения с паролями использует несколько стандартных для многих мобильных и не очень систем методику. Пароль Google вводится один раз, после чего на его основе генерируется аутентификационный токен, который сохраняется в памяти устройства в открытом виде, но может быть использован для доступа к аккаунту только с данного смартфона, а в случае утери девайса отозван через веб-интерфейс. Таким же образом действуют многие другие приложения, включая Twitter и Facebook. Что-либо изменить в таком поведении невозможно, да и бессмысленно.
Для хранения браузерных паролей используется другая методика. Все введенные и сохраненные в браузере данные записываются в файл /data/data/com.android.browser/webview.db , и, хотя штатными средствами просмотреть его невозможно, имея root (а мы ведь любим рутовать смартфоны), легко скопировать файл на соседний смартфон, а затем проанализировать его с помощью любого приложения для просмотра баз SQLite 3.
Я бы хотел сказать, что для создания необходимого уровня безопасности браузер должен запрашивать у пользователя мастер-пароль для расшифровки сохраненных паролей, однако очевидно, что в данном случае имеет место очередной компромисс. А уж как обойти этот компромисс, решать нам. Один из способов — это просто не сохранять пароли в браузере и вводить их каждый раз заново. Удобно? Не думаю.
На компах многие привыкли использовать для решения этой проблемы специальный софт типа KeePass — он хранит все пароли в одном зашифрованном контейнере, который открывается при вводе мастер-пароля. Что мешает нам использовать тот же софт на Android-смартфоне? Ничего, приложение Keeper Password & Data Vault, которое можно найти в маркете по цене 0 рублей 0 копеек, справляется с этой задачей на ура. Возможности приложения:
- Работает везде: Android, iOS, Windows, OS X, Chrome, Firefox.
- Синхронизирует базу паролей между разными инстанциями.
- Позволяет безопасно обмениваться инфой.
- Шифрование: 256-битный AES с генерацией ключей по стандарту PBKDF2.
- Двухфакторная проверка подлинности (с помощью SMS, голосовая проверка или Google Authenticator).
- Автоматическое заполнение полей.
Другие статьи в выпуске:
В отличие от LastPass и других приложений подобного класса у него есть полностью бесплатная версия (без всяких триалов), которая окупается тем, что не имеет функции синхронизации между устройствами и бэкапа в облако (причем синхронизация тоже работает через облако!). При наличии прав root ограничение легко снять с помощью приложения DataSync, которое умеет синхронизировать данные приложений между устройствами напрямую, что явно намного безопаснее облачного метода (привет АНБ).
Сразу после запуска Keeper запросит мастер-пароль для шифрования паролей
Пароли защищены, теперь мы должны подумать, как уберечь от глаз неугодных простые приложения. В Android для этого не предусмотрено никаких средств, что, в общем-то, логично. Если уж смартфон твой (ну или не твой, а только находится в твоих руках), то тебе доступны все приложения и их данные, без всяких дополнительных прослоек безопасности. А вот чтобы отличить своего владельца от чужого, система использует стандартный пин-код или пароль.
Сама по себе идея пин-кода не плоха и как средство против «оставил на десять минут телефон, кто-то в нем поковырялся» подходит отлично, только вот удобства от нее мало. Лично я никогда не хотел жертвовать удобством использования смартфона и не устанавливал ни пин-код, ни другие средства блокировки. Если же без пина никак, то предлагаю хороший способ серьезно упростить себе жизнь с помощью автоматического отключения блокировки на время нахождения дома.
Для этого можно приобрести одну из платных софтин, распространяемых через маркет, либо воспользоваться всеми нами любимым инструментом Tasker (он тоже платный, но заменит сотни приложений). Идея состоит в том, чтобы создать правило, которое будет отключать пин-код экрана блокировки после обнаружения домашней сети Wi-Fi и включать его вновь, когда смартфон окажется вне радиуса действия сети.
Задача очень простая и выглядит так (подробности работы с Tasker см. в предыдущих выпусках журнала):
Функция очистки и повторной установки пароля вместо простого отключения пин-кода здесь использована нарочно, так как последнее почему-то не всегда срабатывает.
Альтернатива этому методу — установить пин-код на отдельно взятые приложения и функции. Штатно это сделать, конечно же, не удастся, а вот сторонних приложений с подобной функциональностью в маркете много. Все они работают по одному и тому же принципу: перехватывают вызов приложения и накладывают поверх его интерфейса экран с просьбой ввести пин-код. На секьюрити-фичу это, конечно, не тянет, но как способ закрыть глаз подружки на SMS и почту вполне годится.
Два самых продвинутых блокиратора приложений — это AppLock и Hi App Lock, который почему-то очень любят на XDA. Они имеют практически идентичную функциональность, однако преимущество первого в большом количестве платных дополнений. Основной функционал обоих приложений — это возможность включить защиту любого установленного приложения, однако отдельно предлагается также запретить установку, удаление и убийство приложений, отключить возможность «взять трубку» и просматривать список недавно запущенных приложений. Все это включается одним тапом на главном экране.
Настраиваем AppLock
В качестве дополнительных функций AppLock также предлагает создать защищенное хранилище фотографий и видео, выбрать шкурку экрана блокировки, настроить профили, между которыми можно переключаться в один тап (удобная штука для быстрого включения/выключения блокировок), сделать так, чтобы расположение клавиш для ввода пин-кода каждый раз было случайным (как я понял, это сделано для защиты от подсматривания, отчего, однако, функция не становится менее смешной), а также позволяет скрыть AppLock из меню приложений с возможностью доступа через звонок на определенный номер или открытие специальной страницы в браузере.
Базовая функциональность AppLock
В целом приложение довольно игрушечное, и его очень легко обойти, просто отключив в настройках, но как вариант защиты от дурака сгодится, тем более что лучшего способа еще не придумано.
После того как пароли и приложения были защищены, самое время подумать о данных. Как я уже говорил, в Android начиная с версии 3.2 присутствует система шифрования данных, основанная на Linux-технологии dm-crypt, которая используется для защиты данных на серверах уровня Enterprise. Для ее включения достаточно установить пин-код или пароль на экран блокировки (Настройки -> Безопасность -> Блокировка экрана -> PIN-код), а затем активировать шифрование с помощью опции «Настройки -> Безопасность -> Зашифровать данные». Смартфон уйдет в перезагрузку и зашифрует все приложения и их данные, расшифровка которых будет происходить при каждом включении устройства (для этого потребуется ввести пин-код).
Во-вторых, штатная система шифрования доступна далеко не в каждой прошивке. Причем это относится не только к некоторым кастомным прошивкам, но и к стоковым, которые идут вместе со смартфоном (например, HTC). Ну и третье: система использует один и тот же пароль как для разблокировки устройства, так и для расшифровки данных. А это значит, что придется выбирать между быстротой разблокировки экрана с помощью простого четырехзначного кода и сохранностью данных, для которой требуется сложный пароль (если человек завладеет твоим смартфоном, он сможет снять дамп памяти и за пять минут подобрать четырехзначный цифровой код).
Решить последнюю проблему можно с помощью приложения EncPassChanger, которое позволяет изменить пароль шифрования данных так, чтобы он отличался от пароля экрана блокировки. В этом случае можно будет оставить пароль локскрина простым, а пароль для расшифровки, который нужен только во время включения смартфона, сделать восьми- или десятизначным.
По сути, EncPassChanger — это просто обертка вокруг консольной команды MARKDOWN_HASH4d562aa5e0a9c74e16a90d6fd6dfa5afMARKDOWN_HASH .
Вторую проблему по понятным причинам мы решить не сможем, а вот для решения первой можно использовать специальное приложение. В маркете есть масса софтин, позволяющих создавать шифрованные контейнеры, однако большинство из них — это бесполезная «вещь в себе», которая позволяет получить доступ к зашифрованным данным только через саму себя. Я предлагаю использовать приложение Cryptonite, которое умеет как работать в режиме «вещь в себе», так и создавать шифрованные каталоги, доступные всем приложениям (при наличии Android 4 и прав root).
Интерфейс Cryptonite
Cryptonite опирается на шифрующую файловую систему EncFS, которая работает по принципу «пишем в один каталог, получаем зашифрованный результат в другом». Поэтому перед тем, как ее использовать, нужно создать на карте памяти две папки. Пусть это будет crypt и decrypt . Далее запускаем Cryptonite, идем в «Настройки -> Mount point» и выбираем каталог decrypt . Он будет использован как точка доступа к зашифрованным данным. Возвращаемся обратно, переходим на вкладку LOCAL и нажимаем кнопку Create local volume. Выбираем пункт Paranoia, далее каталог crypt . Дважды вводим пароль. Возвращаемся на вкладку LOCAL, нажимаем кнопку Mount EncFS, выбираем каталог crypt и вводим пароль.
Как и EncFS, Cryptonite позволяет выбрать из четырех предустановок шифрования
Теперь все, что ты скопируешь в каталог decrypt , автоматически попадет в каталог crypt в зашифрованном виде. После отключения decrypt (кнопка Unmount на вкладке LOCAL) его содержимое исчезнет, а при подключении вновь появится. Красота такого решения в том, что с каталогом decrypt можно работать из любого приложения и подключать его только тогда, когда это нужно, а не на все время работы смартфона, как это происходит в случае со стандартной системой шифрования Android.
Каталог, скопированный в decrypt в зашифрованном виде, выглядит так
Трудно представить себе человека, который никогда не терял смартфон и не становился жертвой воров. Это, так сказать, встроенная «функциональность», которая идет в комплекте с любым мобильным гаджетом (за исключением разве что умных часов, которые крепятся к телу носителя). Однако сейчас, когда смартфоны стремительно дешевеют, основной проблемой при потере девайса становится не сама досада от этого и необходимость тратить деньги, а то, что хранящаяся на нем информация попадет в чужие руки.
Современный смартфон обычно имеет доступ к огромному количеству сервисов, включая Gmail, Twitter, Facebook, Instagram, содержит в себе фотографии, пароли и видеозаписи. Его потеря может быть чревата очень серьезными последствиями, избежать которых пока можно только двумя общепринятыми мерами: с помощью быстрого аннулирования всех паролей и токенов к веб-сервисам или используя приложения класса «антивор».
Последних в настоящее время развелось довольно много. Если раньше выбор состоял практически исключительно из Prey и еще нескольких малоизвестных аналогов, то теперь антивор есть во многих антивирусах, встроен как один из Google-сервисов в сам Android, доступен как часть прошивки CyanogenMod и даже в виде приложения Plan B, которое можно установить и активировать уже после того, как телефон утерян (работает такая функция, правда, только в Android 2.0–2.3).
Проблема всех этих решений только в том, что от них очень легко избавиться. Все сторонние приложения слетят сразу после сброса до заводских настроек, от которого не спасутся даже те, что используют штатную «защиту от удаления» (которая и без того легко деактивируется через настройки). Этот же сброс сделает бесполезными и встроенные функции антивора Android и CyanogenMod, так как привязка к аккаунту просто исчезнет. Поэтому я бы рекомендовал, как это ни странно, использовать антивирус Avast.
Примечателен он в первую очередь тем, что имеет в своем составе самую правильную из всех виденных мной реализацию антивора. В Avast это отдельное компактное приложение, которое можно не только установить и скрыть из списка приложений, но и (при наличии прав root) прописать в системный раздел, да так, что он выживет не только после вайпа, но и после обновления прошивки с помощью кастомной консоли восстановления (в нем есть скрипт, который заставляет консоль делать бэкап антивора перед обновлением).
Фактически антивор можно убить только двумя путями: установить официальное обновление штатными средствами производителя смартфона (OTA, fastboot или специальное приложение) или вырезать из раздела /system вручную. Но и это еще не все, специально для устройств с залоченным системным разделом (S-ON) в инсталляторе антивора реализован механизм автоматической установки с помощью перезагрузки в консоль восстановления.
В остальном функционал антивора стандартен: отслеживание положения устройства, включение сигнализации, удаленный вайп и блокировка, а также возможность управления по SMS с заранее заданного доверенного номера.
Штатная функция удаленного поиска включается в приложении «Настройки Google»
С помощью описанных в статье приложений ты получишь смартфон, все данные на котором будут зашифрованы, пароли и приложения защищены от посторонних глаз, пароль на экране блокировки будет включен только тогда, когда он действительно нужен, а после потери смартфона ты сможешь стереть с него все данные, заблокировать и отследить его положение. Все это отнюдь не панацея, и, как я уже говорил, знающий человек сможет получить все, что ему нужно, но 99% людей будут бессильны.
Евгений Зобнин
Редактор рубрики X-Mobile. По совместительству сисадмин. Большой фанат Linux, Plan 9, гаджетов и древних видеоигр.
Читайте также: