RKNHardering Help

رابط‌های ثابت VPN در /sys/class/net

شناسه: SYSCLASSNET_VPN دسته: رابط‌ها وضعیت در RKNHardering 2.10.0: بررسی فعال نقش در حکم نهایی: بالا

این صفحه پیاده‌سازی واقعی RKNHardering 2.10.0 را توضیح می‌دهد. در آن مشخص شده است چه اقدام‌هایی بدون روت ممکن‌اند، چه چیزهایی به روت نیاز دارند و کدام راهکار فقط یک سیگنال را کاهش می‌دهد، بی‌آن‌که VPN را به‌طور کامل پنهان کند.

چه چیزی بررسی می‌شود و چرا

detectSysclassnetVpn() فقط برای مسیرهای /sys/class/net/{tun0,tun1,utun0,wg0,ppp0,xfrm0} تابع stat() را فراخوانی می‌کند و نام‌های یافت‌شده را فهرست می‌کند. این بررسی نسخه‌ای محدودتر و تکراری از بخشی از sysfs-vpn-leak است که به‌عنوان شناسهٔ تشخیصی جداگانه حفظ شده است.

شرط دقیق فعال‌شدن

دست‌کم یکی از شش پوشهٔ ثابت /sys/class/net/<name> وجود داشته باشد.

معنای نتیجه

sysfs هسته یک دستگاه شبکه با نام رایج VPN را در معرض دید قرار داده است. تطبیق به‌عنوان اثر محلی با اطمینان بالا در نظر گرفته می‌شود.

تأثیر این خط بر گزارش: این خط detected=true را تنظیم می‌کند و به‌عنوان یک نشانهٔ محلی با اطمینان بالا در نظر گرفته می‌شود.

محدودیت‌ها و مثبت‌های کاذب احتمالی

این بررسی type، mtu یا operstate را نمی‌خواند و نام‌های غیراستاندارد را پوشش نمی‌دهد. SELinux ممکن است پیمایش را مسدود کند؛ در این صورت حتی با وجود رابط، خط ظاهر نمی‌شود. در جهت دیگر، دستگاه شبکه‌ای که غیرفعال شده اما حذف نشده است همچنان بررسی را فعال می‌کند.

این خط باید همراه با سیگنال‌های مجاور ارزیابی شود. پاک‌بودن نتیجهٔ یک API به‌تنهایی Java Binder، libc، netlink خام/فراخوانی مستقیم سامانه، procfs/sysfs، سوکت‌های محلی و نشانه‌های سمت سرور را هم‌زمان پوشش نمی‌دهد.

توصیه‌ها برای این بردار

بدون روت

مطمئن‌ترین روش بدون روت این است که روی تلفن تحت آزمون رابط VPN ساخته نشود: تونل را به روتر، روتر مسافرتی، تلفن جداگانهٔ دروازه یا گره دیگری از شبکه منتقل کنید. دورزدن به‌ازای برنامه در VpnService مسیر برنامهٔ انتخاب‌شده را تغییر می‌دهد، اما establish() همچنان رابط VPN سیستمی می‌سازد؛ بنابراین بررسی محلی رابط‌ها ممکن است همچنان فعال شود. حالت پراکسی محلی HTTP/SOCKS بدون TUN گاهی این بردار مشخص را حذف می‌کند، ولی درگاه‌های شنود و تنظیمات پراکسی را باقی می‌گذارد و برنامه‌های بی‌اعتنا به پراکسی را پوشش نمی‌دهد.

با روت

پنهان‌سازی در سطح آزمایشگاه معمولاً هم به یک لایهٔ Java سیستمی و هم به یک پس‌زمینهٔ بومی نیاز دارد. در VPNHide یعنی APK به‌همراه Vector/LSPosed با دامنه‌ای محدود به System Framework، و دقیقاً یکی از kmod، KPM یا Zygisk. برای بررسی‌ای که ممکن است syscall مستقیم یا netlink به‌کار ببرد، kmod یا KPM ترجیح دارد: هوک Zygisk در فضای کاربر قابل دورزدن است و داخل فرایند رد باقی می‌گذارد. ابتدا نقشهٔ پوشش VPNHide را بررسی کنید و ساخت‌ها را فقط از صفحهٔ رسمی انتشار بگیرید. VPNHide Next پوشش گسترده‌تری ادعا می‌کند، اما دربارهٔ احتمال حلقهٔ بوت و کرنل پنیک نیز هشدار می‌دهد؛ آن را فقط روی دستگاه اختصاصی آزمون کنید. مطمئن شوید راهکار علاوه بر readdir()، فراخوانی مستقیم stat("/sys/class/net/tun0") را نیز پوشش می‌دهد؛ وگرنه این پروب مسیر دقیق از فهرست پوشهٔ فیلترشده عبور می‌کند.

روش راستی‌آزمایی نتیجه

adb shell 'for n in tun0 tun1 utun0 wg0 ppp0 xfrm0; do [ -e /sys/class/net/$n ] && { echo "[$n]"; cat /sys/class/net/$n/type /sys/class/net/$n/mtu /sys/class/net/$n/operstate 2>/dev/null; }; done'

پس از هر تغییر، RKNHardering و سرویس‌گیرندهٔ VPN را به‌اجبار متوقف کنید، هر دو را دوباره اجرا کنید و اسکن کامل را تکرار کنید. Zygisk، Xposed و ماژول‌های هسته معمولاً به راه‌اندازی مجدد دستگاه نیاز دارند. فقط همین خط را مقایسه نکنید؛ سیگنال‌های مجاور را نیز بررسی کنید، زیرا یک هوک ناقص اغلب میان APIها ناسازگاری ایجاد می‌کند.

مجوزهای لازم و خطرها

خود پروب با مجوزهای معمول برنامه اجرا می‌شود و روت درخواست نمی‌کند. دستورهای ADB زیر فقط برای جهت‌یابی تشخیصی‌اند: adb shell با UID دیگری اجرا می‌شود و ممکن است نسبت به فرایند برنامه اطلاعات بیشتر یا کمتری ببیند. آزمون تعیین‌کننده، اجرای دوبارهٔ بررسی درون برنامه پس از توقف اجباری است.

خطرها

جایگزینی گستردهٔ sysfs می‌تواند NetworkStack، netd و سرویس‌های OEM را مختل کند. مالکیت یا مجوز فایل‌های sysfs را تغییر ندهید؛ هسته آن‌ها را می‌سازد.

بازگردانی

آخرین تغییر را برگردانید: ماژول یا قاعدهٔ افزوده‌شده را با مدیر معمول خودش غیرفعال کنید، دستگاه را دوباره راه‌اندازی کنید و اسکن خط مبنا را تکرار کنید. روی وضعیتی ناشناخته هوک دیگری لایه نکنید.

سطح شواهد

بالا. با فراخوانی‌های دقیق stat() و نگاشت HIGH_CONFIDENCE راستی‌آزمایی شده است.

وضعیت یک راهکار شخص ثالث خودبه‌خود به این دستگاه تعمیم پیدا نمی‌کند. ادعای سازندهٔ ماژول فقط فرضیهٔ آغازین است؛ تأیید واقعی به نتیجه‌ای تکرارپذیر از RKNHardering روی همان نسخهٔ Android، میان‌افزار و هسته نیاز دارد.

منابع و تاریخ آخرین راستی‌آزمایی

سیگنال‌های مرتبط: sysfs-vpn-leak, tuntap-type, proc-net-dev-vpn.

بازگشت به مرجع بررسی‌های بومی