العمليات والتقصيمتقدم70mL24

Pentest Reporting — التقرير اللي بيخليك تتدفع

Executive summary و CVSS و proof-of-exploit وخطة معالجة تتنفذ

#Reporting#CVSS#Pentest#Documentation#Federal

ليه التقرير أهم من الاختراق نفسه؟

اخترقت الشركة في 4 ساعات. حلو قوي.

طب مين هيقرا اللي عملته؟

- الـ CIO طبعاً!

كنت مستنيك تقول كده. متوقّع كالعادة يا مستجد.

الـ CIO هيقعد معاك على Burp؟ هيقرا 80 صفحة Markdown؟ أبداً. هو هيقرا صفحة واحدة. واحدة بس.

تشبيه — شرح مبسط
تخيّل دكتور لقى ورم نادر، شخّصه صح، وبعدين كتب في الملف "لقيت حاجة". القيمة كلها راحت. الـ pentest زي كده بالظبط — 80% من قيمة شغلك في التقرير، مش في الـ shell. الـ CIO هيقرا صفحة Executive Summary واحدة ويقرّر الميزانية على أساسها. لو الصفحة دي عك، شغلك كله راح في الزبالة.
اللي بيحصل فعلياً
في الجهات الفيدرالية، التقرير هو الـ deliverable الوحيد اللي بيوصل لـ C-suite. تقرير عك = engagement مدفون. تقرير قوي = ميزانية، توظيف، ومتابعة لـ retest. فالشغل اللي بتعمله في 3 أسابيع، بيتباع في 3 صفحات. ركّز على الـ 3 صفحات.

حكاية حقيقية: تقرير اتسلّم.. ومحدش قراه

السيناريو
فريق pentest سلّم تقرير 140 صفحة لجهة فيدرالية. CVSS تمام، CWE تمام، screenshots كاملة. بعد 6 شهور؟ كل الـ findings زي ما هي. ليه؟ لأن مفيش Executive Summary مفهوم، مفيش roadmap مرتب 30/60/90، ومفيش حد فهم إن "AD takeover في 6 ساعات" تعني فعلاً إيه على الـ business.

الـ CIO اللي طلب الـ engagement اتنقل، الـ findings اتدفنت في SharePoint، وبعد سنة الـ APT دخل من نفس الخرم بالظبط.

الدرس: التقرير اللي محدش فاهمه = إنت ما عملتش حاجة. خالص.

هيكل التقرير الفيدرالي

01
Executive Summary (صفحة واحدة، CIO/CISO)
نص من غير jargon: لقينا إيه، الخطر على الأعمال إيه، إيه اللي لازم يحصل الأسبوع الجاي. مفيش CVSS هنا ولا Burp screenshots. أرقام: "مهاجم خارجي قدر يوصل لـ 47% من بيانات HR في 4 ساعات."
02
Scope & Methodology
اللي اتطلب نختبره، واللي اختبرناه فعلاً (دايماً مختلف)، إيه المعايير اللي اتبعناها (NIST SP 800-115, OWASP WSTG, MITRE ATT&CK). والقيود (zero-knowledge؟ assume-breach؟ business hours بس؟).
03
Findings — مرتّبة بالخطورة
كل واحدة: ID، عنوان، CVSS 3.1، CWE، الوصف التقني، خطوات الإعادة، proof of exploit (screenshot/log)، الأثر على الأعمال، التوصية.
04
Attack Path Narratives
حكاية، مش قايمة ثغرات. "بدأنا بـ email phishing، خدنا credentials، عدّينا الـ MFA، وصلنا Domain Admin في 6 ساعات." ده اللي بيفضل في عقل القارئ.
05
Remediation Roadmap
مش "صلّحوا كل حاجة". خطة 30/60/90 يوم بأولويات. إيه اللي محتاج patch دلوقتي، إيه اللي محتاج architecture change، إيه اللي محتاج تعديل policy.
06
Appendices
الأدوات المستخدمة، الـ IPs/IDs اللي اتختبرت، الـ timeline، الـ contacts، references.

كتابة Finding واحد بشكل صحيح

markdown
### F-007 | SQL Injection in /api/v2/search?q

**Severity**:    Critical
**CVSS 3.1**:    9.8 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)
**CWE**:         CWE-89 — SQL Injection
**Affected**:    api.target.gov/v2/search (production)
**Discovered**:  2026-04-12 14:22 UTC
**Tester**:      J. Doe

#### Summary
The /api/v2/search endpoint passes the 'q' parameter unsanitized into a
SQL query, allowing arbitrary database access without authentication.

#### Technical Detail
Reproduction (single curl):
```
curl 'https://api.target.gov/v2/search?q=test%27%20UNION%20SELECT%20NULL,version(),NULL--'
```
Response leaks PostgreSQL 14.8 banner. Stacked queries confirmed via
out-of-band DNS lookups (proof captured at burpcollab.example).

#### Proof of Impact
Within 12 minutes the tester:
1. Enumerated 47 tables including `users_pii` and `audit_log`
2. Read 1.2M user records (full name, SSN-last-4, address, DOB)
3. Modified one test record (reverted post-confirmation)

Screenshots: see Appendix B, F-007-01..03.

#### Business Impact
- 1.2M PII records exposed → CCPA/GLBA notification scope
- Audit log tampering → compliance violation under FISMA
- Estimated breach disclosure cost: $4.5M (Ponemon 2024 average)

#### Recommendation
Short-term (this week):
  - Deploy parameterized queries on the affected query builder
  - WAF rule blocking UNION/SELECT in 'q' as a stop-gap

Long-term (this quarter):
  - Audit all 312 endpoints using same query helper
  - Move to ORM (Prisma/SQLAlchemy) with mandatory bound params
  - Add SAST gate (Semgrep) blocking string concatenation in DB code

#### References
- OWASP Top 10 — A03:2021 Injection
- CISA Secure-by-Design pledge — Memory-safe & SQLi
- NIST SP 800-53 SI-10 (input validation)

CVSS — لا تتعجل في الرقم

CVSS 3.1 فيه حقول دقيقة. الفرق بين 7.5 و9.8 هو اللي بيحدّد إذا كان الـ CIO هيصحى في نص الليل ولا لأ. خد وقتك:

text
Attack Vector (AV):
  Network (N)   — قابل للوصول من الإنترنت        → +0.85
  Adjacent (A)  — يحتاج شبكة محلية                → +0.62
  Local (L)     — يحتاج تسجيل دخول                → +0.55
  Physical (P)  — يحتاج وصول مادي                → +0.20

Attack Complexity (AC):
  Low (L)       — كل مهاجم يقدر                  → +0.77
  High (H)      — يحتاج race condition / timing  → +0.44

Privileges Required (PR):
  None (N)      — مجهول                          → +0.85
  Low (L)       — مستخدم عادي                    → +0.62
  High (H)      — admin                          → +0.27

User Interaction (UI):
  None (N)      — تلقائي                         → +0.85
  Required (R)  — يحتاج click / paste            → +0.62

Scope (S):
  Unchanged (U) — ضمن الـ component              → ×1.0
  Changed (C)   — يخرج إلى components أخرى       → ×1.5

CIA Impact: None / Low / High

أخطاء شائعة

ما تعملش
  • "Critical" لكل finding — التقرير بيفقد مصداقيته.
  • Screenshots من غير redaction (PII حقيقية في التقرير).
  • "اعملوا best practices" — دي مش توصية.
  • ما تنسخش findings من تقارير قديمة من غير ما تتأكد تاني.
  • ما تكتبش نكت ولا تستخفّ بالـ team — هما اللي هيقروا التقرير.
اعمل
  • راجع كل finding مرتين — غلطة تقنية واحدة = engagement محروق.
  • اربط كل finding بـ ATT&CK technique و CWE.
  • ضيف قسم "اختبرناه ومقدرناش نكسره" — بيبني ثقة.
  • سلّم النسخة النهائية في ميتنج، مش بـ email.
  • اعرض retest بعد 30 يوم من التسليم.

معايير فيدرالية

  • NIST SP 800-115 — Technical Guide to Information Security Testing
  • NIST SP 800-53 — Security Controls (لربط findings بـ controls)
  • FISMA / FedRAMP — متطلبات تقارير
  • PTES — Penetration Testing Execution Standard (community)
  • OWASP WSTG — Web Security Testing Guide
  • MITRE ATT&CK — للـ attack path narratives
اكتبها على غلاف الكشكول
اقرا تقاريرك بعد سنة. هتندم على نص اللي كتبته. أنا اتكويت قبلك. التقرير العظيم بيفضل مفهوم ومفيد بعد سنين لـ engineer ما حضرش الـ engagement أصلاً. لو ما حدش يقدر يعيد الخطوات من تقريرك من غير ما يكلّمك، يبقى التقرير ناقص.

غلطات الـ junior في كتابة التقرير

الأخطاء اللي بتحرق التقرير
  • "كل حاجة Critical" — لو كل حاجة critical، يبقى مفيش حاجة critical. التقرير فقد مصداقيته من أول 5 صفحات.
  • screenshots فيها PII حقيقية — اتسلّم تقرير، اتسرّب، الجهة مرفوعة عليها قضية. شغلك انت اللي بقى المشكلة.
  • "اعملوا best practices" — دي مش توصية، دي تهرّب من المسؤولية. اكتب الأمر بالظبط: "فعّل MFA على الـ 47 admin account التالية".
  • نسخ findings من تقارير قديمة — في endpoint اتغيّر، في version اتعدّل، وإنت بتسلّم finding عمره سنتين على نظام جديد.
  • تسليم بـ email وخلاص — مفيش meeting، مفيش walkthrough، مفيش retest. التقرير راح في inbox ومات.

الخلاصة الناشفة

التقرير مش paperwork — التقرير هو المنتج.

الـ shell اللي اخدته، الـ CVE اللي لقيته، الـ chain اللي بنيته — كل ده مادة خام. التقرير هو اللي بيحوّلهم لقرار، وميزانية، وحماية حقيقية.

اوعى تسلّم تقرير عك وتقول "هما اللي ميقروش".

اكتب لـ CIO ما يفهمش technical jargon، وفي نفس الوقت لـ engineer هيـ reproduce الخطوة بعد سنة.

لو قدرت تعمل الاتنين في تقرير واحد، يبقى انت محترف فعلاً.

مصادر

  • OffSec — OSCP report template (نموذج جيد للبدء)
  • SANS — Reporting Penetration Tests (SEC560 module)
  • NCC Group / TrustedSec — public report samples
  • Daniel Miessler — "How to Write a Penetration Test Report"
  • RedTeam Pentesting GmbH — sample reports