
Ferramenta de Reconhecimento Inicial de Drivers
Estou escrevendo esta ferramenta para aprender C++ e obter uma avaliação inicial dos drivers instalados em um sistema Windows (por exemplo, imagens mestre desenvolvidas por OEMs ou empresas). Ela deve ajudar na seleção de alvos, encontrar alvos fáceis e fornecer alguma assistência na análise binária aprofundada. Atualmente instável, em desenvolvimento ativo.
Usei uma combinação de DeviceTree, WinObjEx64 e WinDbg para esses casos de uso. É mais um processo manual tedioso que não escala facilmente, então o DIRT apenas tenta tornar isso mais conveniente.
Isso deve compilar com Visual Studio 2015 ou superior.
bcdedit -debug on em um Prompt de Comando administrativo.kldbgdrv.sys (encontrado com WinDbg) no mesmo diretório que DIRT.exe.DIRT.exe > output.txt com privilégios administrativos.As opções --lp-only e --no-msft podem ser usadas para filtrar resultados.
Abaixo está um exemplo de saída para saber o que 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
Também há uma saída CSV disponível usando DIRT::Main::ExportCSV():

Jackson Thuraisamy (2018). O código é fortemente derivado do projeto WinObjEx64 por @hFireF0X.
MIT