rsgit /pastdseA hyper-hyperfast web frontend for git repositories written in Rust.

DSE bypass using a leaked cert and adjusting the current clock.

Latest commits
CommitMessageAuthorDate
8dee3b8364Readme update.Toni Uhlig3 years ago
e8747bda65Removed ./binToni Uhlig3 years ago
904b7a1687Force CI to not stop on Warnings e.g. symbol deprecation.Toni Uhlig3 years ago
8d3ba23101Added batch files and README to the source tree.segfault3 years ago
85e43640bfEnforce SHA256 file digest for signtool.segfault3 years ago

→ full history

Branches
NameTargetSubjectDate
main8dee3b8364Readme update.3 years ago
VS-201703be2877eeUpdated sigs5 years ago
Tags
NameTargetSubjectDate
v1.08dee3b8364Readme update.3 years ago
VS-2017-backportcd76323e68update README6 years ago
README

What?

PastDSE is a Driver Sign Enforcement "bypass" using a leaked EV code signing 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 extended validation code signing certificate which was not revoked.

The DSE "bypass" works only on Windows 10 x64: 1803, 1809, 1903. You won't be able to load PastDSE signed drivers on other Windows versions. But it is still possible to use PastDSE with other DSE disabling techniques e.g. enabling testsigning or using EfiGuard. It works, because PastDSE is basically a manual driver mapper, nothing more.

Build Dependencies

The recommended way to install all dependencies is through vs_community.exe.

HowTo

If you do not want to build it from source, you can skip the text below and download the build artifacts from Github.

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.

Insights

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:

Contributors

Some slightly modified code from BlackBone for the driver mapping and relocation.