- Зміст статті Перший експериментальний зразок повноцінного трояна для Android був представлений влітку...
- Geinimi і все-все-все
- DroidDream і початок боротьби за чистоту маркету
- Zeus-in-the-Mobile
- Перший IRC-бот
- Перший поліморфний троян
- Вірус-матрьошка
- Черговий відповідь Google, або примусове перевірка всех програм
- А як же інші мобільні ОС?
- Самий просунутий троян
- INFO
- WWW
- висновки
Зміст статті
Перший експериментальний зразок повноцінного трояна для Android був представлений влітку 2010 року на конференції DEF CON 18. З тих пір пройшло вже більше чотирьох років, і за цей час кількість вірусів для мобільної ОС від Google зросла в тисячі разів, а Google встигла придумати десятки різних методів протистояння загрозам. У цій статті ми детально досліджуємо світ шкідливий для Android і простежимо протистояння пошукового гіганта і хакерів.
До нашої ери, або Як написати вірус за 15 хвилин
Перші спроби створити шкідливий софт для Android і довести неспроможність гугловський мобільної платформи з точки зору безпеки почалися з публікації перших попередніх версій Android SDK в 2007 році. Молоді студенти писали софт, який використовував стандартну функціональність смартфона для читання SMS'ок, а «дослідні» команди, на кшталт Blitz Force Massada, демонстрували аж «30 векторів атак на Android», показуючи, як можна використовувати стандартні API Android у шкідливих цілях.
Це був час іграшок, які не можна було назвати ні справжнім шкідливим ПЗ, ні тим більше вірусами. То тут, то там з'являлися додатки, на зразок Mobile Spy від Retina-X Studios, які дозволяли віддалено читати текстові повідомлення, історію дзвінків, переглядати фотографії, відео, визначати координати смартфона. Зустрічалися і різні підроблені програми, такі як виявлений в маркеті в січні 2010 року неофіційний клієнт для різних банків, який ні з чим не з'єднувався, а просто вів номери кредитних карт, введених самим користувачем.
Більш-менш справжній троян був реалізований тільки в 2010 році сек'юріті-компанією Trustwave, яка продемонструвала його на конференції DEF CON 18. Втім, Америки вони не відкрили; троян був всього лише стандартним модулем ядра Linux, який перехоплював системні виклики write (), read (), open () і close (), а також створював реверсивний шелл по дзвінку з певного номера. Вся ця функціональність дозволяла підключитися до смартфону віддалено і таємно використовувати його можливості в своїх цілях, в тому числі читати конфіденційну інформацію.
Для установки руткита був потрібний фізичний доступ до пристрою, root-права і смартфон HTC Legend (модуль був сумісний тільки з його ядром), тому ні про яке практичне застосування руткита мови не йшло. Proof of concept, який довів тільки те, що ядро Linux і в смартфоні залишається ядром Linux.
Справжній троян в «дикій природі» (чи не маркеті) був знайдений тільки в серпні 2010 року. Правда, це був зовсім не той тип трояна, про який прийнято писати в нашому журналі, а всього лише SMS-троян, тобто, по суті, звичайна програма, яка шле SMS на платні номери без відома користувача. Іграшка, яку хороший програміст напише за півгодини, але дуже небезпечна, потрап вона до звичайного користувача.
Троян, який отримав ім'я Trojan-SMS.AndroidOS.FakePlayer.a, прикидався відеоплеєром під нехитрою назвою Movie Player і з іконкою стандартного програвача з Windows. Додаток вимагало права доступу до карти пам'яті, відправлення SMS і отримання даних про смартфон, про що система повідомляла перед його установкою. Якщо все це не бентежило користувача і він погоджувався з установкою і запускав додаток, воно повисало в тлі і починало відправку SMS на номери 3353 і 3354, кожна з яких обходилася в п'ять доларів. Номери ці, до речі, діяли тільки на території Росії, так що неважко здогадатися про коріння автора даного «твори».
У жовтні було виявлено інший тип SMS-трояна. На цей раз зловредів використовував смартфон не для спустошення гаманця жертви, а для крадіжки його конфіденційних даних. Після установки і запуску троян йшов в фон і пересилав всі вхідні SMS на інший номер. В результаті зловмисник міг не тільки заволодіти різної конфіденційною інформацією користувача, але і обійти системи двоетапної аутентифікації, які для входу вимагають не тільки логін і пароль, а й одноразовий код, що відправляється на номер мобільного телефону.
Цікаво, що номер телефону зловмисника ні жорстко вбитий в код трояна, а конфігурувати віддалено. Щоб його змінити, потрібно відправити на номер жертви особливим чином оформлену SMS, яка містила номер телефону і пароль. Пароль можна було змінити за допомогою іншої SMS, за замовчуванням використовувалася комбінація red4life.
Geinimi і все-все-все
Перший по-справжньому професійно написаний і володіє захистом від аналізу шкідливий для Android був виявлений тільки в грудні 2010 року компанією Lookout. Троян, який отримав ім'я Geinimi, якісно відрізнявся від усього, що було написано раніше, і мав такими унікальними характеристиками:
- Поширення в складі легітимного ПЗ. На відміну від всіх інших зловредів, які тільки прикидалися справжніми програмами і іграми, Geinimi насправді впроваджувався в реально існуючі гри. У різний час троян був знайдений в складі таких додатків, як Monkey Jump 2, President Versus Aliens, City Defense and Baseball Superstars 2010 розкиданих по місцевим магазину Китаю і різним torrent-трекера. Функціональність оригінального програми повністю зберігалася, тому користувач навіть не здогадувався про зараження смартфона.
- Подвійний захист від аналізу. Код трояна був пропущений через обфуськатор, що ускладнювало його аналіз, а всі комунікації з віддаленим сервером шифрувалися (справедливості заради варто сказати, що використовувався ущербний алгоритм DES з ключем 12345678).
- Можливість використання для організації ботнету. У коді Geinimi було знайдено більше 20 керівників команд, які дозволяли виконувати такі операції, як установка і видалення програм (правда, на це потрібен дозвіл користувача), отримання списку всіх встановлених програм або запуск додатків.
В цілому Geinimi діяв за таким алгоритмом. Після запуску зараженого додатки створювався фоновий сервіс, який збирав персональні дані: координати пристрою, номери IMEI та IMSI. Потім з інтервалом в одну хвилину він намагався зв'язатися з одним з десяти віддалених серверів (www.widifu.com, www.udaore.com, www.frijd.com і іншими), куди передавалася вся зібрана інформація і де збиралися команди для віддаленого виконання.
Geinimi став родоначальником повнофункціональних троянів для Android, і після його першого виявлення на просторах інтернету стали все частіше з'являтися зловредів з аналогічною або схожою функціональністю. Незабаром було знайдено модифікація Geinimi під назвою ADRD, троян Android.Pjapps і безліч інших. Всі вони поширювалися через різні сайти, torrent-трекери, китайські неофіційні магазини, тому захиститися від них можна було, просто не встановлюючи додатки з невідомих джерел. Однак все змінилося, коли був виявлений троян DroidDream, що поширювався в складі більш ніж 50 додатків, викладених в офіційному Android Market.
DroidDream і початок боротьби за чистоту маркету
У березні 2011 року користувач Lompolo повідомив на reddit, що в маркеті Android виявлено кількох десятків шкідливих додатків, опублікованих людиною з ніком Myournet. Незважаючи на буденність самого трояна, а також вже відомий спосіб поширення, заснований на впровадженні коду в легітимне додаток, факт наявності малварі в маркеті, а також припущення про те, що вона використовує експлойт rageagainstthecage для отримання прав root на пристрої, швидко підігріли інтерес до новини користувачів і співробітників різних сек'юріті-компаній. За кілька днів початковий список з двох десятків додатків розширився до 56, а серед публікували його людей (або ботів, хто знає) виявилися Kingmall2010 і we20090202.
Сам по собі DroidDream по функціональності був дуже схожий на спрощений Geinimi, але не був його варіацією. Він також збирав інформацію про смартфон, відправляв її на віддалений сервер (http://184.105.245.17:8080/GMServer/GMServlet) і отримував у відповідь керуючі команди. Плюс до всього він також містив у собі інше застосування, заховане в каталозі assets / sqlite.db всередині APK і встановлюється в систему під ім'ям DownloadProvidersManager.apk. Очевидно, це був захист від видалення.
В сумі заражені додатки встигли встановити від 50 до 200 тисяч користувачів, поки команда безпеки Google не відреагувала на повідомлення і не видалила з маркету всі знайдені копії зловреда і акаунти виклали їх користувачів. На додаток в маркеті також з'явився додаток Android Market Security Tool, за допомогою якого користувач міг очистити смартфон від зарази. Але і тут не обійшлося без конфузу. Буквально через два дні після цього Symantec виявила на просторах інтернету заражену версію цього додатка, яка містила в собі вже інший троян, названий згодом Fake10086 за вибіркову блокування SMS з номера 10086.
Факт проникнення малварі в Android Market (а після DroidDream в маркеті було виявлено ще кілька вірусів) змусив Google серйозно задуматися над безпекою свого сховища додатків, а так як вручну вони нічого робити не звикли, то в результаті на початку 2012 року викотили сервіс Bouncer, який перевіряв додатки на безпеку за допомогою запуску в віртуальній машині. Завдання Bouncer полягала в тому, щоб виробляти багаторазовий запуск софтина, симулювати роботу користувача з додатком і аналізувати стан системи до і після роботи з додатком. Якщо ніяких дивних і підозрілих дій софтіна собі не дозволяла, то вона пропускалася в маркет, в іншому випадку публікація блокувалася.
Якщо вірити Google, то відразу після запуску Bouncer скоротив кількість шкідників в маркеті на 40% Однак пізніше з'ясувалося, що його можна легко обійти, просто проаналізувавши деякі характеристики системи, такі як email-адреса власника «смартфона», версію ОС і так далі, а потім створивши додаток, яке при їх виявленні діятиме абсолютно законно і робити брудну роботу тільки на цьому смартфоні. Швидше за все, Google вже розробила схему протидії виявленню Bouncer (наприклад, за допомогою генерації унікальних віртуальних оточень для кожної програми).
Кінець 2011 року: початок стрімкого зростання кількості вірусів для Android
Zeus-in-the-Mobile
П'ять років тому по комп'ютерам користувачів почав свій переможний хід троян під назвою Zeus. Завдяки витонченому дизайну і просунутим технікам маскування, робив його виявлення неймовірно важким завданням, він зміг поширитися на мільйони машин по всьому світу і створити один з найбільших ботнетів в історії; тільки в США було зафіксовано понад три з половиною мільйонів випадків зараження.
Так виглядав інтерфейс першої виявленої версії Zeus
Основне завдання Zeus полягала в організації атаки типу man-in-the-browser, тобто використання технік кейлоггінга і формграббінга для перехоплення приватної інформації користувачів і її відправки на віддалені сервери. За час своєї роботи Zeus зміг потягти сотні тисяч логінів і паролів від популярних сервісів (Facebook, Yahoo !, hi5, metroFLOG, Sonico, Netlog) і, звичайно ж, безлічі онлайн-банків.
Розробник Zeus швидко відреагував на появу систем двофакторної аутентифікації і в 2010 році випустив для Symbian і BlackBerry додатки, завдання яких полягало в перехопленні аутентифікаційних SMS-повідомлень з одноразовими кодами авторизації і їх подальшої відправки на все ті ж віддалені сервери. У середини 2012 року аналогічний додаток з'явилося і для Android.
Перша його версія була дуже примітивна і представляла собою нібито сек'юріті-додаток, що при запуску виводить код верифікації і закривається. В результаті в тлі повисає сервісний процес, який займається перехопленням SMS і їх відправкою на віддалений сервер. Подальші версії Zeus для Android обзавелися також системою віддаленого управління за допомогою повідомлень з певного номера, однак ніяких просунутих прийомів маскування або поширення вірус не використовував і в цей раз.
Проте мобільна версія Zeus все-таки змогла наробити багато шуму в ЗМІ, але, як можна бачити, троян був сильно переоцінений.
А так виглядала версія, виявлена через десять місяців
Перший IRC-бот
В середині січня 2012 співробітники «Лабораторії Касперського» повідомили, що виявлений перший в історії Android IRC-бот. Додаток поширювалося у вигляді інсталяційного APK-файлу розміром трохи більше 5 Мб і видавало себе за гру Madden NFL 12. Цікаве відміну цього трояна від інших було в тому, що, по суті, вся його логіка роботи полягала в нативних додатків Linux, які ніяк не світилися в вікні стандартного диспетчера задач Android і до того ж використовували локальний експлойт для отримання прав root.
Під час запуску додаток створювало каталог /data/data/com.android.bot/files, в якому розміщував три файли: header01.png, footer01.png, border01.png, а потім ставило на них біт виконання і запускало перший файл - експлойт Gingerbreak для отримання прав root на пристрої. Якщо була встановлена вже рутованних прошивка, додаток намагалося отримати права root штатними засобами, в результаті чого у користувача вимагалось надання підвищених привілеїв (той випадок, коли рутованних смартфон безпечніше залоченним).
У разі успішного отримання прав root будь-яким з двох способів запускався другий файл, в якому зберігався SMS-троян - модифікація відомого трояна Foncy SMS. Троян визначав приналежність SIM-карти країні і починав відправку повідомлень на короткий платний номер, блокуючи всі відповідні повідомлення. Наступним запускався файл border01.png, в якому був код IRC-бота. Він підключався до IRC-сервера з IP-адресою 199.68. . і реєструвався на каналі #andros під випадковим ніком. Всі повідомлення, відправлені боту, виконувалися в консолі як звичайні Linux-команди.
Згідно із заявою співробітників «Лабораторії Касперського», це було перше застосування такого класу для Android. Однак, на їхню думку, небезпека його була невелика, так як поширювався він тільки через сірі маркети, а експлойт працював тільки в ранніх версіях Android 2.3.
Перший поліморфний троян
У лютому 2012-го компанія Symantec повідомила, що виявила перший поліморфний троян для платформи Android, який на той момент не міг бути знайдений жодним мобільним антивірусом, крім її власного (сюрприз). Троян, названий Android.Opfake, поширювався через різні веб-сайти, що знаходилися переважно на території Росії і країн СНД, у вигляді безкоштовної версії популярного додатка або гри.
Поліморфним він був тільки умовно, так як зміна трояна відбувалося на стороні сервера. При кожній новій завантаженні файлу вміст APK-файлу змінювалося за допомогою різних методів, таких як модифікація файлів даних, включення в пакет додатка «сміттєвих файлів», а також зміна імен файлів. Все це ускладнювало виявлення мобільними антивірусами, які в той час використовували примітивні техніки ідентифікації, типу звірки контрольних сум і перевірки на наявність специфічних файлів в пакеті.
Після потрапляння на смартфон жертви і запуску троян витягував з файлу res / raw / data.db (який існував в будь-якої версії трояна) список операторів зв'язку і платних коротких номерів і починав відправку SMS. На додаток троян відкривав в браузері веб-сторінку, яка містить посилання на інше шкідливе ПЗ. Цікаво, що повідомлення також змінювалися при кожній новій мутації трояна, в результаті чого було неможливо блокувати певні типи повідомлень на стороні оператора.
Відмінності в контрольних сумах файлів пакета з трояном, викачаних в різний час
Вірус-матрьошка
За тиждень до того, а саме 1 лютого 2012 року, на сайті Віктор Чебушев опублікував замітку, присвячену виявленню нового типу вірусу, розповсюджуваного через магазин Google Play. Вірус маскувався під додаток Superclean, здатне, за словами розробників, очистити пам'ять пристрою і таким чином підняти продуктивність смартфона або планшета. На той момент додаток мало вже від 1000 до 5000 установок і хороший рейтинг в 4,5 зірки.
Як з'ясувалося, Superclean дійсно виконував очищення пам'яті, але робив це простим перезапуском всіх фонових додатків за допомогою всього п'яти рядків на мові Java. На цій «складною» завданню корисну дію додатка закінчувалося, а найцікавіше починалося далі. Аналізуючи код, співробітник «Лабораторії Касперського» виявив, що можна запустити програму поєднувалося з віддаленим сервером і завантажує на карту пам'яті три файли: autorun.inf, folder.ico і svchosts.exe.
Перші два автоматично перетворювали підключається до USB-порту комп'ютера смартфон в Самозавантажний флешку, з якої запускався файл svchosts.exe. Сам svchosts.exe на перевірку виявився бекдор Backdoor.MSIL.Ssucl.a, який слухає мікрофон комп'ютера і відправляє всі отримані з його допомогою дані на віддалений сервер.
Сторінка додатки Superclean. Зверни увагу на рейтинг
Відмінною рисою трояна був також найзначніший на той момент набір функціональності з усіх мобільних зловредів для Android. За командою від оператора він міг відправляти повідомлення без відома користувача, включати і вимикати Wi-Fi, збирати інформацію про пристрій, відкривати довільні посилання в браузері, відправляти на віддалений сервер вміст SD-карти, SMS-листування і виконувати багато інших операцій.
Все, що виводить Superclean на екран
Черговий відповідь Google, або примусове перевірка всех програм
До кінця 2012 року ситуація з зловредів для Android стала вже настільки напруженою, що Google вирішила піти на черговий кардинальний крок. У вересні без зайвого розголосу було придбано сервіс онлайн-перевірки додатків на віруси VirusTotal, а 29 жовтня випущена версія Android 4.2, одним з нововведень якої стала автоматична перевірка будь-якого встановлюються не через Google Play додатки на віруси через віддалений сервіс.
Важко сказати, чи використовувала Google куплений VirusTotal для цього завдання, або у них є власний сервіс перевірки, однак не потрібно бути співробітником Google, щоб зрозуміти, що VirusTotal так чи інакше був використаний для захисту Android від вірусів.
А як же інші мобільні ОС?
Справжня історія мобільних вірусів почалася задовго до появи Android - в ті часи, коли на ринку панували Symbian і Windows CE. Ще в 2004 році хакерська команда 29A продемонструвала приклад хробака для Symbian Series 60, названого згодом Cabir (Worm.SymbOS.Cabir). Черв'як поширювався через Bluetooth і не чинив жодних шкідливих дій, тільки демонстрував повідомлення «Caribe» після включення смартфона. Учасники 29A розіслали вірус провідним антивірусним компаніям як приклад, а потім опублікували його вихідний код, через що згодом з'явилося кілька модифікацій хробака, на цей раз знайдених «в дикій природі».
Потім був виявлений перший вірус для систем на базі Windows CE під назвою Virus.WinCE.Duts. Він вражав PocketPC 2000, PocketPC 2002 PocketPC 2003 не вмів поширюватися через Bluetooth або MMS, але інфікував всі знайдені додатки на самому пристрої. Як і Cabir, він був дітищем 29A і також був створений для демонстрації можливості існування подібного роду зловредів.
Через місяць для Windows CE був виявлений перший бекдор: Backdoor.WinCE.Brador. Після запуску зловредів прописувався в автозавантаження, а потім відкривав мережевий порт і очікував віддалені підключення. Бекдор підтримував такі команди, як отримання списку файлів на пристрої, завантаження файлу, показ SMS-повідомлень, отримання файла з пристрою і виконання певної команди.
Практично відразу після Brador був знайдений і перший SM-троян, в цей раз для Symbian. Він поширювався в складі простої гри Mosquitos, в честь якої і отримав своє ім'я - Trojan.SymbOS.Mosquit.a. Після запуску він починав розсилку повідомлень на преміум-номери. Працездатність гри при цьому повністю зберігалася, а її титульний екран був прикрашений повідомленням про те, що гра була крякнута якимось SODDOM BIN LOADER.
Згодом кількість відомих вірусів почала стрімко зростати, і багато хто з них використовували численні уразливості в Symbian. Наприклад, Trojan.SymbOS.Locknut, який здобув популярність в Росії як Govno, використовував некоректну перевірку виконуваних файлів, щоб блокувати роботу всієї ОС. Trojan.SymbOS.Fontal заміняв системні шрифти на модифіковані версії, через що ОС також відмовлялася завантажуватися. Trojan.SymbOS.Dampig і Trojan.SymbOS.Hoblle підміняли системні програми, а Trojan.SymbOS.Drever був здатний блокувати роботу антивірусних програм.
Після того як на сцені з'явилася iOS, деякі автори вірусів спробували перейти на неї. Однак через параноїдальною закритості API ОС і неможливості встановити додатки зі сторонніх джерел епідемії не сталося. Нечисленні віруси були орієнтовані на зламані пристрої і в основному виводили на екран різні рекламні і фішингові повідомлення. Найбільш примітним стало хіба що поява трояна в самому App Store. Додаток під назвою Find and call, володіючи функціоналом VoIP-клієнта, при цьому здійснювало такі дії, як копіювання контактів на віддалений сервер і розсилка спаму (російською мовою, до речі).
Самий просунутий троян
У червні цього року співробітники «Лабораторії Касперського» виявили найбільш складний і просунутий в технічному плані троян для Android з усіх, що зустрічалися до цього. Троян отримав ім'я Backdoor.AndroidOS.Obad.a. Це було незалежне додаток, що не впроваджується в легітимний софт і, судячи з усього, яке розповсюджується під виглядом відомих додатків.
Після угоди користувача з довгим списком повноважень, установки і запуску він запитував права адміністратора пристрою (мова йде не про root, а про власну систему безпеки Android), які були потрібні тільки для двох речей: самостійної блокування екрану і захисту від видалення. Останнє троян робив особливо вишукано. Використовуючи раніше невідомий баг в Android, він видаляв себе зі списку додатків із правами адміністратора, через що його неможливо було позбавити цих прав і, як наслідок, видалити.
Далі троян перевіряв в системі наявність прав root і при наступному підключенні до Wi-Fi-мережі відправляв інформацію про пристрій на віддалений сервер. Інформація була типова для такого роду додатків і містила в собі номер телефону, IMEI, MAC-адреси і подібну інформацію. У відповідь він отримував список команд для виконання та заносив їх в базу даних з позначкою про час виконання. Віддаленими командами могли бути: перевірка балансу, відправлення повідомлень, перехід в режим проксінг трафіку, скачування і установка додатків, відправка файлів по Bluetooth, відкриття шелла і інші. Плюс до всього при кожному підключенні до іншого пристрою по синьому зубу він копіював сам себе на цей пристрій.
При спробі аналізу коду трояна виявилося використання безлічі технік захисту від аналізу. По-перше, троян експлуатував невідомий раніше баг в утиліті dex2jar, через якого декомпіляція коду трояна відбувалася некоректно. По-друге, троян використовував ще один невідомий баг в Android, що дозволяє створити файл Manifest.xml, в якому міститься метаінформація про програму, таким чином, щоб він суперечив стандартам Google, але при цьому коректно оброблявся під час запуску програми. Через це багато інструментів аналізу просто не спрацьовували.
Backdoor.AndroidOS.Obad.a вимагає безліч повноважень для роботи
Якщо ж вдавалося розпакувати і декомпілювати код трояна, обійшовши ці обмеження, то далі доводилося мати справу з багаторівневою системою шифрування, яка захищала від аналізу все текстові дані, а також імена методів (вони теж були рядками і викликалися за допомогою рефлексії). Цікаво, що ключем для першого шару шифрування був рядок з головної сторінки facebook.com, через що роботу трояна неможливо було проаналізувати в «стерильній кімнаті», без підключення до інтернету (хоча обмеження, звичайно, можна обійти за допомогою проксі).
А плюс до всього ще й запитує права адміністратора
INFO
В якості одного з методів поліморфізму в знайденому Symantec трояни використовувалася включається в різні файли фотографія того самого Свідка з Фрязіно.
WWW
- Доповідь з конференції DEF CON 18, присвячений першому серйозному руткіта для Android: goo.gl/WM0tBz
- Те саме повідомлення на reddit про виявлення трояна DroidDream: goo.gl/MnTcb
висновки
Кількість вірусів для Android сьогодні обчислюється тисячами, і деякі з них дійсно представляють інтерес для дослідника як зразки хорошого програмування і знання архітектури Android. Ось тільки боятися їх не варто. Автор даної статті вже більше шести років використовує смартфони на Android без всяких антивірусів і ні разу не зловив на них заразу. Головне - читати повноваження додатків і ставити їх тільки з маркету.
А як же інші мобільні ОС?