CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<11>
Malware Analysis
Runtime Details
The following sample was used to conduct the malware analysis within this report:
The malware begins by dynamically building an import address table (IAT) using a series of CRC32 hash 
repryp-
toWall must first load their libraries. The library is loaded by walking through the InLoadOrderModuleList 
list in the Process Environment Block (PEB). Each dynamic link library (DLL) has its name hashed using 
the CRC32 algorithm. This hash is compared against the hash provided. Should a match be found, the 
base address of this DLL is returned. Example pseudo-code for this operation can be found below.
Once the library address has been obtained, CryptoWall proceeds to load any functions that will be 
needed for the remainder of its operation. The CRC32 hash representation of the function is compared 
against the functions of a given library by walking through the DLL’s import table. Should a match be 
found, the address of the given function is returned.  
In order to assist analysts when reverse engineering CW3, a number of C header files containing CRC32 
enumerations have been provided. They can be downloaded here. Scripts for generating these C header 
files are also provided. This will allow analysts to make the translations during static analysis shown 
here.
MD5
DC66493B1171200AF85D3A7050D379A1
SHA1
327FA35168DA4F8C68FC06FECCA 
887C115E207C0
SHA256
5E04D18C557BB7D58EE2C687BAF73DC 
2D2ADA8F3377C4673A31B648B65D7B2BB
Compile 
Timestamp
2015-06-13 20:53:59 UTC
Size
135168 Bytes
Entropy
6.620839
File Type
PE32 executable (GUI) Intel 80386, for MS 
Windows
peb = get_PEB();
if ( peb )
{
module_list = &peb->Ldr-> 
InLoadOrderModuleList;
)
{
crc32_hash )
return m->BaseAddress;
}
}
return 0;
How to add pdf to powerpoint - C# Create PDF from PowerPoint Library to convert pptx, ppt to PDF in C#.net, ASP.NET MVC, WinForms, WPF
Online C# Tutorial for Creating PDF from Microsoft PowerPoint Presentation
pdf to powerpoint; how to change pdf file to powerpoint
How to add pdf to powerpoint - VB.NET Create PDF from PowerPoint Library to convert pptx, ppt to PDF in vb.net, ASP.NET MVC, WinForms, WPF
VB.NET Tutorial for Export PDF file from Microsoft Office PowerPoint
convert pdf to powerpoint slide; convert pdf to ppt online
CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<12>
FIGURE 9   Dynamic loading and execution of functions. Source: Cyber Threat Alliance
Additionally, an IDAPython script located on GitHub has been provided that can assist analysts in cre-
ating the IAT structure in a CW3 sample. This script will attempt to identify functions used by CW3 for 
the dynamic loading of libraries and functions via their CRC32 hash representation. Hashes provided 
to these functions ar
prior to running this script.). 
After CW3 completes building an IAT dynamically, it proceeds to generate a unique MD5 hash for the 
victim. This hash will be used going forward to uniquely identify the victim to the attackers. The follow-
ing information is collected by the malware in order to generate this key:
• Computer Name
• Volume Serial
• Processor Information
• Operating System Version
The function responsible for collecting this information uses a simple technique of building an array 
of characters in order to prevent strings from being present within the executable. Such an example 
follows.
FIGURE 10   String obfuscation witnessed in CW3. Source: Cyber Threat Alliance
C# PDF insert image Library: insert images into PDF in C#.net, ASP
C#.NET PDF SDK - Add Image to PDF Page in C#.NET. How to Insert & Add Image, Picture or Logo on PDF Page Using C#.NET. Add Image to PDF Page Using C#.NET.
convert pdf file to powerpoint; copying image from pdf to powerpoint
VB.NET PDF insert image library: insert images into PDF in vb.net
VB.NET PDF - Add Image to PDF Page in VB.NET. Guide VB.NET Programmers How to Add Images in PDF Document Using XDoc.PDF SDK for VB.NET.
pdf page to powerpoint; how to convert pdf file to powerpoint presentation
CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<13>
The above assembly can be represented in the following C code.
The simple IDAPython script shown here can be used to reassemble strings created in such a manner.
In order to generate the key for the victim, CW3 concatenates the collected information in this order:
[COMPUTER NAME][VOLUME SERIAL][PROCESSOR INFORMATION][OS VERSION]
Here is an example of this collected data:
USER-9F59DFF661D00FBFC1x86 Family 6 Model 70 Stepping 1, GenuineIn-
tel6460151
This data is hashed using the MD5 algorithm, and the hex representation of this hash is used to unique-
ly identify the victim. 
Additionally, this key is used as the name of an event generated by CW3. This event is used to ensure 
only one copy of the malware is running at any given time. Specifically, the event name used by CW3 is:
• \BaseNamedObjects\[MD5 Key]
The function used to create this event makes use of another, similar technique for generating strings.
0x00};
printf(name);
pos = here()
original_pos = pos
out = “”
while True:
GetOpnd(pos, 0)[2] == “x”:
out += chr(GetOperandValue(pos,1))
None
elif GetMnem(pos) == “xor”:
MakeComm(original_pos, out)
print “Making String: %s” % out
out = “”
original_pos = pos
else:
break
pos = NextHead(pos)
VB.NET PDF Password Library: add, remove, edit PDF file password
VB: Add Password to PDF with Permission Settings Applied. This VB.NET example shows how to add PDF file password with access permission setting.
chart from pdf to powerpoint; convert pdf file to ppt online
C# PDF Password Library: add, remove, edit PDF file password in C#
C# Sample Code: Add Password to PDF with Permission Settings Applied in C#.NET. This example shows how to add PDF file password with access permission setting.
change pdf to powerpoint; how to convert pdf to powerpoint in
CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<14>
While the assembly responsible for generating the string is different from the previous example –  
using a register to store and temporarily hold the character value – the effect is the same. The simple  
IDAPython script shown below can be used to rebuild these strings statically.
FIGURE 11   String obfuscation witnessed in CW3. Source: Cyber Threat Alliance
pos = here()
original_pos = pos
out = “”
while True:
if GetMnem(pos) == “mov” and “[ebp” in GetOpnd(pos, 0):
ordinal = GetOperandValue(pos,1)
if ordinal == 0:
MakeComm(og, out)
print “Making String: %s” % out
out = “”
original_pos = pos
else:
out += chr(ordinal)
else:
break
pos = NextHead(pos)
C# PDF Sticky Note Library: add, delete, update PDF note in C#.net
C#.NET PDF SDK - Add Sticky Note to PDF Page in C#.NET. Able to add notes to PDF using C# source code in Visual Studio .NET framework.
convert pdf to powerpoint online; convert pdf into powerpoint
C# WinForms Viewer: Load, View, Convert, Annotate and Edit
allowed to load and view PowerPoint without Microsoft Office software installed, create PDF file, Tiff image and HTML file from PowerPoint, add annotations to
pdf to powerpoint converter; converting pdf to powerpoint slides
CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<15>
CW3 proceeds to gather information about the victim machine and stores this data in a structure that 
will later be used for network communication. Additionally, a static campaign name is stored in this 
structure as well. This particular sample has a campaign name of ‘crypt2.’ This information is gathered 
and subsequently stored:
• Campaign Name
• Campaign Name Length
• Victim MD5 Unique Identifier
• Operating System Version
• CPU Architecture
• User Administrative Privileges
The structure that stores this data has the properties that follow.
The operating system version is obtained by querying the OSMajorVersion and OSMinorVersion proper-
ties of the process environment block (PEB). More information about this structure can be found here. 
The number shown in this table is returned for the Microsoft Windows operating system versions as 
indicated:
typedef struct _VICTIM_INFORMATION {
DWORD 
unknown0;
DWORD 
unknown1;
DWORD 
unknown2;
DWORD 
campaign_name;
DWORD 
campaign_name_length;
DWORD 
md5_unique_id_length;
DWORD 
md5_unique_id;
DWORD 
os_version;
DWORD 
is_64_bits;
DWORD 
is_admin;
} VICTIM_INFORMATION;
Windows Version
Integer
N/A – Non-supported Windows version identified
0
Windows 2000
1
Windows XP
2
Windows XP Professional x64 Edition
Windows Server 2003
Windows Home Server
Windows Server 2003 R2
3
Windows Vista
Windows Server 2008
4
Windows Server 2008 R2 
Windows 7
5
Windows Server 2012
Windows 8
6
Windows Server 2012 R2 
Windows 8.1
7
C# HTML5 Viewer: Load, View, Convert, Annotate and Edit PowerPoint
load and view PowerPoint without Microsoft Office software installed, convert PowerPoint to PDF file, Tiff image and HTML file, as well as add annotations in
how to convert pdf to ppt for; how to add pdf to powerpoint slide
RasterEdge XDoc.PowerPoint for .NET - SDK for PowerPoint Document
Convert. Convert PowerPoint to PDF. Extract, copy and paste PowerPoint Pages. Annotation & Thumbnail. Add and burn annotation to PowerPoint.
add pdf to powerpoint presentation; convert pdf file to powerpoint presentation
CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<16>
Process Privileges
Integer
Non-elevated Privileges
1
Elevated Privileges
2
FIGURE 12   Encrypted C2 data stored in CW3. Source: Cyber Threat Alliance
The CPU architecture is identified by making a call to ZwQueryInformationProcess with the  
ProcessWow64Information argument. The following numbers correspond to their respective CPU  
architectures:
Two techniques are provided for determining if the process is running with elevated privileges. In the 
event the malware is running on a Windows XP system or below, the malware will make a call to  
AllocateAndInitializeSid to obtain a SID structure that has the following SubAuthority properties:
• SECURITY_BUILTIN_DOMAIN_RID
• DOMAIN_ALIAS_RID_ADMINS
CW3 then checks the impersonation token of its current thread and compares it against this SID struc-
ture via a call to CheckTokenMembership. This allows the malware to determine if it is running with 
administrative privileges.
In the event the malware is running on Windows Vista or higher, it will take a slightly different approach. 
It begins by making a call to ZwOpenProcessToken in order to get a token handle to the current process. 
It then makes a call to ZwQueryInformationToken with TokenElevation provided as an argument. The 
malware is able to identify if its current process is running with elevated privileges via this technique. 
The numbers shown here correspond to their respective privileges:
After this information is obtained, the malware continues to decrypt and subsequently parse a series of 
command and control (C2) URLs that are embedded within the malware. The C2 URLs are encrypted 
with the RC4 algorithm. The key, key size, encrypted data, and encrypted data size are found alongside 
each other within the binary, as shown below.
Windows Version
Integer
32-bit Microsoft Windows Platform
1
64-bit Microsoft Windows Platform
2
CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<17>
[*] Possible encrypted configuration blob identified at 0x4190b8
[+] C2 : charlottesvillehokies.com/wp-content/plugins/g1.php
[+] C2 : nabilmachmouchilawfirm.com/wp-content/plugins/g5.php
[+] C2 : lauravecchio.com/wp-content/plugins/g3.php
[+] C2 : nblandscapers.com.au/wp-content/plugins/g2.php
[+] C2 : knowledgebucket.in/wp-content/plugins/g1.php
[+] C2 : craft-viet.com.vn/wp-content/plugins/g5.php
[+] C2 : khalilsafety.com/wp-content/plugins/g4.php
[+] C2 : emssvc.com/wp-content/plugins/g3.php
[+] C2 : asianlaw-un.org/wp-content/plugins/g2.php
[+] C2 : notifyd.com/wp-content/plugins/g1.php
[+] C2 : shannonmariephotographystudio.com/wp-content/plugins/g5.php
[+] C2 : jettsettphotography.com/wp-content/plugins/g4.php
[+] C2 : julietterose.com/wp-content/plugins/g2.php
[+] C2 : shreebalajidecorators.com/wp-content/themes/twentytwelve/g1.php
[+] C2 : demo1.wineoox.com/wp-content/plugins/g5.php
[+] C2 : greenpowerworksinc.com/wp-content/plugins/g4.php
[+] C2 : urbanconnection.us/wp-content/plugins/g3.php
[+] C2 : teyneg.com/wp-content/plugins/g2.php
[+] C2 : seopain.com.au/wp-content/plugins/g1.php
[+] C2 : houseoflevi.org/wp-content/plugins/g4.php
[+] C2 : loccidigital.com.br/wp-content/plugins/g3.php
[+] C2 : carpetandfloors.co.uk/wp-content/plugins/g2.php
[+] C2 : theazores.ro/wp-content/plugins/wp-db-backup-made/g1.php
[+] C2 : phulwaribiotech.com/wp-content/plugins/g5.php
[+] C2 : afriqinter.com/wp-content/plugins/g4.php
[+] C2 : daisylcreations.com/wp-content/plugins/g3.php
[+] C2 : interrailturkiye.net/wp-content/plugins/g2.php
[+] C2 : lydiaspath2wellness.com/wp-content/plugins/g1.php
An IDAPython script has been provided to automatically attempt decryption of these C2 URLs. It can be 
downloaded from this location. The output from this script when run against this particular sample can 
be found below.
At this point, CW3 will proceed to copy itself into a newly spawned instance of ‘explorer.exe.’  It begins 
by identifying the location of explorer.exe. It then creates a new instance of this process in a suspend-
ed state. A new section is created in this process via a call to ZwCreateSection. CW3 copies itself to 
this newly allocated section of memory before spawning a new thread. This new thread calls a specific 
function within the malware that is responsible for:
• Installation and persistence
• Deletion of shadow copies
• Disabling common Windows services
• Spawning a new instance of svchost.exe and injecting code
If the code injection routine for explorer.exe fails, the malware proceeds to spawn a new instance of 
svchost.exe and inject itself into this process. This injected code is identical to the code injected into 
svchost.exe in the event the explorer.exe routine is successful. 
A different function is loaded in a new thread in this process and is responsible for:
• Optionally spawning a new instance of explorer.exe and injecting code
• File encryption
• Network communication
• Removal/uninstallation after malware has finished
CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<18>
Explorer.exe Injected Function
The function begins by dynamically generating an import address table (IAT) using the same technique 
described previously. After this action has completed, the malware proceeds to enter an installation 
routine. It begins by discovering the %SYSTEMDRIVE% variable, such as the C: drive. 
An executable name is generated by taking the lowercase victim’s unique MD5 key that was previously 
generated, hashing this value using the CRC32 algorithm, and taking the resulting hex representation. 
This hex representation is concatenated with ‘.exe’ to generate the executable name, such as:
• 202f1b4.exe
A simplistic representation of this can be shown as follows:
Hex(CRC32(Hex(MD5(Victim Information))))
The hex representation without the extension is then concatenated with the %SYSTEMDRIVE% to  
generate a path. The ex
• C:\\202f1b4\\202f1b4.exe
The malware proceeds to make an attempt at copying the original CW3 executable to this destination. 
If successful, it will continue to set the following registry key, where [CRC32 MD5 Key] is the previously 
calculated CRC32 hash of the victim’s MD5 key and [Executable Path] is the previously generated path 
where CW3 copied itself:
•  
[Executable Path]
It will then make the same attempt for this registry path:
• HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce
In the event the malware was unable to be copied to the path generated from the %SYSTEMDRIVE%, it 
will attempt the same routine using this path:
• %APPDATA%\\202f1b4.exe
Note that the ‘202f1b4.exe’ value is generated by taking the CRC32 hash of the victim’s MD5 key and is 
unique for each victim. The malware will attempt to copy itself to this location. Additionally, the same 
registry writes are attempted using this new path. 
Finally, the malware will attempt to copy itself to the victim’s startup folder using the same executable 
name that has been used previously. 
The installation routine continues to check the executable name of the currently running process 
against the executable name that was generated. In the event they are different, which indicates that it 
is the first time the malware was run, it sleeps for one second before killing its own process. 
The function proceeds to spawn a new instance of svchost.exe and inject itself into this process. Please 
refer to the “Svchost.exe Injected Function” section of this report for further information on this. CW3 
continues to remove shadow copies on the victim machine and disable common security products. 
Shadow copies are a technology included with Microsoft Windows that allows a user to take backup 
copies of the machine. By deleting these backups, the malware authors prevent users from restoring to 
a known good configuration.
CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<19>
The malware deletes these backups by spawning the following three processes via calls to WinExec:
vssadmin.exe Delete Shadows /All /Quiet
bcdedit /set {default} recoveryenabled No
bcdedit /set {default} bootstatuspolicy ignoreallfailures
tup Repair from 
running. More information about this can be found here.
CW3 proceeds to disable these services:
These services are commonly found on Microsoft Windows operating systems and provide security, 
updating, backup, and error reporting functionality. 
Finally, the malware will terminate its currently running process.
Service Name
Description
wscsvc
Security Center Service
WinDefend
Windows Defender Service
wuauserv
Windows Update Service
BITS
Background Intelligent Transfer Service
ERSvc
Error Reporting Service
WerSvc
Windows Error Reporting Service
CYBER THREAT ALLIANCE // ANALYSIS OF THE CRYPTOWALL VERSION 3 THREAT 
<20>
Svchost.exe Injected Function
The function begins by dynamically generating an import address table (IAT) using the same technique 
described previously. It continues to perform the installation routine witnessed in the explorer.exe injec-
tion in the event it was not previously successful. 
An event with the following name is opened, where [MD5 Key] is the unique MD5 key generated for the 
victim: 
• \BaseNamedObjects\[MD5 Key]
This ensures multiple instances of CW3 are not running concurrently. 
The malware proceeds to query the registry key that follows, where [SID] is the SID of the user of the 
running process and [MD5 Key] is the unique MD5 key that was previously generated for the victim:
• HKU\[SID]\Software\[MD5 Key]\[char]k
In the above registry path, [char] is the lowercase representation of the third character in the [MD5 Key]. 
This registry key is used to store the RSA public key provided by the remote server. As this malware 
has yet to communicate with a remote server, this registry key is currently non-existent. However, had 
this registry key been present, the malware would proceed to enter its encryption routine using the RSA 
public key contained in this key.
CW3 proceeds to enter an infinite loop with a default sleep time of 15 seconds between iterations. It 
proceeds to make a series of HTTP requests to the previously parsed C2 URLs.
Documents you may be interested
Documents you may be interested