Zozzle: Low-overhead Mostly Static JavaScript Malware Detection
Download
Report
Transcript Zozzle: Low-overhead Mostly Static JavaScript Malware Detection
Zozzle: Low-overhead Mostly Static
JavaScript Malware Detection
Road Map
Background
Architecture
Evaluation
and
Heap Spraying
Create NOP sled/shellcode:
◦ Create the shellcode and precedes the shell code
with a block of NOP sled.
Spray the NOP sled/shellcode:
◦ Allocate many copies of the NOP sled/shellcode
in heap to increase the chance of success.
Trigger the vulnerability.
◦ In order to redirect the program to Heap, where
it is possible to hit the NOP sled and then
shellcode.
Malware Cloaking
Generally, two ways to check JavaScript
Malware.
All Need Source
Code
◦ Signatures
◦ Machine Learning
Architecture of Zozzle
Samples
Deobfuscate
Unknown
JavaScript
Bayesian
Classifier
Feature
Extraction
Bayesian
Classifier
Feature
Selection
Classifier
Training
Malicious
Benign
De-obfuscated
An exploit must unpack itself to run.
◦ That is, before an exploit is executed, it
mush show its real source code.
Zozzle intercept calls to Compile
function in JavaScript Engine.
◦ eval() is called
◦ New code is included in <iframe> tag
◦ New code is included in <script> tag
Feature Extraction
Flat Features VS Hierarchical Features
◦ Flat Feature: Text from Source Code
◦ 1-level Hierarchical Feature: <Context Info,
Text>
◦ n-level Hierarchical Feature: <Context
Info…,Text>
Abstract Syntax Tree
function f(){
shellcode…
…
}
for(i=0; i<5000;i++){
…
…Shellcode…
⋯}
Feature Selection
Zozzle only selects those features that
are most likely to be predictive.
Use χ2 to test correlation
Classifier Training
ZOZZLE uses a naïve Bayesian classifier,
for its simplicity and efficiency
How to calculate P(Fk|Li)? Open
Questions
Li = Benign or Malicious
Feature & Throughput
Feature Extraction
Accuracy &
Feature
False Positive&
False Negative
Compare With Others
False Positive
6
5
4
3
2
1
0
False Positive
False Negative
100%
80%
60%
40%
20%
0%
False Negative
Questions