Кроме того, специалистам широко известны случаи, когда вредоносные программы были внесены в 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 перед вызовом точки входа. Но вместо нее с помощью хука управление передается на заранее загруженный в память шелл-код. Теперь можно спокойно патчить ядро.
Однако просто пропатчить ядро недостаточно: когда оно загрузится, необходимо сохранить код в пользовательском режиме, чтобы можно было выполнить джейлбрейк. Для этого шелл-код создает в памяти маленький виртуальный диск, чтобы перехватить выполнение команд в режиме EL0. Это позволяет изменить дерево устройств и структуру аргументов загрузки ядра и потом использовать его в качестве корневого устройства. Для реализации этой идеи хакерам даже пришлось написать собственный динамический компоновщик. Для монтирования корневой файловой системы поверх / используется syscall (3). При этом применяется каскадно-объединенное монтирование (union mounting), чтобы случайно не обрушить vnode. После всех этих манипуляций можно запускать произвольный код с идентификатором PID 1, прежде чем будет запущен launchd. Такой код инициализируется ядром iOS перед всеми последующими процессами и является для них родительским. Само собой, он обладает соответствующими системными привилегиями.
Нюанс в том, что на данном этапе смонтированная корневая файловая система доступна только для чтения, а для нормальной работы джейлбрейка нужно дропнуть в ФС несколько файлов, чтобы получить доступ к шеллу iOS и позволить пользователю установить менеджер пакетов. То есть необходимо получить доступ к /private/var, для чего сначала инициализировать механизм Data Рrotection, за который отвечает launchd. Чтобы добиться нужного результата, с использованием того же union mounting поверх / usr/libexec/ монтируется еще один образ. dmg с целью переопределить какой-нибудь из системных демонов. В качестве жертвы был выбран sysstatuscheck, поскольку этот демон запускается в различных версиях iOS в нужный момент в начале загрузочного процесса, но достаточно поздно, чтобы включить Data Рrotection. Когда задача выполнена, dmg-образ принудительно размонтируется. Дальше можно позволить launchd продолжить загрузку в штатном режиме. После включения usbmux и загрузки всех необходимых утилит, позволяющих пользователю установить правильный bootstrap в своей корневой файловой системе, можно запускать демон SSH и выполнять джейлбрейк. Дело сделано: айфон успешно взломан!
Загрузчики
Об опасности троянцев-загрузчиков я уже неоднократно упоминал. Множество вредоносных программ может проникнуть на устройство, уже инфицированное троянцем-загрузчиком, основное назначение которого закачка из Интернета и запуск других вредоносных программ. Вот почему, однажды допустив заражение, пользователь рискует превратить свой компьютер в настоящий рассадник вирусов и троянцев.
Вредоносные программы-загрузчики нередко объединяются в ботнеты, услуги которых злоумышленники продают на различных подпольных форумах. Создатели банковских троянцев, троянцев-шпионов, рекламных троянцев и троянцев-вымогателей платят им за определенное число успешных загрузок своих творений на компьютеры потенциальных жертв. Именно поэтому данный вектор распространения вредоносных программ является весьма популярным и актуальным.
Социальная инженерия
Под термином социальная инженерия принято понимать комплекс используемых злоумышленниками психологических приемов, позволяющих обмануть пользователя или ввести его в заблуждение, чтобы заставить выполнить те или иные нужные киберпреступнику действия, например, передать пароли от аккаунта в социальных сетях, сообщить реквизиты банковской карты или запустить на компьютере вредоносную программу. Так, от одного из друзей в социальной сети (аккаунт которого был ранее взломан) пользователю может прийти личное сообщение примерно следующего характера: «Ты с ума сошел, выкладывать такое видео? Я в шоке!» далее в послании присутствует ссылка якобы на видеоролик, выставляющий получателя в неприглядном свете. Порой троянцы, рассылающие подобные послания, могут сгенерировать целую переписку, создавая поддельные комментарии пользователей, якобы успевших ознакомиться с видео. Однако для просмотра ролика потенциальной жертве предлагается скачать и запустить специальный кодек или приложение-проигрыватель, в котором скрывается догадались что?
Само понятие социальной инженерии, по утверждениям ряда источников, ввел в обиход известный американский хакер Кевин Митник. Согласно рассказам его коллег и современников, сам Митник не обладал глубокими техническими познаниями в сфере информационных технологий, однако являлся при этом неплохим психологом. Он не брезговал покопаться в мусорных контейнерах на заднем дворе крупных офисных центров, куда сотрудники могли выбросить содержащие конфиденциальную переписку или важные пароли бумаги, распечатки внутренних документов и другие ценные источники информации. Он мог несколькими телефонными звонками выведать у работников различных фирм те или иные интересующие его сведения. Например, представившись новым руководителем одного из подразделений компании, Митник мог поинтересоваться по телефону у одного из сотрудников техподдержки, где найти системного администратора, чтобы подключить на его рабочем месте принтер, и заодно узнать, как его зовут. Затем, представившись тем самым системным администратором, он выведывал у ничего не подозревающей секретарши пароль от ее электронного почтового ящика.
Вот лишь несколько простых примеров применяющихся на практике приемов социальной инженерии, используемых современными злоумышленниками:
«забытые» в людных местах флэшки, которые при подключении к компьютеру заражают его вредоносной программой;
телефонные звонки якобы от имени службы безопасности банка по поводу блокировки пластиковой карты, для разблокирования которой у жертвы просят назвать ее реквизиты, CVV-код и одноразовый пароль из СМС (впоследствии с использованием этих данных мошенники могут похитить деньги с банковского счета);
звонки якобы от имени попавшего в беду родственника с просьбой перечислить деньги на номер мобильного телефона;
звонки от имени службы технической поддержки провайдера (или компании) с сообщением о возникшей на рабочем месте проблеме с предложением для ее решения выполнить определенные (требуемые злоумышленнику) действия или сообщить конфиденциальную информацию (логин, пароль, секретный код из СМС, иные учетные данные).
Существуют и иные различные способы мошенничества, когда киберпреступники, например, рассылают пользователям популярных онлайновых служб занятости выгодные приглашения на работу, однако требуют оплатить какие-либо курсы обучения или внести определенную сумму якобы за оформление необходимых документов. Разновидностью социальной инженерии являются и классические «нигерийские письма», получившие свое название благодаря тому, что этим видом мошенничества промышляли в основном жители солнечной Нигерии. Они отправляли потенциальным жертвам электронные послания на ломаном английском, представляясь адвокатами якобы недавно умершего богатого родственника получателя. Для оформления наследства требовалось всего ничего: оплатить «адвокату» небольшую сумму, чтобы правильно завизировать все бумаги или заплатить взятку коррумпированным нигерийским чиновникам.
звонки якобы от имени попавшего в беду родственника с просьбой перечислить деньги на номер мобильного телефона;
звонки от имени службы технической поддержки провайдера (или компании) с сообщением о возникшей на рабочем месте проблеме с предложением для ее решения выполнить определенные (требуемые злоумышленнику) действия или сообщить конфиденциальную информацию (логин, пароль, секретный код из СМС, иные учетные данные).