Basic PE-Header Analysis
Med PE-Bear V0.7.1 kan der dannes et overblik over Portable Executable (PE) filen "Necesse.exe" som i dette tilfælde er et harmløst spil.

Imports

Som der kan ses bliver der imported en masse funktioner fra SHELL32.DLL og KERNEL32.DLL
Det kunne for eksempel være interessant at kigge efter funktioner som typisk bliver brugt af trusselsaktører. Såsom HeapFree, HeapAlloc og WriteFile. Disse funktioner bliver brugt af både legitimt software men også malware, derfor er det vigtigt at kigge på mønstre såsom hvilken rækkefølge disse funktioner bliver kaldt i.
F.eks.
- VirtualAllocEx
- WriteProcessMemory
- CreateRemoteThread
- VirtualFree
Permissions

I PE-Bear kan man kigge på section headers og deres tilladelser.
IMAGE_SCN_MEM_EXECUTE 0x20000000 Section kan eksekveres
IMAGE_SCN_MEM_READ 0x40000000 Section kan læses
IMAGE_SCN_MEM_WRITE 0x80000000 Section kan skrives til
IMAGE_SCN_CNT_CODE 0x00000020 Section indeholder kode
En mistænkelig værdi ville f.eks. være E0000020 for .text:
0xE = EXECUTE + READ + WRITE
0x00000020 = Indeholder kode
0xE0000020 = EXECUTE + READ + WRITE + CODE
OptionalHdr

I Optional headeren kan der ses hvilken type arkitektur denne PE er skabt for. 10B er 32-bit og 20B er 64-bit arkitektur. Dette er vigtigt da 32-bit executables ikke kan tage brug af 64-bit DLL'er og "vice versa".
Strings

Går man ind på Strings "tab" så giver PE-Bear en liste af strings fundet i PE filen, det der kunne være interessant at kigge på er URL links til f.eks. Command and Control (CnC/C2) domæner eller plain text kode, som kan indsættes i funktioner såsom InvokeEx via PowerShell (PS). Trusselsaktøre vil typisk prøve at obfuskere disse strings ved f.eks. BASE64 encoding hvorefter en URL kan bruges til at indlæse ondsindet kode over internettet under runtime.
Raw Size og Virtual Size

Malware pakker typisk ondsindet kode via compression, encryption og obfuscation. Dette bruges til at undgå anti-malware software og analyser, hvorefter malware programmet udpakker resourcerne under runtime. Dette kaldes for "Packaging".
"Raw Size" er hvor meget plads der allokeres på ens disk hvor programmet er gemt. "Virtual Size" er hvor meget plads der allokeres virtuelt i hukommelsen/hvor meget programmet optager af det allokeret Virtual Address Space.
Hvis Raw Size er meget mindre end Virtual Size kan det tyde på at der er blevet "Packed" noget data.
Signaturer

I General kan der ses forskellige generiske informationer, såsom fil størrelsen på disk og virtuelt. Der kan også ses forskellige hashing signature for PE filen såsom MD5. Denne signatur kan holdes op imod offentlige malware databaser såsom MalwareBazaar.
Der kan også ses at der er blevet skabt et ImpHash, denne form for hashing er ret unik. Et ImpHash er en hashing signatur som er beregnet ud fra PE filer. Hash signaturen er kalkuleret baseret på dll'er og funktioner som er importeret, samt hvilken rækkefølge disse er importeret i. Det vil sige at to forskellige PE filer kan have den samme ImpHash så længe at de importere de samme dll'er i samme rækkefølge. Hvis en ImpHash er bevist ondsindet, kan forskellige unikke malware filer blive flagget da de har samme ImpHash signaturer.
I bunden af de to følgende screenshots kan man se ImpHash værdien for noget tilfældigt malware.


Hvis man søger på imphash:f34d5f2d4577ed6d9ceec516c1f5a744 på MalwareBazaar kan man se en masse forskellige malware filer med samme ImpHash signatur.

Sources
https://tryhackme.com/room/dissectingpeheaders
https://tryhackme.com/room/staticanalysis1
https://learn.microsoft.com/en-us/windows/win32/debug/pe-format
https://github.com/hasherezade/pe-bear