یک رویکرد جدید، یک عامل تست نفوذ مبتنی بر LLM را مجبور میکند تا به جای صرفاً ادعای وقوع یک رخنه، آن را اثبات کند؛ این کار با استفاده از نانسهای (nonce) چالش-پاسخ انجام میشود که مثبتهای کاذب را حذف میکنند. این تکنیک که در چارچوب HALO نمایش داده شده است، عبارت «به نظر میرسد شل دریافت کردهایم» را به «ما واقعاً یک شل داریم» تبدیل میکند.
چرا رخنههای مثبت کاذب اهمیت دارند
موتورهای اکسپلویت خودکار که بر پایه مدلهای زبانی بزرگ ساخته شدهاند، میتوانند در یک بار اجرا، دهها مورد «موفقیتآمیز» در تسخیر پورتها را تولید کنند. بسیاری از سرویسها رشتههایی مانند uid=0 را در بنرهای خود بازمیگردانند و یک هدف طراحیشده میتواند بدون اجرای کد مهاجم، آن خروجیها را تقلید کند. وقتی عامل (agent) به این بازگشتها اعتماد میکند، هر تصمیم بعدی — چه برای چرخش (pivot)، چه استخراج داده یا حرکت عرضی (lateral movement) — بر پایه یک دروغ بنا میشود. تیمهای امنیتی ساعتها وقت خود را صرف تعقیب مواضع کاذب میکنند و پاسخدهندگان به حوادث ممکن است تهدیدهای واقعی را به اشتباه اولویتبندی کنند.
تبدیل ادعا به اثبات
این راهکار از ترفندهای کلاسیک احراز هویت الگوبرداری میکند. پیش از اجرای اکسپلویت، سیستم مهاجم یک توکن منحصربهفرد یا نانس (nonce) تولید کرده و آن را در پیلود قرار میدهد. اکسپلویت باید دقیقاً همان توکن را بازگرداند تا کنترلکننده بتواند نتیجه را به عنوان یک رخنه واقعی بپذیرد. یک بنر جعلی نمیتواند نانس را حدس بزند؛ بلکه باید کد مهاجم را اجرا کند تا توکن را در پاسخ بگنجاند. اگر دادههای بازگشتی فاقد نانس مطابقتیافته باشند، تلاش به عنوان یک مثبت کاذب رد میشود.
این تغییر، مدل تأیید را از «خروجی درست به نظر میرسد» به «خروجی اجرای کد را اثبات میکند» تغییر میدهد. این کار سوگیری خوشبینی (optimism bias) را که گریبانگیر ابزارهای تهاجمی خودکار است، از بین میبرد.
ساخت یک نردبان تحویل قابل اعتماد
رساندن پیلود به هدف همچنان نیازمند یک زنجیره تحویل مستحکم است. HALO سه مسیر رایج را دستهبندی میکند:
- Reverse shells – میزبانِ تسخیرشده، یک اتصال به سمت شنودگری (listener) که تحت کنترل مهاجم است برقرار میکند. این روش زمانی مفید است که ترافیک ورودی مسدود باشد.
- Bind shells – مهاجم مستقیماً به یک سرویس شنودگر در هدف متصل میشود. این روش زمانی کار میکند که فیلترهای خروجی سست باشند.
- Blind callbacks – یک سیگنال یکطرفه (مانند درخواست DNS) که اجرای کد را در محیطهای بسیار محدود، جایی که هیچ کانال مستقیمی قابل باز شدن نیست، تأیید میکند.
هر مرحله از این نردبان باید نانس را حفظ کند، در غیر این صورت مرحله اثبات در مراحل بعدی با شکست مواجه میشود.
تضمین اکسپلویتهای خودکفا
منبع دیگر اعتماد کاذب، اتکا به کتابخانههای خارجی است که ممکن است در هدف موجود نباشند. HALO تمام اجزای مورد نیاز را پیش از ارسال، در یک فایل واحد بستهبندی میکند. سپس این بسته در یک سندباکس که عمداً فاقد وابستگیهای اصلی است، آزمایش میشود. اگر اکسپلویت همچنان اجرا شود، یعنی آن مصنوع (artifact) واقعاً خودکفا است و میتوان در یک سیستم با محدودیتهای شدید به آن اعتماد کرد.
پاکسازی ردپای توسعه
نویسنده هنگام آمادهسازی برای انتشار عمومی، متوجه شد که آدرسهای IP واقعی در تاریخچه Git باقی ماندهاند. یک درخت کاری (working tree) پاک، آن سوابق را پاک نمیکند؛ زیرا Git تمام کامیتها را نگه میدارد. نویسنده مخزن را به یک کامیت واحد و پاک بازنویسی کرد و آدرسهای لو رفته را با محدودههایی که فقط برای مستندات تعریف شدهاند (طبق RFC 5737، مثلاً 192.0.2.0/24) جایگزین نمود. این کار از افشای تصادفی زیرساختهای عملیاتی هنگام اشتراکگذاری ابزار جلوگیری میکند.
قوانین کاربردی برای ابزارهای امنیتی
- در هر فیکسچر تست از محدودههای IP مخصوص مستندات استفاده کنید.
- اطلاعات حساس (secrets) و فایلهای محدوده (scope files) را از کامیت اولیه حذف کنید.
- برای تأیید هر رخنه ادعا شده، از نانسهای چالش-پاسخ استفاده کنید.
- دقیقاً همان فایلی را که ارسال خواهد شد، اعتبارسنجی کنید، نه یک اسکریپت مرتبط اما متفاوت را.
اثبات بر خوشبینی برتری دارد. HALO با مجبور کردن یک عامل تست نفوذ خودکار به ارائه یک توکن قابل تأیید، نشان میدهد که یک رخنه تنها زمانی رخنه است که هدف بتواند ثابت کند کد مهاجم را اجرا کرده است. ابتدا دروازه ساخته میشود؛ هر چیز دیگری پس از آن میآید.
