Embracing the new threat: towards automatically, self-diversifying malware
Mathias Payer <mathias.payer@nebelwelt.net> UC Berkeley and (soon) Purdue University
Image (c) http://ucrtoday.ucr.edu/9768/assassin-bugs
Embracing the new threat: towards automatically, self-diversifying - - PowerPoint PPT Presentation
Embracing the new threat: towards automatically, self-diversifying malware Mathias Payer <mathias.payer@nebelwelt.net> UC Berkeley and (soon) Purdue University Image (c) http://ucrtoday.ucr.edu/9768/assassin-bugs Malware landscape is
Image (c) http://ucrtoday.ucr.edu/9768/assassin-bugs
Image (c) Wikimedia
– Basically a “new” attack
– Time lag between analysis and updated signatures
Image (c) Wikimedia
– Don't slow down a user's machine (too much)
– Behavioral, generic matching
– Time lag between spread and protection
Image (c) Wikimedia
– Extract pattern – Match sequence of bytes or regular expression
– Fast – Low false positive rate
– Precision limited to known-bad samples
– API calls – System calls
– Low overhead
– False positives – Based on well-known heuristics
– Detect modifications
– Most precise
– High overhead – Precision limited due to emulation detection
– Signature-based techniques loose effectiveness
– On the target machine, for the analysis, and to push
– Either false positives and/or negatives or huge
Image (c) Wikimedia
– Data structure layout on stack – Layout for heap objects (limited for structs)
– Register allocation (shuffle or starve) – Instruction selection – Basic block splitting, merging, shuffling
– Minimize common substrings (code or data) – Performance overhead not an issue
– Small changes in code generator, code layouter,
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 1 10 100 1000 10000 100000 1000000
Common subsequences in diversified binaries
400.perlbench 401.bzip2 429.mcf 433.milc 444.namd 445.gobmk 450.soplex 453.povray 456.hmmer 458.sjeng 462.libquantum 464.h264ref 470.lbm 471.omnetpp 473.astar 482.sphinx perlbench vs. bzip2 perlbench vs. gobmk soplex vs. omnetpp nmap simple port scanner Lenght of subsequence Number of subsequences (log scale)
– Let's see how far we can push this!
Image (c) Wikimedia
– Hard (and results in an arms race)
– Harder
– Fix broken software & educate users – Hardest
Image (c) Wikimedia
– Fully automatic, built into compiler – No need for packers anymore