subfinder چیست؟
subfinder یک ابزار خط فرمان از مجموعهی ProjectDiscovery است که زیردامنههای یک دامنهی هدف را به روش غیرفعال (passive) شمارش میکند. «غیرفعال» یعنی بهجای فرستادن ترافیک مستقیم و پرحجم به سرورهای هدف، subfinder از منابع عمومیِ داده پرسوجو میکند: گواهیهای Certificate Transparency، پایگاههای DNS منفعل، موتورهای جستوجو و سرویسهای اطلاعاتی متعدد. نتیجه، فهرستی از زیردامنهها با کمترین ردپا روی خود هدف است.
در زمان نگارش این مطلب نسخهی جاری v2.14.0 (۲۷ آوریل) است. این نسخه منبع Sub.md را افزود و منبع Certificate Transparency فیسبوک/متا را حذف کرد، چون Meta آن API بالادستی را متوقف کرد — یادآوری خوبی که پوشش منابع در طول زمان تغییر میکند.
زمینهای که ارزش دانستن دارد: ProjectDiscovery یک شرکت سرمایهگذاریشده است که ابزارهای متنباز (با مجوز MIT) را در کنار یک پلتفرم ابری تجاری ارائه میکند. subfinder آزاد است، اما پوشش کامل آن به کلیدهای API منابع مختلف بستگی دارد.
چرا شمارش غیرفعال، و چرا اول؟
در کشف سطح حمله دو رویکرد وجود دارد: غیرفعال (پرسوجو از دادهی موجود) و فعال (ارسال درخواست به هدف، مثل brute-force نام DNS). subfinder عمداً روی رویکرد غیرفعال تمرکز دارد و همین چند مزیت میسازد:
- ردپای کم روی هدف. در فاز اولیهی یک engagement، هنوز نمیخواهید هشدار سامانههای تشخیص هدف را فعال کنید.
- کشف دارایی فراموششده. منابع تاریخی مثل Certificate Transparency زیردامنههایی را نشان میدهند که تیم عملیات مدتهاست فراموششان کرده — سرور staging قدیمی، پنل ادمین منتشرشده، API نسخهی قبلی.
- سرعت و مقیاس. برای یک دامنهی بزرگ، پرسوجوی غیرفعال در ثانیهها فهرستی میسازد که brute-force فعال ساعتها طول میکشد.
آنچه نمیدانید وجود دارد را نمیتوانید ایمن کنید. بیشتر رخنههای واقعی نه از دل برنامهی اصلیِ خوبمحافظتشده، بلکه از یک زیردامنهی فراموششده و وصلهنشده آغاز میشوند. subfinder دقیقاً همان داراییهای خارج از رادار را روی نقشه میآورد؛ به همین دلیل شمارش زیردامنه پایهی هر برنامهی شناسایی و مدیریت سطح حمله است.
پیکربندی کلید API
subfinder بدون هیچ پیکربندی هم کار میکند و از منابع رایگان نتیجه میگیرد، اما تفاوت پوشش با و بدون کلیدهای API چشمگیر است. بسیاری از منابع پرارزش (سرویسهای اطلاعاتی DNS و امنیتی) به کلید نیاز دارند.
کلیدها در فایل پیکربندی provider تنظیم میشوند که معمولاً در این مسیر قرار دارد:
$HOME/.config/subfinder/provider-config.yamlساختار آن ساده است — برای هر منبع، یک یا چند کلید:
virustotal:
- YOUR_VT_KEY
securitytrails:
- YOUR_ST_KEY
shodan:
- YOUR_SHODAN_KEYاجرای پایه و ذخیرهی خروجی برای مراحل بعد:
subfinder -d example.com -all -o subs.txtفلگ -all همهی منابع پیکربندیشده را فعال میکند. توجه کنید که کلیدهای API دادهی حساساند و نباید در مخزن کد یا گزارش قرار بگیرند.
زنجیرهسازی: قدرت واقعی در ترکیب است
subfinder بهتنهایی فقط یک فهرست نام تولید میکند. ارزش عملی وقتی آزاد میشود که آن را با بقیهی اکوسیستم ProjectDiscovery زنجیر کنید. یک خط لولهی رایج:
subfinder -d example.com -all -silent \
| httpx -silent -title -tech-detect -status-code \
| tee live.txtدر این زنجیره:
- subfinder زیردامنهها را کشف میکند.
- httpx (نسخهی
v1.9.0) میزبانهای زنده را جدا میکند و برای هرکدام کد وضعیت، عنوان صفحه و فناوری تشخیصدادهشده را میدهد. فهرست خام زیردامنه اغلب پر از نامهایی است که دیگر resolve نمیشوند؛ httpx آن را به فهرست میزبانهای واقعی تبدیل میکند. - katana (نسخهی
v1.6.1) هر میزبان زنده را میخزد و اندپوینتها را استخراج میکند. - Nuclei فهرست نهایی را برای مسائل شناختهشده جارو میکند.
این همان الگویی است که مدیریت سطح حملهی مدرن بر آن بنا شده: کشف غیرفعال، اعتبارسنجی زنده، خزش، و اسکن مسائل شناختهشده — و سپس تحویل فهرست به آزمونگر برای کار دستی در Burp. برای تصویر کاملتر، ابزارهای بررسی امنیت وبسایت را ببینید.
ابزار مکمل قدرتمند دیگر amass (پروژهی OWASP، نسخهی v5.1.1) است که کشف عمیقتر و همبسته (فعال + غیرفعال، brute-force نام DNS، همبستگی ASN و WHOIS) انجام میدهد اما سنگینتر و کندتر است. رویهی رایج، استفاده از subfinder برای سرعت و نگهداشتن amass برای عمق است.
محدودیتها و اشتباهات رایج
«subfinder همهی زیردامنهها را پیدا میکند.» — نادرست. subfinder فقط زیردامنههایی را مییابد که در منبعی عمومی رد پایی دارند — گواهی TLS صادرشده، رکورد DNS منتشرشده، یا نمایهشدن در یک سرویس. یک زیردامنهی داخلیِ کاملاً خصوصی که هرگز گواهی عمومی نگرفته و در جایی ایندکس نشده، در شمارش غیرفعال ظاهر نمیشود. برای پوشش کامل باید غیرفعال را با شمارش فعال (brute-force نام و امتحان permutationها) ترکیب کرد.
محدودیتهای دیگر:
- پوشش به کلیدهای API بستگی دارد؛ اجرای بدون کلید، فهرست ناقصتری میدهد.
- نتایج شامل نامهای قدیمی و مردهاند؛ بدون عبور از httpx، بخش زیادی از فهرست دیگر زنده نیست.
- subfinder آسیبپذیری تشخیص نمیدهد؛ فقط سطح حمله را نگاشت میکند. کشف و تحلیل با ابزارهای بعدی و آزمونگر انجام میشود.
یک نکتهی حقوقی هم لازم است: شمارش غیرفعال چون از دادهی عمومی استفاده میکند کمریسکتر است، اما مرحلهی بعدی (اتصال زنده، خزش، اسکن) ترافیک مستقیم به هدف میفرستد و نیازمند مجوز است. کشف سطح حمله برای داراییهای خودتان یا با scope مشخص انجام میشود.
پرسشهای متداول
تفاوت شمارش غیرفعال و فعال زیردامنه چیست؟
شمارش غیرفعال از دادهی عمومی موجود (گواهی TLS، DNS منفعل، موتورهای جستوجو) پرسوجو میکند و ردپای کمی روی هدف دارد. شمارش فعال مستقیماً به سرورهای DNS هدف درخواست میفرستد (مثل brute-force نام). subfinder غیرفعال است؛ برای پوشش کامل باید هر دو را ترکیب کرد.
آیا subfinder بدون کلید API کار میکند؟
بله، از منابع رایگان نتیجه میگیرد، اما پوشش ناقصتر است. بسیاری از منابع پرارزش به کلید API نیاز دارند. برای کار حرفهای، کلیدها را در provider-config.yaml تنظیم کنید و اجرای با -all را انتخاب کنید.
چرا کشف زیردامنه برای امنیت مهم است؟
چون آنچه نمیدانید وجود دارد را نمیتوانید ایمن کنید. بیشتر رخنهها از داراییهای فراموششده — سرور staging قدیمی، زیردامنهی وصلهنشده، پنل منتشرشده — آغاز میشوند، نه از برنامهی اصلیِ خوبمحافظتشده. شمارش زیردامنه این نقاط کور را روی نقشه میآورد.
subfinder را چطور با ابزارهای دیگر ترکیب کنم؟
خروجی subfinder را به httpx بدهید تا میزبانهای زنده جدا شوند، سپس به katana برای خزش و به Nuclei برای اسکن مسائل شناختهشده. این خط لوله، هستهی مدیریت سطح حملهی مدرن است و فهرست نهایی را برای آزمون دستی آماده میکند.
