PRO вирусы. Версия 4.0 (Холмогоров) - страница 95

Кроме того, специалистам широко известны случаи, когда вредоносные программы были внесены в Android-прошивку телефона самим его производителем, и смартфоны поступали в продажу уже зараженными. В особенности это касается дешевых устройств (зачастую — имитирующих дорогостоящие модели известных брендов), выпущенных никому не известными небольшими китайскими заводами. Именно таким образом распространялся, например, Android.Becu.1.origin — компонент этого вредоносного приложения, способного скрытно загружать и устанавливать по команде с управляющего сервера различные вредоносные программы, «прятался» в одном из системных каталогов, имел цифровую подпись самой операционной системы и потому обладал на инфицированном устройстве поистине неограниченными полномочиями.

Еще один встроенный в прошивку некоторых дешевых китайских телефонов троянец, Android.Oldboot.1.origin, действовал как буткит, загружаясь еще до момента запуска операционной системы. С его помощью злоумышленники инфицировали более чем 350 000 Android-устройств. Нередки случаи заражения при установке на телефоны и планшеты так называемых кастомных (созданных сторонними разработчиками) Android-прошивок: многие из них таят в себе очень неприятные сюрпризы. Таким образом, при выявлении очередной уязвимости в ОС Android устройство в большинстве случаев остается подверженным заражению вредоносными программами, и спасти ситуацию может, по большому счету, только замена такого устройства на более современную модель с более новой версией ОС, в которой уязвимость уже устранена разработчиками.

Эксплоиты могут быть очень сложными с архитектурной точки зрения и реализовывать эксплуатацию уязвимости в несколько последовательных этапов. Рассмотрим в качестве примера, как работает эксплоит для уже упомянутой выше уязвимости в устройствах Apple — checkm8.

По принципу своего действия использующий эту уязвимость эксплоит — типичный буткит. Основная его задача состоит в том, чтобы дать устройству нормально загрузиться, но при этом скомпрометировать каждое звено в цепочке загрузки после того, как отработает BootROM. В нормальном режиме BootROM передает управление загрузчику (iBoot), который загружает в память ядро iOS и передает управление на точку входа. Цель создателей эксплоита — пропатчить ядро до того, как этот процесс завершится.

Во время работы iBoot использует специальный режим (его называют boot trampoline), который ненадолго возвращает процессор в «особое» состояние: кеш сброшен, все регистры установлены в ноль, MMU отключен. Команда хакеров под названием checkra1n, трудившаяся над созданием эксплоита, разработала особый метод размещения в памяти устройства шелл-кода и научилась использовать хуки (перехват вызова функций) при вызове некоторых функций загрузчика, чтобы заставить его выполнить полезную нагрузку. В итоге загрузчик подготавливает ядро и переводит процессор в состояние boot trampoline перед вызовом точки входа. Но вместо нее с помощью хука управление передается на заранее загруженный в память шелл-код. Теперь можно спокойно патчить ядро.