برنامه نویسی

شکستن ناگسستنی: دور زدن آزمایشگاههای Arkose در iOS

این قسمت 2 از یک سری دو قسمتی است که جزئیات آن چگونه یک مانع بزرگ در طول تحقیقات اتوماسیون امگا-T iOS-یک وب سایت مبهم و مبهم-تشخیص داده شد و در نهایت بر آن غلبه کرد. این مقاله به * * می پردازد“رله بصری ارکستر” روش بای پس روش*بشر

توسط Neverlow512
12 آوریل 2025
تاریخ مطالعه موردی اصلی: 03 آوریل 2025


هدف و زمینه: در این مقاله تکنیک توسعه یافته برای دور زدن آزمایشگاه های خاص Arkose که با آن روبرو شده است ، برای تحقیق ، اکتشاف فنی و تظاهرات روش شناسی انجام شده است.

افشای مسئول: یافته ها بر اساس تحقیقات انجام شده است که تقریباً شش ماه قبل از انتشار انجام شده است تا خطرات فوری را کاهش دهد. این کار برای اهداف آموزشی و آگاهی دفاعی به اشتراک گذاشته شده است. جزئیات بسیار خاص به دلایل واضح فاش نمی شود. لطفاً از اطلاعات جمع آوری شده از مقاله یا مطالعه من استفاده کنید از نظر اخلاقی و قانونیبشر

مطالعه موردی کامل در مورد GitHub: شکستن تحقیقات ناگسستنی

قسمت 1: Frida Diagnostics برای نمای iOS مبهم


جمع کردن قطعات: وحی Frida 🕵

اگر قسمت 1 را می خوانید ، تاکنون داستان را می دانید. تلاش من برای اتوماسیون تولید حساب در Tinder با استفاده از چارچوب Omega-T به یک سد اصلی رسید: یک آزمایشگاه سخت Arkose Captcha در داخل یک مبهم WKWebViewبشر Appium نمی تواند در داخل ببیند ، نمی تواند در تعامل باشد (حداقل با تکیه بر توابع تشخیص عناصر معمول). بن بست برای اتوماسیون استاندارد UI ، یا به همین ترتیب فکر کردم.

با این حال ، مرحله تشخیص فریدا ، سرنخ مهم را به من داد – توکن حل شده Captcha از داخلی استفاده کرد window.webkit.messageHandlers Bridge برای گزارش دوباره به کد Swift/Objective-C بومی.

دانستن مسیر یک چیز بود ، اما به نظر می رسید که مسیر خود حتی با قابلیت های فریدا ، در برابر دستکاری مستقیم سخت شده است. این امر رهگیری/پخش ساده را به عنوان یک استراتژی اتوماسیون قابل اعتماد رد کرد.

من دوباره به راهی برای ایجاد آتش سوزی در پاسخ به صورت مشروع در متن اصلی WebView نیاز داشتم. خوب حالا چی؟

اتوماسیون مرده است. زنده باد اتوماسیون!: ایده رله بصری

به نظر می رسید که اتوماسیون سنتی و مبتنی بر عنصر واقعاً در اینجا مسدود شده است. هنگامی که شما نمی توانید با ساختار زیرین (DOM) در تعامل باشید ، باید سازگار شوید. این منجر به تغییر فکر من شد: “اگر من به سادگی بتوانم CAPTCHA را مانند یک کاربر عادی حل کنم؟”

Appium ممکن است در این وب سایت نابینا باشد ، اما هنوز هم می تواند صفحه را ضبط کرده و به مختصات ضربه بزند.

این مفهوم من را برانگیخت “رله بصری ارکستر”:

من می دانم که این به نظر فانتزی می رسد ، اما با توجه به دردی که برای آن پیش رفتم ، باید نام را انتخاب کنم!

  1. Appium به عنوان چشم و دست: ضبط تصاویر از منطقه Captcha ؛ شیرهای دقیق مبتنی بر مختصات را انجام دهید.

  2. OCR (tesseract) به عنوان خواننده دستورالعمل: دستورات متن را از تصویر ضبط شده استخراج کنید.

  3. حل کننده Captcha خارجی: حل پازل بصری را برون سپاری کنید.

  4. پایتون به عنوان ارکستر: هادی مدیریت کل جریان – ضبط ، تجزیه و تحلیل ، حل نماینده ، اعمال نتایج ، بررسی وضعیت ، تکرار.

ایده اصلی؟ خارجی سازی قسمت Appium نتواند (حل پازل بصری) را کنترل کند و سپس با استفاده از تنها روش تعامل سمت چپ ، پاسخ را به عقب برگردانید – ضربه زدن به مختصات صفحه نمایش ، هدایت شده توسط OCR. این نیاز به دسترسی DOM را به طور کامل برای خود تعامل دور می کند.

فکر نکنید که این اتفاق در یک روز رخ داده است ، مدتی طول کشید تا اینکه فهمیدم که می توانم فرآیند حل Captcha را از طریق تعامل صفحه نمایش (kinda) و بسیاری موارد دیگر برای اجرای آن خودکار کنم.

جعبه ابزار: چشم ، دست و کمک خارجی 🛠

ساخت کار رله بصری نیاز به ادغام چندین مؤلفه است که توسط اسکریپت اصلی پایتون من ارکستر شده است:

  • جذاب – هنوز درایور اصلی UI ، اما در اینجا متفاوت استفاده می شود. مشاغل اصلی آن تبدیل شد:

    • گرفتن تصاویر (driver.get_screenshot_as_base64()).
    • انجام شیرهای مختصات (driver.execute_script('mobile: tap', {'x': X, 'y': Y})).
    • تشخیص حضور اولیه صفحه Captcha (با استفاده از عناصر خارج WebView).
  • پردازش تصویر (OPENCV/بالش) – عادت داشتن:

    • به صورت پویا Captcha را پیدا کنید: قبل از حل ، من از تطبیق الگوی تصویر استفاده کردم (مانند OpenCV matchTemplate) برای یافتن مختصات دقیق از نمای CAPTCHA در تصویر کامل ، اطمینان از دقیق بودن کلیک حتی اگر UI کمی تغییر کند. این شامل اولین عکس مرجع از خود عنصر WebView است.
    • محصول و فشرده سازی فقط منطقه Captcha را از تصویر کامل استخراج کنید و آن را فشرده کنید تا به طور کارآمد به API حل کننده ارسال شود.
  • OCR (tesseract از طریق pytesseract) – برای خواندن دستورالعمل ها یا متن وضعیت (“تأیید کنید” ، “دوباره امتحان کنید” ، “تأیید کامل”) را مستقیماً از تصویر Captcha خرد شده. این برای مدیریت دولت بسیار مهم بود.

  • API Solver Captcha خارجی – یک سرویس شخص ثالث که یک تصویر را می پذیرد و راه حل را برمی گرداند.

  • ارکستور – اسکریپتی که من نوشتم ، دستگاه دولت را مدیریت می کند ، Appium را برای ضبط/شیر ، پردازش تصاویر ، تماس با OCR ، ایجاد درخواست API به حل کننده ، تجزیه و تحلیل نتایج و تصمیم گیری بعدی بر اساس خروجی OCR فراخوانی می کند. همچنین ، همه اینها باید به درستی در چارچوب امگا-T کار کنند ، بنابراین در ابتدا یک آشفتگی بود.

یک نمودار پری دریایی که روند کار را نشان می دهد

آگاه باشید: آزمایش این کار به من سردرد داد که مدتی به طول انجامید ، من شوخی نمی کنم!

حلقه اصلی: ضبط ، تصمیم گیری ، عمل ، تکرار

چالش های آزمایشگاه Arkose اغلب چند مرحله ای است و به تأیید نیاز دارند ، به خصوص اگر به فعالیت مخرب مشکوک باشند. جادوی واقعی در حلقه مدیریت دولت بود که من با پایتون ارکستر شدم:

نکته جانبی: در حالی که من معمولاً بسیار خوشحالم که می بینم اقدامات امنیتی به طور مؤثر مورد استفاده قرار می گیرد ، حل 10 CAPTCHA در یک ردیف سرگرم کننده نیست! کار خوب ، arkose ، سیستم های شما شگفت انگیز است.

  1. ضبط و خواندن – یک تصویر از منطقه Captcha بگیرید. OCR را روی آن اجرا کنید تا دستورالعمل یا وضعیت فعلی متن را بدست آورید.

  2. حالت تصمیم گیری – متن OCR را تجزیه و تحلیل کنید:

*   Is it "Verification Complete"? 👉 **SUCCESS!** Exit the loop.

*   Is it "Try Again"? 👉 **RETRY!** Tell Appium to click the "Try Again" coordinates, wait, and loop back to Capture & Read the *new* puzzle.

*   Is it just "Verify"? 👉 **CONFIRM!** Tell Appium to click the "Verify" coordinates, wait, and loop back to Capture & Read to see what happens next (hopefully "Complete," maybe "Try Again").

*   Is it puzzle instructions (like "Select dice...")? 👉 **SOLVE!** Proceed to the next step.

*   Is it something else or unreadable? 👉 Maybe retry OCR/Capture, or eventually fail.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

  1. ارسال به حل کننده – بسته بندی تصویر فعلی و دستورالعمل های استخراج شده. کار را به API سرویس حل خارجی ارسال کنید. منتظر نتیجه باشید.

  2. راه حل را اعمال کنید – اگر حل کننده شاخص های سلولی را برگرداند (به عنوان مثال ، [1, 3, 5]) ، این موارد را به مختصات صفحه نمایش خاص (x ، y) برای هر سلول ترجمه کنید (از قبل کالیبره شده). به Appium بگویید که به آن مختصات ضربه بزنید ، و به تأخیرهای تصادفی کوچک بین شیر آب و تغییرات مختلف سطح میلیونی برای تقلید تعامل انسان کمی اضافه کنید.

  3. به مرحله 1 برگردید – پس از اعمال کلیک (یا کلیک بر روی تأیید/امتحان مجدد) ، صفحه تغییر می کند. حلقه باید با گرفتن یک تصویر جدید و خواندن حالت جدید برای تصمیم گیری در مورد مجدداً راه اندازی کنید طرف دیگر عمل

این چرخه تا زمانی که “تأیید کامل” ظاهر شد ، حداکثر حد تلاش بود ، یا برنامه گاهی اوقات حتی حساب را از بین می برد (احتمالاً به دلیل سایر مکانیسم های تشخیص که باعث زمان بندی یا رفتار می شوند).

بررسی واقعیت: آیا واقعاً کار کرد؟ 🤔

اگر می خواستم وارد خانه ام شوم ، این احساس می شود که باید یک کلید بسازم. مقابله با کالیبراسیون مختصات ، پوسته پوسته شدن گاه به گاه OCR و تأخیر API های خارجی در بعضی مواقع چندان سرگرم کننده نبود.

اگرچه شادی که وقتی فهمیدم که برای اولین بار کار می کند ، واقعاً ارزش آن را داشت.

بنابراین ، چقدر مؤثر بود؟

در طول آزمایش من (دوباره ، 6 ماه پیش):

  • موفقیت پازل فردی – بسیار زیاد> 95 ٪:
    خدمات خارجی به طور کلی در حل پازل های بصری در هنگام تصویر و دستورالعمل های واضح خوب بودند.

  • موفقیت مرحله پایان به پایان-حدود 80 ٪:
    این به معنای تکمیل تمام فرآیند چند مرحله ای CAPTCHA با موفقیت از ابتدا (“بیایید تأیید کنیم …”) تا “تأیید کامل”.

  • چرا قطره؟:

    • عوارض – ارسال تصاویر ، انتظار برای حل آن (لعنتی ، من از معماهای تاس متنفرم) ، دریافت نتایج – همه اینها زمان را اضافه می کند. یک انسان ممکن است یک مرحله در ثانیه حل کند. این رله سربار قابل توجهی را اضافه می کند ، که می تواند باعث تشخیص زمان بندی شود. (سرعت پروکسی هم در اینجا کمکی نکرد!)
    • تنوع پیچیدگی – برخی از چالش های Arkose حل کننده ها طولانی تر شد. و ، بله ، من دوباره در مورد معماهای تاس صحبت می کنم ، اینها همیشه بدترین هستند!
    • تشخیص – در حالی که دور زدن گمراهی، تعامل بیش از حد سازگار یا روباتیک زمان احتمالاً هنوز هم بعضی اوقات بررسی های ثانویه را انجام داده و منجر به خرابی یا چالش های اضافی می شود. من به طور تصادفی در تأخیرها اضافه کردم و مختصات را کلیک کردم ، که کمک کردند ، اما یک راه حل عالی نبود.
    • سکسکه OCR به ندرت ، OCR می تواند “تأیید” یا “دوباره امتحان کنید” را که منجر به یک عمل اشتباه یا یک خطای/تصادف کامل می شود ، اشتباه خواند. اگرچه این امر می توانست به راحتی از طرف من حل شود ، خطاها هرگز مسئله ای نبودند که به من بخواهند که بخواهم این کار را انجام دهم.

نرخ موفقیت 80 ٪ برای تولید مناسب نبود ، اما برای من هدف تحقیق – اثبات زنده ماندن دور زدن این اجرای خاص از طریق رله بصری – این یک موفقیت واضح بود.

غذای کلیدی و پیامدهای امنیتی

این تمام تمرین برای من چند نکته را به خانه چکش زد:

  • مهم است – حتی می توان یک Captcha پیشرفته مانند آزمایشگاه های Arkose را حل کرد. با تکیه صرفاً به ارائه بصری در یک WebView مبهم ، این بردار بای پس را ایجاد کرد.

اگرچه این نوع اجرای قطعاً بهترین چیزی است که تاکنون با آن روبرو شده ام ، و من توسعه بیشتر آن را تشویق می کنم زیرا قطعاً در برابر بازیگران مخرب بسیار مؤثر است. به نظر من یا به سادگی پازل های تاس بیشتری را اضافه کنید.

  • گمنامی همیشه به معنای امنیت خوب نیست – مخفی کردن DOM بازرسی اساسی Appium را متوقف کرد اما برای یک حمله بصری که تصاویر را ضبط می کرد بی ربط بود.

  • سمت مشتری کافی نیست – هرگونه اثر انگشت یا تحلیلی فانتزی اتفاق می افتد درون این وب سایت در طول حل ، عمدتاً از آن دور شد زیرا حل واقعی در خارج از کشور اتفاق افتاد.

  • دفاعی به لایه ها نیاز دارد – دفاع مؤثر نیاز به تجزیه و تحلیل رفتاری سمت سرور قوی تر دارد (با نگاهی به زمان بندی تعامل دور مرحله Captcha) ، تأیید دستگاه قوی تر ، شاید حتی روش هایی برای تداخل در تصویربرداری/OCR (اگرچه دسترسی یک نگرانی است) و چالش غیرقابل پیش بینی. درست بعد از اینکه شخصی حساب می کند یا حتی بهتر ، به آنها اجازه دهید تا لحظه ای از آن لذت ببرند. اگر آنها سعی در ایجاد خودکار یا ایجاد انبوه داشته باشند ، به دلیل ناامیدی ناشی از آن ، ترک می شوند.

نتیجه گیری: شکستن ناگسستنی

تکنیک “رله بصری ارکستر” ثابت کرد که حتی CAPTCHA های پیچیده و بصری تعاملی در وب های موبایل مبهم می توانند خودکار شوند. با ترکیب Appium برای تعامل صفحه نمایش ، OCR برای درک وضعیت و بیرونی کار شناختی ، می توان به طور مداوم از اجرای آزمایشگاههای خاص Arkose که در 6 ماه پیش در تیندر مشاهده می شود ، دور بزنید.

این سفر ، از چارچوب امگا-T ، از طریق Frida Diagnostics ، به این راه حل رله بصری ، شیرجه عمیق من به بازی گربه و ماوس اتوماسیون موبایل و امنیت بود. این امر نیاز مداوم مدافعان را برای تفکر فراتر از دفاع سنتی برجسته می کند و چگونه مهاجمان ممکن است با سیستم های خود از نظر بصری تعامل داشته باشند.

با تشکر از شما برای دنبال کردن! امیدوارم که این مسئله در مورد چالش ها و امکانات عملی در تحقیقات پیشرفته امنیت موبایل روشن شود.


من و تحقیقات کامل را پیدا کنید:

کپی رایت © 2025 NeverLow512. کلیه حقوق محفوظ است.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا