تقرير امتحان OSCP

جارٍ التحميل…

01 / ملخص الدرس

تقرير امتحان OSCP

قواعد تقرير امتحان OSCP: الـ proof.txt والـ local.txt مع الـ IP في نفس الـ Screenshot، والخطوات الكاملة، وتسمية الملف والـ 7z، والتسليم في أربعة وعشرين ساعة.

02 / شرح الدرس مكتوبًا

نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.

أهلاً بيك. في امتحان OSCP، ممكن تاخد كل الأجهزة… وبرضه ما تنجحش. ليه؟ لأن الـ points بتتحسب من التقرير. أي حاجة مش مكتوبة صح… كأنك ما عملتهاش.

التوقيت: الامتحان نفسه حوالي أربعة وعشرين ساعة. وبعده عندك أربعة وعشرين ساعة كمان تكتب وتسلّم التقرير. علشان كده اكتب الـ Notes والـ Screenshots وإنت شغال، مش بعدين.

أهم قاعدة: الـ proof. لكل جهاز، فيه ملف local dot txt و proof dot txt. لازم Screenshot فيه محتوى الملف، والـ IP بتاع الجهاز، في نفس الصورة. يعني cat أو type للملف، وجنبه ip addr أو ipconfig. ومن shell تفاعلي، مش web shell.

والخطوات: خطوات كاملة يقدر المُصَحِّح يكررها، من أول scan لحد الـ proof. أي exploit عدّلت فيه، حط الـ code ووضّح التعديل. ولو استخدمت أداة، اكتب الـ command بالزبط. نعمل checker بسيط على الـ Screenshots بتاعة كل جهاز. نشغّل… جهاز تمام، وجهاز ناقصه الـ IP، وجهاز الـ proof بتاعه من web shell. الاتنين دول ممكن يضيّعوا عليك الـ points بتاعتهم.

main.py
osid = "OS-12345"

machines = [
    {"ip": "192.168.50.10", "local": True, "proof": True, "shows_ip": True, "shell": "interactive"},
    {"ip": "192.168.50.11", "local": True, "proof": True, "shows_ip": False, "shell": "interactive"},
    {"ip": "192.168.50.12", "local": True, "proof": False, "shows_ip": True, "shell": "webshell"},
]

for m in machines:
    issues = []
    if not m["shows_ip"]:
        issues.append("IP not in proof screenshot")
    if m["shell"] != "interactive":
        issues.append("proof must be from an interactive shell")
    print(m["ip"], "OK" if not issues else issues)

المخرجات

192.168.50.10 OK
192.168.50.11 ['IP not in proof screenshot']
192.168.50.12 ['proof must be from an interactive shell']

والتسليم: التقرير PDF، اسمه فيه الـ OSID بتاعك. جوّه ملف 7z بنفس الاسم، من غير باسورد. وترفعه على موقع OffSec للرفع، وتتأكد إنه اترفع. والقواعد دي ممكن تتغير، فاقرا الـ OSCP Exam Guide الرسمي قبل الامتحان. دورك: ضيف للـ code سطرين بيطبعوا اسم الـ PDF واسم الـ archive من الـ osid.

تمرين

اعمل name = f"OSCP-{osid}-Exam-Report" واطبع .pdf و .7z.

الحل: نشغّل…

main.py
osid = "OS-12345"

machines = [
    {"ip": "192.168.50.10", "local": True, "proof": True, "shows_ip": True, "shell": "interactive"},
    {"ip": "192.168.50.11", "local": True, "proof": True, "shows_ip": False, "shell": "interactive"},
    {"ip": "192.168.50.12", "local": True, "proof": False, "shows_ip": True, "shell": "webshell"},
]

for m in machines:
    issues = []
    if not m["shows_ip"]:
        issues.append("IP not in proof screenshot")
    if m["shell"] != "interactive":
        issues.append("proof must be from an interactive shell")
    print(m["ip"], "OK" if not issues else issues)

name = f"OSCP-{osid}-Exam-Report"
print("PDF:", name + ".pdf")
print("Archive:", name + ".7z")

المخرجات

192.168.50.10 OK
192.168.50.11 ['IP not in proof screenshot']
192.168.50.12 ['proof must be from an interactive shell']
PDF: OSCP-OS-12345-Exam-Report.pdf
Archive: OSCP-OS-12345-Exam-Report.7z

الدرس الجاي والأخير: نجمّع كل اللي اتعلمناه في الكورس، في مراجعة سريعة. يلا بينا.

03 / دروس المسار (21)
  1. 01ليه التقرير أهم حاجة في الـ Pentest
  2. 02مين بيقرا التقرير؟
  3. 03نظام Notes من أول دقيقة
  4. 04Activity Log: كل حاجة بالوقت
  5. 05خلّي الـ Terminal يسجّل لوحده
  6. 06الأدلة: إيه اللي يعتبر دليل؟
  7. 07سلامة الأدلة: Hash و Chain of Custody
  8. 08إخفاء البيانات الحساسة (Redaction)
  9. 09خطوات إعادة التنفيد (Steps to Reproduce)
  10. 10الـ Impact: الخطر الحقيقي على البيزنس
  11. 11CVSS: الخطورة برقم
  12. 12الـ Risk Matrix: الاحتمال في الـ Impact
  13. 13ترتيب الأولويات والـ Quick Wins
  14. 14هيكل تقرير اختبار الاختراق
  15. 15الـ Executive Summary: صفحة للإدارة
  16. 16كتابة الـ Finding التقني
  17. 17توصيات الإصلاح اللي تتنفّد فعلاً
  18. 18خلّي Python يكتب التقرير
  19. 19المراجعة قبل التسليم والـ Retest
  20. 20تقرير امتحان OSCPانت هنا
  21. 21المراجعة النهائية: من الـ Note للتقرير