
خادم DNS سلبي يكتشف حاويات تخزين سحابية مكشوفة (AWS S3، GCP، Azure) عن طريق حل استعلامات DNS، وتتبع سلاسل CNAME، والإبلاغ عن عمليات استيلاء محتملة على النطاقات الفرعية أثناء عملية الاستطلاع.
s3dns هو خادم DNS خفيف الوزن يساعد في اكتشاف حاويات التخزين السحابية (AWS S3 و Google Cloud Storage و Azure Blob) عن طريق تحليل طلبات DNS، وتتبع سجلات CNAME، ومطابقة أنماط عناوين الحاويات المعروفة.
إنها أداة مفيدة لـ مختبرين الاختراق، صيادي الثغرات، و محللي أمن السحابة الذين يرغبون في التقاط حاويات سحابية مكشوفة أثناء تحليل حركة DNS.
إذا وفر لك S3DNS وقتًا في جلسة استطلاع، فكر في منحه ⭐️ — فهذا يساعد الآخرين على العثور على المشروع.
CACHE_SIZE (الافتراضي: 1000 إدخال، اضبط على 0 لتعطيل).RATE_LIMIT (الافتراضي: 100 طلب/ثانية، اضبط على 0 لتعطيل).NXDOMAIN، يقوم S3DNS بوضع علامة عليه كـ استيلاء محتمل على النطاق. يشير هذا إلى سجل DNS معلق يشير إلى حاوية غير مسجلة يمكن للمهاجم تسجيلها.max_cname_depth.AZURE_IP_RANGES=false أو AWS_IP_RANGES=false (الافتراضي هو true).regex_patterns والأنماط المضمنة إلى مجلد patterns كملفات YAML. يمكنك إضافة أنماطك الخاصة.
regex_.53 (UDP و TCP)يستمع S3DNS على المنفذ 53 (UDP و TCP) لاستعلامات DNS. لكل طلب يقوم بـ:
1.1.1.1) — عبر UDP للعملاء UDP، وعبر TCP للعملاء TCPبالتوازي، يقوم بـ:
s3dns.log⚡ استخدم هذا كـ DNS الخاص بك أثناء الاستطلاع، وسيكشف بشكل سلبي عن الحاويات السحابية ومرشحي الاستيلاء لكل نطاق تحله أدواتك أو متصفحك.
ستحتاج فقط إلى أحد ما يلي:
مطلوب فقط إذا كنت تريد تشغيله محليًا باستخدام Python
git clone https://github.com/olizimmermann/s3dns.git
cd s3dns
(يوصى باستخدام بيئة افتراضية)
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
يتطلب المنفذ 53 صلاحيات مرتفعة:
sudo python s3dns.py
إذا ادعى sudo وجود وحدة مفقودة، جرب: sudo venv/bin/python s3dns.py
docker build -t ozimmermann/s3dns:latest .أسهل طريقة للبدء مع S3DNS.
docker pull ozimmermann/s3dns:latest
docker run --rm -p 53:53/udp -p 53:53/tcp \
-v "./bucket_findings/:/app/buckets/" \
--name "s3dns" \
ozimmermann/s3dns:latest
docker build -t ozimmermann/s3dns:latest .
docker run --rm -p 53:53/udp -p 53:53/tcp \
-v "./bucket_findings/:/app/buckets/" \
--name "s3dns" \
ozimmermann/s3dns:latest
يتم حفظ النتائج:
./bucket_findings/عند استخدام S3DNS على نفس الجهاز الذي تجري فيه التحليل، قد يساعد تعيين العلم --network host:
docker run --rm -p 53:53/udp -p 53:53/tcp \
-v "./bucket_findings/:/app/buckets/" \
--network host \
--name "s3dns" \
ozimmermann/s3dns:latest
نظرًا لأن المنفذ 53 يتطلب صلاحيات مرتفعة، قد يحتاج بعض المستخدمين (مثل مستخدمي Mac) إلى sudo:
sudo docker run --rm -p 53:53/udp -p 53:53/tcp \
-v "./bucket_findings/:/app/buckets/" \
--name "s3dns" \
ozimmermann/s3dns:latest
قم بتعيين محلل DNS الخاص بنظامك أو أداتك إلى مثيل S3DNS الخاص بك.
أثناء التصفح أو الفحص العشوائي لهدفك، يقوم S3DNS بتحليل كل نطاق ويخبرك إذا كان يحل إلى:
- حاوية AWS S3
- حاوية GCP
- حاوية Azure Blob
- أي من 13 مزود تخزين سحابي آخر مدعوم
يقوم بتتبع سجلات CNAME، لذلك إذا كان نطاق يشير إلى
cdn.example.com، والذي بدوره يشير إلى حاوية سحابية، فسيلتقط ذلك أيضًا.كما أنه يضع علامة على استيلاءات النطاق الفرعي المحتملة — إذا كان نطاق يطابق نمط تخزين سحابي ولكن الهدف غير موجود (NXDOMAIN)، يتم تمييز السجل المعلق كمرشح محتمل للاستيلاء.
استخدمه بشكل سلبي أثناء تحليل موقع لاكتشاف الحاويات المكشوفة وفرص الاستيلاء دون استجواب نشط.
يمكنك تعديل السلوك عبر أعلام سطر الأوامر، أو متغيرات البيئة، أو عن طريق تعديل s3dns.py.
الأولوية لكل خيار هي: علم سطر الأوامر > متغير البيئة > المطالبة التفاعلية / الافتراضي. التشغيل بدون أعلام يعمل تمامًا كما كان من قبل.
قم بتشغيل python s3dns.py -h للحصول على القائمة الكاملة: