КОМПЬЮТЕРНЫЕ НАУКИ_
УДК 004.056.53
БАГАТОР1ВНЕВИЙ П1ДХ1Д ДО ЗАХИСТУ В1Д НЕСАНКЦ1ОНОВАНОГО ВИКОРИСТАННЯ ДОДАТК1В В ОПЕРАЦ1ЙН1Й СИСТЕМ1 ANDROID
КУПЕРШТЕЙН Л.М., ВОЙТОВИЧ О .П., ОСТАПЕНКО-БОЖЕНОВА А.В.,
ПРОКОПЧУК С.А._
Аналiзуються можливi загрози комерцiйним додаткам на мобiльних пристроях з операцшною системою Android, iснуючi методи та засоби захисту додатк1в ввд несанкцюнованого доступу. Розробляеться бага-торiвнева модель захисту та програмний засiб для мобшьних пристро!в шд керуванням операцшно!' системи Android, яка включае в себе модуль захисту коду, модуль ввддаленого контролю, модуль захисту бази даних i модуль багатофакторно!' автентифжаци. Ключовi слова: несанкцiонований доступ та викори-стання, ОС Android, загрози мобтному додатку, багаторiвневий захист.
Key words: unauthorized access and use, Android OS, to mobile application threats, multilevel protection. Вступ
З моменту виходу ОС Android на споживчий ринок в 2008 рощ увага до дано! операцшно! системи збшьшуеться. З кожним роком кшьюсть додатюв, що випускаються для ще! операцшно! системи, зростае в геометричнш прогреси. Додатки використовуються для полегшення рiзних дiй та завантажуються мiльярдами людей по всьому св!ту [1]. За останнiй час додатки поширилися настiльки, що практично кожен аспект людсько! дiяльностi тепер можна здшснити за допомогою програми, написано! для ОС Android [2].
Новi програми продовжують з'являтися, надаючи послуги, починаючи вщ новин, погоди та розваг, до таких серйозних компанш, як банкiвська справа, медична допомога, фшанси та навiть безпека у дом!. Додатки для цих шдприемств мiстять конфiденцiйну та особисту шформащю (наприклад, данi банкiвського рахунку, хвороби та лши, iнвестицiйна таемниця тощо). Комерцш-нi додатки, зазвичай, не мають належного захисту як коду додатку, так i даних, що зберп-аються [1-3]. Тому актуальною задачею е вдосконалення захисту мобшьних додатюв. Отже, метою дослщження е тдвищення захищеносп додатюв в операцшнш систем! Android вщ несанкцюнованого використання як коду додатку, так i даних.
Постановка задач1
Викрадення даних, що збер^аються у додатках, завжди вважаеться одшею з найбiльш критичних загроз безпещ Android. Дослiдження показують [4, 5], що це може статися нав!ть для додатюв, як! в принцип! не мають вразливостей, але враз-ливост можуть бути у самш операцiйнiй систему наприклад, спшьне використання мережевих даних. П!д час атаки шюдливий додаток може функцюнувати у фоновому режимi i збирати данi цшьового додатку.
Багато додатюв використовують iнформацiю, що збер!гаеться в базах даних. Кр!м того, додаток може взаемодiяти з базами даних шшого додатку, що надае таю функцюнальш можливост! Вразливий додаток може дозволити шюдливш програмi порушувати цшсшсть та конфщенцш-шсть даних, що зберiгаються в базах даних [5, 6]. Така легюсть в отриманш несанкцiонованого доступу до вмюту файлiв спровокувала появу велико! кшькосп спецiальних iнструментiв, розрахованих на усунення проблеми доступу до коду додатюв.
Кр!м того, важливою проблемою залишаеться можливють аналiзу коду додатку за допомогою реверс - шжешрингу. А саме, дослщження коду додатку, а також документаци на нього з метою розумшня принцишв його роботи, захисних механiзмiв, зберiгання даних тощо для виконання несанцiоновано!' змши або копiювання, використання додатку чи шшого об'екта з аналопчними функщями [7, 8]. Загалом можна видшити такi загрози безпеки для Android-додаткiв:
- несанкцiонований доступ до даних у додатку;
- перехоплення даних в каналах передачу
- несанкцюнований доступ до даних у базах даних;
- аналiз коду додатку;
- несанкцюноване використання додатку. 1снуюч! засоби захисту додатюв реалiзують окремi механiзми (наприклад, тшьки обфускащю коду або автентифiкацiю користувачiв при доступ! до даних), не враховуючи весь комплекс загроз, що може призвести до зменшення р!вня безпеки, замють очшуваного покращення. А багатор!вневий шдхщ, який враховуе р!зномаштш особливосп функцюнування додатюв у операцшнш систем! Android, дозволить реал!зувати перекриття вказаних загроз i тим самим покращити безпеку додатюв.
Багаторiвнева модель захисту додаткав в ОС Android
Для захисту мобшьних Android-додаткiв пропонуеться комплексний системний пiдхiд на 0CH0Bi багаторiвневоl моделi. На рис. 1 наведена узагальнена графiчна модель такого тдходу.
захисту
Рiвень захищеносп на мобiльних пристроях з ОС Android можна описати такою моделлю: Z = {D, T, P},
D = {D1, D2, ..., Dn},
T = {T1, T2, .... Tn},
P = {P1, P2, ..., Pn},
де D - об'ект захисту; T - методи захисту; P -загрози.
В центрi моделi знаходяться об'екти захисту додатку D, в кшьцях навколо об'екпв — загрози P i контрзаходи Т, що протиддать цим загрозам. Для пiдвищення захищеносп мобiльного додатку, а саме зменшення ймовiрностi виникнення та реалiзацil атак шодо його несанкцiонованого використання зловмисником пропонуеться структура системи захисту з певною надлиш-ковютю, а саме перекриттям загроз низкою кон-трзаходiв. На рис. 2 наведена графiчна модель багаторiвневого захисту мобшьного Android-додатку, який мютить чутливу iнформацiю з урахуванням типових загроз несанкцiонованого використання.
моб1льних додатк1в з ОС Android ввд несанкцюнованого використання Об'ектами захисту е:
- код додатку D1,
- даш додатку D2,
- доступ до шфтерфейсу додатку D3. Методи та засоби захистуAndroid-додатку:
- обфускащя коду T1,
- автентифшащя T2,
- вщдалений контроль та управлiння додатком T3,
- захист бази даних (БД) T4.
Зарози несанкцюнованого використання додатку та вщповщш контрзаходи:
- кошювання коду P1 захищаеться T1;
- анатз коду P2 захищаеться T1;
- анатз структури коду P3 захищаеться T1;
- замша даних P4 захищаеться T2 i T3;
- кравджка даних P5 захищаеться T2 i T3;
- перегляд даних P6 захищаеться T2, T3 та T4;
- перехоплення в каналах передачi P7 захищаеться T3.
Застосування такого шдходу дозволить значно тдвищити надшнють системи захисту, а також забезпечити гнучюсть у li комплектуваннi залежно вщ прiоритетiв користувача. Дана модель мае надлишковють методiв захисту, але ll перевагою е перекриття деяких загроз кiлькома методами захисту, що значно зменшуе ймовiрнiсть виникнення ще! загрози.
ApxiTeKTypa системи захисту
На ocHOBi моделi 6araTopiBHeBoro захисту розроблено та реалiзoванo apxiTeKTypy системи захисту мoбiльнoгo додатку (рис. 3).
Модуль захисту БД
Захист БД
Модуль захисту коду
Двухфакторна автентифпсащя
Модуль захисту доступу до додатку
Рис. 3. Архитектура системи захисту
Архтектура системи (рис. 3.) включае модуль обфускаци коду додатку для захисту вщ реверс-iнженiрингy, модуль багатофакторно1 автентиф> кацп для контролю доступу до додатку, модуль вщдаленого контролю додатку та управлшня
даними, модуль захисту БД для шифрування даних додатку.
Для спрощення впровадження та використання системи захисту пропонуеться ïï розробка, про-грамна реалiзацiя у виглядi бiблioтеки. Модуль захисту коду додатку вщ реверс-iнженiрингy використовуе oбфycкацiï коду пiд час збору додатку в шсталяцшний apk-файл. Модуль вiддаленoгo контролю мае серверну i клiентcькy частину. Користувач за допомогою веб-iнтерфейcy може вiдправляти на мобшьний приcтрiй команди керування додатком, а саме:
- очищення даних додатку;
- блокування/розблокування доступу до додатку;
- резервне котювання даних додатку;
- вщновлення даних додатку.
Модуль багатoфактoрнoï автентифшаци також мае клiент-cервернy архiтектyрy. Спочатку користувач вщправляе лoгiн та пароль на сервер. Якщо вони пiдтверджyютьcя, то додаток за допомогою Bluetooth починае шукати апаратний токен. Для апаратного токену використовуеться браслет з вбудованим Bluetooth-адаптером. Модуль захисту БД oрiентoваний на шифрування шформацп, у тому чи^ даних автентифiкацiï. На рис. 4 наведено загальну модель фyнкцioнyвання системи захисту.
Захист БД
Зашифрування запись
Розш ифрування запиciв
Захист коду
Обфускащя коду
Контроль каналу
Сервю в фоновому режимi
тг
Сервер
Генеращя коду
Перевiрка автентиф к ащ й них даних
Перевiрка коду
Native code
Firebase
Блокування додатку
Очистка даних
Вiдкат даних
Вщновлення
даних
Рис. 4. Загальна модель функцюнування системи захисту
Модуль багатофакторно! автентифшацп використовуе сервер для nepeBip^ автентифiкацiйних даних, генерацп коду тдтвердження та перевiрки цього коду. Модуль вщдаленого контролю включае в себе серверну частину, з яко! вiдправляються команди на мобiльний пристрш, команди приймаються сервiсом, який завжди працюе в фоновому режимi. Модуль захисту БД зашифровуе всi записи в базу даних протоколом AES i розшифровуе ïx при читанш з бази. Для захисту роботи з сервером в додатку виконуеться примусовий контроль каналу, тобто перевiрка на те, щоб данi не вщправлялись/приймались з постороннix серверiв.
Модуль захисту коду додатку
На основi аналiзу дослiджениx варiантiв для захисту коду вщ реверс-iнженiрингу було обрано зааб ProGuard [9], код додатку та вах бiблiотек, код яких стискаеться, зачищаеться вiд "мертвого" коду i невикористовуваних змшних i обфускуеться. Для захисту коду Java винесено частину функцш в native-код. Обфускащя коду виконуеться в момент збору арк-файлу. Ресурси додатку, aidl-файли та код додатку вщправляються на Java-компiлятор, де код додатку обфускуеться i отриманий код перетворюеться в байт-код. Далi береться код бiблiотек, доданих в проект, i разом з основним кодом додатку вони записуються в файл classes.dex. Далi завантажуються iншi ресурси, що розмщеш в пiдключениx бiблiотекаx або jar-файлах, i додаток збираеться в арк-файл. Потiм в файл додаеться iнформацiя про його тдпис debug- або release-ключем.
При цьому виконуеться лексична обфускацiя коду додатку. В загальному модель роботи обфускаци можна представити так: R = {K,Cl}
де R - результат обфускаци; K - значення з таблищ замши; Cl - назва класу, методу або змшноь
Пщ час збору додатку в арк-файл збираються всi файли додатку i викликаеться функщя обфускаци коду. Значення, якими замшяються назви клашв, методiв i змшних, знаходиться в таблищ. Таблиця складаеться з послщовного списку лггер англiйського алфавiту a...z. У раз^ якщо клас достатньо великий i лтор не вистачае, послiдовнiсть продовжуеться, включаючи по 2 лiтери алфавггу aa...zz. Обираеться перший параметр з класу, який буде замшений, з таблищ замши, по порядку обираються значення для замши. Якщо значення з таблищ не зб^аеться з назвою класу, методу або змшно1", виконуеться замша, якщо збтаеться, береться наступне
значення з таблищ. Пюля завершення обфускацiï процес збору apk-файлу продовжуеться. Модуль вiддаленого контролю додатком
Для вщдаленого контролю та управлшня додатком використанi такi функцiï: повне очищення даних додатку; блокування входу в додаток; створення бекапу даних додатку на сервера вiдновлення даних додатку з сервера. При розробщ запропоновано безкоштовний постачальник хмарних сервiсiв Firebase [10] вiд компанiï Google. Вш дозволяе налаштувати базу даних для збереження користувачiв та вiдправляти push-повщомлення з командами в додаток, щоб контролювати його вщдалено. В Firebase також е вбудована база даних, в якш збертаються токени для вщправки команд. При першому вxодi в мобiльний додаток генеруеться токен розмiром в 225 символiв для щентифшаци мобiльного пристрою. Загальну модель генерацп токен можна предстаивти так: To = {Pa,I,M}
де To - токен; Pa - назва пакету додатку; I - id-додатку; M - перюд повторноï генерацп ключа. Пюля того, як токен був згенерований, на мобшьний пристрш можна вщправляти команди для вщдаленого контролю.
На вщдаленому серверi додаток шифруе повiдомлення для додатку i вщправляе push notification на мобшьний пристрш. Загальна модель процесу шифрування команд наведена нижче:
H = {Te,Key},
де H - зашифрований текст; Te - текст для шифрування; Key - ключ шифрування розмiрнiстю 128 бiт.
Додаток за допомогою сервюа, що працюе в фоновому режим^ отримуе команду. Перед виконанням команди додаток перевiряе достовiрнiсть сервера; якщо сервер пройшов перевiрку, команда виконуеться, якщо ш -iгноруеться. Пiсля цього виконуеться розшифрування отриманого повiдомлення. Додаток з серверу може приймати такi команди: clear_app - повне очищення даних додатку; block_app - блокування входу в додаток; backup_data - створення бекапу даних додатку на сервера
recovery_data - вiдновлення даних додатку з сервера.
Отримавши одну з наведених вище команд, додаток в фоновому режимi викликае модуль, який виконуе дп залежно вiд команди. Команда clear_app виконуе очищення даних додатку, видалення всix таблиць бази даних, очищення
кешу додатку, вихщ з облiкового захисту. Команда block_app виконуе блокування входу в додаток, тобто в момент запуску головного екрану в методi onCreate, який викликаеться першим в життевому циклi Activity, викликаеться метод для перевiрки, чи не заблокований додаток. Якщо вхiд заблоковано, метод завершуе роботу додатку. Команда backup_data призначена для створення бекапу даних додатку та вiдправки його на сервер у виглядi zip архiву, якщо це файли, i у факт розширення json, якщо це дат з бази. Для цього користувачу потрiбно викликати метод з бiблiотеки та вказати, якi даш та у якому виглядi вш буде зберiгати. Команда recovery_data призначена для вщновлення даних з сервера в додаток.
Модуль автентифжацн
Парольна схема автентифшаци мае як значнi переваги (простота реалiзацiï, вiдомiсть тощо), так i значш недолiки (пiдглядування, пiдбiр сла-бких паролiв, повторне введення тощо). Викори-стання лише парольноï схеми не дозволяе реал> зувати активну автентифшащю (постiйну перев> рку особистосп користувача на основi аспектов його взаемодiï з обчислювальним пристроем) для контролю за географiчним мюцезнаходженням або взаемним положенням пари користу-вач/мобiльний пристрiй.
На основi анатзу варiантiв активноï автентифiкацiï [1, 2] було обрано апаратш токени, яю дозволяють виконувати багатофакторну автентифiкацiю за парольною схемою та на основi апаратного бездротового токену, що додатково влючае в себе такi можливосто:
- перевiрку МАС-адреси бездротового пристрою;
- налаштування радiусу прийняття сигналу;
- налаштування часу повторно!' перевiрки наявносп токена.
Користувач вiдправляе автентифшацшш данi на сервер, сервер перевiряе ix i дае вiдповiдь мобшьному додатку. Як база даних в додатку використовуеться Firebase, в нш знаходиться таблиця з логiнами та паролями, з якими зрiвнюються даш, що приходять з мобiльного пристрою. Якщо даш збшаються, то мобшьний додаток запускае сервiс, який починае перевiряти, чи е поруч апаратний токен, наприклад, пiдключений через вбудований Buetooth, за яким мобiльний пристрш пiдключаеться до нього i зчитуе токен. Пюля пiдтвердження токена можна працювати з додатком.
В додатку при кожному вxодi незалежно вiд того, коли останнш раз використовувався додаток, викликаеться вшно автентифiкацiï. Автентифiкацiйнi даш (наприклад, логш та пароль) вщправляються на сервер для перевiрки. У раз^ якщо користувача з такими даними не юнуе, сервер повертае в додаток повщомлення про помилку. Пюля шдтвердження даних користувача на мобшьний пристрш вщправляеться повiдомлення про вдалу автентифiкацiю, в цей момент на мобшьному пристроï вмикаеться Bluetooth i сервю пошуку. Вiн знаходить вш BLE-пристроï i отримуе ïx MAC-адреси. Загальна модель роботи автентифiкацiï
R = {L,Pw,RT},
де L - логш; Pw - пароль; RT - результат, повернутий на основi перевiрки апаратного токена:
RT = {MA,Ti,Ra},
тут MA - МАС-адреса апаратного токена; Ti -часовий штервал, через який здшснюеться опитуванння; Ra -вiдстань, на якш сигнал вважаеться автентичним.
Кожна MAC-адреса (MA) порiвнюються зi збереженою при реестраци на мобшьному пристро1\ При вiдповiдностi у базi даних надаеться доступ до роботи з додатком. Через заданий штервал часу (Ti) вщбуваеться переврка, чи апаратний токен знаходиться на вщсташ, що не перевищуе задану (Ra). Якщо користувач з апаратним токеном вийде з радiусу ди Bluetooth-зони мобiльного пристрою, мiж ними розiрветься зв'язок, i додаток завершить роботу. Модуль захисту бази даних Для виршення проблеми несанкцюнованого кошювання iнформацiï з бази даних, наприклад, у випадку отримання доступу до мобшьного пристрою зловмисником або шюдливим процесом, було реалiзовано модуль криптографiчного захисту бази даних. Шифрування здiйснюеться для окремих записiв, а не БД в цшому. Шифрування даних здшснюеться на основi блокового симетричного шифру AES з ключем 128 бгт. Ключ шифрування генеруеться на основi пакету додатку i випадкового числа, збереженого в ресурсах додатку. При цьому кожному запису БД вщповщае свiй ключ. Ключi шифрування можуть збершатися як локально, так i вщдалено, i при цьому можуть бути також додатково зашифрована Модуль реалiзовано на основi системи керування базами даних Realm, яка е одшею iз найбiльш швидких мобiльниx систем [13].
Висновки
Набула подальшого розвитку модель захисту Android-додатку вщ несанкцiонованого використання, яка вiдрiзняeться своею багаторiвневою структурою з перекриттям загроз, що дозволяе оргашзувати ефективний захист доступу до додатку на основi багатофакторно! автентифшаци, захисту програмного коду на основi обфускаци та захисту даних додатку на основi вiддаленого контролю та управлшня ним, а також збереження даних в захищенш базi даних. На основi запропоновано! моделi розроблено архтектуру системи захисту Android-додатку. Система мютить модуль обфускаци коду додатку для захисту вщ реверс-iнженiрингу, модуль автентифшацп для контролю доступу до додатку, модуль вщдаленого контролю додатку та управлшня даними, модуль захисту БД для шифрування даних додатку.
На основi запропоновано! архтектури системи розроблено програмний модуль для захисту вщ несанкщонованого використання Android-додатку у виглядi бiблiотеки, який дозволяе забезпечити захист вщ загроз конфщенцшносп, цiлiсностi та доступностi. Розроблена бiблiотека дозволяе зменшити тривалiсть розробки Android-додаткiв на етапi робочого проектування при реалiзацi! вимог щодо безпеки за рахунок зниження трудозатрат. При цьому система захисту е гнучкою, тобто при розробцi додатку можна до нього штегрувати той чи шший модуль захисту залежно вщ встановлених вимог. Литература:
1. Voitovych O.P., Hurskyi M.V., Snigovyy D.S., Kupershtein L.M. "Monitoring tool for Android operating system", in Scientific journal Herald of Khmelnytskyi national university 2017. Issue 3, Volume 249. 236-241 р.
2. Tabassum, Gulista, Shikha Pandit, and Nupur Ghosh. "Android Application Security", in Journal of Emerging Technologies and Innovative Research. Vol. 1. No. 7. 2014.
3. Kupershtein L.M., Voitovych O.P., Kaplun V. A., Pro-kopchuk S.O. "The database-oriented approach to data protection in Android operation system", in Scientific journal Herald of Khmelnytskyi national university 2018, Issue 1, 18-22 p.
4. Zhang, N., Yuan, K., Naveed, M., Zhou, X., & Wang, X. "Leave me alone: App-level protection against runtime information gathering on android" In Security and Privacy (SP), 2015 IEEE Symposium on (pp. 915-930). IEEE.
5. Hassanshahi, B., & Yap, R.H. "Android Database Attacks Revisited". In Proceedings of the 2017 ACM on Asia Conference on Computer and Communications Security. P. 625-639.
6. Baryshev, Y., Kaplun, V. and Neiyumina, K. "Discretional model and method of distributed information resources access control". In Scientific Works of Vinnytsia National Technical University. 2 (Jun. 2017).
7. Kim, N. Y, Shim, J., Cho, S. J., Park, M., & Han, S. "Android Application Protection against Static Reverse Engineering based on Multidexing". J. Internet Serv. Inf. Secur., 6(4), 54-64 (2016).
8. Dong, S., Li, M., Diao, W., Liu, X., Liu, J., Li, Z., & Zhang, K. "Understanding Android Obfuscation Techniques: A Large-Scale Investigation in the Wild". arXiv preprint arXiv:1801.01633 (2018).
9. http://proguard.sourceforge.net/.
10. Firebase is Google's mobile platform that helps you quickly develop high-quality apps. URL: https://firebase .google.com/.
11. Baryshev Yu., Kaplun V. "Remote user authentication method for network services" in Information Technology and Computer Engineering. 2014 Vol. 2, no. 30, 1.
12. Fridman, L., Weber, S., Greenstadt, R., & Kam, M. "Active authentication on mobile devices via stylometry, application usage, web browsing, and GPS location" in IEEE Systems Journal, 11(2), 513-521. (2017).
13. https://realm.io.
Надшшла до редколлеги 02.06.2018 Рецензент: д-р техн. наук, проф. Бараншк В.В. Куперштейн Леонщ, канд. техн. наук, доцент кафед-ри захисту шформацп Вшницького нацюнального техшчного ушверситету. ^yraBi штереси: застосу-вання штелектуальних технологш в шбербезпещ. Адреса: Украша, 21021, Вшниця, вул. Хмельницьке шосе, 95, шмн. 2424, e-mail: kupershtein@vntu.edu.ua Войтович Олеся, канд. техн. наук, доцент кафедри захисту шформацп Вшницького нацюнального техшчного ушверситету. Наyковi штереси: шбербезпека. Адреса: Украша, 21021, Вшниця, вул. Хмельницьке шосе, 95, шмн. 2424, e-mail:
voytovych.olesya@vntu.edu.ua
Остапенко-Боженова Алша, асистент кафедри захисту шформацп Вшницького нацюнального техшчного ушверситету. Наyковi штереси: застосування крипто-графiчного захисту шформацп. Адреса: Украша, 21021, Вшниця, вул. Хмельницьке шосе, 95, шмн. 2424, e-mail: asja87@gmail.com
Прокопчук Сергш, мапстр з шбербезпеки. Наyковi штереси: безпека ОС Android. Адреса: Украша, 21021, Вшниця, вул. Хмельницьке шосе, 95, шмн. 2424, email: prokopchukserhii@gmail.com Kupershtein Leonid, PhD, associated professor of the information protection department, Vinnytsya National Technical University. Scientific interests: intellectual technology applications in cyber security. Address: 95 Khmelnytske shose, Vinnytsya, 21021, Ukraine, e-mail: kupershtein@vntu.edu.ua
Voitovych Olesia, PhD, associated professor of the information protection department, Vinnytsya National Technical University. Scientific interests: cyber security. Address 95 Khmelnytske shose, Vinnytsya, 21021, Ukraine, e-mail: voytovych.olesya@vntu.edu.ua Ostapenko-Bozhenova Alina, assistant of the information protection department, Vinnytsya National Technical University. Scientific interests - cryptography. Address 95 Khmelnytske shose, Vinnytsya, 21021, Ukraine, e-mail: asja87@gmail.com
Prokopchuk Serhii, master of cybersecurity, Vinnytsya National Technical University. Scientific interests: Android OS protection. Address 95 Khmelnytske shose, Vinnytsya, 21021, Ukraine, e-mail: prokop-chukserhii@gmail.com
Prokopchuk Serhii, master of cybersecurity, Vinnytsya National Technical University. Scientific interests - Android OS protection. Address 95 Khmelnytske shose, Vinnytsya, 21021, Ukraine, e-mail: prokop-chukserhii@gmail.com