حمله مزرعه کپچا (CAPTCHA Farm Attack) واقعاً چگونه است؟
کپچاها چیزهایی هستند که بیشتر ما هنگام وبگردی در اینترنت با آنها برخورد کردهایم. گاهی از ما خواسته میشود چراغهای راهنمایی را در تصاویر تشخیص دهیم، یک معجل کوچک را حل کنیم، یا صرفاً برای تأیید اینکه...
کپچاها چیزهایی هستند که بیشتر ما هنگام وبگردی در اینترنت با آنها برخورد کردهایم. گاهی از ما خواسته میشود چراغهای راهنمایی را در تصاویر تشخیص دهیم، یک معما کوچک را حل کنیم، یا صرفاً با تیک زدن یک کادر تأیید کنیم که انسان هستیم. وبسایتها از این چالشها برای کمک به تفکیک کاربران واقعی از رباتهای خودکار استفاده میکنند.
اما یک مشکل جالب در این رویکرد وجود دارد. چه زمانی اتفاق میافتد که یک ربات نیازی به حل کردن خود کپچا ندارد، زیرا یک شخص واقعی میتواند آن را به جای ربات حل کند؟
مزارع کپچا دقیقاً به همین صورت کار میکنند. مهاجمان از سرویسهایی استفاده میکنند که در آنها افراد واقعی، چالشهای کپچا را از طرف برنامههای خودکار حل میکنند. شخصی که چالش را کامل میکند انسان است، اما فعالیت پشت آن ممکن است همچنان توسط یک ربات کنترل شود. این کار باعث میشود شناسایی درخواستهای مشکوک برای وبسایتها سختتر شود، حتی زمانی که سیستم کپچای آنها به درستی کار میکند.
در اینجا، ما بررسی میکنیم که حملات مزرعه کپچا چگونه کار میکنند، چرا مهاجمان از حلکنندههای انسانی استفاده میکنند و چه چیزی تشخیص این حملات را دشوار میسازد. همچنین برخی از اقدامات امنیتی را که توسعهدهندگان میتوانند برای شناسایی فعالیتهای مشکوک و محافظت بهتر از وبسایتهای خود استفاده کنند، مرور خواهیم کرد.
آنچه در این مقاله بررسی خواهیم کرد:
- حمله مزرعه کپچا چیست؟
- پشت صحنه: زیرساخت چهاربخشی
- روند یک حمله: بررسی گامبهگام
- چرا مهاجمان به حلکنندههای انسانی متکی هستند؟
- مزارع کپچا چه اهدافی را هدف قرار میدهند؟
- چرا متوقف کردن این حملات دشوار است؟
- چگونه وبسایتها میتوانند از خود دفاع کنند؟ تلهمتری رفتاری و بیومتریک، اثر انگشت شبکه و دستگاه، مدلهای مدرن محدودسازی نرخ (Rate-Limiting)، تشخیص ناهنجاری پس از احراز هویت
- تلهمتری رفتاری و بیومتریک
- اثر انگشت شبکه و دستگاه
- مدلهای مدرن محدودسازی نرخ (Rate-Limiting)
- تشخیص ناهنجاری پس از احراز هویت
- امنیت فراتر از کادر تأیید (Checkbox)
- نتیجهگیری
حمله مزرعه کپچا چیست؟
برای درک نحوه عملکرد این حملات، مفید است که بین دو روش اصلی که مهاجمان با دروازههای اعتبارسنجی مقابله میکنند، تمایز قائل شویم: تشخیص ماشینی و برونسپاری انسانی.
در یک حمله حل کپچای خودکار، مهاجم از مدلهای بینایی ماشین، تشخیص نوری حروف (OCR) یا شبکههای عصبی برای تجزیه تصویر چالش و حدس زدن پاسخ بدون دخالت انسان استفاده میکند.
این رویکرد سریع و از نظر محاسباتی ارزان است، اما هر زمان که ارائهدهندگان امنیت، تحریفهای بصری خود را بهروزرسانی کنند، پازلهای منطقی تعاملی معرفی کنند یا کینماتیک موش (حرکات ماوس) شبیه به انسان را ارزیابی کنند، مکرراً با شکست مواجه میشود.
یک حمله مزرعه کپچا مسیر متفاوتی را در پیش میگیرد. مهاجم به جای تلاش برای فریب دادن الگوریتم دفاعی با نرمافزار، چالش را به یک سرویس حلکننده انسانی هدایت میکند. این کسبوکارهای تجاری شبکههای بزرگی از کارگران انسانی را حفظ میکنند که به طور مداوم و شبانهروزی پازلها را حل میکنند. با وارد کردن یک انسان به چرخه، مهاجم آنچه را که باید یک مانع فنی باشد، به یک خط لوله نیروی کار برونسپاریشده تبدیل میکند.
این حمله رمزنگاری را نمیکند و کد چالش زیرساختی را مهندسی معکوس نمیکند. در عوض، متکی به یک حمله رله کپچا است: نرمافزار سرعت و مقیاس حمله را مدیریت میکند، در حالی که چشمان واقعی انسان اعتبارسنجی شناختی مورد انتظار وبسایت را فراهم میکند.
پشت صحنه: زیرساخت چهاربخشی
یک مزرعه کپچای کاربردی نه یک گروه اتفاقی از هکرهای سرکش است و نه یک اسکریپت جعبه سیاه مبهم. این یک زیرساخت تجاری و چندلایه است که حول پروتکلهای استاندارد توسعه وب ساخته شده است.
چهار جزء مجزا با هم کار میکنند تا رله در عرض چند ثانیه اتفاق بیفتد.
مورد اول، اسکریپت خودکار مهاجم است. این ربات کلاینت معمولاً به صورت بدون سر (Headless) از طریق ابزارهای اتوماسیون مرورگر مانند Puppeteer، Playwright یا کتابخانههای کلاینت سفارشی HTTP اجرا میشود. اسکریپت به یک پلتفرم هدف، مانند پورتال ثبتنام کاربر، میرود و نامهای کاربری، رمزهای عبور و فیلدهای جمعیتی را با سرعت ماشین پر میکند تا زمانی که به یک چالش دفاعی برخورد کند.
مورد دوم، رابط برنامهنویسی کاربردی (API) پلتفرم حل کپچا است. پلتفرمهای حلکننده تجاری به عنوان واسطهگر بین اپراتورهای سوءاستفادهگر و کارگران دستی عمل میکنند. هنگامی که اسکریپت مهاجم با یک چالش مواجه میشود، کلید عمومی سایت، آدرس اینترنتی (URL) چالش و داراییهای بصری را رهگیری کرده و آنها را در یک درخواست HTTP POST به سمت API سرویس حلکننده بستهبندی میکند.
مورد سوم، نیروی کار توزیعشده انسانی است. کارگران از طریق داشبوردهای وب اختصاصی، اپلیکیشنهای موبایل یا افزونههای مرورگر به این سرویسها دسترسی پیدا میکنند. هنگامی که API وظیفهای را از سوی یک مهاجم دریافت میکند، تصویر را مستقیماً روی صفحه نمایش کارگر ارسال میکند. کارگر دوچرخهها یا شیرهای آتشنشانی را شناسایی میکند، کاراکترهای تحریفشده را تایپ میکند، یا اسلایدر پازل را به مکان مناسب میکشد و دستمزدی بسیار ناچیز، اغلب بین ۰.۵۰ تا ۲.۰۰ دلار به ازای هر هزار پازل حلشده، به دست میآورد.
مورد چهارم، تحویل محتوا (Payload) به هدف است. هنگامی که کارگر راهحل صحیح را ارسال میکند، API واسطه توکن اعتبارسنجی تولیدشده را به اسکریپت مهاجم برمیگرداند. اسکریپت این توکن اعتبارسنجی را در فیلد فرم مخفی وبسایت هدف تزریق میکند و درخواست ارسال نهایی را فعال میکند. برای سرور دریافتکننده، این درخواست حامل یک امضای اعتبارسنجی معتبر است که توسط یک جلسه انسانی واقعی تولید شده است.
روند یک حمله: بررسی گامبهگام
برای دیدن نحوه تعامل این بخشها در عمل، یک کمپین پر کردن اعتبار (Credential Stuffing) یا ثبتنام انبوه حساب کاربری را در برابر یک سرویس آنلاین در نظر بگیرید.
- آغاز: اسکریپت مهاجم یک درخواست HTTP برای برقراری یک جلسه با صفحه ثبتنام هدف ارسال میکند و فیلدهای ورودی را با اطلاعات کاربری تولیدشده پر میکند.
- فعالسازی چالش: برنامه هدف درخواست ورودی را ارزیابی میکند. با تشخیص یک آدرس IP ناآشنا یا اثر انگشت ناقص مرورگر، یک پنجره (Modal) کپچا را فعال میکند و توالی ثبتنام را متوقف میکند تا زمانی که یک توکن راهحل معتبر ارائه شود.
- استخراج و ارسال: ربات DOM صفحه را میخواند، پارامترهای iframe پازل، کلید سایت و محتوای چالش را ضبط میکند و این دادهها را به API مزرعه کپچا هدایت میکند.
- اجرای انسانی: سیستم صفبندی مزرعه، چالش را به یک کارگر انسانی فعال اختصاص میدهد. کارگر پازل را در میانگین زمان پاسخگویی بین ۱۰ تا ۲۵ ثانیه کامل میکند.
- بازیابی توکن: پاسخ کارگر یک توکن اعتبارسنجی رسمی از سرور مبدأ ارائهدهنده کپچا به دست میدهد. API مزرعه حلکننده این رشته امضا شده را به اسکریپت مهاجم برمیگرداند.
- نهاییسازی فرم: اسکریپت، توکن را در بار مفید (payload) پاسخ صفحه (مانند g-recaptcha-response) تزریق کرده و فرم را ارسال میکند. بکاند وبسایت، ایپیآی (API) تأیید هویت ارائهدهنده کپچا را کوئری میکند، تأییدیهای مبنی بر موفقیتآمیز بودن حل چالش دریافت میکند و حساب کاربری را ایجاد میکند.
کل این چرخه بسیار پیش از فرا رسیدن زمانهای معمول انقضای نشست (session timeouts) به پایان میرسد و سرور هدف را بدون هیچگونه ناهنجاری بصری آشکاری برای علامتگذاری باقی میگذارد.
چرا مهاجمان به حلکنندگان انسانی تکیه میکنند؟
ساخت و نگهداری شبکههای عصبی سفارشی برای دور زدن چالشهای تصویری مدرن مستلزم تلاشهای توسعهای مداوم است. ارائهدهندگان دفاعی مکرراً الگوهای نویز، زوایای دوربین، الگوریتمهای اعوجاج و پازلهای معنایی را بهطور خاص برای مختل کردن دستهبندیکنندگان خودکار تصویر تغییر میدهند.
حلکنندگان انسانی این مسابقه تسلیحاتی را بهطور کامل دور میزنند، زیرا قشر بینایی مغز انسان زمینه معنایی را بدون هیچ تلاشی پردازش میکند. یک انسان فوراً تشخیص میدهد که چه چیزی یک «موتورسیکلت» را تشکیل میدهد، حتی اگر تصویر بهطور نامناسبی برش خورده باشد، تا حدودی توسط شاخ و برگ خیابان پوشانده شده باشد یا تحت نور عجیبی نمایش داده شود.
این قابلیت انطباقپذیری انسان توسط تحقیقات امنیتی گستردهای پشتیبانی میشود. در یک مطالعه بنیادی با عنوان تلاش برای درک امنیت کپچاهای تصویری مدرن و خدمات زیرزمینی حل کپچا، محققان اکوسیستم تجاری را در ۱۵۲ پلتفرم حل بررسی کردند. آنها دریافتند که خدمات حل انسانی به نرخهای دقت تقریباً بینقصی در چالشهای تصویری پیچیده و متنوع دست یافتهاند؛ جایی که حلکنندههای بینایی ماشینِ صرفاً خودکار بارها با مشکل مواجه شده یا به مرور زمان کارایی خود را از دست دادهاند.
برونسپاری این مشکل نیز به طرز چشمگیری کمهزینه است. از آنجا که استخرهای نیروی کار از مناطق دارای هزینههای زندگی پایین تأمین میشوند، مهاجمان میتوانند هزاران ایستگاه بازرسی حفاظتی را با قیمتی کمتر از هزینه یک فنجان قهوه دور بزنند. روند کار بسیار مقیاسپذیر است: نرمافزار میلیونها اتصال را مدیریت میکند، در حالی که نیروی انسانی تنها برای چند ثانیه مورد نیاز جهت عبور از مانع، بر اساس تقاضا فرا خوانده میشود.
مزارع کپچا چه چیزی را هدف قرار میدهند؟
مزارع کپچا به ندرت به عنوان حملات مستقل عمل میکنند. در عوض، آنها به عنوان یک عامل عملیاتی برای کمپینهای سوءاستفاده گستردهتر در سراسر وب عمل میکنند.
ابتدا، آنها ایجاد انبوه حسابهای کاربری جعلی را امکانپذیر میسازند. بازیگران مخرب میلیونها پروفایل یکبار مصرف را در شبکههای اجتماعی، شبکههای دوستیابی و پلتفرمهای توسعهدهندگان ایجاد میکنند تا لینکهای فیشینگ را توزیع کنند، موتورهای جستجو را اسپم کنند یا کمپینهای اطلاعات نادرست هماهنگ را اجرا کنند.
آنها همچنین پر کردن اعتبارنامه (credential stuffing) را تسهیل میکنند. هنگامی که مهاجمان پایگاههای دادهای از نامهای کاربری و رمزهای عبور لو رفته را روی پورتالهای بانکی یا خردهفروشی تست میکنند، سیستمهای دفاعی معمولاً پس از چند تلاش ناموفق، یک کپچا نمایش میدهند. ایپیآیهای حلکننده به باتهای تست اعتبارنامه اجازه میدهند تا به چرخه زدن در میان اعتبارنامههای ورود بدون وقفه ادامه دهند.
انبار کردن موجودی و خرید و فروش غیرقانونی بلیت (scalping) مورد استفاده رایج دیگری است. رویدادهای فروش ویژه خردهفروشی با تقاضای بالا، بلیتهای کنسرت و رزروهای مسافرتی اهداف مکرری هستند. محققان امنیتی که ترافیک رباتهای دنیای واقعی را در DataDome ردیابی کردهاند، عملیاتی را مستند کردند که در آن یک مهاجم اتوماسیون ربات را با یک مزرعه کپچا ترکیب کرد تا ۱۸ میلیون تلاش خودکار برای خرید بلیت را سازماندهی کند و با موفقیت از تأیید هویت تعاملی خط مقدم عبور کند.
و آنها استخراج دادهها (scraping) را در مقیاس وسیع امکانپذیر میسازند. خزندههای وب که قیمتهای رقابتی، پایگاههای داده دایرکتوری یا مالکیت فکری را جمعآوری میکنند، هر زمان که صفحات جستجو و کشف محافظتشده دروازههای چالشی را ارائه دهند، مکرراً از ایپیآیهای حلکننده استفاده میکنند.
در هر مورد، مزرعه کپچا سوءاستفاده زیرین را اجرا نمیکند: بلکه صرفاً تله تأیید هویت خاصی را که برای متوقف کردن آن در نظر گرفته شده بود، حذف میکند.
چرا متوقف کردن این حملات دشوار است؟
متوقف کردن مزارع کپچا ذاتاً دشوار است زیرا آنها از فرض اصلی پشت امنیت استانداردِ چالش-پاسخ سوءاستفاده میکنند: اینکه موجودیتی که به چالش پاسخ میدهد همان موجودیتی است که درخواست را ارسال میکند.
این نقطه کور سیستمیک در مقاله پژوهشی درباره امنیت و قابلیت استفاده کپچاهای بازی شناختی پویا تحلیل شده است که ارزیابی میکند چگونه قالبهای پازل در برابر سیستمهای رله مقاومت میکنند. این مطالعه نشان داد که صرفنظر از اینکه یک تست چقدر از نظر شناختی جذاب، بازیسازی شده (gamified) یا از نظر فنی پویا باشد، معماریهای رله با موفقیت پردازش شناختی را از کلاینت درخواستکننده جدا میکنند. سرور یک توکن راهحلِ از نظر ریاضی مشروع و تولید شده توسط انسان را دریافت میکند و این امر خود پازل را عملاً بیربط میسازد.
همچنین، مهاجمان درخواستهای کلاینت خود را از طریق شبکههای پروکسی مسکونی هدایت میکنند. درخواست اولیه HTTP از یک آدرس IP مسکونی میآید، کپچا توسط یک مرورگر خودکار که پروفایلهای سختافزاری رایج را شبیهسازی میکند رندر میشود و راهحل از راه دور تکمیل میشود. سرور مدافع نمیتواند مجاورت فیزیکی بین حلکننده و کلاینت درخواستکننده را تأیید کند و این امر یک مزیت نامتقارن برای مهاجم ایجاد میکند.
چگونه وبسایتها میتوانند از خود دفاع کنند؟
از آنجا که حلکنندگان انسانی میتوانند به راحتی چالشهای بصری و شناختی را حل کنند، تلقی کردن یک پازل حلشده به عنوان تضمینی قطعی برای قابل اعتماد بودن، دیگر یک استراتژی دفاعی کارآمد نیست. برنامههای وب به یک مدل دفاع در عمق (defense-in-depth) نیاز دارند که رفتارها را قبل، در طول و مدتها پس از ظاهر شدن یک چالش تأیید هویت مانیتور کند.
تلهمتری رفتاری و بیومتریک
اسکریپتهای خودکار میتوانند به راحتی رزولوشنهای صفحه و رشتههای کاربر-عامل (user-agent strings) را جعل کنند، اما بازتولید حرکت ارگانیک نشانگر ماوس (cursor) انسان در سراسر یک صفحه به تلاش بسیار بیشتری نیاز دارد. کاربران واقعی ریز-انحرافات، منحنیهای شتاب متغیر، مکثها و لرزشهای مداوم ماوس را نشان میدهند.
هنگامی که حمله مزرعه کپچا رخ میدهد، اغلب یک عدم تطابق رفتاری آشکار وجود دارد: فیلدهای فرم فوراً یا از طریق رویدادهای اسکریپتشده صفحه کلید پر میشوند، و به دنبال آن یک مکث ناگهانی در حالی که کارگر راه دور پازل را حل میکند رخ میدهد و سپس تزریق فوری توکن انجام میشود. نظارت بر تلهمتری در سراسر کل چرخه عمر صفحه، این پیوند مصنوعی را آشکار میکند.
اثر انگشت شبکه و دستگاه
مدافعان باید زمینهای فراتر از تعامل تکصفحهای را ارزیابی کنند. بازرسی رفتار بستههای TCP/IP، اثر انگشتهای TLS (اثر انگشتهای JA3/JA4)، پارامترهای فریم HTTP/2 و ایپیآیهای دستگاه نشان میدهد که آیا محیط زمان اجرای زیرین یک مرورگر مصرفکننده استاندارد است یا یک ابزار اتوماسیون سازمانیافته که در داخل یک مرکز داده اجرا میشود.
مدلهای مدرن محدودسازی نرخ (Rate-Limiting)
اتکای صرف به حل پازل اغلب موانع دسترسی برای کاربران واقعی ایجاد میکند و در عین حال کار کمی برای متوقف کردن مهاجمان تامین مالی شده انجام میدهد. همانطور که در تحقیقات منتشر شده توسط انجمن ماشینهای محاسباتی (Association for Computing Machinery) در مورد محدودسازی نرخ اثبات کار (Proof-of-Work) و mCaptcha بررسی شده است، معماریهای دفاعی میتوانند پازلهای اثبات کار رمزنگاری را در لایه انتقال اعمال کنند.
سیستمهای دفاعی با مجبور کردن پردازنده کلاینت متصل به محاسبه مسائل ریاضی پیچیده متناسب با بار ترافیکی فعلی پلتفرم، هزینه اقتصادی و محاسباتی اجرای کمپینهای خودکار را افزایش میدهند و بدون مطالبه حل دستی پازل توسط انسان، حملات را خنثی میکنند.
تشخیص ناهنجاری پس از احراز هویت
گذراندن یک چالش احراز هویت هرگز نباید اعتماد بیقید و شرط اعطا کند. معماریهای وب باید فعالیتهای پس از ورود را برای اقدامات ناهنجار مانیتور کنند:
- آیا یک حساب کاربری دقیقاً بلافاصله پس از ثبتنام، صدها کوئری داده در دقیقه را امتحان میکند؟
- آیا بدون بارگیری استایلشیتها یا تصاویر دارایی مرتبط، مستقیماً به سمت نقاط پایانی خرید با ارزش بالا هدایت میشود؟
- آیا نشست (session) بین بارگذاری اولیه صفحه و تراکنش نهایی، محدودههای IP و موقعیتهای جغرافیایی را تغییر میدهد؟
شناسایی این سیگنالها به تیمهای امنیتی اجازه میدهد تا نشستها را نامعتبر کنند، حتی اگر چالش اولیه به طور تمیزی حل شده باشد.
امنیت فراتر از چکباکس
مزارع کپچا نشان میدهند که چرا وبسایتها نمیتوانند برای دور نگه داشتن حملات خودکار به یک بررسی امنیتی واحد تکیه کنند. حتی زمانی که فردی یک کپچا را با موفقیت تکمیل میکند، درخواست ممکن است همچنان بخشی از یک عملیات خودکار باشد.
کپچاها به گونهای طراحی شدهاند که بررسی کنند آیا یک فرد میتواند یک چالش خاص را حل کند یا خیر. اما آنها نمیتوانند تشخیص دهند که آیا آن فرد کاربر واقعی است که سعی در دسترسی به وبسایت دارد یا کسی است که از طرف یک بات چالش را حل میکند. این یکی از دلایلی است که مزارع کپچا میتوانند اقدام امنیتی را که بهطور معمول ترافیک خودکار را متوقف میکند، دور بزنند.
برای توسعهدهندگان، این بدان معناست که یک کپچای تکمیلشده باید صرفاً به عنوان بخشی از فرآیند تأیید هویت در نظر گرفته شود. وبسایتها همچنین باید رفتار کاربر، فعالیت شبکه و درخواستهای مشکوک را برای شناسایی حملات احتمالی مانیتور کنند. ترکیب این بررسیها تشخیص فعالیتهایی را که یک کپچا به تنهایی ممکن است از دست بدهد، آسانتر میکند.
نتیجهگیری
مزارع کپچا تشخیص این موضوع را برای وبسایتها دشوار میکنند که آیا یک چالش تأیید هویت تکمیلشده واقعاً از یک کاربر مشروع سرچشمه گرفته است یا خیر. حتی زمانی که یک فرد واقعی پازل را حل میکند، درخواست ممکن است همچنان بخشی از یک حمله خودکار باشد.
برای توسعهدهندگان، این بدان معناست که ارزش دارد به اتفاقاتی که قبل و بعد از تکمیل یک کپچا (CAPTCHA) رخ میدهد توجه کنند. مواردی مانند تلاشهای غیرعادی برای ورود، درخواستهای مکرر، تغییرات غیرمنتظره در رفتار کاربر و فعالیتهای مشکوک حساب کاربری میتوانند سرنخهای مفیدی ارائه دهند.
استفاده از کپچا در کنار محدودسازی نرخ درخواست (rate limiting)، پایش رفتاری و سایر بررسیهای امنیتی میتواند به وبسایتها کمک کند تا این حملات را با اثربخشی بیشتری شناسایی کنند. همچنین با توجه به تغییر روشهای مهاجمان، بازبینی منظم این لایههای حفاظتی از اهمیت بالایی برخوردار است.
نظر مهندس بهمن آبادی: مزارع کپچا با جداسازی «حل پازل» از «ارسال درخواست»، محدودیتهای مکانیزاسیون را دور میزنند؛ بنابراین تکیه صرف به چکباکسها دیگر امنیت پلتفرم را تضمین نمیکند. به عنوان یک مدرس، تأکید میکنم که معماری امنیتی ما باید فراتر از لایه ارائه رفته و با پیادهسازی تلهمتری رفتاری، اثر انگشت دقیق دستگاه و مانیتورینگ پس از احراز هویت، جلوی این ناهنجاریها را بگیرد. کپچا تنها یک سیگنال اولیه است، نه مجوز قطعی اعتبار!
منبع: https://www.freecodecamp.org/news/captcha-farm-attack/