Binary analysis is imperative for protecting COTS (common off-the-shelf) programs and analyzing and defending against the myriad of malicious code, where source code is unavailable, and the binary may even be obfuscated. Also, binary analysis provides the ground truth about program behavior since computers execute binaries (executables), not source code. However, binary analysis is challenging due to the lack of higher-level semantics. Many higher level techniques are often inadequate for analyzing even benign binaries, let alone potentially malicious binaries. Thus, we need to develop tools and techniques which work at the binary level, can be used for analyzing COTS software, as well as malicious binaries.
The BitBlaze project aims to design and develop a powerful binary analysis platform and employ the platform in order to (1) analyze and develop novel COTS protection and diagnostic mechanisms and (2) analyze, understand, and develop defenses against malicious code. The BitBlaze project also strives to open new application areas of binary analysis, which provides sound and effective solutions to applications beyond software security and malicious code defense, such as protocol reverse engineering and fingerprint generation.
The BitBlaze project consists of two central research directions: (1) the design and development of the underlying BitBlaze Binary Analysis Platform, and (2) applying the BitBlaze Binary Analysis Platform to real security problems. The two research focii drive each other: as new security problems arise, we develop new analysis techniques. Similarly, we develop new analysis techniques in order to better or more efficiently solve known problems. Below, we give an overview of the two research directions. Here is an overview paper of the BitBlaze project. Some of our tools are also available under an open-source license.
The BitBlaze
Binary Analysis Platform
The underlying BitBlaze Binary Analysis
Platform features a novel fusion of static and dynamic analysis
techniques, dynamic symbolic execution, and whole-system
emulation and binary instrumentation. The BitBlaze platform has
different components for each task: Vine, TEMU, and
Rudder. The three components in tandem provide the power for
effective analysis of real-world binary programs for various
applications.
Release Information: We are now making some key parts of the BitBlaze Binary Analysis Platform available under open-source licenses. See a separate page for more information.
In conjunction with our BlackHat 2010 presentation, we have also made a demonstration binary release of some tools for trace-based crash analysis.
In particular, we show below three classes of security applications: (1) vulnerability detection, diagnosis, and defense; (2) automatic in-depth malware analysis and defense; (3) automatic model extraction and analysis.
Differential Slicing is an automatic slicing technique for the analysis of such execution differences. The causal difference graph it outputs captures the input differences that triggered the observed difference and the causal path of differences that led from those input differences to the observed difference.
Sting is an automatic worm defense system which proposes a suite of novel techniques to automatically detect new exploits, perform in-depth diagnosis, and generate effective anti-bodies (vulnerability signatures and hardened binaries) to protect vulnerable hosts and networks from further attacks.
In this work, we propose new techniques and demonstrate that one could automatically generate exploits from the patch binary and the original vulnerable program binary and sometimes in minutes of time.
We propose quantitative influence to more precisely characterize the degree of control an attacker has over a value. A specialization of the concept of channel capacity from information theory, we show that quantitative influence can be computed precisely using a decision procedure. Quantitative influence accurately distinguishes real attacks from false positives among warnings generated by a dynamic taint analysis tool on vulnerable binary servers.
Our work on statically-directed dynamic automated test generation explores a three-stage process. It first performs dynamic analysis to build a control-flow model, then performs static analysis to search for potential vulnerabilities, and finally uses dynamic symbolic execution to prove that warnings are true positives by finding concrete test cases for them. In an evaluation on a suite of buffer-overflow benchmarks extracted from real applications, the results of the first two phases allowed symbolic execution to trigger vulnerabilities it otherwise could not, including all but one of the benchmarks.
Panorama proposes a unified approach to detect privacy-breaching malware using whole-system dynamic taint analysis.
Renovo proposes a fully dynamic approach for hidden code extraction, capturing an intrinsic nature of hidden code execution.
HookFinder proposes fine-grained impact analysis to automatically detect and analyze malware's hooking behaviors. Since this technique captures the intrinsic nature of hooking behaviors, it is well suited for identifying new hooking mechanisms.
BitScope enables automatic exploration of program execution paths in malware to uncover trigger conditions (such as the time used in time bombs and commands in botnet programs) and trigger-based behavior, using dynamic symbolic execution. BitScope also provides in-depth analysis of the input/output behavior of the malware.
Deviation Detection automatically identifies deviations in different binaries to detect implementation errors and generate fingerprints. It is achieved by building symbolic formulas that characterize how each binary processes an input.
Dispatcher, Polygot and Replayer automatically extract information about network protocols and enables application dialogue replay using binary analysis.
FPGate stops attacks targeting function pointers by limiting indirect transfers to only those targets that are legal in the original program. When deployed together with other existing lightweight protections, FPGate can provide a level of protection comparable to CFI (Control Flow Integrity), stopping almost all control fow hijacking attacks including ROP. FPGate has two main advantages compared with previous solutions: it can inter-operate well with existing non-hardened libraries, so it can be deployed progressively; we also develop a method to recognize all sources and targets automatically in modern security-sensitive binary executables, thus FPGate can be applied directly on these binary files. The performance overhead of FPGate is only 0.36% in average measured using SPECint 2006. FPGate is a joint work of Lenx with Chao Zhang, Zhaofeng Chen, Lei Duan from Peking University, and Laszlo Szekeres, Stephen McCamant, Dawn Song from UC Berkeley.
The BitBlaze project is looking for developers to help extend and enhance our state-of-the art framework for binary analysis in security applications. In particular, we're looking for developers/researchers with skills and experience including computer security, languages and compilers, assembly language, low-level operating system work, and decision procedures. We have openings for interns (for the summer or another similar period), staff scientists/staff programmers, postdocs, and open-source contributors. If interested, send a CV/resume and interest description to bitblaze.jobs at gmail.com.
For general questions regarding the BitBlaze project, please send email to bitblaze at gmail.com.
To receive announcements about code releases and other bitblaze related updates, please subscribe to the Bitblaze Announcement List