diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2019-03-28 14:13:30 +0100 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2019-03-28 14:13:30 +0100 |
commit | 487e95bfd9db3fb9e4410bf1adfbae5588ff7f0e (patch) | |
tree | 8fef60f82e0c859629c41165867a65f9d8851264 /README.md |
initial commit
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'README.md')
-rw-r--r-- | README.md | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/README.md b/README.md new file mode 100644 index 0000000..48712b5 --- /dev/null +++ b/README.md @@ -0,0 +1,45 @@ +# What? +*PastDSE* is a **Driver Sign Enforcement** "bypass" using a leaked certificate. +It is actually not a real bypass since it does only change the date to 01-01-2014 before signing the driver and restores it afterwards. +The Kernel driver loader will accept all driver images as long as the code was signed by a *Certificate Authority* which was not revoked. + + +# Dependencies +- Visual Studio 2017 Community Edition +- Windows 10 x64 1803 (may work on older versions, not verified) +- Windows 10 SDK 10.0.17763.0 +- Windows Driver Kit +- Windows Universal CRT SDK +- C++/CLI support +- VC++ 2017 tools + +The recommended way to install all dependencies is through [vs_community.exe](https://visualstudio.microsoft.com/). + + +# HowTo +If you do not want to build it from source, you can skip the text below and run `driver-start.bat` directly. + +Assuming a successful (Debug) build, you have to do the automatic sign procedure by running `driver-sign.bat` as Administrator. +If the console window outputs something like `Number of files successfully Verified: 1` then the procedure was probably succesful. +It should now be possible to load the (Debug) target driver by running `driver-start.bat` as Administrator. +You can now use **PastDSECtrl** to manual map your (unsigned) driver. + + +## *** IMPORTANT, READ THIS BEFORE RUNNING ANYTHING *** +Your driver requires an exported +`NTSTATUS DriverEntry(_In_ struct _DRIVER_OBJECT *DriverObject, _In_ PUNICODE_STRING RegistryPath)` +symbol just as usual. + +**But**: `DriverObject` will *always* be a `NULL` pointer whereas `RegistryPath` points to the mapped driver base address. +Since this is a manual mapped driver you can not use all kernel functions without getting either into trouble with *PatchGuard* +or they just won't work (usual returning an *Access denied*). +Example: +- *PatchGuard* will complain if you use functions like `PsSetLoadImageNotifyRoutine`, `PsSetCreateProcessNotifyRoutine` and `PsSetCreateThreadNotifyRoutine` +- `ObRegisterCallbacks` returns *Access denied* +- there may be other functions e.g. `FltRegisterFilter` + +It is possible to use these funcions by hijacking an existing driver objects. You'll figure that out. + + +# Contributors +As you can see, I've used some slightly modified code from [BlackBone](https://github.com/DarthTon/Blackbone) for the driver mapping and relocation.
\ No newline at end of file |