
Инструмент начальной разведки драйверов
Я пишу этот инструмент, чтобы изучать C++ и получать первоначальную оценку драйверов, установленных в системе Windows (например, мастер-образов, разработанных OEM-производителями или предприятиями). Он предназначен для помощи в выборе целей, поиске низко висящих плодов и некоторой помощи в углубленном анализе бинарных файлов. В настоящее время нестабилен, находится в активной разработке.
Я использовал комбинацию из DeviceTree, WinObjEx64 и WinDbg для этих случаев. Это довольно утомительный ручной процесс, который сложно масштабировать, поэтому DIRT просто пытается сделать его более удобным.
Это должно компилироваться с помощью Visual Studio 2015 или новее.
bcdedit -debug on в командной строке с правами администратора.kldbgdrv.sys (найденный с помощью WinDbg) в ту же директорию, что и DIRT.exe.DIRT.exe > output.txt с правами администратора.Параметры --lp-only и --no-msft можно использовать для фильтрации результатов.
Ниже приведён пример вывода, чтобы вы знали, чего ожидать:
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
Также доступен вывод в формате CSV с помощью DIRT::Main::ExportCSV():

Jackson Thuraisamy (2018). Код во многом основан на проекте WinObjEx64 от @hFireF0X.
MIT