Auteur Sujet: [FireEye]Increased Use of a Delphi Packer to Evade Malware Classification  (Lu 2693 fois)

0 Membres et 1 Invité sur ce sujet

En ligne igor51

  • Admin
  • Mega Power Members
  • *****
  • Messages: 10419
Increased Use of a Delphi Packer to Evade Malware Classification

Introduction


 

The concept of "packing" or "crypting" a
  malicious program is widely popular among threat actors looking to
  bypass or defeat analysis by static and dynamic analysis tools.
  Evasion of classification and detection is an arms race in which new
  techniques are traded and used in the wild. For example, we observe
  many crypting services being offered in underground forums by actors
  who claim to make any malware "FUD" or "Fully
  Undetectable" by anti-virus technologies, sandboxes and other
  endpoint solutions. We also see an increased effort to model normal
  user activity and baseline it as an effective countermeasure to
  fingerprint malware analysis environments.


 

Delphi Code to the Rescue


 

The samples we inspected were carrying the Delphi signature (Figure
  1) and were consistent with Delphi code constructs on analyzing with
  IDR (Interactive Delphi Reconstructor).


 


 
 
 Figure 1: Delphi signature in sample


 

The Delphi programming language can be an easy way to write
  applications and programs that leverage Windows API functions. In
  fact, some actors deliberately include the default libraries as a
  diversion to hamper static analysis and make the application
  "look legit" during dynamic analysis. Figure 2 shows the
  forum post of an actor discussing this technique.


 


 
 
 Figure 2: Underground forum post of an
    actor discussing technique


 

Distribution Campaigns


 

We have observed many spam campaigns with different themes that drop
  payloads packed using this packer.


 

An example is an average swift transfer spam that carries a document
  file as an attachment (hash: 71cd5df89e3936bb39790010d6d52a2d), which
  leverages malicious macros to drop the payload. The spam email is
  shown in Figure 3.


 


 
 
 Figure 3: Spam example 1


 

Another example is an average quotation themed spam that carries an
  exploit document file as an attachment (hash:
  0543e266012d9a3e33a9688a95fce358), which leverages an equation editor
  vulnerability to drop the payload (Figure 4).


 


 
 
 Figure 4: Spam example 2


 

The documents in the examples fetched a payload from
  http://5.152.203.115/win32.exe. This turned out to be Lokibot malware.


 

User Activity Checks


 

The packer goes to great lengths to ensure that it is not running in
  an analysis environment. Normal user activity involves many
  application windows being rotated or changed over a period of time.
  The first variant of the packer uses GetForegroundWindow API to check
  for the user activity of changing windows at least three times before
  it executes further. If it does not see the change of windows, it puts
  itself into an infinite sleep. The code is shown in Figure 5.
  Interestingly, some of the publicly available sandboxes can be
  detected by this simple technique.


 


 
 
 Figure 5: Window change check


 

To confirm user activity, a second variant of the packer checks for
  mouse cursor movement using GetCursorPos and Sleep APIs, while a
  third variant checks for system idle state using GetLastInputInfo and
  GetTickCount APIs.


 

Extracting Real Payloads from the PE Resources


 

The original payload is split into multiple binary blobs and stored
  in various locations inside the resource directory, as shown in Figure 6.


 


 
 
 Figure 6: Bitmap resource with encrypted contents


 

To locate and assemble the real payload bytes, the packer code first
  directly reads content from a hardcoded resource ID inside the
  resource section. The first 16 bytes of this form a XOR key used to
  decrypt rest of the bytes using rolling XOR. The decrypted bytes
  actually represent an internal data structure, as shown in Figure 7,
  used by the packer to reference encrypted and obfuscated buffers at
  various resource IDs.


 


 
 
 Figure 7: Structure showing encrypted
    file information


 

The packer then reads values from the encrypted buffers, starting
  from dwStartResourceId to dwStartResourceId+dwNumberOfResources, and
  brings them to a single location by reading chunks of dwChunkSize.
  Once the final data buffer is prepared, it starts decrypting it using
  the same rolling XOR algorithm mentioned previously and the new key
  from the aforementioned structure, producing the core payload
  executable. This script can be used to     href="https://www.fireeye.com/content/dam/fireeye-www/blog/pdfs/script.pdf">extract
    the real payload statically.


 

Classification of Real Families


 

Many of the unpacked binaries that we were able to extract from the
  sample set were identified as belonging to the Lokibot malware family.
  We were also able to identify Pony, IRStealer, Nanocore, Netwire,
  Remcos, and nJRAT malware families, as well as a coin mining malware
  family, among others. A distribution of the malware families using the
  packer is shown in Figure 8. This diversity of malware families
  implies that many threat actors are using this "crypting"
  service/tool for their operations, possibly buying it from the
  developer itself.


 


 
 
 Figure 8: Distribution of malware
    families using packer


 

Conclusion


 

Packers and crypter services provide threat actors an easy and
  convenient option to outsource the workload of keeping their real
  payloads undetected and unclassified as long as possible. They are
  regularly finding nifty ways to bypass sandbox environments with
  anti-analysis techniques; hence, detonating malware samples in a
  sandbox environment that try to model real user behavior is a safe bet.


 

FireEye MVX Engine both detects and blocks this activity.


 

Indicators of Compromise (IOCs)


 

     
  • 853bed3ad5cc4b1471e959bfd0ea7c7c

  •  
  • e3c421d404c08809dd8ee3365552e305

  •  
  • 14e5326c5da90cd6619b7fe1bc4a97e1

  •  
  • dc999a1a2c5e796e450c0a6a61950e3f

  •  
  • 3ad781934e67a8b84739866b0b55544b

  •  
  • b4f5e691b264103b9c4fb04fa3429f1e

Source: Increased Use of a Delphi Packer to Evade Malware Classification

Tags: