Identificar el host a partir de un archivo de volcado en modo de usuario de Windows
-
01-07-2019 - |
Pregunta
¿Existe una manera fácil de averiguar el nombre de host de una máquina que generó un archivo de volcado en modo de usuario a través de WinDbg?
O al menos cualquier información de identificación para intentar confirmar que dos archivos de volcado provienen del mismo sistema.
Solución
Puede hacerlo analizando el archivo de volcado del usuario con WinDbg.Ejecute el !peb
comando y busque el valor de COMPUTERNAME
en su salida.
Otros consejos
Desde depurador.chm:
Encontrar el nombre de la computadora en un archivo de volcado en modo kernel
Si necesita determinar el nombre de la computadora en la que se realizó el volcado de memoria, puede usar la extensión !peb y buscar el valor de COMPUTERNAME en su salida.
O puede utilizar el siguiente comando:
0: kd> x srv!SrvComputerName
be8ce2e8 srv!SrvComputerName = _UNICODE_STRING "AIGM-MYCOMP-PUB01"
Encontrar la dirección IP en un archivo de volcado en modo kernel
Para determinar la dirección IP de la computadora en la que se realizó el volcado de memoria, busque una pila de subprocesos que muestre alguna actividad de red de envío/recepción.Abra uno de los paquetes de envío o recepción de paquetes.La dirección IP será visible en ese paquete.
EDITAR:Tendré en cuenta que, dependiendo de cómo se creó el archivo de volcado, es posible que la información PEB no esté disponible y, por lo tanto, no podrá siempre poder encontrar el nombre de la computadora.En particular, si algo llegó a través del sitio de Microsoft Winqual, se ha desinfectado.
Usando el acceso directo para variables de entorno en el PEB:!envvar NOMBRE DE COMPUTADORA
Para la lista de direcciones IP:
3:kd> du poi(poi(srvnet!SrvAdminIpAddressList))
ffffe001d3d58450 "127.0.0.1"
3: kd> du
d3d58464 "::1"
ffffe001
3:kd>
ffffe001d3d5846c "169.254.66.248"
d3d5848a ""
3: kd>
ffffe001
3:kd>
ffffe001d3d5848c "fe80::f0cb:5439:f12f:42f8"
d3d584c0 ""
3: kd>
ffffe001
3:KD> FFFFE001d3d584c2 "192.168.104.249"
3: kd>
ffffe001
d3d584e2 ""
3:kd>
ffffe001`d3d584e4 "fe80::fc6f:ae16:b336:83dc"
3:kd>
Tanto en modo kernel como en modo usuario,
10: kd> !envvar COMPUTERNAME
COMPUTERNAME = a-host-name
Recupera el nombre de la computadora, también conocido como nombre de host de la PC de destino.
Requiere EXTS.dll
extensión que se cargará y Windows XP+ (W10 RS3 en el momento de escribir este artículo).
En modo kernel, esto no funciona directamente, !envvar
volverá vacío
10: kd> !peb
PEB NULL...
Su contexto actual es un hilo inactivo.
Ayuda de WinDbg (Windows 10 RS3 16299.15 SDK) para !process
solo enumera los bits 0-4, sin embargo, encontré que el bit 5 volca todo el entorno cuando se usa con 0 y 4.Banderas = 0b110001
.Entonces uso esto durante el script de inicio de WinDbg para registrar automáticamente el nombre de la computadora.
!process 0 0x31 wininit.exe
Volcará todas las variables de entorno:
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
Puede hacer clic en un enlace dml PEB o cambiar de contexto a través de .process /p <PROCESS_ADDRESS>
, entonces !envvar COMPUTERNAME
también funcionaría.