
Herramienta de Reconocimiento Inicial de Controladores
Estoy escribiendo esta herramienta para aprender C++ y obtener una evaluación inicial de los controladores instalados en un sistema Windows (por ejemplo, imágenes maestras desarrolladas por OEMs o empresas). Se supone que ayuda con la selección de objetivos, encontrar frutos bajos, y algo de asistencia con el análisis binario en profundidad. Actualmente inestable, en desarrollo activo.
He usado una combinación de DeviceTree, WinObjEx64 y WinDbg para estos casos de uso. Es más un proceso manual tedioso que no escala fácilmente, por lo que DIRT solo intenta hacerlo más conveniente.
Esto debería compilarse con Visual Studio 2015 o superior.
bcdedit -debug on en un Símbolo del sistema administrativo.kldbgdrv.sys (encontrado con WinDbg) en el mismo directorio que DIRT.exe.DIRT.exe > output.txt con privilegios administrativos.Los modificadores --lp-only y --no-msft se pueden usar para filtrar resultados.
A continuación se muestra un ejemplo de salida para saber qué esperar:
DIRT v0.1.0: Driver Initial Reconnaisance Tool (@Jackson_T)
Repository: https://github.com/jthuraisamy/DIRT
Compiled on: Aug 22 2018 00:01:04
INFO: Hiding Microsoft drivers (--no-msft).
INFO: Only showing drivers that low-privileged users can interface with (--lp-only).
Capcom: Capcom
Path: C:\Windows\System32\Capcom.sys
DispatchDeviceControl: 0xFFFFF8024C9A0590
Devices: 1
└── \Device\Htsysm72FB (open DACL, 1 symlinks)
└── \\.\Global\Htsysm72FB
SmbDrvI: SmbDrvI (Synaptics Incorporated)
Path: C:\WINDOWS\System32\drivers\Smb_driver_Intel.sys - Hooked by Wdf01000 (Microsoft Corporation)
DispatchDeviceControl: 0xFFFFF808212C72B0
Devices: 1
└── \Device\SmbDriver (open DACL, 1 symlinks)
└── \\.\Global\SmbDriver
nvlddmkm: nvlddmkm
Path: C:\Windows\System32\DriverStore\FileRepository\nvlt.inf_amd64_ed3ba3fb30d4dd86\nvlddmkm.sys
DispatchDeviceControl: 0xFFFFF80822D074D0
Devices: 2
├── \Device\NvAdminDevice (open DACL, 1 symlinks)
│ └── \\.\Global\NvAdminDevice
└── \Device\UVMLiteController0x1 (open DACL, 1 symlinks)
└── \\.\Global\UVMLiteController
También hay una salida CSV disponible usando DIRT::Main::ExportCSV():

Jackson Thuraisamy (2018). El código se deriva en gran medida del proyecto WinObjEx64 de @hFireF0X.
MIT