
محاكاة شاملة من البداية إلى النهاية لهجوم التباس تبعيات Python، وتصعيد صلاحيات sudo (CVE-2025-32463)، واستمرارية قائمة على rootkit - مع تحليل جنائي كامل للذاكرة والشبكة.
طُوّر هذا المشروع كجزء من مساق "علم الأدلة الرقمية" (Digitale Forensik) في جامعة دغندورف التقنية.
يعرض المشروع تحقيقًا جنائيًا كاملاً ومحاكاة هجوم تتضمن:
هجوم خلط التبعيات (dependency confusion) باستخدام حزمة PyPI خبيثة
تصعيد الامتيازات عبر نسخة ضعيفة من sudo (CVE-2025-32463)
نشر إشارة (Beacon) لـ Sliver C2
روتكيت مخصص مع تحميل وحدات kernel، وخطافات لاستدعاءات النظام، واستمرارية قائمة على udev
تحليل كامل لآثار الذاكرة والشبكة باستخدام أدوات مثل Volatility وNetworkMiner والهندسة العكسية اليدوية
يحتوي المستودع على نصوص برمجية وتعليمات إعداد وأدلة (artifacts) وخطوات تحليل مفصّلة لإعادة إنتاج الهجوم والتحقيق الجنائي معًا.
shell)
shell binary
CVE-2025-32463
تفاصيل NVD
POC على GitHub
[!NOTE]
يجب تثبيت إصدار ضعيف من Sudo (مع دعم chroot—انظرprivesc/setup.sh)
sequenceDiagram autonumber participant Attacker participant PyPI participant IntDep as Internal Dep Server participant Dev as Developer participant C2 as C2 Server
Attacker->>PyPI: Publish package with version v1.0.3
Dev->>IntDep: pip install
IntDep-->>Dev: Returns v1.0.1
Dev->>PyPI: Fallback pip install package==v1.0.3
PyPI-->>Dev: Returns malicious v1.0.3 (stager)
Dev->>Dev: Executes stager (package_evil)
Dev->>C2: Beacon/Sliver implant calls home
Note right of C2: Attacker now has RCE
Attacker->>Dev: Enumerates sudo version (1.9.16p2)
Attacker->>Dev: Runs CVE-2025-32463 exploit
Note right of Dev: PE to root
Dev->>Dev: Downloads & runs rootkit loader binary
Dev->>Dev: Loader installs kernel module & configures udev rule
Dev->>Dev: Schedules reboot
Note right of Dev: Attacker established persistence
Dev->>Dev: System reboots
Dev->>Dev: Udev loads kernel module on boot
Dev->>C2: Kernel-stage beacon calls C2
# توليد القطع الأثرية
جميع القطع الأثرية تُولَّد يدويًا. ستستخدم جهازين:
- **جهاز المهاجم** (Kali Linux)
- **جهاز المطوّر** (Ubuntu)
سننتج ثلاث قطع أثرية:
- **PCAP** (قبل إعادة التشغيل)
- **تفريغ الذاكرة** (بعد إعادة التشغيل)
## إنشاء تفريغ الذاكرة
[كيفية تفريغ ذاكرة VirtualBox](https://www.ired.team/miscellaneous-reversing-forensics/dump-virtual-box-memory)
على النظام المضيف:```shell
vboxmanage list vms
"linux-root-kit_default_1752261916398_20346" {c2d4b5bc-d87f-4dcb-af01-85b78c163fef}
virtualboxvm --startvm "linux-root-kit_default_1752261916398_20346" --dbg
انتقل إلى الواجهة --> Debug
في وحدة تحكم Debug (موجه VMMR0>):```shell
.pgmphystofile 'dumpmem_linux_root_kit'
## تحضير تفريغ الشبكة على أوبونتو
ابدأ قبل محاكاة المطوّر. يُعد `! port 22` مفيدًا لعدم تسجيل اتصال vagrant ssh.```shell
sudo tcpdump -w output.pcap ! port 22
shell)vagrant up
قد يستغرق هذا بعض الوقت --> يقوم بتنزيل جهاز افتراضي كامل تم بناؤه باستخدام Bento.
## 2. بمجرد تشغيل الجهاز الافتراضي، قم بتسجيل الدخول عبر SSH: ```shell
vagrant ssh
sudo bash /vagrant/privesc/setup.sh sudo apt install python3.12-venv
## 4. بناء ثنائي المُحمّل في مساحة المستخدم (shell):
يمكنك أيضاً تنفيذ ملف `make` لبناء ثنائي `shell` في مساحة المستخدم. هذه أسهل طريقة للقيام بذلك - وإلا ستحتاج إلى تثبيت ملفات الرأس الصحيحة أولاً :P.
## 5. أرسل `shell` إلى Kali لتقديمه من هناك لاحقاً.
# إعداد Kali (192.168.56.101)
## 1. تشغيل خادم Sliver ```shell
sliver
