CHAPTER 1
INTRODUCTION
1.1 Overview
Malware - a representative term for viruses, worms, spyware, trojan horses,
adware and rootkits - is a major threat to today’s highly connected computing
environments. Annual damage from malware is estimated to be more than
10 billion dollars [1], more than 40 percent of companies worldwide report
business disruptions due to malware [2], and 55% of all online users believe
their systems had been infected [3]. All signs point toward malware becoming
a more significant threat in the future.
Malware analysis plays a crucial role in countering this trend. Through
detailed analysis of a particular malicious application, security researchers
will be able to gain insight into its intention, its runtime behaviors, and
the risk that it creates. This knowledge is very valuable in predicting the
threats posed by the malware, creating appropriate anti-virus signatures,
developing tools to patch infected systems, and in some cases tracing back
to the criminal behind it. Traditional tools for malware analysis include
disassemblers [4], debuggers [5], and black box analysis such as function call
tracing (e.g., strace) and network sniffers [6]. While these methods are useful
to some extent, each suffers from certain drawbacks. Disassembling, like
other static analysis techniques, can be circumvented by packing or dynamic
code translation [7, 8]. Dynamic black box analysis only gives an incomplete
view of the malware’s behaviors. Debugging, on the other hand, provides a
more exhaustive view but is vulnerable to debugger fingerprinting [9, 10]. As
malware gets more and more complex, it is often impractical and unnecessary
to analyze each and every instruction.
Another common approach in malware analysis is to deploy analyzing tools
in conjunction with virtualization technology, taking advantage of its strong
1
Comentarios a estos manuales