Содержание статьи
Заражение и инициализация
Процесс заражения телефона ничем особенным от уже привычной схемы для устройств под управлением Android не отличается. Зловредный APK-файл проникает на телефон под видом игры Sex Xonix, якобы предоставляющей возможность полюбоваться голыми тетками. Понятное дело, что наткнуться на такое сокровище на андроид‑маркете нереально и обитает оно на всяческих второсортных сайтах с сомнительным содержимым, которое привлекает к себе любителей погорячее.
При установке троян запрашивает следующие разрешения (они, как и положено, прописаны в AndroidManifest.xml):
![рисунок_2](рисунок_2.jpg)<!-- неограниченный доступ в интернет -->"android.permission.INTERNET"<!-- мониторинг состояния сети -->"android.permission.ACCESS_NETWORK_STATE"<!-- чтение состояния и идентификатора телефона -->"android.permission.READ_PHONE_STATE"<!-- запуск приложения при загрузке телефона -->"android.permission.RECEIVE_BOOT_COMPLETED"<!-- запрещение перевода телефона в «спящий» режим -->"android.permission.WAKE_LOCK"<!-- чтение содержимого SD-карты -->"android.permission.WRITE_EXTERNAL_STORAGE"<!-- запись на SD-карту -->"android.permission.READ_EXTERNAL_STORAGE"
Конечно, опытный и осторожный владелец телефона, увидев такие нескромные для простой игрушки запросы, сразу же заподозрит неладное, но самых настораживающих разрешений на отправку SMS и совершения звонков в этом списке не наблюдается (да и прав суперпользователя тоже не требуется), поэтому многие любители такого рода игр спокойно давят на кнопку «Установить».
В результате установки вместо полуобнаженных красоток на экране телефона появляются устрашающие надписи, подобные тем, что «посчастливилось» наблюдать многим незадачливым пользователям на экранах своих компьютеров в не совсем далеком прошлом.
Существует несколько вариантов трояна с разными видами экрана блокировки, которые отличаются содержанием устрашающей надписи, вымогаемой суммой (есть вариант, требующий оплату в украинских гривнах) и способом оплаты (имеются варианты с оплатой через QIWI-кошелек, через пополнение номера мобильного и через украинскую платежную систему MoneXy). Некоторые разновидности Simplocker для большего устрашения используют еще и встроенную в телефон камеру: фотографируют перепуганное лицо несчастного владельца телефона и грозятся отправить это фото «куда следует». Всего на момент написания статьи антивирусными компаниями было обнаружено около 30 модификаций трояна Simplocker.
Изучаем содержимое манифест-файла
В начале декомпилированного файла AndroidManifest.xml мы видим вышеописанные сомнительные разрешения. Далее следуют объявления компонентов трояна: один компонент Main типа action, который запускается в момент, когда пользователь щелкает по иконке трояна, два компонента типа receiver — ServiceStarter и SDCardServiceStarter (первый запускается во время загрузки телефона, второй — при наличии SD-карты) и два компонента типа service — MainService и TorService.
Все названия говорят сами за себя. В MainService реализован основной функционал трояна, ServiceStarter, очевидно, запускает основной сервис в момент загрузки телефона, SDCardServiceStarter запускает процесс шифрования файлов, если в телефон вставлена SD-карта, а TorService, судя по названию, отвечает за связь с командным сервером посредством сети Tor.
Хакер #187. Обходим Blizzard Warden
warning
Simplocker блокирует экран телефона достаточно эффективно, но не безнадежно. Обладая определенной ловкостью рук, быстрыми и точными движениями пальцев можно попытаться остановить работу трояна через какой‑нибудь заранее установленный менеджер приложений (если у тебя есть знакомый чемпион по сборке кубика Рубика, то можешь попросить его).
Основная задача класса Main — блокировка экрана, вывод на него устрашающей надписи и запуск сервиса, который описан классом MainService. Все устрашающие надписи находятся в ресурсах APK-файла в виде текстовых строк, а блокировка экрана осуществляется перехватом нажатий кнопок телефона Home, Back и Menu.
Связь с командным сервером
Главная особенность этого трояна — использование сети Tor для связи с командным сервером. Сам командный сервер располагается в доменной зоне .onion, что делает весьма затруднительным идентификацию его владельца.
В отличие от CryptoLocker’a, Simplocker не генерирует доменные имена командного сервера по специальному алгоритму. Имя сервера прописано непосредственно в теле программы, при этом в разных вариантах программы имена отличаются друг от друга.
После соединения троян собирает полную информацию о телефоне (IMEI устройства, номер телефона, производитель, модель, версия ОС) и передает все это на командный сервер, для того чтобы определить факт оплаты. По этому номеру и отслеживается факт оплаты. При подтверждении оплаты в ответном сообщении от командного сервера передается команда на снятие экрана блокировки и расшифровку зашифрованных файлов.
За успешную работу трояна в Tor-сети, как мы уже говорили, отвечает класс TorService, код которого, по всей видимости, был взят из популярного Tor-клиента под андроид Orbot и немного допилен под нужный функционал.
info
.onion — псевдодомен верхнего уровня, созданный в 2004 году для обеспечения доступа к анонимным сервисам сети Tor. Адреса в этой доменной зоне не являются DNS-записями, и информация о них не хранится в корневых DNS-серверах, поэтому для просмотра onion-сайтов необходим либо плагин для браузера, либо специально обученный Tor-клиент.
Поиск и шифрование файлов
При обнаружении в телефоне SD-карты стартует SDCardServiceStarter, который, в свою очередь, запускает процесс поиска и шифрования файлов. Если покопаться в коде трояна, то там можно обнаружить следующие строки:
EXTENSIONS_TO_ENCRYPT = Arrays.asList(new String[]
{ "jpeg", "jpg", "png",
"bmp", "gif", "pdf",
"doc", "docx", "txt",
"avi", "mkv", "3gp", "mp4" })
Как можно догадаться, это не что иное, как расширения файлов, которые будут подвергнуты шифрованию. Для шифрования файлов используется криптографическое расширение JCE (Java Cryptography Extension), позволяющее реализовать основные криптографические алгоритмы.
Рассматриваемый нами троян использует алгоритм симметричного шифрования AES с длиной ключа в 256 бит, причем ключ генерируется самим трояном из текстовой строки, которая хранится в теле трояна (в CryptoLocker’е, напомним, использовался алгоритм RSA и ключ для расшифровки хранился на командном сервере). Генерация ключа шифрования осуществляется путем снятия SHA-256-хеша с текстовой строки, состоящей из 12 символов (у каждого из вариантов трояна эта строка разная).
Как известно, при AES-шифровании для шифровки и дешифровки используется один и тот же ключ, так что, подглядев куски кода трояна в том месте, где происходит генерация ключа и инициализация алгоритма шифрования, можно запросто написать код, который бесплатно расшифрует файлы без команды stop от командного сервера.
После того как троян зашифровал очередной файл, он добавляет к зашифрованному файлу расширение enc, записывает его на SD-карту и удаляет исходный файл.
Заключение
Конечно, до той степени коварства, которой достиг CryptoLocker, этому творению неведомых мастеров еще далеко (денег он требует поменьше, да и шифрует файлы так, что их можно расшифровать самому, немного поизучав код функции дешифровки), но все же преуменьшать опасность такого рода вредоносных программ не стоит и следует быть повнимательней с тем, что хочется установить на свой телефон. Ведь никто не знает, каким будет следующий шаг вирусописателей.