# Password Attacks - هجمات كلمة المرور

## مقدمة

بعد ما المهاجم (attacker) يجمع اسماء المستخدمين (usernames enumeration) بيبدأ يدور علي كلمات المرور علشان يقدر يستولي علي حساب المستخدم (account takeover) , هشرح ايه اشهر الطرق المستخدمة في معرفة كلمات المرور وايه الطرق المستخدمة لتجنب حدوث الهجمات دي

## الاختبار

### 1- هجوم ال password brute forcing

ال password brute forcing هو هجوم بيعتمد علي تجربة عدد كبير من كلمات المرور (password lists) ضد اسم مستخدم (username) واحد او اكثر لمعرفة كلمة المرور الصحيحة, في ادوات كتير ممكن نستخدمها في العملية دية زي thc-hydra, brupsuite, wfuzz

هنستخدم في الشرح دا ال **burpsuite intruder**

الintruder بياخد قائمة كلمات المرور (password list)

![](https://gblobscdn.gitbook.com/assets%2F-MT2UtqBkz1YggoYyGRg%2F-MTkCVY-IaEdpFRrJbgI%2F-MTlNBjoywYO5BZ4r2QT%2Fpassword_brueforce2.png?alt=media\&token=5fbf9316-0b68-4b7d-83f1-8f56c3f472e1)

بنحدد مكان الباسورد في ال request عشان يتم استبدالة بكلمة مرور من القائمة المستخدمة في كل طلب (HTTP Request) الintruder هيبعته للخادم (server)

![](https://gblobscdn.gitbook.com/assets%2F-MT2UtqBkz1YggoYyGRg%2F-MTkCVY-IaEdpFRrJbgI%2F-MTlNGwc8QORJjBcxhT8%2Fpassword_brueforce.png?alt=media\&token=979b2cf4-b995-4804-9c9c-7d39961246ce)

الintruder جرب كل كلمات المرور, هنلاقي هنا كلمة المرور الصحيحة `test`

![](https://gblobscdn.gitbook.com/assets%2F-MT2UtqBkz1YggoYyGRg%2F-MTkCVY-IaEdpFRrJbgI%2F-MTlNQJcEPHPsXO9pOyL%2Fpassword_brutforce3.png?alt=media\&token=adbb2c98-0433-4f93-b031-01178e6d6350)

### 2- هجوم ال password spraying

علي عكس ال password brute forcing في ال password spraying احنا مش بنجرب كلمات مرور كتير ضد مستخدم واحد, احنا بنجرب كلمة مرور (password) واحدة او مجموعة صغيرة من كلمات المرور الشائعة (علي حسب الحد المسموح بيه في تطبيق معين) ضد عدد كبير من المستخدمين علشان نتجنب تعليق حساب المستخدم (account lockout)

> تعليق حساب المستخدم هي وسيلة امان لحماية حساب المستخدم ضد هجمات ال password brute forcing

في الهجوم دا استبدلنا قائمة كلمات المرور (password lists) بقائمة اسماء المستخدمين اللي عرفناها من خلال عملية تعداد المستخدمين (users enumeration)

![](https://gblobscdn.gitbook.com/assets%2F-MT2UtqBkz1YggoYyGRg%2F-MTkCVY-IaEdpFRrJbgI%2F-MTlRS-ooA1-Fq8NakEX%2Fpassword_sprying1.png?alt=media\&token=b6d05027-8b27-45db-afed-2119a214126e)

بنحدد لل intruder مكان اسم المستخدم في ال request وبنخلي الباسورد ثابت

![](https://gblobscdn.gitbook.com/assets%2F-MT2UtqBkz1YggoYyGRg%2F-MTkCVY-IaEdpFRrJbgI%2F-MTlRe-3asmcmkUvZacb%2Fpassword_sprying2.png?alt=media\&token=a987d521-0efb-4583-a9a5-8c1789ba6b0e)

ال intruder جرب البسورد ضد قائمة المستخدمين والمستخدم `azayed` هو صاحبب كلمة المرور

![](https://gblobscdn.gitbook.com/assets%2F-MT2UtqBkz1YggoYyGRg%2F-MTkCVY-IaEdpFRrJbgI%2F-MTlRiUZUkH0nP1FHiAo%2Fpassword_sprying3.png?alt=media\&token=20507733-09a4-41a5-99a7-8f2dc2daa248)

### 3- هجوم ال credential stuffing

الهجوم دا بيعتمتد علي جمع اسماء المستخدمين وكلمات المرور من قواعد بيانات مسربة خاصة بتطبيقات تانية وتجربتها في تطبيق معين علي أمل ان المستخدم يكون بيستخدم نفس الباسورد في التطبيق المستهدف

## الحلول

### هجمات ال brute forcing

1- حد معدل الطلبات (rate limiting) : عن طرق حظر تسجيل الدخول من عنوان (IP address) معين

2- تعطيل حساب المستخدم بشكل مؤقت (account lockout) لاكن تجنب التعطيل لمدة طويلة علشان الattacker ميستغلش الاَلية دي في منع المستخدمين من الوصول لحساباتهم بما يسمي هجوم الحرمان الخدمة (denial of service attack)

### هجمات ال password spraying و credential stuffing

استخدام المصادقة متعددة العوامل (multi factor authentication) بجانب الباسورد : زي استخدام كلمات مرور مؤقته (OTPs) التطبيق بيبعتها للمستخدم علي الايميل الخاص بيه او رقم الموبايل, او استخدام ال biometric authentication زي استخدام بصامت الاصابع او الوجه لمصادقة المستخدمين

### التخفيف من هجمات كلمة المرور بشكل عام

1- عدم السماح للمستخدم بتعيين كلمة مرور طولها اقل من 8 حروف

2- كلمة المرور لازم تتكون من حروف ورموز وارقام

3- عدم السماح للمستخدم بتعيين كلمات مرور شائعة او مسربة: ممكن نتحقق من كلمات المرور المسربة باستخدام ال API الخاصة بموقع HaveIbeenPwned او باي خدمات بديلة

4- تخزين كلمات المرور بشكل اَمن في قاعدة البيانات عن طرق تحويلها ل hash بدل تخزينها بصورة واضحة (plain text) لتجنب كسر كلمات المرور في حالة حدوث تسريب لقاعدة البيانات

\-- استخدم hash algorithm قوية زي (Argon2id, PBKDF2)

\-- استخدم ال salt مع الباسورد: الsalt دا قيمة عشوائية فريدة بيتم اضافتها لكلمة المرور قبل تمريرها علي ال hashing function لزيادة صعوبة كسر كلمة المرور في حالة حدوث تسريب للبيانات

5- استخدام ال CAPTCHA لمنع عمليات تسجيل الدخول الاَلية

## المصادر

1- <https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html>

2- <https://cheatsheetseries.owasp.org/cheatsheets/Password_Storage_Cheat_Sheet.html#maximum-password-lengths>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://aufzayed.gitbook.io/web-apps-security/authentication-almsadqh/password-attacks-hjmat-klmh-almrwr.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
