حدد المضيف من ملف تفريغ وضع مستخدم Windows
-
01-07-2019 - |
سؤال
هل هناك طريقة سهلة لمعرفة اسم المضيف للجهاز الذي أنشأ ملف تفريغ وضع المستخدم عبر WinDbg؟
أو على الأقل أي جزء من المعلومات التعريفية لمحاولة التأكد من أن ملفي التفريغ جاءا من نفس النظام.
المحلول
يمكنك القيام بذلك عن طريق تحليل ملف تفريغ المستخدم باستخدام WinDbg.تشغيل !peb
الأمر والبحث عن قيمة COMPUTERNAME
في مخرجاتها.
نصائح أخرى
من debugger.chm:
البحث عن اسم الكمبيوتر في ملف تفريغ وضع Kernel
إذا كنت بحاجة إلى تحديد اسم الكمبيوتر الذي تم إجراء تفريغ التعطل عليه، فيمكنك استخدام الملحق !peb والبحث عن قيمة COMPUTERNAME التي تم إخراجها.
أو يمكنك استخدام الأمر التالي:
0: kd> x srv!SrvComputerName
be8ce2e8 srv!SrvComputerName = _UNICODE_STRING "AIGM-MYCOMP-PUB01"
العثور على عنوان IP في ملف تفريغ وضع Kernel
لتحديد عنوان IP الخاص بالكمبيوتر الذي تم إجراء تفريغ التعطل عليه، ابحث عن مكدس مؤشر الترابط الذي يعرض بعض أنشطة شبكة الإرسال/التلقي.افتح إحدى حزم الإرسال أو استقبل الحزم.سيكون عنوان IP مرئيًا في تلك الحزمة.
يحرر:سألاحظ أنه اعتمادًا على كيفية إنشاء ملف التفريغ، قد لا تكون معلومات PEB متاحة وبالتالي لن تكون كذلك دائماً تكون قادرة على العثور على اسم الكمبيوتر.خاصة إذا جاء شيء ما عبر موقع Microsoft Winqual، فقد تم تطهيره.
استخدام الاختصار لمتغيرات البيئة في PEB:!envvar اسم الكمبيوتر
للحصول على قائمة عناوين IP:
3:kd> دو poi(poi(srvnet!SrvAdminIpAddressList))
ffffe001d3d58450 "127.0.0.1"
3: kd> du
d3d58464 "::1"
ffffe001
3:دينار كويتي>
ffffe001d3d5846c "169.254.66.248"
d3d5848a ""
3: kd>
ffffe001
3:دينار كويتي>
ffffe001d3d5848c "fe80::f0cb:5439:f12f:42f8"
d3d584c0 ""
3: kd>
ffffe001
3:KD> FFFFE001d3d584c2 "192.168.104.249"
3: kd>
ffffe001
d3d584e2 ""
3:دينار كويتي>
fffe001`d3d584e4 "fe80::fc6f:ae16:b336:83dc"
3:دينار كويتي>
في كل من وضع kernel ووضع المستخدم،
10: kd> !envvar COMPUTERNAME
COMPUTERNAME = a-host-name
يسترد اسم الكمبيوتر المعروف أيضًا باسم اسم مضيف الكمبيوتر المستهدف.
يتطلب EXTS.dll
الامتداد المراد تحميله، ونظام التشغيل Windows XP+ (W10 RS3 في وقت كتابة هذا التقرير).
في وضع النواة، لا يعمل هذا بشكل مباشر، !envvar
سيعود فارغا
10: kd> !peb
PEB NULL...
السياق الحالي الخاص بك هو موضوع خامل.
مساعدة WinDbg (Windows 10 RS3 16299.15 SDK). !process
يسرد فقط البتات 0-4، لكنني وجدت أن البت 5 يتخلص من البيئة بأكملها عند استخدامه مع 0 و4.أعلام = 0b110001
.لذلك أستخدم هذا أثناء البرنامج النصي لبدء تشغيل WinDbg لتسجيل اسم الكمبيوتر تلقائيًا.
!process 0 0x31 wininit.exe
سيتم تفريغ كافة متغيرات البيئة:
10: kd> !process 0 0x31 wininit.exe
PROCESS ffffc485c82655c0
SessionId: 0 Cid: 02d0 Peb: 8d04c6b000 ParentCid: 0258
DirBase: 40452f000 ObjectTable: ffffe30b1150fb40 HandleCount: 163.
Image: wininit.exe
VadRoot ffffc485c862b990 Vads 61 Clone 0 Private 326. Modified 12. Locked 2.
DeviceMap ffffe30b0a817880
Token ffffe30b1150f060
ElapsedTime 00:00:18.541
UserTime 00:00:00.000
KernelTime 00:00:00.015
QuotaPoolUsage[PagedPool] 121696
QuotaPoolUsage[NonPagedPool] 11448
Working Set Sizes (now,min,max) (1750, 50, 345) (7000KB, 200KB, 1380KB)
PeakWorkingSetSize 1697
VirtualSize 2097239 Mb
PeakVirtualSize 2097239 Mb
PageFaultCount 2104
MemoryPriority BACKGROUND
BasePriority 13
CommitCharge 470
PEB at 0000008d04c6b000
InheritedAddressSpace: No
ReadImageFileExecOptions: No
BeingDebugged: No
ImageBaseAddress: 00007ff7be3d0000
Ldr 00007ff8dff4f3a0
Ldr.Initialized: Yes
Ldr.InInitializationOrderModuleList: 000001be470e1c10 . 000001be47128d60
Ldr.InLoadOrderModuleList: 000001be470e1d80 . 000001be47128d40
Ldr.InMemoryOrderModuleList: 000001be470e1d90 . 000001be47128d50
Base TimeStamp Module
7ff7be3d0000 600d94df Jan 24 10:40:15 2021 C:\Windows\system32\wininit.exe
7ff8dfdf0000 493793ea Dec 04 03:25:14 2008 C:\Windows\SYSTEM32\ntdll.dll
...
SubSystemData: 0000000000000000
ProcessHeap: 000001be470e0000
ProcessParameters: 000001be470e1460
CurrentDirectory: 'C:\Windows\system32\'
WindowTitle: '< Name not readable >'
ImageFile: 'C:\Windows\system32\wininit.exe'
CommandLine: 'wininit.exe'
DllPath: '< Name not readable >'
Environment: 000001be47104460
ALLUSERSPROFILE=C:\ProgramData
CommonProgramFiles=C:\Program Files\Common Files
CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files
CommonProgramW6432=C:\Program Files\Common Files
COMPUTERNAME=a-host-name
ComSpec=C:\Windows\system32\cmd.exe
NUMBER_OF_PROCESSORS=16
OS=Windows_NT
Path=C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=AMD64 Family 23 Model 1 Stepping 1, AuthenticAMD
PROCESSOR_LEVEL=23
PROCESSOR_REVISION=0101
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
ProgramFiles(x86)=C:\Program Files (x86)
ProgramW6432=C:\Program Files
PSModulePath=%ProgramFiles%\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
SystemDrive=C:
SystemRoot=C:\Windows
TEMP=C:\temp
TMP=C:\temp
USERNAME=SYSTEM
USERPROFILE=C:\Windows\system32\config\systemprofile
windir=C:\Windows
يمكنك النقر فوق رابط PEB dml أو تبديل السياق عبره .process /p <PROCESS_ADDRESS>
, ، ثم !envvar COMPUTERNAME
سوف تعمل أيضا.