Описанные действия злоумышленника могут быть как целенаправленной атакой на вас, так и просто плодом деятельности Bluetooth-вирусов, отпущенных, что называется «в свободное плавание» их создателями. Остерегаться нужно в обоих случаях, у подобного рода вирусов один прародитель, который фактически и дал жизнь вирусологии для мобильных телефонов — это небезызвестный вирус Cabir.
Cabir — это первый сетевой червь, распространяющийся по протоколу Bluetooth и заражающий мобильные устройства, работающие под управлением операционной системы Symbian. Потенциальному заражению могут оказаться подвержены все модели аппаратов, использующие эту платформу.
На основе данного червя злоумышленниками создаются многие современные вирусы, так как именно Cabir первым применил методы распространения по Bluetooth, которые показали свою универсальность и до сих пор актуальны.
Червь Cabir представляет собой файл формата SIS, имеющий название caribe.sis. Размер файла составляет 15092 байт (или 15104 байт).
Данный файл содержит в себе несколько объектов:
- caribe.app: размер 11932 байт (или 11944 байт);
- flo.mdl: размер 2544 байт;
- caribe.rsc: размер 44 байта.
При запуске червь выводит на экран сообщение «Caribe» и затем инсталлирует себя в различные каталоги:
C:\SYSTEM\APPS\CARIBE\CARIBE.APP
C:\SYSTEM\APPS\CARIBE\FLO.MDL
C:\SYSTEM\APPS\CARIBE\CARIBE.RSC
C:\SYSTEM\SYMBIANSECUREDATA\CARIBESECURITYMANAGER\CARIBE.SIS
C:\SYSTEM\SYMBIANSECUREDATA\CARIBESECURITYMANAGER\CARIBE.APP
C:\SYSTEM\SYMBIANSECUREDATA\CARIBESECURITYMANAGER\CARIBE.RSC
C:\SYSTEM\RECOGS\FLO.MDL
Каталог «SYMBIANSECUREDATA», создаваемый червем, является скрытым и не виден пользователю зараженного телефона. В случае удаления вредоносных файлов из каталога «APPS», червь будет продолжать свою работу в системе.
При каждом включении зараженного аппарата червь получает управление и начинает сканировать список активных Bluetooth-соединений. Затем червь выбирает первое доступное соединение из списка и пытается передать по нему свой основной файл caribe.sis. В этом случае у пользователя принимающего телефона на экран выводится сообщение о том, что к нему обращается некий абонент и предлагает ему получить сообщение. На этом решающем этапе все зависит от пользователя, который вполне может отклонить любое предложение от незнакомого человека. Именно поэтому червь использует различные уловки. В зависимости от реализации червь может представиться «Бесплатным интернет-кафе» или «Твоим новым другом». Цель же у червя одна — заставить пользователя принять приглашение и установить файл. В случае, если абонент подтвердит прием файла, на его устройство сначала будет размещен зараженный файл, а затем поступит предложение запустить его на исполнение.
Более того, червь может и не запросить передачу на заражаемый аппарат какого-либо файла в том случае, если он обращается к уязвимому каналу. Под уязвимым каналом мы понимаем Bluetooth-канал сотового телефона, для которого не реализован механизм аутентификации перед соединением.
Рассмотрим подробнее механизм размножения вируса, чтобы понять принципы его работы. Это знание повысит ваши шансы не быть застигнутым врасплох вирусом. На следующей странице приводится текст функции, с помощью которой распространяется вредоносная программа. Сам червь написан на языке С+ + для платформы Symbian s60. В программе используются функции и конструкции, представленные в библиотеке разработки Symbian Developer Library. Приведем пояснения специфичных для данной библиотеки классов и функций, опустив те моменты, которые позволили бы злоумышленнику полностью воспроизвести вирусный код. Напомним, что наша задача — предупредить об опасности, которую несут в себе уязвимости мобильных телефонов.
1 if (WithAddress)
2 {
3 WithAddress = 0;
4 Cancel();
5 TBTSockAddr btaddr(entry().iAddr);
6 TBTDevAddr devAddr;
7 devAddr = btaddr.BTAddr();
8 obexBTProtolnfo.iTransport.Copy(_L(«RFCOMM»));
9 obexBTProtolnfo.iAddr.SetPort(0x00000009);
10 obexClient = CObexClient::NewL(obexBTProtolnfo);
11 if(obexClient)
12 {
13 iState = 1;
14 iStatus = KRequestPending;
15 Cancel();
16 obexClient->Connect(iStatus);
17 SetActive();
18 }
19 else
20 {
21 iState = 3;
22 User::After(1000000); return 0;
23 }
24 }
13 while (CR_SRES == SRES)
Как видно из приведенного примера, в переменную devAddr записывается адрес атакуемого устройства. Для этого сначала создается и инициализируется объект btaddr. После чего вызывается метод BTAddr() объекта btaddr для получения адреса устройства.
Данные действия выполняются в следующих строках:
TBTSockAddr btaddr(entry().iAddr);
TBTDevAddr devAddr;
devAddr = btaddr.BTAddr();
Сначала инициализируется объект obexBTProtoInfo для связи с сервером obex атакуемого мобильного устройства. Поля объекта инициализируются значениями, которые позволяют использовать уязвимость атакуемого оЬехftp-сервера. В качестве транспортного протокола используется протокол RFCOMM. В качестве порта устанавливается порт с номером 0x00000009. Именно этот порт в большинстве сотовых телефонов используется для подсоединения беспроводной гарнитуры управления. Чтобы не делать гарнитуру излишне дорогой, этот порт не защищается. Отсутствие защиты не позволяет выполнить полноценную аутентификацию аппарата. Создатели мобильных телефонов надеялись, что это упущение не будет обнаружено, и оно не послужит для проникновения вирусов. Наконец червь создает obexftp-клиент для обращения к атакуемому устройству, используя объект obexBTProtoInfo, настроенный для связи с сервером obex этого мобильного телефона. Делается это следующим образом:
obexClient = CObexClient::NewL(obexBTProtolnfo);
Если клиент создан удачно, то осуществляется подключение к мобильному устройству. Делается это в следующих строках:
iState = 1;
iStatus = KRequestPending;
Cancel();
obexClient->Connect(iStatus);
SetActive();
Таким образом, вирус получает доступ к файловой системе сотового телефона и может осуществить перенос в него собственного тела.
Поражение вашего мобильного аппарата вирусом Cabir не является единственным последствием описанной атаки. Под видом безобидного файла вам могут передать программу-жучок, которая будет тщательно следить за вашим местоположением, а возможно и передавать данные о вас злоумышленнику.
Инициировать же передачу файла может не только зараженный телефон соседа, но и злоумышленник, сидящий за соседним столиком кафе с ноутбуком и ожидающий, когда вы проявите невнимательность, чтобы под видом бесплатной мелодии для телефона, передать вам вредоносную программу-жучок.
Существует еще другая опасность. В ваш телефон может «постучаться» не Cabir, а специально написанный мобильный вирус, который выполняет преступные действия, например, переводит ваши деньги злоумышленнику, посылая SMS-сообщения на короткие номера. Атаковав 10-20 телефонов, можно собрать достаточно большую сумму. Большинство подобных вирусов используют механизмы заражения, открытые когда-то создателем вируса Cabir.
ЗАЩИТА ОТ АТАКИ
Лучшая мера предосторожности — это особое внимание к файлам, загружаемым из неизвестных или ненадежных источников. Лучше отказаться от загрузки подозрительного, но бесплатного рингтона, чем потерять данные или деньги, установив себе программу-шпион.
Если же червь к вам все же попал, то зачастую он может быть обезврежен, не причинив телефону никакого вреда. Если это Cabir или одна из его разновидностей, то необходимо просто удалить перечисленные выше файлы с мобильного устройства и перезагрузить его. Если же вы заразились не Cabir-ом, то вам точно поможет полная очистка памяти мобильного устройства, также называемая Soft reset. Ценные данные в последнем случае восстановить не удастся. Чтобы избежать подобной потери, можно постараться отыскать файлы, которые вирус разместил на телефоне, и удалить их самостоятельно. Хотя это и сложно.