Comments (18)
I use the CiCheckSignedFile in my project https://hexderef.com/anti-malware-with-memory-forensics because it works also with DLL's. As soon as I find time. I'll also test Windows server 2022.
I'll also need an EV (or someone legitimate with one) to sign my kernel driver. But for now test mode does the job.
Wrong, that's the whole point. Testmode is giving you delusions, the function does not work properly without testmode enabled. @nefarius and I discussed this in the past. I stumbled upon making the same mistake before, basically in test mode it worked flawless, but fails without It any time.
from cidlldemo.
@MiroKaku pardon the ping, thought this might interest you as well 😬
from cidlldemo.
. . . I opened a new issue. As I originally intended.
from cidlldemo.
@nefarius I've seen your other project where you use the related code in some ways.
Did you manage to resolve this issue? Globalsign is returning STATUS_INVALID_IMAGE_HASH without testsigning indeed for 19045
from cidlldemo.
@nefarius I've seen your other project where you use the related code in some ways. Did you manage to resolve this issue? Globalsign is returning STATUS_INVALID_IMAGE_HASH without testsigning indeed for 19045
In my particular case the issue was the certificate used. I originally had used an ECC certificate from DigiCert and after a bit of back and forth with their support (who surprisingly quite quickly figured out the issue, props there) I got a new RSA based one which worked. So it still works for purposes outside of the Microsoft certificate ecosystem, however the compatibility matrix if you will is quite narrow.
EDIT: I just realized that my initial post already mentioned testing with RSA4096 SHA384
, hm... Guess I need to dig deeper in my memory what else changed 🤔
from cidlldemo.
@nefarius I've seen your other project where you use the related code in some ways. Did you manage to resolve this issue? Globalsign is returning STATUS_INVALID_IMAGE_HASH without testsigning indeed for 19045
In my particular case the issue was the certificate used. I originally had used an ECC certificate from DigiCert and after a bit of back and forth with their support (who surprisingly quite quickly figured out the issue, props there) I got a new RSA based one which worked. So it still works for purposes outside of the Microsoft certificate ecosystem, however the compatibility matrix if you will is quite narrow.
EDIT: I just realized that my initial post already mentioned testing with
RSA4096 SHA384
, hm... Guess I need to dig deeper in my memory what else changed 🤔
Buggers, let me know, I'd really appreciate some insight on this one
from cidlldemo.
@nefarius I've seen your other project where you use the related code in some ways. Did you manage to resolve this issue? Globalsign is returning STATUS_INVALID_IMAGE_HASH without testsigning indeed for 19045
In my particular case the issue was the certificate used. I originally had used an ECC certificate from DigiCert and after a bit of back and forth with their support (who surprisingly quite quickly figured out the issue, props there) I got a new RSA based one which worked. So it still works for purposes outside of the Microsoft certificate ecosystem, however the compatibility matrix if you will is quite narrow.
EDIT: I just realized that my initial post already mentioned testing withRSA4096 SHA384
, hm... Guess I need to dig deeper in my memory what else changed 🤔Buggers, let me know, I'd really appreciate some insight on this one
It definitely had something to do with the way the executable was signed, the validation code was fine, I remember that much.
from cidlldemo.
I remember now; I ended up abandoning the use of CiValidateFileObject
because I couldn't figure it out 😢 So for now it will remain in the realms of Windows mysteries I'm afraid.
from cidlldemo.
I remember now; I ended up abandoning the use of
CiValidateFileObject
because I couldn't figure it out 😢 So for now it will remain in the realms of Windows mysteries I'm afraid.
Is your Digicert an EV one? Can you provide your test.exe that's signed with your certificate so I can test. CiValidateFileObject works for me in the kernel (Windows 11 22H3).
from cidlldemo.
I remember now; I ended up abandoning the use of
CiValidateFileObject
because I couldn't figure it out 😢 So for now it will remain in the realms of Windows mysteries I'm afraid.Is your Digicert an EV one? Can you provide your test.exe that's signed with your certificate so I can test. CiValidateFileObject works for me in the kernel (Windows 11 22H3).
Yes, EV from DigiCert. Can provide you one later. What about Windows 10 22h2?
from cidlldemo.
@ByteWhite1x1 alrighty, here you go nefconc.zip this is the way it was signed:
signtool sign /tr http://timestamp.digicert.com /td sha256 /fd sha256 /n "Nefarius Software Solutions e.U." .\nefconc.exe
Same way I sign all my public releases pretty much. Sources of the binary I attached can be found here.
from cidlldemo.
[+] ComputeAuthenticodeHash \Device\HarddiskVolume3\temp3\nefconc.exe
[+] ValidateCertificate \Device\HarddiskVolume3\temp3\nefconc.exe
[+] CiCheckSignedFile returned 0x00000000
[+] CiValidateFileObject returned 0x00000000 \temp3\nefconc.exe
Your file validates using the both undocumented API's. The function is the same on Win10 22H2; there is no reason why it would not work.
from cidlldemo.
[+] ComputeAuthenticodeHash \Device\HarddiskVolume3\temp3\nefconc.exe [+] ValidateCertificate \Device\HarddiskVolume3\temp3\nefconc.exe [+] CiCheckSignedFile returned 0x00000000
[+] CiValidateFileObject returned 0x00000000 \temp3\nefconc.exe
Your file validates using the both undocumented API's. The function is the same on Win10 22H2; there is no reason why it would not work.
OK but have you tested it on 10 22H2 as well? I explicitly mentioned it because it failed my test.
It's been a while so I might just re-run it myself, maybe something wasn't done correctly in testing or in recording the results.
from cidlldemo.
Hi.
[+] Windows 10 Build: 19045 (22H2)
[+] ComputeAuthenticodeHash \Device\HarddiskVolume3\temp3\nefconc.exe
[+] ValidateCertificate \Device\HarddiskVolume3\temp3\nefconc.exe
[+] CiCheckSignedFile returned 0x00000000 (OK)
The output is from my anti-malware driver. Is your EV certificate something that can also be used to sign a kernel driver?
from cidlldemo.
Thanks for confirming, maybe my testing was faulty, it's been a while. Maybe the fault was even in resolving the executable path incorrectly, I need to go back to that code and make sure.
Yes, my EV cert could in theory cross sign kernel binaries, if we were still in the past where that was a thing.
from cidlldemo.
I use the CiCheckSignedFile in my project https://hexderef.com/anti-malware-with-memory-forensics because it works also with DLL's. As soon as I find time. I'll also test Windows server 2022.
I'll also need an EV (or someone legitimate with one) to sign my kernel driver. But for now test mode does the job.
from cidlldemo.
Well, an EV cert no longer does you any good since cross signing certificates all have expired and the most used recent Windows 10 and 11 kernels do not load EV-signed binaries, they accept Microsoft attestation signed binaries you submitted to the Microsoft Partner Portal using your EV as a token of authenticity that the binaries you submitted actually came from the holder of the EV. The EV alone has no power anymore other than being an ID badge. This gets more complicated on older OS's ofc. but those are no longer relevant in the grand scheme of production releases.
from cidlldemo.
I use the CiCheckSignedFile in my project https://hexderef.com/anti-malware-with-memory-forensics because it works also with DLL's. As soon as I find time. I'll also test Windows server 2022.
I found the code associated with the original issue, if you want to have a look, maybe you see something obvious: https://gist.github.com/nefarius/eaa6a0881036cc46626b2824f12f9a00
from cidlldemo.
Related Issues (4)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cidlldemo.