
Initiales Treiber-Erkundungstool
Ich schreibe dieses Tool, um C++ zu lernen und eine erste Bewertung der auf einem Windows-System installierten Treiber zu erhalten (z. B. Master-Images, die von OEMs oder Unternehmen entwickelt wurden). Es soll bei der Zielauswahl, dem Finden von „low-hanging fruit“ und bei der Unterstützung bei der tiefgehenden Binäranalyse helfen. Derzeit instabil, befindet sich in aktiver Entwicklung.
Ich habe für diese Anwendungsfälle eine Kombination aus DeviceTree, WinObjEx64 und WinDbg verwendet. Es ist eher ein mühsamer manueller Prozess, der sich nicht leicht skalieren lässt, daher versucht DIRT lediglich, ihn bequemer zu gestalten.
Dies sollte mit Visual Studio 2015 oder höher kompilieren.
bcdedit -debug on in einer administrativen Eingabeaufforderung.kldbgdrv.sys (gefunden mit WinDbg) in dasselbe Verzeichnis wie DIRT.exe.DIRT.exe > output.txt mit Administratorrechten aus.Die Optionen --lp-only und --no-msft können verwendet werden, um die Ergebnisse zu filtern.
Unten ist eine Beispielausgabe, um zu wissen, was zu erwarten ist:
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
Es ist auch eine CSV-Ausgabe über DIRT::Main::ExportCSV() verfügbar:

Jackson Thuraisamy (2018). Der Code ist stark vom WinObjEx64-Projekt von @hFireF0X abgeleitet.
MIT