Auteur Sujet: [FireEye]From Windows to Droids: An Insight in to Multi-vector Attack Mechanisms in RATs  (Lu 2728 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne igor51

  • Admin
  • Mega Power Members
  • *****
  • Messages: 10419
From Windows to Droids: An Insight in to Multi-vector Attack Mechanisms
in RATs


FireEye recently observed a targeted attack on a U.S.-based financial
  institution via a spear-phishing email. The payload used in this
  campaign is a tool called WinSpy, which is sold by the author as a
  spying and monitoring tool. The features in this tool resemble that of
  many other off-the-shelf RATs (Remote Administration Tools) available
  today. We also observed a second campaign by a different attacker
  where the WinSpy payload was implanted in macro documents to attack
  various other targets in what appears to be a spam campaign.


 

The command-and-control (CnC) infrastructure used in the attack
  against the financial institution is owned and controlled by author of
  WinSpy. This does not necessarily mean the author is behind attack as
  the author provides the use of his server for command and control as
  well as to store the victim data as the default option in the WinSpy
  package. This feature allowing shared command-and-control
  infrastructure advertently or inadvertently provides another level
  of anonymity and deniability for the attacker.


 

While analyzing the windows payloads for WinSpy we discovered that
  it also had Android spying components, which we have dubbed GimmeRat.
  The Android tool has multiple components allowing the victim’s device
  to be controlled by another mobile device remotely over SMS messages
  or alternatively through a Windows-based controller. The Windows-based
  controller is simplistic and requires physical access to the device.
  The recent surge in Android-based RATs such as Dendroid and
  AndroRAT shows a spike in the interest of malicious actors to control
  mobile devices. GimmeRAT is another startling example of malicious
  actors venturing into the Android ecosystem.


 


 
    Attacks Employing WinSpy


 

While the WinSpy tool is being sold as a spying and monitoring tool
  for home users, its remote administration capabilities fits the bill
  for an adversary looking to infiltrate a target or organization. This
  tool also adds another layer of anonymity for the attacker by using
  the default command-and-control server provided as part of the WinSpy package.


 
 

The attack targeting a U.S. financial institution arrives via a
  spear-phishing email. The attachment
  (b430263181959f4dd681e9d5fd15d2a0) in the email is a large NSIS packed
  file, which when detonated launches a screenshot of a pay slip as
  decoy to avert the attention of the victim. It also drops and launches
  various components as seen in Figure 1 and Figure 2.


 
 

We observed a second attacker using WinSpy in macro documents
  (78fc7bccd86c645cc66b1a719b6e1258, f496bf5c7bc6843b395cc309da004345)
  as well as standalone executables
  (8859bbe7f22729d5b4a7d821cfabb044, 2b19ca87739361fa4d7ee318e6248d05).
  These arrive either as an attachment or as a link to the payload in
  emails. The documents had the unique metadata shown below:


 
   
     

File Type                       : XLS


         

MIME Type                    : application/vnd.ms-excel


         

Author                          : MR. FRANK

Last
          Modified By              : MR. FRANK


         

Software                        : Microsoft Excel


         

Create Date                    : 2012:02:07 10:41:21


         

Modify Date                     : 2012:02:07 10:41:29


         

Security                          : None

Code
          Page                       : Windows Latin 1 (Western
        European)

Company                         : USER


         

App Version                     : 11.5606


 

The email attacks were found to have attachment names such as


 

Western Union Slip.xls

 

Money Transfer Wumt.xls

 

Wumt.xls

 


  Windows Components


 

The WinSpy modules are written in Visual Basic and use some freely
  available libraries such as   href="http://www.thevbzone.com/modJPEG.bas">modJPEG.bas and cJpeg.cls .
  The components each support various features as shown below.


 
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
   
     
Feature       scope="col">Component
Webcam
        monitoring
          class="c09_td_value is-hidden-mml">Webcam
      monitoring
          class="is-visible-mml"> RDS.exe       class="c09_td_value is-hidden-mml">RDS.exe
Screen
            capture & JPEG Encoder
          class="c09_td_value is-hidden-mml">Screen capture & JPEG
      Encoder
          class="is-visible-mml"> RDS.exe       class="c09_td_value is-hidden-mml">RDS.exe

            Connectivity check
          class="c09_td_value is-hidden-mml">Connectivity
      check

        RDS.exe
      class="c09_td_value is-hidden-mml">RDS.exe
Send Victim
            information to CnC
          class="c09_td_value is-hidden-mml">Send Victim information to
      CnC

        RDS.exe
      class="c09_td_value is-hidden-mml">RDS.exe
FTP
        exfiltration
          class="c09_td_value is-hidden-mml">FTP
      exfiltration
          class="is-visible-mml"> RDS.exe       class="c09_td_value is-hidden-mml">RDS.exe
Status
            Report to CnC
          class="c09_td_value is-hidden-mml">Status Report to
      CnC

        windns.exe
      class="c09_td_value is-hidden-mml">windns.exe
Email/FTP
        exfiltration
          class="c09_td_value is-hidden-mml">Email/FTP
      exfiltration
          class="is-visible-mml"> windns.exe       class="c09_td_value is-hidden-mml">windns.exe
AV Find and
        Kill
AV
          Find and Kill
          class="is-visible-mml"> windns.exe       class="c09_td_value is-hidden-mml">windns.exe
Auto
            configure firewall
          class="c09_td_value is-hidden-mml">Auto configure
      firewall
          class="is-visible-mml"> windns.exe       class="c09_td_value is-hidden-mml">windns.exe
Keylogging
            and reports
          class="c09_td_value is-hidden-mml">Keylogging and
      reports
          class="is-visible-mml"> messenger.exe
                class="c09_td_value is-hidden-mml">messenger.exe
Backdoor
            for remote interaction
          class="c09_td_value is-hidden-mml">Backdoor for remote
      interaction
          class="is-visible-mml"> rdbms.exe       class="c09_td_value is-hidden-mml">rdbms.exe
Microphone
        recording
          class="c09_td_value is-hidden-mml">Microphone
      recording
          class="is-visible-mml"> rdbms.exe       class="c09_td_value is-hidden-mml">rdbms.exe

            Upload/download/execute files
          class="c09_td_value is-hidden-mml">Upload/download/execute
      files

        rdbms.exe
      class="c09_td_value is-hidden-mml">rdbms.exe
File system
        browser
          class="c09_td_value is-hidden-mml">File system
      browser
          class="is-visible-mml"> rdbms.exe       class="c09_td_value is-hidden-mml">rdbms.exe
Execute
            remote commands
          class="c09_td_value is-hidden-mml">Execute remote
      commands
          class="is-visible-mml"> rdbms.exe       class="c09_td_value is-hidden-mml">rdbms.exe
Send
            messages to remote machine
          class="c09_td_value is-hidden-mml">Send messages to remote
      machine
          class="is-visible-mml"> rdbms.exe       class="c09_td_value is-hidden-mml">rdbms.exe

 

The WinSpy malware creates its configuration in the registry under
  "SOFTWARE\MSI64" as shown in Figure 2. The various
  components of WinSpy read this configuration at runtime. This
  configuration dictates various settings such as the username, unique
  identifier, connection parameters, remote FTP server and credentials,
  filename and path for captured data, current status, etc. The various
  options in the configuration are abbreviations. For example
  "DUNIN" stands for date to uninstall, "FTSV"
  stands for FTP server, "FTUS" stands for FTP user, and so
  forth. The "SID2" value is a unique ID used to identify the
  infection and is generated at build time.


 
 

The WinSpy controller has options to create a new remote file
  allowing you to choose various parameters and exfiltration options.
  The author interestingly allows for default command and control and
  exfiltration options to a server he controls.


 
 

The controller has options to retrieve screenshots, keylogs, and
  various reports from the victim’s machine. It also has the ability to
  interact with file system to upload and download files as well as
  execute new payloads.


 
 
 


 
    Command and Control


 

The WinSpy payloads have multiple communication methods for
  reporting status, attacker interaction, and data exfiltration each of
  which are described below.


 


  Method 1 - I am online :


 

It reports back to the authors server on port 14001 to report the
  victim's online status with "/P" and it receives the same
  command in response to acknowledge.


 
 


 
    Method 2 - Victim Information:


 

It also reports back to the WinSpy author’s server on port 27171
  using a secondary protocol shown below. The request contains the
  victim’s IP address as well as unique identifier generated at build
  time of the payload. The server responds with a keep alive in response
  to this request.


 
 
 


 
    Method 3 - SMTP Exfiltration:


 

It relays keylog data through SMTP if configured. It relays emails
  through an SMTP server running on port 37 on the WinSpy author’s
  server using preconfigured authentication parameters. Port 37 is
  typically used by NTP protocol but in this case the author has
  reconfigured it for SMTP relay. The X-Mailer "SysMon v1.0.0"
  sticks out like a sore thumb.


 
 


 
    Method 4 - FTP Exfiltration:


 

If configured with a custom FTP server, the WinSpy payload will
  upload all intercepted data and report to the remote server
  periodically. The FTP credentials are stored in the registry
  configuration discussed earlier.


 


 
    Method 5 - Direct Interaction:


 

The rdbms.exe module listens on port 443 on the victim’s machine.
  The attacker can directly connect to this port from the WinSpy
  controller and issue various commands to download captured data,
  upload/download files, execute files, send messages, view webcam
  feeds, etc. Any required data transfer is done over Port 444. It
  supports various commands, the significant ones are shown below. The
  initial connection commands shows that the author plans to implement
  authentication at some point in time but as it stands now anyone can
  connect to an infected instance using this command.


 
   
     
   
     
       
   
                class="c09_td">
        Acknowledge
      class="c09_td_value is-hidden-mml">Acknowledge

   
     
       
   
                class="c09_td"> Uploads
            specified File
          class="c09_td_value is-hidden-mml">Uploads specified
      File

   
                class="c09_td"> Downloads
            file from specified path
          class="c09_td_value is-hidden-mml">Downloads file from
          specified path

   
     
       
   
     
       
   
     
       
   
     
   
     
       
   
     
   
                class="c09_td"> Execute
            remote file in specified path
          class="c09_td_value is-hidden-mml">Execute remote file in
          specified path

   
     
   
                class="c09_td"> Start
            microphone recording
          class="c09_td_value is-hidden-mml">Start microphone
      recording

   
                class="c09_td"> Run command
            on remote machine
          class="c09_td_value is-hidden-mml">Run command on remote
      machine

   
                class="c09_td"> Sends
            message to remote machine
          class="c09_td_value is-hidden-mml">Sends message to remote
      machine
Command       scope="col">Description

        /CLUserName.Password.
      class="c09_td_value is-hidden-mml">/CLUserName.Password.

            Initialize connection from controller

          Initialize connection
          from controller

        /CK
      class="c09_td_value is-hidden-mml">/CK

        /CB{OptionalPath}
      class="c09_td_value is-hidden-mml">/CB{OptionalPath}

            Enumerates all files in root dir or specified
        path
          class="c09_td_value is-hidden-mml">Enumerates all files in
          root dir or specified path

        /CU{FilePath}
      class="c09_td_value is-hidden-mml">/CU{FilePath}

        /CD{FilePath}
      class="c09_td_value is-hidden-mml">/CD{FilePath}
/CD
        \\\KEYLOGS
          class="c09_td_value is-hidden-mml">/CD \\\KEYLOGS
Download
        keylogs
          class="c09_td_value is-hidden-mml">Download
      keylogs
/CD
        \\\WEBSITED
          class="c09_td_value is-hidden-mml">/CD \\\WEBSITED
Download
            websites visited detail report
          class="c09_td_value is-hidden-mml">Download websites visited
          detail report
/CD
        \\\WEBSITES
          class="c09_td_value is-hidden-mml">/CD \\\WEBSITES
Download
            websites visited summary report
          class="c09_td_value is-hidden-mml">Download websites visited
          summary report
/CD
        \\\ONLINETIME
          class="c09_td_value is-hidden-mml">/CD
      \\\ONLINETIME
          class="is-visible-mml"> Download online time
        report
          class="c09_td_value is-hidden-mml">Download online time
      report
/CD
        \\\CHATROOM
          class="c09_td_value is-hidden-mml">/CD \\\CHATROOM
Download
            chat logs
          class="c09_td_value is-hidden-mml">Download chat
      logs
/CD
        \\\PCACTIVETIME
          class="c09_td_value is-hidden-mml">/CD
      \\\PCACTIVETIME
          class="is-visible-mml"> Download PC active time
        report
          class="c09_td_value is-hidden-mml">Download PC active time
      report

        /RF{FilePath}
      class="c09_td_value is-hidden-mml">/RF{FilePath}
/WO &
        /WE
/WO
          & /WE
          class="is-visible-mml"> Webcam init and
        enable
          class="c09_td_value is-hidden-mml">Webcam init and
      enable

        /SO
      class="c09_td_value is-hidden-mml">/SO

        /AR{Command}
      class="c09_td_value is-hidden-mml">/AR{Command}

        /AM{Message}
      class="c09_td_value is-hidden-mml">/AM{Message}

 


  Android Components


 

In the process of investigating the Windows modules for WinSpy we
  also discovered various Android components that can be employed to
  engage in surveillance of a target. We have found three different
  applications that are a part of the surveillance package. One of the
  applications requires commandeering via a windows controller and
  requires physical access to the device while the other two
  applications can be deployed in a client-server model and allow remote
  access through a second Android device.


 
 


   Windows Physical Controller:


 

The Windows controller requires physical access to the device and
  allows the attacker to retrieve screenshots from the infected
  device. This component is designed to target a victim in physical
  proximity. The various options available in the Windows controller are
  shown in Figure 12 below.


 
 

 


 

The functionality and structure of the components on the victim’s
  device are described below in detail.


 


 
    Component 1 -  GlobalService.apk


 

 


 

Components:

 

          a. Services

 

                    Global Service

 

          b. Methods

 

                    Sleeper

 

                    ScreenCapturer

 

                    ServiceActivity

 


 
    Main activity


 

The app is started with an intent that is provided from the desktop
  android executable. The intent is a
  "com.google.system.service.StartUpReceiver" intent with the
  extra field of "interval" which holds a string of the form


 

“interval@@hostname@@port@@username@@password@@working_directory@@delete_after_upload”


 

The hostname, port, username, and password are used to connect to
  the attackers' FTP server to send screenshots, which is explained, in
  a later section. Once this intent is received the GlobalService is
  restarted with the interval parameter..


 


 
    GlobalService


 

This service contains the following variables


 

         private static final String TAG = "GlobalService";

 

         private static boolean isScreenON;

 

         private int mInterval;

 

         private KeyguardManager mKeyGaurdManager;

 

         private BroadcastReceiver mPowerKeyReceiver;

 

         private Timer mSyncTimer;

 

         private TimerTask mSyncTimerTask;

 

It goes on to check the value of the isScreenON variable. If the
  screen is on and if the keyguard has been unlocked, it calls the
  startScreenCaptureThread() method.


 

The startScreenCaptureThread method sets the value of the mInterval
  variable to the value of interval passed to GlobalService. It also
  sets the properties of the mSyncTimerTask to point to the
  takeScreenshot method from the ScreenCapturer class such that the
  thread, when invoked, will take a screenshot every ‘interval’ number
  of seconds.


 

The takeScreenshot method in the ScreenCapturer class connects to a
  native service using a local socket. It connects to port 42345 on
  localhost. The native service, which is listening on the same port,
  accepts strings on the socket.


 

The takeScreenshot method sends a string of the form
  ‘/data/local/tmp/images/screenshot_DATE.png’ to the underlying native
  service. The native service checks for the string after the last
  trailing slash “/”, “screenshot” after the last trailing slash will
  cause the native service to take a screenshot by issuing the
  “screencap –p” method. The screenshot taken will be written to the
  path specified by the string passed as an argument.


 

The takeScreenshot method then returns the path of the image to the
  screenCaptureThread which calls the FTPService thereby uploading the
  screenshot to the attackers CnC server.


 


 
    Component 2 - GlobalNativeService


 

The native services listens on a local socket for commands from the GlobalService.apk.


 

As seen above, if the string after the last trailing slash is
  “screenshot_” is sent to the Native service through the socket. It
  runs the command “screencap –p” on the shell of the device and
  captures a screenshot of the infected device.


 

The native service also implements other functionality such as
  deleting a file, saving FTP information to /data/local/tmp/ftpInformation.


 

If the string “GPSLocationInfo” is sent to the native service on the
  local socket, it creates GPSLocations.txt at
  /data/local/tmp/GPSLocations.txt but does not save the current GPS
  location. This perhaps indicates an upcoming feature.


 


 
    Android Remote Controller


 


 
    Component 1 - GPSTracker.apk 


 

The startup routine for the GPSTracker class is exactly the same as
  the one for GlobalService class. It gets the value from an
  "StartGPSTracker" intent which holds the value for an
  'interval' variable as an integer. This app records the GPS location
  of the device at regular intervals (5 minutes). It records the
  location only if the previous location is 200 meters apart from the
  current location.


 

When a location has to be added to the database all previous
  locations are deleted. Therefore it only maintains the last known location.


 

This app monitors all incoming messages. If an SMS with
  "[gmyl]"(Short for (g)ive (m)e (y)our (l)ocation) at the
  beginning arrives on the device, the corresponding SMS_RECEIVED intent
  is aborted and the database is queried. A response SMS is crafted as
  shown below:


 

"[himl]<>DATE><LATITUDE##LONGTITUDE"


 

The string “himl” is short for (h)ere (i)s (m)y (l)ocation. Only the
  last known location is sent as a response to the user.


 


 
    Component 2 - GPSTrackerClient.apk


 

This app acts as the controller to the GPSTracker.apk. While the
  GPSTracker.apk is installed on the victim's device, the
  GPSTrackerClient.apk is installed on the device from which the
  monitoring takes place. It takes the phone number of the phone to be
  tracked and sends it an SMS that contains "[gmyl]". The
  GPSTracker.apk then responds with the location in an SMS message as
  described in the above section. It then uses the native maps
  functionality, i.e., Google Maps, to point to the location sent by GPSTracker.


 

It is also worthwhile to note that the two modules do not
  authenticate each other by any means therefore it allows anyone
  infected with GPSTracker.apk to be controlled just by sending SMS
  messages with a given structure.


 


 
    Conclusion


 

These attacks and tools reaffirm that we live in an age of digital
  surveillance and intellectual property theft. Off-the-shelf RATs have
  continued to proliferate over the years and attackers have continued
  to increasingly use these tools. With the widespread adoption of
  mobile platforms such as Android, a new market continues to emerge
  with the demand for RATs to support these platforms. We will continue
  to see more implementations of RATs and payloads to support multiple
  platforms and attackers will continue to take advantage of these new
  attack surfaces to infiltrate their targets.


Source: From Windows to Droids: An Insight in to Multi-vector Attack Mechanisms
in RATs

Tags: