
2.32 MB
Android 8.0+
79
Universal
Verified safeScanned with ClamAV, APKiD, and Quark-Engine. No threats detected.
Description
Небольшой POC, покрывающий проверки RKNHardening - тестаппы по детекту ВПН из внешних приложений
Не является обходом, используйте пожалуйста только для проверок безопасности вашего устройства
С последнего коммита официально является нейрослопом
Требования
Android 8+
su-доступ
LSPosed
Установка
Установить .apk
Включить модуль в LSPosed
Добавить в скоуп LSPosed все приложения для проверки
Перезапустить устройство
Применить в whatVPN требуемые приложения (покажутся приложения из скоупа)
Перезапустить устройство
Проверять
Функциональность
Что не может
GeoIP - решается сплит-туннелингом
IP Comparison - решается сплит-туннелингом
Location Signals - решается сплит-туннелингом
WebRTC Leak - JS может раскрыть публичный IP через RTCPeerConnection, можно попробовать отключение WebRTC в настройках браузера
Что может
Direct signs - системные АПИ вызовы (проверка TRANSPORT_VPN)
Хук на вызов connectivityManager.getNetworkCapabilities(network).hasTransport(4) - всегда вернет false
Хук на вызов NetworkCapabilities.toString() - убирает подстроки с VPN, добавляет NOT_VPN
Хук на вызов NetworkCapabilities.hasCapability(NET_CAPABILITY_NOT_VPN) - возвращает true
Хук на вызов ConnectivityManager.getNetworkInfo(TYPE_VPN) - возвращает null
Хук на получение системных свойств (http.proxyHost, http.proxyPort, socksProxyHost, socksProxyPort и https-варианты) через System.getProperty(String) - возвращает null
Хук на PackageManager.getPackageInfo(), getInstalledApplications(), getInstalledPackages() возвращает null на проверку по package name (надо будет сделать добавление)
Фильтрует ConnectivityManager.getAllNetworks() - вроде как малоиспользуемое, но оставляем только физическую сеть
Вызывает PackageManager.queryIntentServices(Intent("android.net.VpnService")) и прячет приложения с VpnService в манифесте
Indirect signs - сетевые интерфейсы и маршруты
Хук на вызов NetworkInterface.getNetworkInterfaces() - фильтрует по паттернам tun\d+, tap\d+, wg\d+, ppp\d+, ipsec.* и с уменьшенным MTU
Хук на вызов LinkProperties.getRoutes() - фильтрует по dedicated routes через VPN-интерфейсы (к примеру 0.0.0.0/5 via tun0) и по паттерну сплит-туннелинга
Хук на вызов LinkProperties.getDnsServers() - возвращает DNS физического интерфейса
Фильтрует /proc/net/*, /sys/class/net/ при чтении - убирает VPN-интерфейсы
Очищает dumpsys vpn_management
Возвращает EConnRefused на сканирование известных портов. Если приложение активно сканирует порты - уходит в режим полной блокировки на 10 секунд
Rate this app
Ratings & reviews
No reviews yet.