مبانی شناسایی: ترسیم سطح حمله
شناسایی غیرفعال و فعال در یک پروژه واقعاً چطور کار میکنند، و چرا بخشهای حوصلهسربر، ارزیابیها را میبرند.
شناسایی همان بخشی از پروژه است که همه میخواهند از آن رد شوند و هیچکس نباید. اکسپلویتها افتخارش را میبرند، اما یافتهها به این بستگی دارند که چقدر کامل هدف را از اول ترسیم کردهای. این نوشته یک روال شناسایی تکرارپذیر را مرور میکند که روی هر اسکوپ مجازی میتوانی اجرا کنی.
این تکنیکها را فقط روی سیستمهایی اجرا کن که مالکشان هستی یا مجوز کتبی صریح برای تستشان داری. اسکن غیرمجاز در بیشتر حوزههای قضایی جرم است.
اول غیرفعال
شناسایی غیرفعال به چیزی که از قبل اجازهاش را نداری دست نمیزند — دادهٔ عمومی را میخواند. با لاگهای شفافیت گواهی (Certificate Transparency) شروع کن تا بدون فرستادن حتی یک بسته به هدف، زیردامنهها را شمارش کنی:
# Pull subdomains from crt.sh for a domain
curl -s "https://crt.sh/?q=%25.example.com&output=json" \
| jq -r '.[].name_value' \
| sort -uهمین یک قدم اغلب هاستهای staging، پنلهای ادمین فراموششده و قراردادهای نامگذاری داخلی را آشکار میکند که بقیهٔ ارزیابی را شکل میدهند.
شمارش فعال
وقتی اسکوپ معتبری داشتی، شمارش فعال جزئیات را پر میکند. چیزی را که پیدا کردی resolve کن، بعد بهدنبال سرویسهای زنده بگرد:
# Resolve a subdomain list and probe for live HTTP services
cat subdomains.txt | dnsx -silent -a -resp \
| httpx -silent -title -status-code -tech-detectیک مدل از هدف بساز
خروجی شناسایی یک انبوه لاگ ابزار نیست — یک مدل از هدف است: چه هاستهایی وجود دارند، چه چیزی اجرا میکنند، چطور به هم مربوطاند. همه را یکجا نگه دار. تیمهایی که باگهای خوب پیدا میکنند همانهاییاند که متوجهِ آن یک هاستی شدند که در الگو جا نمیشد.
در ادامهٔ این سری: تبدیل آن مدل به یک برنامهٔ تست اولویتبندیشده.