Эксперты «Лаборатории Касперского» рассказали о новом банковском трояне для Android, который получил имя SoumniBot. Этот вредонос нацелен на корейских пользователей и отличается нестандартным подходом к защите от анализа и обнаружения.
Банкер получил название SoumniBot и привлек внимание исследователей необычным подходом к обфускации – для этих целей он использует недостатки манифестов Android.
Файлы манифеста (AndroidManifest.xml) присутствуют в корневом каталоге любого приложения и содержат информацию о декларируемых компонентах, разрешениях и других данных приложения, а также помогают ОС извлекать сведения о различных точках входа в программу. Как и операционная система, эксперт в первую очередь знакомится с манифестом, откуда он узнает о точках входа, с которых следует начинать анализ кода приложения. Скорее всего, именно это побудило разработчиков SoumniBot исследовать особенности обработки манифестов в Android, и позволило им найти несколько интересных возможностей для обфускации APK.
Аналитики обнаружили, что SoumniBot использует три различных метода, включая манипуляции со сжатием и размером файла манифеста, чтобы обойти возможные проверки.
В первом случае SoumniBot эксплуатирует механизм извлечения манифестов из архива, реализовав сценарий, в котором проверка значения поля Compression method выполняется некорректно.
Если APK при распаковке манифеста встречает любое значение поля Compression method, отличное от 0x0008 (DEFLATED), то файл считается несжатым. Это позволяет разработчикам приложений указывать любое значение поля Compression method, отличное от 8, при этом записывая данные в несжатом виде. Такой манифест будет невалидным для любого распаковщика, в котором проверка метода сжатия реализована корректно, но парсер APK из фреймворка Android его распознает, и приложение установится.
Во втором случае злоумышленники намеренно искажают размера файла манифеста в APK, предоставляя значение, превышающее реальное. Так, в заголовке AndroidManifest.xml в ZIP-архиве указывается размер файла манифеста. Если файл хранится в несжатом виде, то он будет скопирован из архива без изменений, даже если размер указан с ошибкой.
При этом в парсере манифестов любой оверлей игнорируется. Малварь пользуется этой особенностью: указанный размер манифеста в архиве превышает его реальный размер, в результате чего в распакованный манифест добавляется оверлей с частью содержимого самого архива. Более строгие парсеры манифестов не смогут прочитать такой файл, однако парсер манифестов Android обрабатывает некорректный манифест без ошибок.
В третьем случае SoumniBot использует очень длинные строки, которые используются в качестве названий для пространств имен в XML. Это значительно затрудняет проверку автоматизированными инструментами для анализа, которым попросту не хватает памяти для их обработки. По сути, манифесты с такими строками становятся нечитаемыми как для человека, так и для программ. При этом пространства имен полностью игнорируются парсером манифестов самой ОС, в результате чего манифест обрабатывается без ошибок.
Исследователи отмечают, что уведомили Google о неспособности APK Analyzer (официальная утилита, предназначенная для анализа собранных APK-файлов) работать с файлами, использующими описанные выше техники.
При запуске на устройстве жертвы SoumniBot запрашивает параметры конфигурации с жестко закодированного адреса сервера, а затем скрывает свою иконку для усложнения удаления, после чего в фоновом режиме раз в 15 секунд загружает на сервер своих операторов данные с устройства жертвы: IP-адрес, страну, вычисленную на основе IP, списки контактов и аккаунтов, сообщения SMS и MMS, а также ID жертвы, сгенерированный с помощью библиотеки trustdevice-android. Помимо этого, банкер подписывается на получение сообщений от MQTT-сервера, откуда приходят следующие команды:
По словам исследователей, отдельного внимания заслуживает команда под номером 0. Эта команда, среди прочего, ищет файлы c расширениями .key и .der на внешнем хранилище устройства, которые содержат в пути /NPKI/yessign.
Если приложение находит такие файлы, то директория, в которой они расположены, помещается в ZIP-архив и отправляется на командный сервер. Эти файлы представляют собой цифровые сертификаты клиентов корейских банков, которые используются, например, для входа в онлайн-банкинг или подтверждения банковских операций. Такая техника очень редко применяется в банковских вредоносах для Android и позволяет злоумышленникам опустошать кошельки жертв без их ведома, преодолевая различные способы аутентификации банков.
Пока неизвестно, как именно SoumniBot проникает на устройства пользователей, но методы могут быть разными: от распространения через сторонние магазины Android и мошеннические сайты, до обновления вредоносным кодом легитимных приложений.