Auteur Sujet: [FireEye]A Growing Number of Android Malware Families Believed to Have a Common Origin: A Study Based on Binary Code  (Lu 2645 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne igor51

  • Admin
  • Mega Power Members
  • *****
  • Messages: 10419
A Growing Number of Android Malware Families Believed to Have a Common
Origin: A Study Based on Binary Code



  Introduction


 

On Feb. 19, IBM XForce researchers released an intelligence report
    [  href="https://securityintelligence.com/android-malware-about-to-get-worse-gm-bot-source-code-leaked/">1]
  stating that the source code for GM Bot was leaked to a crimeware
  forum in December 2015. GM Bot is a sophisticated Android malware
  family that emerged in the Russian-speaking cybercrime underground in
  late 2014. IBM also claimed that several Android malware families
  recently described in the security community were actually variants of
  GM Bot, including Bankosy[  href="http://www.symantec.com/connect/blogs/androidbankosy-all-ears-voice-call-based-2fa">2],
    MazarBot[3],
  and the SlemBunk malware recently described by FireEye[  href="https://www.fireeye.com/blog/threat-research/2015/12/slembunk_an_evolvin.html">4,
    5].


 

Security vendors may differ in their definition of a malware
  “variant.” The term may refer to anything from almost identical code
  with slight modifications, to code that has superficial similarities
  (such as similar network traffic) yet is otherwise very different.


 

Using IBM’s reporting, we compared their GM Bot samples to SlemBunk.
  Based on the disassembled code of these two families, we agree that
  there are enough code similarities to indicate that GM Bot shares a
  common origin with SlemBunk. Interestingly, our research led us to
  identify an earlier malware family named SimpleLocker – the first
  known file-encryption ransomware on Android [  href="http://www.welivesecurity.com/2014/06/04/simplocker/">6] –
  that also shares a common origin with these banking trojan families.


 

  GM Bot and SlemBunk

 

Our analysis showed that the four GM Bot samples referenced by IBM
  researchers all share the same major components as SlemBunk. Figure 1
  of our earlier report [  href="https://www.fireeye.com/blog/threat-research/2015/12/slembunk_an_evolvin.html">4]
  is reproduced here, which shows the major components of SlemBunk and
  its corresponding class names:


 

  •    
          ServiceStarter
    : An Android receiver that will be
        invoked once an app is launched or the device boots up. Its
        functionality is to start the monitoring
        service, MainService, in the background.

  •    
          MainService
    : An Android service that runs in the
        background and monitors all running processes on the device. It
        prompts the user with an overlay view that resembles the legitimate
        app when that app is launched. This monitoring service also
        communicates with a remote host by sending the initial device data
        and notifying of device status and app preferences.

  •    
          MessageReceiver
    : An Android receiver that handles
        incoming text messages. In addition to the functionality of
        intercepting the authentication code from the bank, this component
        also acts as the bot client for remote command and control
      (C2).

  •    
          MyDeviceAdminReceiver
    : A receiver that requests
        administrator access to the Android device the first time the app is
        launched. This makes the app more difficult to remove.

  •     Customized UI views: Activity classes that present fake login
        pages that mimic those of the real banking apps or social apps to
        phish for banking or social account credentials.

 


 
  Figure 1. Major components of SlemBunk malware family


 

The first three GM Bot samples have the same package name as our
  SlemBunk sample. In addition, the GM Bot samples have five of the same
  major components, including the same component names, as the SlemBunk
  sample in Figure 1.


 

The fourth GM Bot sample has a different initial package name, but
  unpacks the real payload at runtime. The unpacked payload has the same
  major components as the SlemBunk sample, with a few minor changes on
  the class names: MessageReceiver replaced with
  buziabuzia
, and MyDeviceAdminReceiver replaced with MDRA.


 


 
  Figure 2. Code Structure Comparison between GM
    Bot and SlemBunk


 

Figure 2 shows the code structure similarity between one GM Bot
  sample and one SlemBunk sample (SHA256
  9425fca578661392f3b12e1f1d83b8307bfb94340ae797c2f121d365852a775e and
  SHA256
  e072a7a8d8e5a562342121408493937ecdedf6f357b1687e6da257f40d0c6b27 for
  GM Bot and SlemBunk, respectively). From this figure, we can see that
  the five major components we discussed in our previous post [  href="https://www.fireeye.com/blog/threat-research/2015/12/slembunk_an_evolvin.html">4]
  are also present in GM Bot sample. Other common classes include:


 

  •    
          Main
    , the launching activity of both samples.

  •    
          MyApplication
    , the application class that starts before
        any other activities of both samples.

  •    
          SDCardServiceStarter
    , another receiver that monitors
        the status of MainService and restarts it when it dies.

 

Among all the above components and classes, MainService is
  the most critical one. It is started by class Main at the
  launching time, keeps working in the background to monitor the top
  running process, and overlays a phishing view when a victim app (e.g.,
  some mobile banking app) is recognized. To keep MainService
  running continuously, malware authors added two receivers –
  ServiceStarter and SDCardServiceStarter – to check its
  status when particular system events are received. Both GM Bot and
  SlemBunk samples share the same architecture. Figure 3 shows the major
  code of class SDCardServiceStarter to demonstrate how GM Bot
  and SlemBunk use the same mechanism to keep MainService running.


 


 
  Figure 3. Method onReceive of
    SDCardServiceStarter for GM Bot and SlemBunk


 

From this figure, we can see that GM Bot and SlemBunk use almost
  identical code to keep MainService running. Note that both
  samples check the country in system locale and avoid starting
  MainService when they find the country is Russia. The only
  difference is that GM Bot applies renaming obfuscation to some
  classes, methods and fields. For example, static variable
  “MainService;->a” in GM Bot has the same role as static variable
  “MainService;->isRunning” in SlemBunk. Malware authors commonly use
  this trick to make their code harder to understand. However this won’t
  change the fact that the underlying codes share the same origin.


 

Figure 4 shows the core code of class MainService to
  demonstrate that GM Bot and SlemBunk actually have the same logic for
  main service. In Android, when a service is started its
  onCreate method will be called. In method onCreate of
  both samples, a static variable is first set to true. In GM Bot, this
  variable is named “a”, while in SlemBunk it is named “isRunning”. Then
  both will move forward to read an app particular preference. Note that
  the preferences in both samples have the same name: “AppPrefs”. The
  last tasks of these two main services are also the same. Specifically,
  in order to check whether any victim apps are running, a runnable
  thread is scheduled. If a victim app is running, a phishing view is
  overlaid on top of that of the victim app. The only difference here is
  also on the naming of the runnable thread. Class “d” in GM Bot and
  class “MainService$2” in SlemBunk are employed respectively to conduct
  the same credential phishing task.


 


 
  Figure 4. Class MainService for GM Bot
    and SlemBunk


 

In summary, our investigation into the binary code similarities
  supports IBM’s assertion that GM Bot and SlemBunk share the same origin.


 


  SimpleLocker and SlemBunk


 

IBM noted that GM Bot emerged in late 2014 in the Russian-speaking
  cybercrime underground. In our research, we noticed that an earlier
  piece of Android malware named SimpleLocker also has a code structure
  similar to SlemBunk and GM Bot. However, SimpleLocker has a different
  financial incentive: to demand a ransom from the victim. After landing
  on an Android device, SimpleLocker scans the device for certain file
  types, encrypts them, and then demands a ransom from the user in order
  to decrypt the files. Before SimpleLocker’s emergence, there were
  other types of Android ransomware that would lock the screen; however,
  SimpleLocker is believed to be the first file-encryption ransomware on Android.


 

The earliest report on SimpleLocker we identified was published by
  ESET in June 2014 [  href="http://www.welivesecurity.com/2014/06/04/simplocker/">6].
  However, we found an earlier sample in our malware database from May
  2014 (SHA256
  edff7bb1d351eafbe2b4af1242d11faf7262b87dfc619e977d2af482453b16cb). The
  compile date of this app was May 20, 2014. We compared this
  SimpleLocker sample to one of our SlemBunk samples (SHA256
  f3341fc8d7248b3d4e58a3ee87e4e675b5f6fc37f28644a2c6ca9c4d11c92b96)
  using the same methods used to compare GM Bot and SlemBunk.


 

Figure 5 shows the code structure comparison between these two
  samples. Note that this SimpleLocker variant also has the major
  components ServiceStarter and MainService, both used by
  SlemBunk. However, the purpose of the main service here is not to
  monitor running apps and provide phishing UIs to steal banking
  credentials. Instead, SimpleLocker’s main service component scans the
  device for victim files and calls the file encryption class to encrypt
  files and demand a ransom. The major differences in the SimpleLocker
  code are shown in the red boxes: AesCrypt and FileEncryptor. Other
  common classes include:


 

  •    
          Main
    , the launching activity of both samples.

  •    
          SDCardServiceStarter
    , another receiver that monitors
        the status of MainService and restarts it when it dies.

  •    
          Tor and OnionKit,
    third-party libraries for
        private communication.

  •    
          TorSender, HttpSender and Utils,
       
    supporting classes to provide code for CnC communication and for
        collecting device information.

 


 


 


  Figure 5. Code structure comparison between
    SimpleLocker and SlemBunk samples


 

Finally, we located another SimpleLocker sample (SHA256
  304efc1f0b5b8c6c711c03a13d5d8b90755cec00cac1218a7a4a22b091ffb30b) from
  July 2014, about two months after the first SimpleLocker sample. This
  new sample did not use Tor for private communications, but shared four
  of the five major components as the SlemBunk sample (SHA256:
  f3341fc8d7248b3d4e58a3ee87e4e675b5f6fc37f28644a2c6ca9c4d11c92b96).
  Figure 6 shows the code structure comparison between these two samples.


 


 
  Figure 6. Code structure comparison between
    SimpleLocker and SlemBunk variants


 

As we can see in Figure 6, the new SimpleLocker sample used a
  packaging mechanism similar to SlemBunk, putting HttpSender and
  Utils into a sub-package named “utils”. It also added two other
  major components that were originally only seen in SlemBunk:
  MessageReceiver and MyDeviceAdminReceiver. In total,
  this SimpleLocker variant shares four out of five major components
  with SlemBunk.


 

Figure 7 shows the major code of MessageReceiver in the
  previous samples to demonstrate that SimpleLocker and SlemBunk use
  basically the same process and logic to communicate with the CnC
  server. First, class MessageReceiver registers itself to handle
  incoming short messages, whose arrival will trigger its method
  onReceive. As seen from the figure, the main logics here are
  basically the same for SimpleLocker and SlemBunk. They first read the
  value of a particular key from app preferences. Note that the names
  for the key and shared preference are the same for these two different
  malware families: key is named “CHECKING_NUMBER_DONE” and preference
  named “AppPrefs”.  The following steps call method
  retrieveMessage to retrieve the short messages, and then
  forward the control flow to class SmsProcessor. The only
  difference here is that SimpleLocker adds one extra method named
  processControlCommand to forward control flow.


 

Class SmsProcessor defines the CnC commands supported by the
  malware families. Looking into class SmsProcessor, we
  identified more evidence that SimpleLocker and SlemBunk are of the
  same origin. First, the CnC commands supported by SimpleLocker are
  actually a subset of those supported by SlemBunk. In SimpleLocker, CnC
  commands include "intercept_sms_start",
  "intercept_sms_stop", "control_number" and
  "send_sms", all of which are also present in SlemBunk
  sample. What is more, in both SimpleLocker and SlemBunk there is a
  common prefix “#” before the actual CnC command. This kind of
  peculiarity is a good indicator that SimpleLocker and SlemBunk share a
  common origin.


 


 
  Figure 7. Class MessageReceiver for
    SimpleLocker and SlemBunk variants


 

The task of class MyDeviceAdminReceiver is to request device
  administrator privilege, which makes these malware families harder to
  remove. SimpleLocker and SlemBunk are also highly similar in this
  respect, supporting the same set of device admin relevant functionalities.


 

At this point, we can see that these variants of SimpleLocker and
  SlemBunk share four out of five major components and share the same
  supporting utilities. The only difference is in the final payload,
  with SlemBunk phishing for banking credentials while SimpleLocker
  encrypts certain files and demands ransom. This leads us to believe
  that SimpleLocker came from the same original code base as SlemBunk.


 

  Conclusion

 

Our analysis confirms that several Android malware families share a
  common origin, and that the first known file-encrypting ransomware for
  Android – SimpleLocker – is based on the same code as several banking
  trojans. Additional research may identify other related malware families.


 

Individual developers in the cybercrime underground have been
  proficient in writing and customizing malware. As we have shown,
  malware with specific and varied purposes can be built on a large base
  of shared code used for common functions such as gaining
  administrative privileges, starting and restarting services, and CnC
  communications. This is apparent simply from looking at known samples
  related to GM Bot – from SimpleLocker that is used for encryption and
  ransomware, to SlemBunk that is used as a banking Trojan and for
  credential theft, to the full-featured MazarBot backdoor.


 

With the leak of the GM Bot source code, the number of customized
  Android malware families based on this code will certainly increase.
  Binary code-based study, one of FireEye Labs’ major research tools,
  can help us better characterize and track malware families and their
  relationships, even without direct access to the source code.
  Fortunately, the similarities across these malware families make them
  easier to identify, ensuring that FireEye customers are well protected.


 


  References:


 

[1].     href="https://securityintelligence.com/android-malware-about-to-get-worse-gm-bot-source-code-leaked/">Android
    Malware About to Get Worse: GM Bot Source Code Leaked
 [2].
        href="http://www.symantec.com/connect/blogs/androidbankosy-all-ears-voice-call-based-2fa">Android.Bankosy:
    All ears on voice call-based 2FA
 [3].     href="https://www.csis.dk/en/csis/news/4819/">MazarBOT: Top class
    Android datastealer
 [4].     href="https://www.fireeye.com/blog/threat-research/2015/12/slembunk_an_evolvin.html">SLEMBUNK:
    AN EVOLVING ANDROID TROJAN FAMILY TARGETING USERS OF WORLDWIDE
    BANKING APPS
 [5].     href="https://www.fireeye.com/blog/threat-research/2016/01/slembunk-part-two.html">SLEMBUNK
    PART II: PROLONGED ATTACK CHAIN AND BETTER-ORGANIZED
  CAMPAIGN
 [6].     href="http://www.welivesecurity.com/2014/06/04/simplocker/">ESET
    Analyzes Simplocker – First Android File-Encrypting, TOR-enabled Ransomware


 

 


Source: A Growing Number of Android Malware Families Believed to Have a Common
Origin: A Study Based on Binary Code

Tags: