Skip to content

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.

necesse image

Imports

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.

  1. VirtualAllocEx
  2. WriteProcessMemory
  3. CreateRemoteThread
  4. VirtualFree

Permissions

characteristics

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

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

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

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

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.

imphash_malwarebazaar

imphash_virustotal

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

imphash_duplicates

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