-
Notifications
You must be signed in to change notification settings - Fork 419
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PE header metadata #676
Comments
I was going to open an issue for signature data initially @rw-access , so thanks for adding it here already. For signatures--I can totally see this being useful in contexts other than PE headers, so as you allude to, I'd love to see a
Should we split out the issue or just figure it out here? |
The specifics may be different from an OS to another (and not sure if this even exists for Linux), but I'd really like to see if the concepts can be defined in an OS-agnostic way. From what I can tell, Windows' PE probably contains analogous information to the equivalent system on OSX. If that's the case, we should take both into account. |
We could make this more of an
fields would actually map to Mach-O/ELF header concepts. Wondering if there's an alternative option of separating out common parsed object file concepts into one field set for behavior-like things (i.e. linkage/symbol tables, PIC flags, versions etc.) and maybe metadata level stuff like this (that is more of an implementation-specific thing of PE files) into something like a |
could even have something like |
I've been looking at some Mach-o metadata, and can't find any worthwhile overlaps. I didn't find any sections that were pure metadata, but both have signatures--which we've covered in #681. Since we don't have any additional Mach-o metadata in our process events yet, we could always rename this field set to something a bit more generic and future proof (if we can come up with a good name), and we can always populate it as we go. That'll leave room from cross-platform in the future without letting it get in the way much for now. Windows also has the concept of an application manifest. Should that be encompassed? Feels a bit like scope creep. I'm struggling to come up with good names. And it's hard to be flexible and future proof while limiting scope creep and keeping the names of field sets well defined. We could have a |
I looked at Virus Total to see how it deals with file metadata. some of the metadata I see (not including signer information, because that's covered separately #681). Mach-OSignature Information: File Version Information
Mac OS X Executable Info: File Header
Windows (PE)signature info: file version information strangely, this is lumped under the signature but they are generally considered separate
PE info: header
exif data (extracted from ExifTool)
|
@webmat -- I was just thinking some more about this, and I'm wondering how the idea of trying to unify on field definitions scales with other file format feature extractions. Object files are just a specific example of a "class" of file formats, but each has fairly different structures. Same with something like image file formats. Take for example trying to unify on an image file format if you're trying to describe something like a jpeg's That said--I'm really not a fan of having a super flat structure where we open the door for having potentially thousands of top-level field sets--it makes both documentation and, more importantly, payloads harder to grok. So I'm wondering if it makes sense to somehow group field sets that exist in this space? Whether it's somewhere under |
Another thing that Sysmon and Endgame both collect for process and DLL (#675) events is PE metadata.
There may be an OS agnostic way to represent this, but I think this has value even if it's Windows only. This field set could be nested within
process
ordll
/lib
/module
and some of the already enumerated fields by Sysmon (see an example event in OSSEM]) are below:wuauclt.exe
10.0.17134.1 (WinBuild.160101.0800)
Windows Update
Microsoft® Windows® Operating System
Microsoft Corporation
There's also authenticode information for signed binaries. That field set could be nested here, but we first need to solve that issue (#681)
Microsoft Corporation
trusted
/untrusted
/no_signature
, etc. We might want to enumerate some of these values ahead of timeThe text was updated successfully, but these errors were encountered: