What we are solving and why it is important (section 1)

advertisement
What we are solving and why it is important (section 1)
Over the last several years, innovations in the advancement of computing and communication hardware
have allowed mobile phones to evolve into affordable general-purpose computing platforms. In the
fourth quarter of 2010 alone, 101.2 million smart phones were sold worldwide, a growth of 88.6% from
a year ago (1). These phones are equipped with a rich set of hardware interfaces and software
applications that allow personal and corporate users to interact with both the cyber and physical world
through internet access, email, SMS, and location based services. To support the increasing complexity
of software and hardware, Linux, Windows, and Symbian based operating systems with tens of millions
of lines of code have been deployed to manage smart phone resources. With the increased adoption of
smart phones into our daily lives and their large attack surface, it is no surprise that malware writers
have begun targeting mobile phones. In a study conducted by F-Secure in 2007, 373 unique instances of
malware were found to target mobile platforms (2).
This paper aims to increase security of mobile platforms by providing a comprehensive study along with
a mitigation mechanism aimed at a subset of malware known as kernel-level rootkits. A rootkit is a tool
that enables administrative-level access to a computer allowing it to stealthily carry out malicious goals.
For example, a rootkit may employ stealthy techniques such as hiding processes and open files used to
carry out malicious activities to avoid detection. While occurrences of rootkits targeting mobile
operating systems have been limited to research publications (3) (4), it is only a matter of time until
malware developers begin leveraging rootkits against smartphone operating systems.
We plan to implement our mitigation mechanism on the Android software stack that is built on top of
the Linux operating system. We chose this platform because (a) Android software along with Linux
operating system are freely available, thereby allowing us to study and modify data structures at will;
and (b) the existing Android development environment provides debugging and emulation tools that
ease experimentation.
To limit the exposure of sensitive data to rootkits, we plan to add encryption into the Linux kernel and
Android application libraries. While the Android framework enforces security permissions at the
application level to prevent unauthorized access to sensitive data (i.e. GPS, contacts, email, SMS) (5),
rootkits can undermine these permissions due to the fact that they operate within the kernel where
they have full access to all of the system resources. Our proposed encryption module ensures that data
is stored in an encrypted format and is only decrypted when presented to an application that the user
has granted sufficient privileges to. We understand that this approach has limitations. We are assuming
the user has carefully assigned privileges to trustworthy applications. We also realize that rootkit
developers could reverse engineer our encryption mechanism and compromise our approach. Given the
present state of rootkit prevention on smart phones, we feel that our approach significantly raises the
level of effort required by rootkit developers to gain access to sensitive data.
Related Work – How other people solved and why they fell short (section 2)
Rootkit detection and/or prevention is a common problem that has been researched heavily in the
realms of servers and personal computers. But, there is less research in the area that is specific to smart
phones such as the Android. However, many of the proposed detection methods for rootkits on desktop
computers still apply to smart phones, but they are often not feasible due to operational differences and
computational needs (Ref: 3). An example of this is that rootkit detection applications exist that aim to
continually scan contents of memory and/or the file systems looking for invalid modifications.
Rootkit detection and prevention techniques have been heavily researched in the context of servers and
personal computers. While this research applies to Android’s underlying operating system, Linux, the
techniques used are not feasible on mobile platforms due to operational differences and computational
needs. For example, [7,8,9] make use of computation-intensive periodic scans of memory looking for
invalid modifications (Ref: 3). This type of detection mechanism is too computational intensive for an
Android mobile device and would ultimately drain the battery life. A similar approach that has been
proposed is to offload the scanning computations to an outside source such as a computer that the
Android phone could be connected to(Ref: 6). The proposed solution in this approach is to download
changed files from the mobile device onto a remote computer connected via USB where rootkit
detection software is run.. This design removes the downside of the battery life being consumed on the
mobile device, however, it falls victim to only being able to do scans at varying times that the mobile
phone user plugs the device into a remote computer. In addition, the method used to acquire data from
the phone could be compromised by a rootkit.
The most notable defense strategies applicable to Android are that of additional hardware support on
the device and the use of detection/prevention methods inside a virtual machine monitor (VMM) on the
mobile device (Ref: 3). An example of additional hardware support would be to introduce a TPM chip on
the Android phone and remotely verify the integrity of the phone(Ref: 3). This approach could also drain
too much battery life if the solution was not efficient and we aim to propose a solution that requires no
hardware modifications. This approach suffers from adding additional hardware to a platform that is
already very restrictive in terms of cost and hardware footprint. The idea of building detection methods
into a VMM running on the mobile device is most likely the best option for success in general. Having
access to code that lives below the operating system is the most complete way to ensure that rootkits
can be prevented since no other rootkit or malware would have access to the VMM layer. The problem
with this approach is that no VMM is currently in existence for Android mobile phones and that the
proposed solution risks being to computationally intensive (Ref: 3). The benefit to our approach is that
the solution is applicable to any future type of rootkit as well as those currently in existence since we
aim to protect all sensitive data on the device. We also feel that our design is less intensive in terms of
battery usage due to the fact that sensitive information is only encrypted/decrypted on demand and to
finite amounts of data rather than frequently scanning all of memory and/or the file system at regular
time intervals.
(Optional) What is difficult about this problem (section 3)
Currently no VMM known that works for Android (so adding security beneath the OS kernel is not a
largely known possibility right now)
Most techniques are very computation intensive (and power consumption is a big focus for Android)
Our plan and why it is better than other approaches (what we plan to do) (section 4)
- Encrypt sensitive data on the phone (SMS, voicemail, GPS data, contacts, etc.) so that it cannot be
easily consumed by a rootkit/malware that was not given specific access to that data
- Monitor Android applications 'Intents' against what data they actually access (and report violations)
based on what the application is permitted to do (i.e. if an application does not have an intent to look up
the GPS information, then if it tries to grab that data we detect this)
Anticipated results (section 5)
We anticipate being able to demonstrate that some piece of malware or rootkit on the phone that was
never explicitly given access to sensitive data is not able to retrieve decrypted data. In essence, if a piece
of malware that was never given this special permission (capability), then if it tries to access something
it should not the event is detected, logged, and prevented or mitigated (by giving encrypted data to the
piece of malware).
We should be able to do some research about the power efficiency of our approach. We should aim to
increase power usage by no more than some percent or something along these lines (we ought to be
able to come up with some reasonable measurement that can be proven or not).
Works Cited
1. Canalys. Google’s Android becomes the world’s leading smart phone platform. [Online] January 31,
2011. http://www.canalys.com/pr/2011/r2011013.html.
2. F-Secure Corporation. Sate of CELL PHONE Malware in 2007. http://www.usenix.org. [Online] 2007.
http://www.usenix.org/events/sec07/tech/hypponen.pdf.
3. Rootkits on Smart Phones: Attacks, Implications and Opportunities. Bickford, Jeffrey, et al. New York :
ACM, 2010. Eleventh Workshop on Mobile Computing Systems & Applications.
4. This is not the droid you're looking for... Trustwave SpiderLabs. s.l. : DEF CON 18, 2010.
5. Google. Security and Permissions. Android Developers. [Online]
6. On Rootkit and Malware Detection in Smartphones [Online]
7. A. Baliga, V. Ganapathy, and L. Iftode. Automatic inference and enforcement of kernel data structure
invariants. In Proc. Annual Computer Security and Applications Conference, 2008
8. N. L. Petroni Jr., T. Fraser, J. Molina, and W. A. Arbaugh. Copilot - a
coprocessor-based kernel runtime integrity monitor. In Proc. USENIX
Security Symposium, 2004
9. N. L. Petroni and M. Hicks. Automated detection of persistent kernel control-flow attacks. In Proc.
ACM Conference on Computer and
Communications Security, 2007
*****************************************************************************
Notes for Section 2 that I moved down here (after writing it)
*****************************************************************************
Detecting and preventing rootkits is challenging, even on desktop systems any detection mechanism
must work beneath the operating system.
Specialized hardware – impractical for mobile footprint where space is limited
VMM – good for servers, but too resource intensive for embedded platforms. Also, little work has been
done on developing vmms for smart phones (reference state of vmm on smart em
Off-load scanning of files to remote system - rootkit detection based on file hashes (each time the
phone is connected to a PC via USB, the PC downloads any files that changed and computes a hash of
them and compares it to a previous hash) [Ref: 6]
Kernel level rootkit detectors (chkroot) have been ported to android, but resource constraints have
limited their approach (frequent scans drain battery) , and relies upon a large body of existing rootkits.
Anomaly detection learning algorithms computationally intensive and require a large data store. To
avoid resource limitations, other scanners (On Rootkit and Malware Detection in Smartphones) have
offloaded to pc.
- (Other rootkit detectors as well. The problem with these is that they are very resource
intensive and require lots of computations. This is not a good thing for Android due to battery power.)
Our approach protects against generic and future rootkits by encrypting information. Only requires
battery power when a user attempts to access sensitive information (much less frequent that scans?)
Download