RKNHardering Help

راهکارهای عملی مقابله با تشخیص VPN و تغییرات سیستم

این راهنما سوی دیگر بررسی‌های RKNHardering را توضیح می‌دهد: برنامه واقعاً چه چیزی را مشاهده می‌کند، کدام روش‌ها وضعیت قابل‌مشاهده را واقعاً تغییر می‌دهند و کدام‌ها فقط ظاهر یک راه‌حل را می‌سازند. متن برای توسعه، آزمون سازگاری و اعتبارسنجی سازوکارهای دفاعی‌ای نوشته شده است که خودتان کنترل می‌کنید. تنظیمات زیر عبور از سامانه‌های ضدتقلب شخص ثالث را تضمین نمی‌کنند؛ آن سامانه‌ها ممکن است از سیگنال‌های بیشتر سمت سرور، attestation متکی بر سخت‌افزار و قواعد اختصاصی استفاده کنند.

این مطالب با کد منبع RKNHardering 2.10.0 موجود در همین نسخهٔ پروژه تطبیق داده شده‌اند. کامل‌بودن پوشش بر پایهٔ سه رجیستری پیگیری می‌شود: ۶۵ ورودی EvidenceSource، ۸۵ ورودی NativeSignalId و ۴۱ بررسی beta. در ماتریس کامل برای هر شناسه ستون‌های جداگانهٔ «بدون روت»، «با روت» و «چه چیزی همچنان قابل‌مشاهده می‌ماند» وجود دارد.

ابتدا ردهٔ درست راه‌حل را انتخاب کنید

آنچه RKNHardering تشخیص می‌دهد آنچه واقعاً باید تغییر کند بهترین گزینهٔ عملی
GeoIP، تفاوت IP میان بررسی‌های RU و non-RU، CDN، STUN و آزمون‌های تماس مسیر و نشانی خارجی واقعی مسیریابی درست به‌ازای برنامه و رفتار سازگار DNS/HTTP/UDP؛ در صورت نیاز، egress با کشور و نوع شبکهٔ مورد انتظار
TRANSPORT_VPN، TUN، مسیرها، netlink، /proc و رابط‌ها نمای محلی شبکه در Android بدون روت، VPN را به روتر یا دستگاه دیگری منتقل کنید؛ با روت، یک لایهٔ Java سیستمی به‌همراه یک backend هسته/بومی به‌کار ببرید
پورت‌های localhost و APIهای Clash/sing-box/Xray دسترسی UID هدف به صفحهٔ کنترل محلی listener یا API را غیرفعال کنید؛ با روت، دسترسی loopback را برای UID هدف مسدود کنید
برنامه‌های VPN نصب‌شده دیده‌شدن packageها پروفایل جدا فقط بخشی از مسئله را حل می‌کند؛ با روت، PackageManager را در system_server فیلتر کنید
Magisk/KernelSU/APatch، هوک‌ها، ناحیه‌های RWX، maps، propertyها و mountها وضعیت فرایند و namespaceِ mount هوک را داخل فرایند هدف inject نکنید؛ سطح قابل‌مشاهدهٔ روت را کمینه کنید؛ راهکار سطح هسته را به Zygisk ترجیح دهید
Second Space، work profile و clone برنامه هویت کاربر/پروفایل Android زیر کاربر اصلی اجرا کنید؛ انتقال به پروفایل bypass کامل نیست و سیگنال خودش را ایجاد می‌کند

محدودیت اصلی بدون روت

VpnService در Android یک رابط مجازی و مدل VPN سیستمی می‌سازد. خارج‌کردن برنامه از تونل با مسیریابی به‌ازای برنامه، مسیری را که ترافیک آن برنامه طی می‌کند تغییر می‌دهد، اما الزاماً وجود رابط TUN، شبکهٔ VPN یا مسیرهای وابسته را پنهان نمی‌کند. RKNHardering این موارد را جداگانه بررسی می‌کند: وجود رابط TUN فعال درحالی‌که خود برنامه transportِ VPN ندارد، به‌عنوان شاهد خارج‌کردن صریح برنامه از VPN در نظر گرفته می‌شود. افزودن RKNHardering به فهرست bypass می‌تواند به سیگنال‌های IP سمت سرور کمک کند، اما به‌تنهایی VPN را پنهان نمی‌کند.

قوی‌ترین طراحی بدون روت این است که VPN به‌عنوان یک شیء سیستمی از تلفن حذف شود: آن را روی روتر، travel router، تلفن جداگانه‌ای که hotspot می‌دهد یا gateway دیگری اجرا کنید. در این حالت دستگاه Android تحت آزمون نه VpnService دارد، نه رابط TUN و نه packageِ کلاینت VPN. بااین‌حال IP خارجی و نشانه‌های سمت سرور باید همچنان با یکدیگر سازگار باشند.

منابع رسمی Android عبارت‌اند از VpnService و VpnService.Builder. متدهای addAllowedApplication و addDisallowedApplication مسیریابی برنامه را کنترل می‌کنند، درحالی‌که establish() خود رابط VPN را می‌سازد.

روش خواندن این راهنما

برچسب منابع در سراسر متن با معنای ثابت به‌کار می‌روند:

به‌جای نصب فوری ماژول‌ها، از مدل تهدید و ترتیب انجام کارها شروع کنید. سپس صفحهٔ مرتبط را بخوانید:

کمینهٔ ترتیب ایمن انجام کارها

  1. یک نقطهٔ بازیابی پاک ذخیره کنید: نسخهٔ میان‌افزار، boot.img یا init_boot.img متناسب با راهکار روت، فهرست ماژول‌ها، تنظیمات VPN و پشتیبان داده‌های پروفایل.
  2. پیش از افزودن هوک، مسیر واقعی شبکه را اصلاح کنید: IP خارجی، DNS، مسیریابی به‌ازای برنامه و APIهای localhost.
  3. سیگنال‌های محلی Android را جداگانه بیازمایید. تغییر egress و پنهان‌سازی TUN را در یک نتیجه‌گیری واحد ادغام نکنید.
  4. با روت، دقیقاً یک backend بومی VPNHide استفاده کنید. اجرای هم‌زمان چند backend هسته می‌تواند دستگاه را متوقف کند یا kernel panic بسازد.
  5. پس از هر تغییر، برنامهٔ هدف را دوباره اجرا کنید و آزمون را دست‌کم دو بار در یک وضعیت پایدار شبکه تکرار کنید.
  6. وقتی نتیجه بدتر می‌شود، به‌جای افزودن ماژول دیگری روی آن، آخرین تغییر را غیرفعال کنید.

چه چیزی موفقیت محسوب می‌شود

موفقیت یک کارت سبز منفرد نیست. همهٔ شرایط زیر باید هم‌زمان برقرار باشند:

بازگشت به فهرست راهنمای فارسی